1b8e80941Smrg# Copyright © 2017 Rob Clark
2b8e80941Smrg
3b8e80941Smrg# Permission is hereby granted, free of charge, to any person obtaining a copy
4b8e80941Smrg# of this software and associated documentation files (the "Software"), to deal
5b8e80941Smrg# in the Software without restriction, including without limitation the rights
6b8e80941Smrg# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7b8e80941Smrg# copies of the Software, and to permit persons to whom the Software is
8b8e80941Smrg# furnished to do so, subject to the following conditions:
9b8e80941Smrg
10b8e80941Smrg# The above copyright notice and this permission notice shall be included in
11b8e80941Smrg# all copies or substantial portions of the Software.
12b8e80941Smrg
13b8e80941Smrg# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14b8e80941Smrg# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15b8e80941Smrg# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16b8e80941Smrg# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17b8e80941Smrg# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18b8e80941Smrg# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19b8e80941Smrg# SOFTWARE.
20b8e80941Smrg
21b8e80941Smrgfiles_libfreedreno = files(
22b8e80941Smrg  'disasm.h',
23b8e80941Smrg  'freedreno_batch.c',
24b8e80941Smrg  'freedreno_batch.h',
25b8e80941Smrg  'freedreno_batch_cache.c',
26b8e80941Smrg  'freedreno_batch_cache.h',
27b8e80941Smrg  'freedreno_blitter.c',
28b8e80941Smrg  'freedreno_blitter.h',
29b8e80941Smrg  'freedreno_context.c',
30b8e80941Smrg  'freedreno_context.h',
31b8e80941Smrg  'freedreno_draw.c',
32b8e80941Smrg  'freedreno_draw.h',
33b8e80941Smrg  'freedreno_fence.c',
34b8e80941Smrg  'freedreno_fence.h',
35b8e80941Smrg  'freedreno_gmem.c',
36b8e80941Smrg  'freedreno_gmem.h',
37b8e80941Smrg  'freedreno_perfcntr.h',
38b8e80941Smrg  'freedreno_program.c',
39b8e80941Smrg  'freedreno_program.h',
40b8e80941Smrg  'freedreno_query.c',
41b8e80941Smrg  'freedreno_query.h',
42b8e80941Smrg  'freedreno_query_acc.c',
43b8e80941Smrg  'freedreno_query_acc.h',
44b8e80941Smrg  'freedreno_query_hw.c',
45b8e80941Smrg  'freedreno_query_hw.h',
46b8e80941Smrg  'freedreno_query_sw.c',
47b8e80941Smrg  'freedreno_query_sw.h',
48b8e80941Smrg  'freedreno_resource.c',
49b8e80941Smrg  'freedreno_resource.h',
50b8e80941Smrg  'freedreno_screen.c',
51b8e80941Smrg  'freedreno_screen.h',
52b8e80941Smrg  'freedreno_state.c',
53b8e80941Smrg  'freedreno_state.h',
54b8e80941Smrg  'freedreno_surface.c',
55b8e80941Smrg  'freedreno_surface.h',
56b8e80941Smrg  'freedreno_texture.c',
57b8e80941Smrg  'freedreno_texture.h',
58b8e80941Smrg  'freedreno_util.c',
59b8e80941Smrg  'freedreno_util.h',
60b8e80941Smrg  'a2xx/disasm-a2xx.c',
61b8e80941Smrg  'a2xx/fd2_blend.c',
62b8e80941Smrg  'a2xx/fd2_blend.h',
63b8e80941Smrg  'a2xx/fd2_context.c',
64b8e80941Smrg  'a2xx/fd2_context.h',
65b8e80941Smrg  'a2xx/fd2_draw.c',
66b8e80941Smrg  'a2xx/fd2_draw.h',
67b8e80941Smrg  'a2xx/fd2_emit.c',
68b8e80941Smrg  'a2xx/fd2_emit.h',
69b8e80941Smrg  'a2xx/fd2_gmem.c',
70b8e80941Smrg  'a2xx/fd2_gmem.h',
71b8e80941Smrg  'a2xx/fd2_perfcntr.c',
72b8e80941Smrg  'a2xx/fd2_program.c',
73b8e80941Smrg  'a2xx/fd2_program.h',
74b8e80941Smrg  'a2xx/fd2_query.c',
75b8e80941Smrg  'a2xx/fd2_query.h',
76b8e80941Smrg  'a2xx/fd2_rasterizer.c',
77b8e80941Smrg  'a2xx/fd2_rasterizer.h',
78b8e80941Smrg  'a2xx/fd2_resource.c',
79b8e80941Smrg  'a2xx/fd2_resource.h',
80b8e80941Smrg  'a2xx/fd2_screen.c',
81b8e80941Smrg  'a2xx/fd2_screen.h',
82b8e80941Smrg  'a2xx/fd2_texture.c',
83b8e80941Smrg  'a2xx/fd2_texture.h',
84b8e80941Smrg  'a2xx/fd2_util.c',
85b8e80941Smrg  'a2xx/fd2_util.h',
86b8e80941Smrg  'a2xx/fd2_zsa.c',
87b8e80941Smrg  'a2xx/fd2_zsa.h',
88b8e80941Smrg  'a2xx/instr-a2xx.h',
89b8e80941Smrg  'a2xx/ir2.c',
90b8e80941Smrg  'a2xx/ir2.h',
91b8e80941Smrg  'a2xx/ir2_assemble.c',
92b8e80941Smrg  'a2xx/ir2_cp.c',
93b8e80941Smrg  'a2xx/ir2_nir.c',
94b8e80941Smrg  'a2xx/ir2_nir_lower_scalar.c',
95b8e80941Smrg  'a2xx/ir2_private.h',
96b8e80941Smrg  'a2xx/ir2_ra.c',
97b8e80941Smrg  'a3xx/fd3_blend.c',
98b8e80941Smrg  'a3xx/fd3_blend.h',
99b8e80941Smrg  'a3xx/fd3_context.c',
100b8e80941Smrg  'a3xx/fd3_context.h',
101b8e80941Smrg  'a3xx/fd3_draw.c',
102b8e80941Smrg  'a3xx/fd3_draw.h',
103b8e80941Smrg  'a3xx/fd3_emit.c',
104b8e80941Smrg  'a3xx/fd3_emit.h',
105b8e80941Smrg  'a3xx/fd3_format.c',
106b8e80941Smrg  'a3xx/fd3_format.h',
107b8e80941Smrg  'a3xx/fd3_gmem.c',
108b8e80941Smrg  'a3xx/fd3_gmem.h',
109b8e80941Smrg  'a3xx/fd3_program.c',
110b8e80941Smrg  'a3xx/fd3_program.h',
111b8e80941Smrg  'a3xx/fd3_query.c',
112b8e80941Smrg  'a3xx/fd3_query.h',
113b8e80941Smrg  'a3xx/fd3_rasterizer.c',
114b8e80941Smrg  'a3xx/fd3_rasterizer.h',
115b8e80941Smrg  'a3xx/fd3_screen.c',
116b8e80941Smrg  'a3xx/fd3_screen.h',
117b8e80941Smrg  'a3xx/fd3_texture.c',
118b8e80941Smrg  'a3xx/fd3_texture.h',
119b8e80941Smrg  'a3xx/fd3_zsa.c',
120b8e80941Smrg  'a3xx/fd3_zsa.h',
121b8e80941Smrg  'a4xx/fd4_blend.c',
122b8e80941Smrg  'a4xx/fd4_blend.h',
123b8e80941Smrg  'a4xx/fd4_context.c',
124b8e80941Smrg  'a4xx/fd4_context.h',
125b8e80941Smrg  'a4xx/fd4_draw.c',
126b8e80941Smrg  'a4xx/fd4_draw.h',
127b8e80941Smrg  'a4xx/fd4_emit.c',
128b8e80941Smrg  'a4xx/fd4_emit.h',
129b8e80941Smrg  'a4xx/fd4_format.c',
130b8e80941Smrg  'a4xx/fd4_format.h',
131b8e80941Smrg  'a4xx/fd4_gmem.c',
132b8e80941Smrg  'a4xx/fd4_gmem.h',
133b8e80941Smrg  'a4xx/fd4_program.c',
134b8e80941Smrg  'a4xx/fd4_program.h',
135b8e80941Smrg  'a4xx/fd4_query.c',
136b8e80941Smrg  'a4xx/fd4_query.h',
137b8e80941Smrg  'a4xx/fd4_rasterizer.c',
138b8e80941Smrg  'a4xx/fd4_rasterizer.h',
139b8e80941Smrg  'a4xx/fd4_screen.c',
140b8e80941Smrg  'a4xx/fd4_screen.h',
141b8e80941Smrg  'a4xx/fd4_texture.c',
142b8e80941Smrg  'a4xx/fd4_texture.h',
143b8e80941Smrg  'a4xx/fd4_zsa.c',
144b8e80941Smrg  'a4xx/fd4_zsa.h',
145b8e80941Smrg  'a5xx/fd5_blend.c',
146b8e80941Smrg  'a5xx/fd5_blend.h',
147b8e80941Smrg  'a5xx/fd5_blitter.c',
148b8e80941Smrg  'a5xx/fd5_blitter.h',
149b8e80941Smrg  'a5xx/fd5_compute.c',
150b8e80941Smrg  'a5xx/fd5_compute.h',
151b8e80941Smrg  'a5xx/fd5_context.c',
152b8e80941Smrg  'a5xx/fd5_context.h',
153b8e80941Smrg  'a5xx/fd5_draw.c',
154b8e80941Smrg  'a5xx/fd5_draw.h',
155b8e80941Smrg  'a5xx/fd5_emit.c',
156b8e80941Smrg  'a5xx/fd5_emit.h',
157b8e80941Smrg  'a5xx/fd5_format.c',
158b8e80941Smrg  'a5xx/fd5_format.h',
159b8e80941Smrg  'a5xx/fd5_gmem.c',
160b8e80941Smrg  'a5xx/fd5_gmem.h',
161b8e80941Smrg  'a5xx/fd5_image.c',
162b8e80941Smrg  'a5xx/fd5_image.h',
163b8e80941Smrg  'a5xx/fd5_perfcntr.c',
164b8e80941Smrg  'a5xx/fd5_program.c',
165b8e80941Smrg  'a5xx/fd5_program.h',
166b8e80941Smrg  'a5xx/fd5_query.c',
167b8e80941Smrg  'a5xx/fd5_query.h',
168b8e80941Smrg  'a5xx/fd5_rasterizer.c',
169b8e80941Smrg  'a5xx/fd5_rasterizer.h',
170b8e80941Smrg  'a5xx/fd5_resource.c',
171b8e80941Smrg  'a5xx/fd5_resource.h',
172b8e80941Smrg  'a5xx/fd5_screen.c',
173b8e80941Smrg  'a5xx/fd5_screen.h',
174b8e80941Smrg  'a5xx/fd5_texture.c',
175b8e80941Smrg  'a5xx/fd5_texture.h',
176b8e80941Smrg  'a5xx/fd5_zsa.c',
177b8e80941Smrg  'a5xx/fd5_zsa.h',
178b8e80941Smrg  'a6xx/fd6_blend.c',
179b8e80941Smrg  'a6xx/fd6_blend.h',
180b8e80941Smrg  'a6xx/fd6_blitter.c',
181b8e80941Smrg  'a6xx/fd6_blitter.h',
182b8e80941Smrg  'a6xx/fd6_compute.c',
183b8e80941Smrg  'a6xx/fd6_compute.h',
184b8e80941Smrg  'a6xx/fd6_context.c',
185b8e80941Smrg  'a6xx/fd6_context.h',
186b8e80941Smrg  'a6xx/fd6_draw.c',
187b8e80941Smrg  'a6xx/fd6_draw.h',
188b8e80941Smrg  'a6xx/fd6_emit.c',
189b8e80941Smrg  'a6xx/fd6_emit.h',
190b8e80941Smrg  'a6xx/fd6_format.c',
191b8e80941Smrg  'a6xx/fd6_format.h',
192b8e80941Smrg  'a6xx/fd6_gmem.c',
193b8e80941Smrg  'a6xx/fd6_gmem.h',
194b8e80941Smrg  'a6xx/fd6_image.c',
195b8e80941Smrg  'a6xx/fd6_image.h',
196b8e80941Smrg  'a6xx/fd6_perfcntr.c',
197b8e80941Smrg  'a6xx/fd6_program.c',
198b8e80941Smrg  'a6xx/fd6_program.h',
199b8e80941Smrg  'a6xx/fd6_query.c',
200b8e80941Smrg  'a6xx/fd6_query.h',
201b8e80941Smrg  'a6xx/fd6_rasterizer.c',
202b8e80941Smrg  'a6xx/fd6_rasterizer.h',
203b8e80941Smrg  'a6xx/fd6_resource.c',
204b8e80941Smrg  'a6xx/fd6_resource.h',
205b8e80941Smrg  'a6xx/fd6_screen.c',
206b8e80941Smrg  'a6xx/fd6_screen.h',
207b8e80941Smrg  'a6xx/fd6_texture.c',
208b8e80941Smrg  'a6xx/fd6_texture.h',
209b8e80941Smrg  'a6xx/fd6_zsa.c',
210b8e80941Smrg  'a6xx/fd6_zsa.h',
211b8e80941Smrg  'ir3/ir3_cache.c',
212b8e80941Smrg  'ir3/ir3_cache.h',
213b8e80941Smrg  'ir3/ir3_gallium.c',
214b8e80941Smrg  'ir3/ir3_gallium.h',
215b8e80941Smrg)
216b8e80941Smrg
217b8e80941Smrgfreedreno_includes = [
218b8e80941Smrg  inc_mesa, inc_mapi,
219b8e80941Smrg  inc_src, inc_include, inc_gallium, inc_gallium_aux,
220b8e80941Smrg  inc_freedreno, include_directories('ir3'),
221b8e80941Smrg]
222b8e80941Smrg
223b8e80941Smrgfreedreno_c_args = [ c_vis_args, no_override_init_args ]
224b8e80941Smrgif cc.has_argument('-Wpacked-bitfield-compat')
225b8e80941Smrg  freedreno_c_args += '-Wno-packed-bitfield-compat'
226b8e80941Smrgendif
227b8e80941Smrg
228b8e80941Smrgfreedreno_cpp_args = []
229b8e80941Smrgif cpp.has_argument('-Wpacked-bitfield-compat')
230b8e80941Smrg  freedreno_cpp_args += '-Wno-packed-bitfield-compat'
231b8e80941Smrgendif
232b8e80941Smrg
233b8e80941Smrglibfreedreno = static_library(
234b8e80941Smrg  'freedreno',
235b8e80941Smrg  [files_libfreedreno],
236b8e80941Smrg  include_directories : freedreno_includes,
237b8e80941Smrg  c_args : [freedreno_c_args, c_vis_args],
238b8e80941Smrg  cpp_args : [freedreno_cpp_args, cpp_vis_args],
239b8e80941Smrg  dependencies : [dep_libdrm, idep_nir_headers],
240b8e80941Smrg)
241b8e80941Smrg
242b8e80941Smrgdriver_freedreno = declare_dependency(
243b8e80941Smrg  compile_args : '-DGALLIUM_FREEDRENO',
244b8e80941Smrg  link_with : [
245b8e80941Smrg    libfreedrenowinsys,
246b8e80941Smrg    libfreedreno,
247b8e80941Smrg    libfreedreno_drm,
248b8e80941Smrg    libfreedreno_ir3,
249b8e80941Smrg  ],
250b8e80941Smrg  dependencies : idep_nir,
251b8e80941Smrg)
252b8e80941Smrg
253b8e80941Smrgir3_compiler = executable(
254b8e80941Smrg  'ir3_compiler',
255b8e80941Smrg  'ir3/ir3_cmdline.c',
256b8e80941Smrg  include_directories : freedreno_includes,
257b8e80941Smrg  dependencies : [
258b8e80941Smrg    dep_thread,
259b8e80941Smrg    idep_nir,
260b8e80941Smrg  ],
261b8e80941Smrg  link_with : [
262b8e80941Smrg    libfreedreno,
263b8e80941Smrg    libfreedreno_drm,
264b8e80941Smrg    libfreedreno_ir3,
265b8e80941Smrg    libgallium,
266b8e80941Smrg    libglsl_standalone,
267b8e80941Smrg    libmesa_util,
268b8e80941Smrg  ],
269b8e80941Smrg  build_by_default : with_tools.contains('freedreno'),
270b8e80941Smrg  install : with_tools.contains('freedreno'),
271b8e80941Smrg)
272