1 # Copyright (C) 2015 Intel Corporation. All Rights Reserved.
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:
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
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
22 include Makefile.sources
23 include $(top_srcdir)/src/gallium/Automake.inc
25 AM_CXXFLAGS = $(GALLIUM_DRIVER_CFLAGS) $(SWR_CXX11_CXXFLAGS)
27 noinst_LTLIBRARIES = libmesaswr.la
29 # gen_knobs.* included here to provide driver access to swr configuration
30 libmesaswr_la_SOURCES = \
32 $(COMMON_CXX_SOURCES) \
33 $(JITTER_CXX_SOURCES) \
34 rasterizer/codegen/gen_knobs.cpp \
35 rasterizer/codegen/gen_knobs.h \
39 -fno-strict-aliasing \
40 $(GALLIUM_DRIVER_CFLAGS) \
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
53 # SWR_AVX_CXXFLAGS needed for intrinsic usage in swr api headers
54 libmesaswr_la_CXXFLAGS = \
59 $(ARCHRAST_CXX_SOURCES) \
60 $(COMMON_CXX_SOURCES) \
62 $(MEMORY_CXX_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
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
91 $(srcdir)/rasterizer/codegen/gen_llvm_types.py \
92 --input $(srcdir)/swr_context.h \
93 --output ./gen_swr_context_llvm.h
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
98 $(srcdir)/rasterizer/codegen/gen_knobs.py \
99 --output rasterizer/codegen/gen_knobs.cpp \
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
105 $(srcdir)/rasterizer/codegen/gen_knobs.py \
106 --output rasterizer/codegen/gen_knobs.h \
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
112 $(srcdir)/rasterizer/codegen/gen_llvm_types.py \
113 --input $(srcdir)/rasterizer/core/state.h \
114 --output rasterizer/jitter/gen_state_llvm.h
116 rasterizer/jitter/gen_builder.hpp: rasterizer/codegen/gen_llvm_ir_macros.py rasterizer/codegen/templates/gen_builder.hpp rasterizer/codegen/gen_common.py
119 $(srcdir)/rasterizer/codegen/gen_llvm_ir_macros.py \
120 --input $(LLVM_INCLUDEDIR)/llvm/IR/IRBuilder.h \
121 --output rasterizer/jitter \
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
127 $(srcdir)/rasterizer/codegen/gen_llvm_ir_macros.py \
128 --output rasterizer/jitter \
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
134 $(srcdir)/rasterizer/codegen/gen_archrast.py \
135 --proto $(srcdir)/rasterizer/archrast/events.proto \
136 --output rasterizer/archrast/gen_ar_event.hpp \
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
142 $(srcdir)/rasterizer/codegen/gen_archrast.py \
143 --proto $(srcdir)/rasterizer/archrast/events.proto \
144 --output rasterizer/archrast/gen_ar_event.cpp \
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
150 $(srcdir)/rasterizer/codegen/gen_archrast.py \
151 --proto $(srcdir)/rasterizer/archrast/events.proto \
152 --output rasterizer/archrast/gen_ar_eventhandler.hpp \
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
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
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: \
170 # 5 SWR_MULTISAMPLE_TYPE_COUNT
171 # 2 SWR_MSAA_SAMPLE_PATTERN_COUNT
172 # 3 SWR_INPUT_COVERAGE_COUNT
174 # 2 forcedSampleCount
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
184 $(srcdir)/rasterizer/codegen/gen_backends.py \
185 --outdir rasterizer/core/backends \
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
198 # 5 SWR_MULTISAMPLE_TYPE_COUNT
201 # 3 SWR_INPUT_COVERAGE_COUNT
202 # 5 STATE_VALID_TRI_EDGE_COUNT
203 # 2 RasterScissorEdges
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
212 $(srcdir)/rasterizer/codegen/gen_backends.py \
213 --outdir rasterizer/core/backends \
227 lib_LTLIBRARIES = libswrAVX.la libswrAVX2.la
229 libswrAVX_la_CXXFLAGS = \
230 $(SWR_AVX_CXXFLAGS) \
231 -DKNOB_ARCH=KNOB_ARCH_AVX \
234 libswrAVX_la_SOURCES = \
237 libswrAVX_la_LDFLAGS = \
240 libswrAVX2_la_CXXFLAGS = \
241 $(SWR_AVX2_CXXFLAGS) \
242 -DKNOB_ARCH=KNOB_ARCH_AVX2 \
245 libswrAVX2_la_SOURCES = \
248 libswrAVX2_la_LDFLAGS = \
251 include $(top_srcdir)/install-gallium-links.mk
253 # Generated gen_builder.hpp is not backwards compatible. So ship only one
254 # created with the oldest supported version of LLVM.
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 "*******************************************************"
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