Revert "configure: allow building with python3"
[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) $(CXX11_CXXFLAGS)
26
27 noinst_LTLIBRARIES = libmesaswr.la
28
29 libmesaswr_la_SOURCES = \
30 $(CXX_SOURCES) \
31 $(JITTER_CXX_SOURCES) \
32 $(LOADER_SOURCES)
33
34 COMMON_CXXFLAGS = \
35 -fno-strict-aliasing \
36 $(GALLIUM_DRIVER_CFLAGS) \
37 $(LLVM_CXXFLAGS) \
38 $(CXX11_CXXFLAGS) \
39 -I$(builddir)/rasterizer/codegen \
40 -I$(builddir)/rasterizer/core \
41 -I$(builddir)/rasterizer/jitter \
42 -I$(builddir)/rasterizer/archrast \
43 -I$(srcdir)/rasterizer \
44 -I$(srcdir)/rasterizer/core \
45 -I$(srcdir)/rasterizer/codegen \
46 -I$(srcdir)/rasterizer/jitter \
47 -I$(srcdir)/rasterizer/archrast
48
49 # SWR_AVX_CXXFLAGS needed for intrinsic usage in swr api headers
50 libmesaswr_la_CXXFLAGS = \
51 $(SWR_AVX_CXXFLAGS) \
52 $(COMMON_CXXFLAGS)
53
54 if HAVE_SWR_AVX
55 libmesaswr_la_CXXFLAGS += -DHAVE_SWR_AVX
56 endif
57
58 if HAVE_SWR_AVX2
59 libmesaswr_la_CXXFLAGS += -DHAVE_SWR_AVX2
60 endif
61
62 if HAVE_SWR_KNL
63 libmesaswr_la_CXXFLAGS += -DHAVE_SWR_KNL
64 endif
65
66 if HAVE_SWR_SKX
67 libmesaswr_la_CXXFLAGS += -DHAVE_SWR_SKX
68 endif
69
70 COMMON_SOURCES = \
71 $(ARCHRAST_CXX_SOURCES) \
72 $(COMMON_CXX_SOURCES) \
73 $(CORE_CXX_SOURCES) \
74 $(MEMORY_CXX_SOURCES) \
75 $(BUILT_SOURCES)
76
77 BUILT_SOURCES = \
78 gen_swr_context_llvm.h \
79 rasterizer/codegen/gen_knobs.cpp \
80 rasterizer/codegen/gen_knobs.h \
81 rasterizer/jitter/gen_state_llvm.h \
82 rasterizer/jitter/gen_builder.hpp \
83 rasterizer/jitter/gen_builder_meta.hpp \
84 rasterizer/jitter/gen_builder_intrin.hpp \
85 rasterizer/archrast/gen_ar_event.hpp \
86 rasterizer/archrast/gen_ar_event.cpp \
87 rasterizer/archrast/gen_ar_eventhandler.hpp \
88 rasterizer/archrast/gen_ar_eventhandlerfile.hpp \
89 rasterizer/core/backends/gen_BackendPixelRate0.cpp \
90 rasterizer/core/backends/gen_BackendPixelRate1.cpp \
91 rasterizer/core/backends/gen_BackendPixelRate2.cpp \
92 rasterizer/core/backends/gen_BackendPixelRate3.cpp \
93 rasterizer/core/backends/gen_BackendPixelRate.hpp \
94 rasterizer/core/backends/gen_rasterizer0.cpp \
95 rasterizer/core/backends/gen_rasterizer1.cpp \
96 rasterizer/core/backends/gen_rasterizer2.cpp \
97 rasterizer/core/backends/gen_rasterizer3.cpp \
98 rasterizer/core/backends/gen_rasterizer.hpp
99
100 MKDIR_GEN = $(AM_V_at)$(MKDIR_P) $(@D)
101 PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS)
102 gen_swr_context_llvm.h: rasterizer/codegen/gen_llvm_types.py rasterizer/codegen/templates/gen_llvm.hpp swr_context.h
103 $(PYTHON_GEN) \
104 $(srcdir)/rasterizer/codegen/gen_llvm_types.py \
105 --input $(srcdir)/swr_context.h \
106 --output ./gen_swr_context_llvm.h
107 $(AM_V_GEN)touch $@
108
109 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
110 $(MKDIR_GEN)
111 $(PYTHON_GEN) \
112 $(srcdir)/rasterizer/codegen/gen_knobs.py \
113 --output rasterizer/codegen/gen_knobs.cpp \
114 --gen_cpp
115 $(AM_V_GEN)touch $@
116
117 rasterizer/codegen/gen_knobs.h: rasterizer/codegen/gen_knobs.py rasterizer/codegen/knob_defs.py rasterizer/codegen/templates/gen_knobs.h rasterizer/codegen/gen_common.py
118 $(MKDIR_GEN)
119 $(PYTHON_GEN) \
120 $(srcdir)/rasterizer/codegen/gen_knobs.py \
121 --output rasterizer/codegen/gen_knobs.h \
122 --gen_h
123 $(AM_V_GEN)touch $@
124
125 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
126 $(MKDIR_GEN)
127 $(PYTHON_GEN) \
128 $(srcdir)/rasterizer/codegen/gen_llvm_types.py \
129 --input $(srcdir)/rasterizer/core/state.h \
130 --output rasterizer/jitter/gen_state_llvm.h
131 $(AM_V_GEN)touch $@
132
133 rasterizer/jitter/gen_builder.hpp: rasterizer/codegen/gen_llvm_ir_macros.py rasterizer/codegen/templates/gen_builder.hpp rasterizer/codegen/gen_common.py
134 $(MKDIR_GEN)
135 $(PYTHON_GEN) \
136 $(srcdir)/rasterizer/codegen/gen_llvm_ir_macros.py \
137 --input $(LLVM_INCLUDEDIR)/llvm/IR/IRBuilder.h \
138 --output rasterizer/jitter \
139 --gen_h
140 $(AM_V_GEN)touch $@
141
142 rasterizer/jitter/gen_builder_meta.hpp: rasterizer/codegen/gen_llvm_ir_macros.py rasterizer/codegen/templates/gen_builder.hpp rasterizer/codegen/gen_common.py
143 $(MKDIR_GEN)
144 $(PYTHON_GEN) \
145 $(srcdir)/rasterizer/codegen/gen_llvm_ir_macros.py \
146 --output rasterizer/jitter \
147 --gen_meta_h
148 $(AM_V_GEN)touch $@
149
150 rasterizer/jitter/gen_builder_intrin.hpp: rasterizer/codegen/gen_llvm_ir_macros.py rasterizer/codegen/templates/gen_builder.hpp rasterizer/codegen/gen_common.py
151 $(MKDIR_GEN)
152 $(PYTHON_GEN) \
153 $(srcdir)/rasterizer/codegen/gen_llvm_ir_macros.py \
154 --output rasterizer/jitter \
155 --gen_intrin_h
156 $(AM_V_GEN)touch $@
157
158 rasterizer/archrast/gen_ar_event.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_event.hpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
159 $(MKDIR_GEN)
160 $(PYTHON_GEN) \
161 $(srcdir)/rasterizer/codegen/gen_archrast.py \
162 --proto $(srcdir)/rasterizer/archrast/events.proto \
163 --proto_private $(srcdir)/rasterizer/archrast/events_private.proto \
164 --output rasterizer/archrast/gen_ar_event.hpp \
165 --gen_event_hpp
166 $(AM_V_GEN)touch $@
167
168 rasterizer/archrast/gen_ar_event.cpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_event.cpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
169 $(MKDIR_GEN)
170 $(PYTHON_GEN) \
171 $(srcdir)/rasterizer/codegen/gen_archrast.py \
172 --proto $(srcdir)/rasterizer/archrast/events.proto \
173 --proto_private $(srcdir)/rasterizer/archrast/events_private.proto \
174 --output rasterizer/archrast/gen_ar_event.cpp \
175 --gen_event_cpp
176 $(AM_V_GEN)touch $@
177
178 rasterizer/archrast/gen_ar_eventhandler.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_eventhandler.hpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
179 $(MKDIR_GEN)
180 $(PYTHON_GEN) \
181 $(srcdir)/rasterizer/codegen/gen_archrast.py \
182 --proto $(srcdir)/rasterizer/archrast/events.proto \
183 --proto_private $(srcdir)/rasterizer/archrast/events_private.proto \
184 --output rasterizer/archrast/gen_ar_eventhandler.hpp \
185 --gen_eventhandler_hpp
186 $(AM_V_GEN)touch $@
187
188 rasterizer/archrast/gen_ar_eventhandlerfile.hpp: rasterizer/codegen/gen_archrast.py rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp rasterizer/archrast/events.proto rasterizer/archrast/events_private.proto rasterizer/codegen/gen_common.py
189 $(MKDIR_GEN)
190 $(PYTHON_GEN) \
191 $(srcdir)/rasterizer/codegen/gen_archrast.py \
192 --proto $(srcdir)/rasterizer/archrast/events.proto \
193 --proto_private $(srcdir)/rasterizer/archrast/events_private.proto \
194 --output rasterizer/archrast/gen_ar_eventhandlerfile.hpp \
195 --gen_eventhandlerfile_hpp
196 $(AM_V_GEN)touch $@
197
198 rasterizer/core/backends/gen_BackendPixelRate0.cpp \
199 rasterizer/core/backends/gen_BackendPixelRate1.cpp \
200 rasterizer/core/backends/gen_BackendPixelRate2.cpp \
201 rasterizer/core/backends/gen_BackendPixelRate3.cpp \
202 rasterizer/core/backends/gen_BackendPixelRate.hpp: \
203 backend.intermediate
204
205 # 5 SWR_MULTISAMPLE_TYPE_COUNT
206 # 2 SWR_MSAA_SAMPLE_PATTERN_COUNT
207 # 3 SWR_INPUT_COVERAGE_COUNT
208 # 2 centroid
209 # 2 forcedSampleCount
210 # 2 canEarlyZ
211
212 # use intermediate rule to tell make that all files can be
213 # generated in one invocation of gen_backends.py (prevents
214 # parallel make race condition)
215 .INTERMEDIATE: backend.intermediate
216 backend.intermediate: rasterizer/codegen/gen_backends.py rasterizer/codegen/templates/gen_backend.cpp rasterizer/codegen/templates/gen_header_init.hpp
217 $(MKDIR_GEN)
218 $(PYTHON_GEN) \
219 $(srcdir)/rasterizer/codegen/gen_backends.py \
220 --outdir rasterizer/core/backends \
221 --dim 5 2 3 2 2 2 \
222 --numfiles 4 \
223 --cpp \
224 --hpp
225
226 rasterizer/core/backends/gen_rasterizer0.cpp \
227 rasterizer/core/backends/gen_rasterizer1.cpp \
228 rasterizer/core/backends/gen_rasterizer2.cpp \
229 rasterizer/core/backends/gen_rasterizer3.cpp \
230 rasterizer/core/backends/gen_rasterizer.hpp: \
231 rasterizer.intermediate
232
233 # 5 SWR_MULTISAMPLE_TYPE_COUNT
234 # 2 CenterPattern
235 # 2 Conservative
236 # 3 SWR_INPUT_COVERAGE_COUNT
237 # 5 STATE_VALID_TRI_EDGE_COUNT
238 # 2 RasterScissorEdges
239
240 # use intermediate rule to tell make that all files can be
241 # generated in one invocation of gen_backends.py (prevents
242 # parallel make race condition)
243 .INTERMEDIATE: rasterizer.intermediate
244 rasterizer.intermediate: rasterizer/codegen/gen_backends.py rasterizer/codegen/templates/gen_rasterizer.cpp rasterizer/codegen/templates/gen_header_init.hpp
245 $(MKDIR_GEN)
246 $(PYTHON_GEN) \
247 $(srcdir)/rasterizer/codegen/gen_backends.py \
248 --outdir rasterizer/core/backends \
249 --rast \
250 --dim 5 2 2 3 5 2 \
251 --numfiles 4 \
252 --cpp \
253 --hpp
254
255 COMMON_LDFLAGS = \
256 -shared \
257 -module \
258 -no-undefined \
259 $(GC_SECTIONS) \
260 $(LD_NO_UNDEFINED)
261
262 lib_LTLIBRARIES =
263
264 if HAVE_SWR_AVX
265 libswrAVX_la_CXXFLAGS = \
266 $(PTHREAD_CFLAGS) \
267 $(SWR_AVX_CXXFLAGS) \
268 -DKNOB_ARCH=KNOB_ARCH_AVX \
269 $(COMMON_CXXFLAGS)
270
271 libswrAVX_la_SOURCES = \
272 $(COMMON_SOURCES)
273
274 libswrAVX_la_LIBADD = \
275 $(PTHREAD_LIBS)
276
277 libswrAVX_la_LDFLAGS = \
278 $(COMMON_LDFLAGS)
279 endif
280
281 if HAVE_SWR_AVX2
282 libswrAVX2_la_CXXFLAGS = \
283 $(PTHREAD_CFLAGS) \
284 $(SWR_AVX2_CXXFLAGS) \
285 -DKNOB_ARCH=KNOB_ARCH_AVX2 \
286 $(COMMON_CXXFLAGS)
287
288 libswrAVX2_la_SOURCES = \
289 $(COMMON_SOURCES)
290
291 libswrAVX2_la_LIBADD = \
292 $(PTHREAD_LIBS)
293
294 libswrAVX2_la_LDFLAGS = \
295 $(COMMON_LDFLAGS)
296 endif
297
298 if HAVE_SWR_KNL
299 libswrKNL_la_CXXFLAGS = \
300 $(PTHREAD_CFLAGS) \
301 $(SWR_KNL_CXXFLAGS) \
302 -DKNOB_ARCH=KNOB_ARCH_AVX512 -DSIMD_ARCH_KNIGHTS \
303 $(COMMON_CXXFLAGS)
304
305 libswrKNL_la_SOURCES = \
306 $(COMMON_SOURCES)
307
308 libswrKNL_la_LIBADD = \
309 $(PTHREAD_LIBS)
310
311 libswrKNL_la_LDFLAGS = \
312 $(COMMON_LDFLAGS)
313 endif
314
315 if HAVE_SWR_SKX
316 libswrSKX_la_CXXFLAGS = \
317 $(PTHREAD_CFLAGS) \
318 $(SWR_SKX_CXXFLAGS) \
319 -DKNOB_ARCH=KNOB_ARCH_AVX512 \
320 $(COMMON_CXXFLAGS)
321
322 libswrSKX_la_SOURCES = \
323 $(COMMON_SOURCES)
324
325 libswrSKX_la_LIBADD = \
326 $(PTHREAD_LIBS)
327
328 libswrSKX_la_LDFLAGS = \
329 $(COMMON_LDFLAGS)
330 endif
331
332 if HAVE_SWR_BUILTIN
333 libmesaswr_la_CXXFLAGS += -DHAVE_SWR_BUILTIN
334 libmesaswr_la_LIBADD =
335 if HAVE_SWR_AVX
336 noinst_LTLIBRARIES += libswrAVX.la
337 libmesaswr_la_LIBADD += libswrAVX.la
338 endif
339 if HAVE_SWR_AVX2
340 noinst_LTLIBRARIES += libswrAVX2.la
341 libmesaswr_la_LIBADD += libswrAVX2.la
342 endif
343 if HAVE_SWR_KNL
344 noinst_LTLIBRARIES += libswrKNL.la
345 libmesaswr_la_LIBADD += libswrKNL.la
346 endif
347 if HAVE_SWR_SKX
348 noinst_LTLIBRARIES += libswrSKX.la
349 libmesaswr_la_LIBADD += libswrSKX.la
350 endif
351 else # !HAVE_SWR_BUILTIN
352 # gen_knobs.* included here to provide driver access to swr configuration
353 libmesaswr_la_SOURCES += \
354 $(COMMON_CXX_SOURCES) \
355 rasterizer/codegen/gen_knobs.cpp \
356 rasterizer/codegen/gen_knobs.h
357 if HAVE_SWR_AVX
358 lib_LTLIBRARIES += libswrAVX.la
359 endif
360 if HAVE_SWR_AVX2
361 lib_LTLIBRARIES += libswrAVX2.la
362 endif
363 if HAVE_SWR_KNL
364 lib_LTLIBRARIES += libswrKNL.la
365 endif
366 if HAVE_SWR_SKX
367 lib_LTLIBRARIES += libswrSKX.la
368 endif
369 endif
370
371 include $(top_srcdir)/install-gallium-links.mk
372
373 # Generated gen_builder.hpp is not backwards compatible. So ship only one
374 # created with the oldest supported version of LLVM.
375 dist-hook:
376 if SWR_INVALID_LLVM_VERSION
377 @echo "*****************************************"
378 @echo "LLVM 6.0.x required to create the tarball"
379 @echo "*****************************************"
380 @test
381 endif
382
383 EXTRA_DIST = \
384 SConscript \
385 meson.build \
386 rasterizer/jitter/meson.build \
387 rasterizer/codegen/meson.build \
388 rasterizer/core/backends/meson.build \
389 rasterizer/archrast/events.proto \
390 rasterizer/archrast/events_private.proto \
391 rasterizer/codegen/gen_llvm_ir_macros.py \
392 rasterizer/codegen/gen_llvm_types.py \
393 rasterizer/codegen/gen_archrast.py \
394 rasterizer/codegen/gen_backends.py \
395 rasterizer/codegen/gen_common.py \
396 rasterizer/codegen/gen_knobs.py \
397 rasterizer/codegen/knob_defs.py \
398 rasterizer/codegen/templates/gen_ar_event.cpp \
399 rasterizer/codegen/templates/gen_ar_event.hpp \
400 rasterizer/codegen/templates/gen_ar_eventhandler.hpp \
401 rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp \
402 rasterizer/codegen/templates/gen_backend.cpp \
403 rasterizer/codegen/templates/gen_builder.hpp \
404 rasterizer/codegen/templates/gen_header_init.hpp \
405 rasterizer/codegen/templates/gen_knobs.cpp \
406 rasterizer/codegen/templates/gen_knobs.h \
407 rasterizer/codegen/templates/gen_llvm.hpp \
408 rasterizer/codegen/templates/gen_rasterizer.cpp