1# Copyright © 2017 Dylan Baker
2
3# Permission is hereby granted, free of charge, to any person obtaining a copy
4# of this software and associated documentation files (the "Software"), to deal
5# in the Software without restriction, including without limitation the rights
6# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7# copies of the Software, and to permit persons to whom the Software is
8# furnished to do so, subject to the following conditions:
9
10# The above copyright notice and this permission notice shall be included in
11# all copies or substantial portions of the Software.
12
13# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19# SOFTWARE.
20
21files_libgallium = files(
22  'cso_cache/cso_cache.c',
23  'cso_cache/cso_cache.h',
24  'cso_cache/cso_context.c',
25  'cso_cache/cso_context.h',
26  'cso_cache/cso_hash.c',
27  'cso_cache/cso_hash.h',
28  'draw/draw_cliptest_tmp.h',
29  'draw/draw_context.c',
30  'draw/draw_context.h',
31  'draw/draw_decompose_tmp.h',
32  'draw/draw_fs.c',
33  'draw/draw_fs.h',
34  'draw/draw_gs.c',
35  'draw/draw_gs.h',
36  'draw/draw_gs_tmp.h',
37  'draw/draw_pipe_aaline.c',
38  'draw/draw_pipe_aapoint.c',
39  'draw/draw_pipe.c',
40  'draw/draw_pipe.h',
41  'draw/draw_pipe_clip.c',
42  'draw/draw_pipe_cull.c',
43  'draw/draw_pipe_flatshade.c',
44  'draw/draw_pipe_offset.c',
45  'draw/draw_pipe_pstipple.c',
46  'draw/draw_pipe_stipple.c',
47  'draw/draw_pipe_twoside.c',
48  'draw/draw_pipe_unfilled.c',
49  'draw/draw_pipe_util.c',
50  'draw/draw_pipe_validate.c',
51  'draw/draw_pipe_vbuf.c',
52  'draw/draw_pipe_wide_line.c',
53  'draw/draw_pipe_wide_point.c',
54  'draw/draw_prim_assembler.c',
55  'draw/draw_prim_assembler.h',
56  'draw/draw_prim_assembler_tmp.h',
57  'draw/draw_private.h',
58  'draw/draw_pt.c',
59  'draw/draw_pt_decompose.h',
60  'draw/draw_pt_emit.c',
61  'draw/draw_pt_fetch.c',
62  'draw/draw_pt_fetch_emit.c',
63  'draw/draw_pt_fetch_shade_emit.c',
64  'draw/draw_pt_fetch_shade_pipeline.c',
65  'draw/draw_pt.h',
66  'draw/draw_pt_post_vs.c',
67  'draw/draw_pt_so_emit.c',
68  'draw/draw_pt_util.c',
69  'draw/draw_pt_vsplit.c',
70  'draw/draw_pt_vsplit_tmp.h',
71  'draw/draw_so_emit_tmp.h',
72  'draw/draw_split_tmp.h',
73  'draw/draw_vbuf.h',
74  'draw/draw_vertex.c',
75  'draw/draw_vertex.h',
76  'draw/draw_vs.c',
77  'draw/draw_vs_exec.c',
78  'draw/draw_vs.h',
79  'draw/draw_vs_variant.c',
80  'driver_ddebug/dd_context.c',
81  'driver_ddebug/dd_draw.c',
82  'driver_ddebug/dd_pipe.h',
83  'driver_ddebug/dd_public.h',
84  'driver_ddebug/dd_screen.c',
85  'driver_ddebug/dd_util.h',
86  'driver_noop/noop_pipe.c',
87  'driver_noop/noop_public.h',
88  'driver_noop/noop_state.c',
89  'driver_rbug/rbug_context.c',
90  'driver_rbug/rbug_context.h',
91  'driver_rbug/rbug_core.c',
92  'driver_rbug/rbug_objects.c',
93  'driver_rbug/rbug_objects.h',
94  'driver_rbug/rbug_public.h',
95  'driver_rbug/rbug_screen.c',
96  'driver_rbug/rbug_screen.h',
97  'driver_trace/tr_context.c',
98  'driver_trace/tr_context.h',
99  'driver_trace/tr_dump.c',
100  'driver_trace/tr_dump_defines.h',
101  'driver_trace/tr_dump.h',
102  'driver_trace/tr_dump_state.c',
103  'driver_trace/tr_dump_state.h',
104  'driver_trace/tr_public.h',
105  'driver_trace/tr_screen.c',
106  'driver_trace/tr_screen.h',
107  'driver_trace/tr_texture.c',
108  'driver_trace/tr_texture.h',
109  'hud/font.c',
110  'hud/font.h',
111  'hud/hud_context.c',
112  'hud/hud_context.h',
113  'hud/hud_cpu.c',
114  'hud/hud_nic.c',
115  'hud/hud_cpufreq.c',
116  'hud/hud_diskstat.c',
117  'hud/hud_sensors_temp.c',
118  'hud/hud_driver_query.c',
119  'hud/hud_fps.c',
120  'hud/hud_private.h',
121  'indices/u_indices.h',
122  'indices/u_indices_priv.h',
123  'indices/u_primconvert.c',
124  'indices/u_primconvert.h',
125  'os/os_mman.h',
126  'os/os_process.c',
127  'os/os_process.h',
128  'os/os_thread.h',
129  'pipebuffer/pb_buffer_fenced.c',
130  'pipebuffer/pb_buffer_fenced.h',
131  'pipebuffer/pb_buffer.h',
132  'pipebuffer/pb_bufmgr_cache.c',
133  'pipebuffer/pb_bufmgr_debug.c',
134  'pipebuffer/pb_bufmgr.h',
135  'pipebuffer/pb_bufmgr_mm.c',
136  'pipebuffer/pb_bufmgr_slab.c',
137  'pipebuffer/pb_cache.c',
138  'pipebuffer/pb_cache.h',
139  'pipebuffer/pb_slab.c',
140  'pipebuffer/pb_slab.h',
141  'pipebuffer/pb_validate.c',
142  'pipebuffer/pb_validate.h',
143  'postprocess/filters.h',
144  'postprocess/postprocess.h',
145  'postprocess/pp_celshade.c',
146  'postprocess/pp_celshade.h',
147  'postprocess/pp_colors.c',
148  'postprocess/pp_colors.h',
149  'postprocess/pp_filters.h',
150  'postprocess/pp_init.c',
151  'postprocess/pp_mlaa_areamap.h',
152  'postprocess/pp_mlaa.c',
153  'postprocess/pp_mlaa.h',
154  'postprocess/pp_private.h',
155  'postprocess/pp_program.c',
156  'postprocess/pp_run.c',
157  'rbug/rbug_connection.c',
158  'rbug/rbug_connection.h',
159  'rbug/rbug_context.c',
160  'rbug/rbug_context.h',
161  'rbug/rbug_core.c',
162  'rbug/rbug_core.h',
163  'rbug/rbug_demarshal.c',
164  'rbug/rbug.h',
165  'rbug/rbug_internal.h',
166  'rbug/rbug_proto.h',
167  'rbug/rbug_shader.c',
168  'rbug/rbug_shader.h',
169  'rbug/rbug_texture.c',
170  'rbug/rbug_texture.h',
171  'rtasm/rtasm_cpu.c',
172  'rtasm/rtasm_cpu.h',
173  'rtasm/rtasm_execmem.c',
174  'rtasm/rtasm_execmem.h',
175  'rtasm/rtasm_x86sse.c',
176  'rtasm/rtasm_x86sse.h',
177  'tgsi/tgsi_aa_point.c',
178  'tgsi/tgsi_aa_point.h',
179  'tgsi/tgsi_build.c',
180  'tgsi/tgsi_build.h',
181  'tgsi/tgsi_dump.c',
182  'tgsi/tgsi_dump.h',
183  'tgsi/tgsi_exec.c',
184  'tgsi/tgsi_exec.h',
185  'tgsi/tgsi_emulate.c',
186  'tgsi/tgsi_emulate.h',
187  'tgsi/tgsi_from_mesa.c',
188  'tgsi/tgsi_from_mesa.h',
189  'tgsi/tgsi_info.c',
190  'tgsi/tgsi_info.h',
191  'tgsi/tgsi_info_opcodes.h',
192  'tgsi/tgsi_iterate.c',
193  'tgsi/tgsi_iterate.h',
194  'tgsi/tgsi_lowering.c',
195  'tgsi/tgsi_lowering.h',
196  'tgsi/tgsi_opcode_tmp.h',
197  'tgsi/tgsi_parse.c',
198  'tgsi/tgsi_parse.h',
199  'tgsi/tgsi_point_sprite.c',
200  'tgsi/tgsi_point_sprite.h',
201  'tgsi/tgsi_sanity.c',
202  'tgsi/tgsi_sanity.h',
203  'tgsi/tgsi_scan.c',
204  'tgsi/tgsi_scan.h',
205  'tgsi/tgsi_strings.c',
206  'tgsi/tgsi_strings.h',
207  'tgsi/tgsi_text.c',
208  'tgsi/tgsi_text.h',
209  'tgsi/tgsi_transform.c',
210  'tgsi/tgsi_transform.h',
211  'tgsi/tgsi_two_side.c',
212  'tgsi/tgsi_two_side.h',
213  'tgsi/tgsi_ureg.c',
214  'tgsi/tgsi_ureg.h',
215  'tgsi/tgsi_util.c',
216  'tgsi/tgsi_util.h',
217  'translate/translate.c',
218  'translate/translate.h',
219  'translate/translate_cache.c',
220  'translate/translate_cache.h',
221  'translate/translate_generic.c',
222  'translate/translate_sse.c',
223  'util/dbghelp.h',
224  'util/u_async_debug.h',
225  'util/u_async_debug.c',
226  'util/u_bitcast.h',
227  'util/u_bitmask.c',
228  'util/u_bitmask.h',
229  'util/u_blend.h',
230  'util/u_blit.c',
231  'util/u_blit.h',
232  'util/u_blitter.c',
233  'util/u_blitter.h',
234  'util/u_box.h',
235  'util/u_cache.c',
236  'util/u_cache.h',
237  'util/u_compute.c',
238  'util/u_compute.h',
239  'util/u_debug_gallium.h',
240  'util/u_debug_gallium.c',
241  'util/u_debug_describe.c',
242  'util/u_debug_describe.h',
243  'util/u_debug_flush.c',
244  'util/u_debug_flush.h',
245  'util/u_debug_image.c',
246  'util/u_debug_image.h',
247  'util/u_debug_memory.c',
248  'util/u_debug_refcnt.c',
249  'util/u_debug_refcnt.h',
250  'util/u_debug_stack.c',
251  'util/u_debug_stack.h',
252  'util/u_debug_symbol.c',
253  'util/u_debug_symbol.h',
254  'util/u_dirty_flags.h',
255  'util/u_dirty_surfaces.h',
256  'util/u_dl.c',
257  'util/u_dl.h',
258  'util/u_draw.c',
259  'util/u_draw.h',
260  'util/u_draw_quad.c',
261  'util/u_draw_quad.h',
262  'util/u_dual_blend.h',
263  'util/u_dump_defines.c',
264  'util/u_dump.h',
265  'util/u_dump_state.c',
266  'util/u_fifo.h',
267  'util/u_format.c',
268  'util/u_format.h',
269  'util/u_format_bptc.c',
270  'util/u_format_bptc.h',
271  'util/u_format_etc.c',
272  'util/u_format_etc.h',
273  'util/u_format_latc.c',
274  'util/u_format_latc.h',
275  'util/u_format_other.c',
276  'util/u_format_other.h',
277  'util/u_format_rgtc.c',
278  'util/u_format_rgtc.h',
279  'util/u_format_s3tc.c',
280  'util/u_format_s3tc.h',
281  'util/u_format_tests.c',
282  'util/u_format_tests.h',
283  'util/u_format_yuv.c',
284  'util/u_format_yuv.h',
285  'util/u_format_zs.c',
286  'util/u_format_zs.h',
287  'util/u_framebuffer.c',
288  'util/u_framebuffer.h',
289  'util/u_gen_mipmap.c',
290  'util/u_gen_mipmap.h',
291  'util/u_half.h',
292  'util/u_handle_table.c',
293  'util/u_handle_table.h',
294  'util/u_hash_table.c',
295  'util/u_hash_table.h',
296  'util/u_helpers.c',
297  'util/u_helpers.h',
298  'util/u_idalloc.c',
299  'util/u_idalloc.h',
300  'util/u_index_modify.c',
301  'util/u_index_modify.h',
302  'util/u_inlines.h',
303  'util/u_linear.c',
304  'util/u_linear.h',
305  'util/u_log.c',
306  'util/u_log.h',
307  'util/u_mm.c',
308  'util/u_mm.h',
309  'util/u_network.c',
310  'util/u_network.h',
311  'util/u_pack_color.h',
312  'util/u_pointer.h',
313  'util/u_prim.h',
314  'util/u_prim.c',
315  'util/u_prim_restart.c',
316  'util/u_prim_restart.h',
317  'util/u_pstipple.c',
318  'util/u_pstipple.h',
319  'util/u_pwr8.h',
320  'util/u_range.h',
321  'util/u_rect.h',
322  'util/u_resource.c',
323  'util/u_resource.h',
324  'util/u_ringbuffer.c',
325  'util/u_ringbuffer.h',
326  'util/u_sampler.c',
327  'util/u_sampler.h',
328  'util/u_screen.c',
329  'util/u_screen.h',
330  'util/u_simple_shaders.c',
331  'util/u_simple_shaders.h',
332  'util/u_split_prim.h',
333  'util/u_sse.h',
334  'util/u_suballoc.c',
335  'util/u_suballoc.h',
336  'util/u_surface.c',
337  'util/u_surface.h',
338  'util/u_surfaces.c',
339  'util/u_surfaces.h',
340  'util/u_tests.c',
341  'util/u_tests.h',
342  'util/u_texture.c',
343  'util/u_texture.h',
344  'util/u_tile.c',
345  'util/u_tile.h',
346  'util/u_transfer.c',
347  'util/u_transfer.h',
348  'util/u_transfer_helper.c',
349  'util/u_transfer_helper.h',
350  'util/u_threaded_context.c',
351  'util/u_threaded_context.h',
352  'util/u_threaded_context_calls.h',
353  'util/u_upload_mgr.c',
354  'util/u_upload_mgr.h',
355  'util/u_vbuf.c',
356  'util/u_vbuf.h',
357  'util/u_video.h',
358  'util/u_viewport.h',
359  'nir/tgsi_to_nir.c',
360  'nir/tgsi_to_nir.h',
361)
362
363if dep_libdrm.found()
364  files_libgallium += files(
365    'renderonly/renderonly.c',
366    'renderonly/renderonly.h',
367  )
368endif
369
370if with_llvm
371  files_libgallium += files(
372    'gallivm/lp_bld_arit.c',
373    'gallivm/lp_bld_arit.h',
374    'gallivm/lp_bld_arit_overflow.c',
375    'gallivm/lp_bld_arit_overflow.h',
376    'gallivm/lp_bld_assert.c',
377    'gallivm/lp_bld_assert.h',
378    'gallivm/lp_bld_bitarit.c',
379    'gallivm/lp_bld_bitarit.h',
380    'gallivm/lp_bld_const.c',
381    'gallivm/lp_bld_const.h',
382    'gallivm/lp_bld_conv.c',
383    'gallivm/lp_bld_conv.h',
384    'gallivm/lp_bld_debug.cpp',
385    'gallivm/lp_bld_debug.h',
386    'gallivm/lp_bld_flow.c',
387    'gallivm/lp_bld_flow.h',
388    'gallivm/lp_bld_format_aos_array.c',
389    'gallivm/lp_bld_format_aos.c',
390    'gallivm/lp_bld_format_float.c',
391    'gallivm/lp_bld_format_s3tc.c',
392    'gallivm/lp_bld_format.c',
393    'gallivm/lp_bld_format.h',
394    'gallivm/lp_bld_format_soa.c',
395    'gallivm/lp_bld_format_srgb.c',
396    'gallivm/lp_bld_format_yuv.c',
397    'gallivm/lp_bld_gather.c',
398    'gallivm/lp_bld_gather.h',
399    'gallivm/lp_bld.h',
400    'gallivm/lp_bld_init.c',
401    'gallivm/lp_bld_init.h',
402    'gallivm/lp_bld_intr.c',
403    'gallivm/lp_bld_intr.h',
404    'gallivm/lp_bld_limits.h',
405    'gallivm/lp_bld_logic.c',
406    'gallivm/lp_bld_logic.h',
407    'gallivm/lp_bld_misc.cpp',
408    'gallivm/lp_bld_misc.h',
409    'gallivm/lp_bld_pack.c',
410    'gallivm/lp_bld_pack.h',
411    'gallivm/lp_bld_printf.c',
412    'gallivm/lp_bld_printf.h',
413    'gallivm/lp_bld_quad.c',
414    'gallivm/lp_bld_quad.h',
415    'gallivm/lp_bld_sample_aos.c',
416    'gallivm/lp_bld_sample_aos.h',
417    'gallivm/lp_bld_sample.c',
418    'gallivm/lp_bld_sample.h',
419    'gallivm/lp_bld_sample_soa.c',
420    'gallivm/lp_bld_struct.c',
421    'gallivm/lp_bld_struct.h',
422    'gallivm/lp_bld_swizzle.c',
423    'gallivm/lp_bld_swizzle.h',
424    'gallivm/lp_bld_tgsi_action.c',
425    'gallivm/lp_bld_tgsi_action.h',
426    'gallivm/lp_bld_tgsi_aos.c',
427    'gallivm/lp_bld_tgsi.c',
428    'gallivm/lp_bld_tgsi.h',
429    'gallivm/lp_bld_tgsi_info.c',
430    'gallivm/lp_bld_tgsi_soa.c',
431    'gallivm/lp_bld_type.c',
432    'gallivm/lp_bld_type.h',
433    'draw/draw_llvm.c',
434    'draw/draw_llvm.h',
435    'draw/draw_llvm_sample.c',
436    'draw/draw_pt_fetch_shade_pipeline_llvm.c',
437    'draw/draw_vs_llvm.c',
438  )
439endif
440
441files_libgalliumvl = files(
442  'vl/vl_bicubic_filter.c',
443  'vl/vl_bicubic_filter.h',
444  'vl/vl_compositor.c',
445  'vl/vl_compositor.h',
446  'vl/vl_compositor_gfx.c',
447  'vl/vl_compositor_gfx.h',
448  'vl/vl_compositor_cs.c',
449  'vl/vl_compositor_cs.h',
450  'vl/vl_csc.c',
451  'vl/vl_csc.h',
452  'vl/vl_decoder.c',
453  'vl/vl_decoder.h',
454  'vl/vl_defines.h',
455  'vl/vl_deint_filter.c',
456  'vl/vl_deint_filter.h',
457  'vl/vl_idct.c',
458  'vl/vl_idct.h',
459  'vl/vl_matrix_filter.c',
460  'vl/vl_matrix_filter.h',
461  'vl/vl_mc.c',
462  'vl/vl_mc.h',
463  'vl/vl_median_filter.c',
464  'vl/vl_median_filter.h',
465  'vl/vl_mpeg12_bitstream.c',
466  'vl/vl_mpeg12_bitstream.h',
467  'vl/vl_mpeg12_decoder.c',
468  'vl/vl_mpeg12_decoder.h',
469  'vl/vl_rbsp.h',
470  'vl/vl_types.h',
471  'vl/vl_vertex_buffers.c',
472  'vl/vl_vertex_buffers.h',
473  'vl/vl_video_buffer.c',
474  'vl/vl_video_buffer.h',
475  'vl/vl_vlc.h',
476  'vl/vl_zscan.c',
477  'vl/vl_zscan.h',
478  'vl/vl_probs_table.h',
479)
480
481vlwinsys_deps = []
482files_libgalliumvlwinsys = files('vl/vl_winsys.h')
483if with_dri2 and with_platform_x11
484  files_libgalliumvlwinsys += files('vl/vl_winsys_dri.c')
485  if with_dri3
486    vlwinsys_deps += [
487      dep_xcb_sync, dep_xcb_present, dep_xshmfence, dep_xcb_xfixes,
488      dep_xcb_dri3, 
489    ]
490    files_libgalliumvlwinsys += files('vl/vl_winsys_dri3.c')
491  endif
492endif
493if with_platform_drm
494  files_libgalliumvlwinsys += files('vl/vl_winsys_drm.c')
495endif
496
497u_indices_gen_c = custom_target(
498  'u_indices_gen.c',
499  input : 'indices/u_indices_gen.py',
500  output : 'u_indices_gen.c',
501  command : [prog_python, '@INPUT@'],
502  capture : true,
503)
504
505u_unfilled_gen_c = custom_target(
506  'u_unfilled_gen.c',
507  input : 'indices/u_unfilled_gen.py',
508  output : 'u_unfilled_gen.c',
509  command : [prog_python, '@INPUT@'],
510  capture : true,
511)
512
513u_format_table_c = custom_target(
514  'u_format_table.c',
515  input : ['util/u_format_table.py', 'util/u_format.csv'],
516  output : 'u_format_table.c',
517  command : [prog_python, '@INPUT@'],
518  depend_files : files('util/u_format_pack.py', 'util/u_format_parse.py'),
519  capture : true,
520)
521
522libgallium = static_library(
523  'gallium',
524  [files_libgallium, u_indices_gen_c, u_unfilled_gen_c, u_format_table_c],
525  include_directories : [
526    inc_loader, inc_gallium, inc_src, inc_include, include_directories('util')
527  ],
528  c_args : [c_vis_args, c_msvc_compat_args],
529  cpp_args : [cpp_vis_args, cpp_msvc_compat_args],
530  dependencies : [
531    dep_libdrm, dep_llvm, dep_unwind, dep_dl, dep_m, dep_thread, dep_lmsensors,
532    idep_nir_headers,
533  ],
534  build_by_default : false,
535  link_with: [
536    libglsl
537  ]
538)
539
540libgalliumvl_stub = static_library(
541  'galliumvl_stub',
542  'vl/vl_stubs.c',
543  c_args : [c_vis_args, c_msvc_compat_args],
544  cpp_args : [cpp_vis_args, cpp_msvc_compat_args],
545  include_directories: [inc_gallium, inc_include, inc_src],
546  build_by_default : false,
547)
548
549libgalliumvl = static_library(
550  'galliumvl',
551  files_libgalliumvl,
552  c_args : [c_vis_args, c_msvc_compat_args],
553  cpp_args : [cpp_vis_args, cpp_msvc_compat_args],
554  include_directories : [inc_gallium, inc_include, inc_src],
555  build_by_default : false,
556)
557
558# XXX: The dependencies here may be off...
559libgalliumvlwinsys = static_library(
560  'galliumvlwinsys',
561  files_libgalliumvlwinsys,
562  include_directories : [inc_gallium, inc_include, inc_loader, inc_src],
563  dependencies : [dep_libdrm, vlwinsys_deps],
564  build_by_default : false,
565)
566