swr: build driver proper separate from rasterizer
[mesa.git] / src / gallium / drivers / swr / Makefile.am
1 # Copyright (C) 2015 Intel Corporation. All Rights Reserved.
2 #
3 # Permission is hereby granted, free of charge, to any person obtaining a
4 # copy of this software and associated documentation files (the "Software"),
5 # to deal in the Software without restriction, including without limitation
6 # the rights to use, copy, modify, merge, publish, distribute, sublicense,
7 # and/or sell copies of the Software, and to permit persons to whom the
8 # Software is furnished to do so, subject to the following conditions:
9 #
10 # The above copyright notice and this permission notice (including the next
11 # paragraph) shall be included in all copies or substantial portions of the
12 # Software.
13 #
14 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
17 # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
19 # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
20 # IN THE SOFTWARE.
21
22 include Makefile.sources
23 include $(top_srcdir)/src/gallium/Automake.inc
24
25 AM_CXXFLAGS = $(GALLIUM_DRIVER_CFLAGS) $(SWR_CXX11_CXXFLAGS)
26
27 noinst_LTLIBRARIES = libmesaswr.la
28
29 # gen_knobs.* included here to provide driver access to swr configuration
30 libmesaswr_la_SOURCES = \
31 $(CXX_SOURCES) \
32 $(COMMON_CXX_SOURCES) \
33 $(JITTER_CXX_SOURCES) \
34 rasterizer/codegen/gen_knobs.cpp \
35 rasterizer/codegen/gen_knobs.h \
36 $(LOADER_SOURCES)
37
38 COMMON_CXXFLAGS = \
39 -fno-strict-aliasing \
40 $(GALLIUM_DRIVER_CFLAGS) \
41 $(LLVM_CXXFLAGS) \
42 $(SWR_CXX11_CXXFLAGS) \
43 -I$(builddir)/rasterizer/codegen \
44 -I$(builddir)/rasterizer/core \
45 -I$(builddir)/rasterizer/jitter \
46 -I$(builddir)/rasterizer/archrast \
47 -I$(srcdir)/rasterizer \
48 -I$(srcdir)/rasterizer/core \
49 -I$(srcdir)/rasterizer/codegen \
50 -I$(srcdir)/rasterizer/jitter \
51 -I$(srcdir)/rasterizer/archrast
52
53 # SWR_AVX_CXXFLAGS needed for intrinsic usage in swr api headers
54 libmesaswr_la_CXXFLAGS = \
55 $(SWR_AVX_CXXFLAGS) \
56 $(COMMON_CXXFLAGS)
57
58 COMMON_SOURCES = \
59 $(ARCHRAST_CXX_SOURCES) \
60 $(COMMON_CXX_SOURCES) \
61 $(CORE_CXX_SOURCES) \
62 $(MEMORY_CXX_SOURCES) \
63 $(BUILT_SOURCES)
64
65 BUILT_SOURCES = \
66 gen_swr_context_llvm.h \
67 rasterizer/codegen/gen_knobs.cpp \
68 rasterizer/codegen/gen_knobs.h \
69 rasterizer/jitter/gen_state_llvm.h \
70 rasterizer/jitter/gen_builder.hpp \
71 rasterizer/jitter/gen_builder_x86.hpp \
72 rasterizer/archrast/gen_ar_event.hpp \
73 rasterizer/archrast/gen_ar_event.cpp \
74 rasterizer/archrast/gen_ar_eventhandler.hpp \
75 rasterizer/archrast/gen_ar_eventhandlerfile.hpp \
76 rasterizer/core/backends/gen_BackendPixelRate0.cpp \
77 rasterizer/core/backends/gen_BackendPixelRate1.cpp \
78 rasterizer/core/backends/gen_BackendPixelRate2.cpp \
79 rasterizer/core/backends/gen_BackendPixelRate3.cpp \
80 rasterizer/core/backends/gen_BackendPixelRate.hpp \
81 rasterizer/core/backends/gen_rasterizer0.cpp \
82 rasterizer/core/backends/gen_rasterizer1.cpp \
83 rasterizer/core/backends/gen_rasterizer2.cpp \
84 rasterizer/core/backends/gen_rasterizer3.cpp \
85 rasterizer/core/backends/gen_rasterizer.hpp
86
87 MKDIR_GEN = $(AM_V_at)$(MKDIR_P) $(@D)
88 PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS)
89 gen_swr_context_llvm.h: rasterizer/codegen/gen_llvm_types.py rasterizer/codegen/templates/gen_llvm.hpp swr_context.h
90 $(PYTHON_GEN) \
91 $(srcdir)/rasterizer/codegen/gen_llvm_types.py \
92 --input $(srcdir)/swr_context.h \
93 --output ./gen_swr_context_llvm.h
94
95 rasterizer/codegen/gen_knobs.cpp: rasterizer/codegen/gen_knobs.py rasterizer/codegen/knob_defs.py rasterizer/codegen/templates/gen_knobs.cpp rasterizer/codegen/gen_common.py
96 $(MKDIR_GEN)
97 $(PYTHON_GEN) \
98 $(srcdir)/rasterizer/codegen/gen_knobs.py \
99 --output rasterizer/codegen/gen_knobs.cpp \
100 --gen_cpp
101
102 rasterizer/codegen/gen_knobs.h: rasterizer/codegen/gen_knobs.py rasterizer/codegen/knob_defs.py rasterizer/codegen/templates/gen_knobs.cpp rasterizer/codegen/gen_common.py
103 $(MKDIR_GEN)
104 $(PYTHON_GEN) \
105 $(srcdir)/rasterizer/codegen/gen_knobs.py \
106 --output rasterizer/codegen/gen_knobs.h \
107 --gen_h
108
109 rasterizer/jitter/gen_state_llvm.h: rasterizer/codegen/gen_llvm_types.py rasterizer/codegen/templates/gen_llvm.hpp rasterizer/core/state.h rasterizer/codegen/gen_common.py
110 $(MKDIR_GEN)
111 $(PYTHON_GEN) \
112 $(srcdir)/rasterizer/codegen/gen_llvm_types.py \
113 --input $(srcdir)/rasterizer/core/state.h \
114 --output rasterizer/jitter/gen_state_llvm.h
115
116 rasterizer/jitter/gen_builder.hpp: rasterizer/codegen/gen_llvm_ir_macros.py rasterizer/codegen/templates/gen_builder.hpp rasterizer/codegen/gen_common.py
117 $(MKDIR_GEN)
118 $(PYTHON_GEN) \
119 $(srcdir)/rasterizer/codegen/gen_llvm_ir_macros.py \
120 --input $(LLVM_INCLUDEDIR)/llvm/IR/IRBuilder.h \
121 --output rasterizer/jitter \
122 --gen_h
123
124 rasterizer/jitter/gen_builder_x86.hpp: rasterizer/codegen/gen_llvm_ir_macros.py rasterizer/codegen/templates/gen_builder.hpp rasterizer/codegen/gen_common.py
125 $(MKDIR_GEN)
126 $(PYTHON_GEN) \
127 $(srcdir)/rasterizer/codegen/gen_llvm_ir_macros.py \
128 --output rasterizer/jitter \
129 --gen_x86_h
130
131 rasterizer/archrast/gen_ar_event.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_event.hpp rasterizer/archrast/events.proto rasterizer/codegen/gen_common.py
132 $(MKDIR_GEN)
133 $(PYTHON_GEN) \
134 $(srcdir)/rasterizer/codegen/gen_archrast.py \
135 --proto $(srcdir)/rasterizer/archrast/events.proto \
136 --output rasterizer/archrast/gen_ar_event.hpp \
137 --gen_event_h
138
139 rasterizer/archrast/gen_ar_event.cpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_event.cpp rasterizer/archrast/events.proto rasterizer/codegen/gen_common.py
140 $(MKDIR_GEN)
141 $(PYTHON_GEN) \
142 $(srcdir)/rasterizer/codegen/gen_archrast.py \
143 --proto $(srcdir)/rasterizer/archrast/events.proto \
144 --output rasterizer/archrast/gen_ar_event.cpp \
145 --gen_event_cpp
146
147 rasterizer/archrast/gen_ar_eventhandler.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_eventhandler.hpp rasterizer/archrast/events.proto rasterizer/codegen/gen_common.py
148 $(MKDIR_GEN)
149 $(PYTHON_GEN) \
150 $(srcdir)/rasterizer/codegen/gen_archrast.py \
151 --proto $(srcdir)/rasterizer/archrast/events.proto \
152 --output rasterizer/archrast/gen_ar_eventhandler.hpp \
153 --gen_eventhandler_h
154
155 rasterizer/archrast/gen_ar_eventhandlerfile.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp rasterizer/archrast/events.proto rasterizer/codegen/gen_common.py
156 $(MKDIR_GEN)
157 $(PYTHON_GEN) \
158 $(srcdir)/rasterizer/codegen/gen_archrast.py \
159 --proto $(srcdir)/rasterizer/archrast/events.proto \
160 --output rasterizer/archrast/gen_ar_eventhandlerfile.hpp \
161 --gen_eventhandlerfile_h
162
163 rasterizer/core/backends/gen_BackendPixelRate0.cpp \
164 rasterizer/core/backends/gen_BackendPixelRate1.cpp \
165 rasterizer/core/backends/gen_BackendPixelRate2.cpp \
166 rasterizer/core/backends/gen_BackendPixelRate3.cpp \
167 rasterizer/core/backends/gen_BackendPixelRate.hpp: \
168 backend.intermediate
169
170 # 5 SWR_MULTISAMPLE_TYPE_COUNT
171 # 2 SWR_MSAA_SAMPLE_PATTERN_COUNT
172 # 3 SWR_INPUT_COVERAGE_COUNT
173 # 2 centroid
174 # 2 forcedSampleCount
175 # 2 canEarlyZ
176
177 # use intermediate rule to tell make that all files can be
178 # generated in one invocation of gen_backends.py (prevents
179 # parallel make race condition)
180 .INTERMEDIATE: backend.intermediate
181 backend.intermediate: rasterizer/codegen/gen_backends.py rasterizer/codegen/templates/gen_backend.cpp rasterizer/codegen/templates/gen_header_init.hpp
182 $(MKDIR_GEN)
183 $(PYTHON_GEN) \
184 $(srcdir)/rasterizer/codegen/gen_backends.py \
185 --outdir rasterizer/core/backends \
186 --dim 5 2 3 2 2 2 \
187 --numfiles 4 \
188 --cpp \
189 --hpp
190
191 rasterizer/core/backends/gen_rasterizer0.cpp \
192 rasterizer/core/backends/gen_rasterizer1.cpp \
193 rasterizer/core/backends/gen_rasterizer2.cpp \
194 rasterizer/core/backends/gen_rasterizer3.cpp \
195 rasterizer/core/backends/gen_rasterizer.hpp: \
196 rasterizer.intermediate
197
198 # 5 SWR_MULTISAMPLE_TYPE_COUNT
199 # 2 CenterPattern
200 # 2 Conservative
201 # 3 SWR_INPUT_COVERAGE_COUNT
202 # 5 STATE_VALID_TRI_EDGE_COUNT
203 # 2 RasterScissorEdges
204
205 # use intermediate rule to tell make that all files can be
206 # generated in one invocation of gen_backends.py (prevents
207 # parallel make race condition)
208 .INTERMEDIATE: rasterizer.intermediate
209 rasterizer.intermediate: rasterizer/codegen/gen_backends.py rasterizer/codegen/templates/gen_rasterizer.cpp rasterizer/codegen/templates/gen_header_init.hpp
210 $(MKDIR_GEN)
211 $(PYTHON_GEN) \
212 $(srcdir)/rasterizer/codegen/gen_backends.py \
213 --outdir rasterizer/core/backends \
214 --rast \
215 --dim 5 2 2 3 5 2 \
216 --numfiles 4 \
217 --cpp \
218 --hpp
219
220 COMMON_LDFLAGS = \
221 -shared \
222 -module \
223 -no-undefined \
224 $(GC_SECTIONS) \
225 $(NO_UNDEFINED)
226
227 lib_LTLIBRARIES = libswrAVX.la libswrAVX2.la
228
229 libswrAVX_la_CXXFLAGS = \
230 $(SWR_AVX_CXXFLAGS) \
231 -DKNOB_ARCH=KNOB_ARCH_AVX \
232 $(COMMON_CXXFLAGS)
233
234 libswrAVX_la_SOURCES = \
235 $(COMMON_SOURCES)
236
237 libswrAVX_la_LDFLAGS = \
238 $(COMMON_LDFLAGS)
239
240 libswrAVX2_la_CXXFLAGS = \
241 $(SWR_AVX2_CXXFLAGS) \
242 -DKNOB_ARCH=KNOB_ARCH_AVX2 \
243 $(COMMON_CXXFLAGS)
244
245 libswrAVX2_la_SOURCES = \
246 $(COMMON_SOURCES)
247
248 libswrAVX2_la_LDFLAGS = \
249 $(COMMON_LDFLAGS)
250
251 include $(top_srcdir)/install-gallium-links.mk
252
253 # Generated gen_builder.hpp is not backwards compatible. So ship only one
254 # created with the oldest supported version of LLVM.
255 dist-hook:
256 if SWR_INVALID_LLVM_VERSION
257 @echo "*******************************************************"
258 @echo "LLVM 3.9.0 or LLVM 3.9.1 required to create the tarball"
259 @echo "*******************************************************"
260 @test
261 endif
262
263 EXTRA_DIST = \
264 SConscript \
265 rasterizer/archrast/events.proto \
266 rasterizer/codegen/gen_llvm_ir_macros.py \
267 rasterizer/codegen/gen_llvm_types.py \
268 rasterizer/codegen/gen_archrast.py \
269 rasterizer/codegen/gen_backends.py \
270 rasterizer/codegen/gen_common.py \
271 rasterizer/codegen/gen_knobs.py \
272 rasterizer/codegen/knob_defs.py \
273 rasterizer/codegen/templates/gen_ar_event.cpp \
274 rasterizer/codegen/templates/gen_ar_event.hpp \
275 rasterizer/codegen/templates/gen_ar_eventhandler.hpp \
276 rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp \
277 rasterizer/codegen/templates/gen_backend.cpp \
278 rasterizer/codegen/templates/gen_builder.hpp \
279 rasterizer/codegen/templates/gen_header_init.hpp \
280 rasterizer/codegen/templates/gen_knobs.cpp \
281 rasterizer/codegen/templates/gen_llvm.hpp \
282 rasterizer/codegen/templates/gen_rasterizer.cpp