xref: /aosp_15_r20/external/mesa3d/src/asahi/lib/meson.build (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1# Copyright 2018 Rob Clark
2# Copyright 2019 Collabora, Ltd.
3# Copyright 2017 Intel Corporation
4# SPDX-License-Identifier: MIT
5
6dep_iokit = dependency('IOKit', required : false)
7
8libasahi_lib_files = files(
9  'agx_bo.c',
10  'agx_border.c',
11  'agx_device.c',
12  'agx_device_virtio.c',
13  'agx_linker.c',
14  'agx_bg_eot.c',
15  'agx_tilebuffer.c',
16  'agx_nir_lower_alpha.c',
17  'agx_nir_lower_gs.c',
18  'agx_nir_lower_ia.c',
19  'agx_nir_lower_msaa.c',
20  'agx_nir_lower_sample_intrinsics.c',
21  'agx_nir_lower_tess.c',
22  'agx_nir_lower_texture.c',
23  'agx_nir_lower_tilebuffer.c',
24  'agx_nir_lower_uvs.c',
25  'agx_nir_lower_vbo.c',
26  'agx_nir_prolog_epilog.c',
27  'agx_ppp.h',
28  'agx_scratch.c',
29  'agx_va.c',
30  'pool.c',
31)
32
33libasahi_decode_files = files(
34  'decode.c',
35)
36
37libagx_shader_files = files(
38  'shaders/libagx.h',
39  'shaders/compression.cl',
40  'shaders/draws.cl',
41  'shaders/draws.h',
42  'shaders/geometry.cl',
43  'shaders/geometry.h',
44  'shaders/query.cl',
45  'shaders/query.h',
46  'shaders/tessellation.cl',
47  'shaders/tessellator.cl',
48  'shaders/tessellator.h',
49  'shaders/texture.cl',
50  'shaders/helper.cl',
51)
52
53libasahi_decode = static_library(
54  'asahi_decode',
55  [libasahi_decode_files, agx_pack],
56  dependencies : [dep_valgrind, idep_mesautil],
57  c_args : [no_override_init_args],
58  gnu_symbol_visibility : 'hidden',
59  build_by_default : false,
60)
61
62libasahi_decode_shared = shared_library(
63  'asahi_decode',
64  [libasahi_decode_files, agx_pack],
65  dependencies : [dep_valgrind, idep_mesautil],
66  c_args : [no_override_init_args],
67  build_by_default : with_tools.contains('asahi'),
68)
69
70prepended_input_args = []
71foreach input_arg : libagx_shader_files
72  prepended_input_args += ['--in', input_arg]
73endforeach
74libagx_shaders = custom_target(
75  'libagx_shaders.h',
76  input : libagx_shader_files,
77  output : 'libagx_shaders.h',
78  command : [
79    prog_asahi_clc, '--prefix', 'libagx_shaders',
80    prepended_input_args, '-o', '@OUTPUT@', '--',
81    '-cl-std=cl2.0', '-D__OPENCL_VERSION__=200',
82    '-I' + join_paths(meson.current_source_dir(), '.'),
83    '-I' + join_paths(meson.current_source_dir(), '../../'),
84    '-I' + join_paths(meson.current_source_dir(), 'shaders'),
85    '-I' + join_paths(meson.current_build_dir(), '../genxml'),
86    ],
87  env: ['MESA_SHADER_CACHE_DISABLE=true'],
88  depends : [prog_asahi_clc, agx_pack],
89)
90
91libasahi_lib = static_library(
92  'asahi_lib',
93  [libasahi_lib_files, libagx_shaders, agx_pack, sha1_h],
94  include_directories : [inc_asahi, inc_virtio_gpu, inc_virtio_vdrm],
95  c_args : [no_override_init_args],
96  gnu_symbol_visibility : 'hidden',
97  link_with: [libasahi_decode, libvdrm],
98  dependencies: [dep_libdrm, dep_valgrind, idep_nir, idep_mesautil],
99  build_by_default : false,
100)
101
102if with_tests
103  test(
104    'libasahi_tests',
105    executable(
106      'libasahi_tests',
107      files(
108        'tests/test-packing.cpp',
109        'tests/test-tilebuffer.cpp',
110      ),
111      c_args : [c_msvc_compat_args, no_override_init_args],
112      gnu_symbol_visibility : 'hidden',
113      dependencies: [idep_gtest, idep_agx_pack, idep_mesautil],
114      link_with : [libasahi_lib, libasahi_layout],
115    ),
116    suite : ['asahi'],
117    protocol : 'gtest',
118  )
119endif
120
121if dep_iokit.found()
122  libasahi_wrap = shared_library(
123    'wrap',
124    'wrap.c',
125    include_directories : [inc_src, inc_asahi],
126    dependencies : [idep_mesautil, dep_iokit],
127    c_args : [no_override_init_args, '-Wno-missing-prototypes'],
128    gnu_symbol_visibility : 'hidden',
129    build_by_default : with_tools.contains('asahi'),
130    link_with: libasahi_decode,
131  )
132endif
133