swr/rast: Split rasterizer.cpp to improve compile time
[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 libmesaswr_la_SOURCES = $(LOADER_SOURCES)
30
31 COMMON_CXXFLAGS = \
32 -fno-strict-aliasing \
33 $(GALLIUM_DRIVER_CFLAGS) \
34 $(LLVM_CXXFLAGS) \
35 $(SWR_CXX11_CXXFLAGS) \
36 -I$(builddir)/rasterizer/codegen \
37 -I$(builddir)/rasterizer/core \
38 -I$(builddir)/rasterizer/jitter \
39 -I$(builddir)/rasterizer/archrast \
40 -I$(srcdir)/rasterizer \
41 -I$(srcdir)/rasterizer/core \
42 -I$(srcdir)/rasterizer/codegen \
43 -I$(srcdir)/rasterizer/jitter \
44 -I$(srcdir)/rasterizer/archrast
45
46 COMMON_SOURCES = \
47 $(CXX_SOURCES) \
48 $(ARCHRAST_CXX_SOURCES) \
49 $(COMMON_CXX_SOURCES) \
50 $(CORE_CXX_SOURCES) \
51 $(JITTER_CXX_SOURCES) \
52 $(MEMORY_CXX_SOURCES) \
53 $(BUILT_SOURCES)
54
55 BUILT_SOURCES = \
56 gen_swr_context_llvm.h \
57 rasterizer/codegen/gen_knobs.cpp \
58 rasterizer/codegen/gen_knobs.h \
59 rasterizer/jitter/gen_state_llvm.h \
60 rasterizer/jitter/gen_builder.hpp \
61 rasterizer/jitter/gen_builder_x86.hpp \
62 rasterizer/archrast/gen_ar_event.hpp \
63 rasterizer/archrast/gen_ar_event.cpp \
64 rasterizer/archrast/gen_ar_eventhandler.hpp \
65 rasterizer/archrast/gen_ar_eventhandlerfile.hpp \
66 rasterizer/core/backends/gen_BackendPixelRate0.cpp \
67 rasterizer/core/backends/gen_BackendPixelRate1.cpp \
68 rasterizer/core/backends/gen_BackendPixelRate2.cpp \
69 rasterizer/core/backends/gen_BackendPixelRate3.cpp \
70 rasterizer/core/backends/gen_BackendPixelRate.hpp \
71 rasterizer/core/backends/gen_rasterizer0.cpp \
72 rasterizer/core/backends/gen_rasterizer1.cpp \
73 rasterizer/core/backends/gen_rasterizer2.cpp \
74 rasterizer/core/backends/gen_rasterizer3.cpp \
75 rasterizer/core/backends/gen_rasterizer.hpp
76
77 MKDIR_GEN = $(AM_V_at)$(MKDIR_P) $(@D)
78 PYTHON_GEN = $(AM_V_GEN)$(PYTHON2) $(PYTHON_FLAGS)
79 gen_swr_context_llvm.h: rasterizer/codegen/gen_llvm_types.py rasterizer/codegen/templates/gen_llvm.hpp swr_context.h
80 $(PYTHON_GEN) \
81 $(srcdir)/rasterizer/codegen/gen_llvm_types.py \
82 --input $(srcdir)/swr_context.h \
83 --output ./gen_swr_context_llvm.h
84
85 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
86 $(MKDIR_GEN)
87 $(PYTHON_GEN) \
88 $(srcdir)/rasterizer/codegen/gen_knobs.py \
89 --output rasterizer/codegen/gen_knobs.cpp \
90 --gen_cpp
91
92 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
93 $(MKDIR_GEN)
94 $(PYTHON_GEN) \
95 $(srcdir)/rasterizer/codegen/gen_knobs.py \
96 --output rasterizer/codegen/gen_knobs.h \
97 --gen_h
98
99 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
100 $(MKDIR_GEN)
101 $(PYTHON_GEN) \
102 $(srcdir)/rasterizer/codegen/gen_llvm_types.py \
103 --input $(srcdir)/rasterizer/core/state.h \
104 --output rasterizer/jitter/gen_state_llvm.h
105
106 rasterizer/jitter/gen_builder.hpp: rasterizer/codegen/gen_llvm_ir_macros.py rasterizer/codegen/templates/gen_builder.hpp rasterizer/codegen/gen_common.py
107 $(MKDIR_GEN)
108 $(PYTHON_GEN) \
109 $(srcdir)/rasterizer/codegen/gen_llvm_ir_macros.py \
110 --input $(LLVM_INCLUDEDIR)/llvm/IR/IRBuilder.h \
111 --output rasterizer/jitter \
112 --gen_h
113
114 rasterizer/jitter/gen_builder_x86.hpp: rasterizer/codegen/gen_llvm_ir_macros.py rasterizer/codegen/templates/gen_builder.hpp rasterizer/codegen/gen_common.py
115 $(MKDIR_GEN)
116 $(PYTHON_GEN) \
117 $(srcdir)/rasterizer/codegen/gen_llvm_ir_macros.py \
118 --output rasterizer/jitter \
119 --gen_x86_h
120
121 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
122 $(MKDIR_GEN)
123 $(PYTHON_GEN) \
124 $(srcdir)/rasterizer/codegen/gen_archrast.py \
125 --proto $(srcdir)/rasterizer/archrast/events.proto \
126 --output rasterizer/archrast/gen_ar_event.hpp \
127 --gen_event_h
128
129 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
130 $(MKDIR_GEN)
131 $(PYTHON_GEN) \
132 $(srcdir)/rasterizer/codegen/gen_archrast.py \
133 --proto $(srcdir)/rasterizer/archrast/events.proto \
134 --output rasterizer/archrast/gen_ar_event.cpp \
135 --gen_event_cpp
136
137 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
138 $(MKDIR_GEN)
139 $(PYTHON_GEN) \
140 $(srcdir)/rasterizer/codegen/gen_archrast.py \
141 --proto $(srcdir)/rasterizer/archrast/events.proto \
142 --output rasterizer/archrast/gen_ar_eventhandler.hpp \
143 --gen_eventhandler_h
144
145 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
146 $(MKDIR_GEN)
147 $(PYTHON_GEN) \
148 $(srcdir)/rasterizer/codegen/gen_archrast.py \
149 --proto $(srcdir)/rasterizer/archrast/events.proto \
150 --output rasterizer/archrast/gen_ar_eventhandlerfile.hpp \
151 --gen_eventhandlerfile_h
152
153 rasterizer/core/backends/gen_BackendPixelRate0.cpp \
154 rasterizer/core/backends/gen_BackendPixelRate1.cpp \
155 rasterizer/core/backends/gen_BackendPixelRate2.cpp \
156 rasterizer/core/backends/gen_BackendPixelRate3.cpp \
157 rasterizer/core/backends/gen_BackendPixelRate.hpp: \
158 backend.intermediate
159
160 # 5 SWR_MULTISAMPLE_TYPE_COUNT
161 # 2 SWR_MSAA_SAMPLE_PATTERN_COUNT
162 # 3 SWR_INPUT_COVERAGE_COUNT
163 # 2 centroid
164 # 2 forcedSampleCount
165 # 2 canEarlyZ
166
167 # use intermediate rule to tell make that all files can be
168 # generated in one invocation of gen_backends.py (prevents
169 # parallel make race condition)
170 .INTERMEDIATE: backend.intermediate
171 backend.intermediate: rasterizer/codegen/gen_backends.py rasterizer/codegen/templates/gen_backend.cpp rasterizer/codegen/templates/gen_header_init.hpp
172 $(MKDIR_GEN)
173 $(PYTHON_GEN) \
174 $(srcdir)/rasterizer/codegen/gen_backends.py \
175 --outdir rasterizer/core/backends \
176 --dim 5 2 3 2 2 2 \
177 --numfiles 4 \
178 --cpp \
179 --hpp
180
181 rasterizer/core/backends/gen_rasterizer0.cpp \
182 rasterizer/core/backends/gen_rasterizer1.cpp \
183 rasterizer/core/backends/gen_rasterizer2.cpp \
184 rasterizer/core/backends/gen_rasterizer3.cpp \
185 rasterizer/core/backends/gen_rasterizer.hpp: \
186 rasterizer.intermediate
187
188 # 5 SWR_MULTISAMPLE_TYPE_COUNT
189 # 2 CenterPattern
190 # 2 Conservative
191 # 3 SWR_INPUT_COVERAGE_COUNT
192 # 5 STATE_VALID_TRI_EDGE_COUNT
193 # 2 RasterScissorEdges
194
195 # use intermediate rule to tell make that all files can be
196 # generated in one invocation of gen_backends.py (prevents
197 # parallel make race condition)
198 .INTERMEDIATE: rasterizer.intermediate
199 rasterizer.intermediate: rasterizer/codegen/gen_backends.py rasterizer/codegen/templates/gen_rasterizer.cpp rasterizer/codegen/templates/gen_header_init.hpp
200 $(MKDIR_GEN)
201 $(PYTHON_GEN) \
202 $(srcdir)/rasterizer/codegen/gen_backends.py \
203 --outdir rasterizer/core/backends \
204 --rast \
205 --dim 5 2 2 3 5 2 \
206 --numfiles 4 \
207 --cpp \
208 --hpp
209
210 COMMON_LIBADD = \
211 $(top_builddir)/src/gallium/auxiliary/libgallium.la \
212 $(top_builddir)/src/mesa/libmesagallium.la \
213 $(LLVM_LIBS)
214
215 COMMON_LDFLAGS = \
216 -shared \
217 -module \
218 -no-undefined \
219 $(GC_SECTIONS) \
220 $(NO_UNDEFINED) \
221 $(LLVM_LDFLAGS)
222
223
224 lib_LTLIBRARIES = libswrAVX.la libswrAVX2.la
225
226 libswrAVX_la_CXXFLAGS = \
227 $(SWR_AVX_CXXFLAGS) \
228 -DKNOB_ARCH=KNOB_ARCH_AVX \
229 $(COMMON_CXXFLAGS)
230
231 libswrAVX_la_SOURCES = \
232 $(COMMON_SOURCES)
233
234 libswrAVX_la_LIBADD = \
235 $(COMMON_LIBADD)
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_LIBADD = \
249 $(COMMON_LIBADD)
250
251 libswrAVX2_la_LDFLAGS = \
252 $(COMMON_LDFLAGS)
253
254 include $(top_srcdir)/install-gallium-links.mk
255
256 # Generated gen_builder.hpp is not backwards compatible. So ship only one
257 # created with the oldest supported version of LLVM.
258 dist-hook:
259 if SWR_INVALID_LLVM_VERSION
260 @echo "*******************************************************"
261 @echo "LLVM 3.9.0 or LLVM 3.9.1 required to create the tarball"
262 @echo "*******************************************************"
263 @test
264 endif
265
266 EXTRA_DIST = \
267 SConscript \
268 rasterizer/archrast/events.proto \
269 rasterizer/codegen/gen_llvm_ir_macros.py \
270 rasterizer/codegen/gen_llvm_types.py \
271 rasterizer/codegen/gen_archrast.py \
272 rasterizer/codegen/gen_backends.py \
273 rasterizer/codegen/gen_common.py \
274 rasterizer/codegen/gen_knobs.py \
275 rasterizer/codegen/knob_defs.py \
276 rasterizer/codegen/templates/gen_ar_event.cpp \
277 rasterizer/codegen/templates/gen_ar_event.hpp \
278 rasterizer/codegen/templates/gen_ar_eventhandler.hpp \
279 rasterizer/codegen/templates/gen_ar_eventhandlerfile.hpp \
280 rasterizer/codegen/templates/gen_backend.cpp \
281 rasterizer/codegen/templates/gen_builder.hpp \
282 rasterizer/codegen/templates/gen_header_init.hpp \
283 rasterizer/codegen/templates/gen_knobs.cpp \
284 rasterizer/codegen/templates/gen_llvm.hpp \
285 rasterizer/codegen/templates/gen_rasterizer.cpp