1# Copyright © 2018 Lima Project
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
22files_lima = files(
23  'ir/gp/gpir.h',
24  'ir/gp/nir.c',
25  'ir/gp/node.c',
26  'ir/gp/lower.c',
27  'ir/gp/scheduler.c',
28  'ir/gp/instr.c',
29  'ir/gp/codegen.h',
30  'ir/gp/codegen.c',
31  'ir/gp/reduce_scheduler.c',
32  'ir/gp/regalloc.c',
33  'ir/gp/disasm.c',
34  'ir/gp/optimize.c',
35
36  'ir/pp/ppir.h',
37  'ir/pp/nir.c',
38  'ir/pp/node.c',
39  'ir/pp/lower.c',
40  'ir/pp/scheduler.c',
41  'ir/pp/instr.c',
42  'ir/pp/regalloc.c',
43  'ir/pp/liveness.c',
44  'ir/pp/codegen.h',
45  'ir/pp/codegen.c',
46  'ir/pp/node_to_instr.c',
47  'ir/pp/disasm.c',
48
49  'ir/lima_nir_duplicate_consts.c',
50  'ir/lima_nir_duplicate_intrinsic.c',
51  'ir/lima_nir_lower_uniform_to_scalar.c',
52  'ir/lima_nir_split_load_input.c',
53  'ir/lima_nir_split_loads.c',
54
55  'ir/lima_ir.h',
56
57  'lima_screen.c',
58  'lima_screen.h',
59  'lima_context.c',
60  'lima_context.h',
61  'lima_resource.c',
62  'lima_resource.h',
63  'lima_state.c',
64  'lima_disk_cache.c',
65  'lima_disk_cache.h',
66  'lima_draw.c',
67  'lima_program.c',
68  'lima_query.c',
69  'lima_bo.c',
70  'lima_bo.h',
71  'lima_job.c',
72  'lima_job.h',
73  'lima_parser.c',
74  'lima_parser.h',
75  'lima_util.c',
76  'lima_util.h',
77  'lima_texture.c',
78  'lima_texture.h',
79  'lima_fence.c',
80  'lima_fence.h',
81  'lima_format.h',
82  'lima_format.c',
83  'lima_gpu.h',
84)
85
86lima_nir_algebraic_c = custom_target(
87  'lima_nir_algebraic.c',
88  input : 'ir/lima_nir_algebraic.py',
89  output : 'lima_nir_algebraic.c',
90  command : [
91    prog_python, '@INPUT@',
92    '-p', join_paths(meson.source_root(), 'src/compiler/nir/'),
93  ],
94  capture : true,
95  depend_files : nir_algebraic_py,
96)
97
98liblima = static_library(
99  'lima',
100  files_lima, lima_nir_algebraic_c,
101  include_directories : [
102    inc_src, inc_include, inc_gallium, inc_gallium_aux, inc_gallium_drivers,
103    inc_panfrost
104  ],
105  dependencies : [dep_libdrm, idep_nir_headers, idep_mesautil],
106)
107
108driver_lima = declare_dependency(
109  compile_args : '-DGALLIUM_LIMA',
110  link_with : [liblima, liblimawinsys, libpanfrost_shared],
111  dependencies : idep_nir,
112)
113
114
115lima_compiler = executable(
116  'lima_compiler',
117  files(
118    'standalone/lima_compiler_cmdline.c',
119    'standalone/glsl.cpp'
120  ),
121  include_directories : [
122    inc_src, inc_include, inc_gallium, inc_gallium_aux, inc_gallium_drivers, inc_mesa, inc_mapi, inc_compiler,
123  ],
124  dependencies : [
125    idep_nir,
126    idep_mesautil,
127  ],
128  link_with : [
129    liblima,
130    libgallium,
131    libglsl_standalone,
132    libpanfrost_shared,
133  ],
134  build_by_default : with_tools.contains('lima'),
135  install : with_tools.contains('lima'),
136)
137
138lima_disasm = executable(
139  'lima_disasm',
140  files(
141    'standalone/lima_disasm.c',
142  ),
143  include_directories : [
144    inc_src, inc_include, inc_gallium, inc_gallium_aux, inc_gallium_drivers, inc_mesa, inc_mapi, inc_compiler,
145  ],
146  dependencies : [
147    idep_mesautil,
148  ],
149  link_with : [
150    liblima,
151    libpanfrost_shared,
152  ],
153  build_by_default : with_tools.contains('lima'),
154  install : with_tools.contains('lima'),
155)
156
157if with_tools.contains('drm-shim')
158  subdir('drm-shim')
159endif
160