xref: /aosp_15_r20/external/virglrenderer/src/meson.build (revision bbecb9d118dfdb95f99bd754f8fa9be01f189df3)
1*bbecb9d1SAndroid Build Coastguard Worker#############################################################################
2*bbecb9d1SAndroid Build Coastguard Worker#
3*bbecb9d1SAndroid Build Coastguard Worker# Copyright (C) 2019 Collabora Ltd
4*bbecb9d1SAndroid Build Coastguard Worker#
5*bbecb9d1SAndroid Build Coastguard Worker# Permission is hereby granted, free of charge, to any person obtaining a
6*bbecb9d1SAndroid Build Coastguard Worker# copy of this software and associated documentation files (the "Software"),
7*bbecb9d1SAndroid Build Coastguard Worker# to deal in the Software without restriction, including without limitation
8*bbecb9d1SAndroid Build Coastguard Worker# the rights to use, copy, modify, merge, publish, distribute, sublicense,
9*bbecb9d1SAndroid Build Coastguard Worker# and/or sell copies of the Software, and to permit persons to whom the
10*bbecb9d1SAndroid Build Coastguard Worker# Software is furnished to do so, subject to the following conditions:
11*bbecb9d1SAndroid Build Coastguard Worker#
12*bbecb9d1SAndroid Build Coastguard Worker# The above copyright notice and this permission notice shall be included
13*bbecb9d1SAndroid Build Coastguard Worker# in all copies or substantial portions of the Software.
14*bbecb9d1SAndroid Build Coastguard Worker#
15*bbecb9d1SAndroid Build Coastguard Worker# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
16*bbecb9d1SAndroid Build Coastguard Worker# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17*bbecb9d1SAndroid Build Coastguard Worker# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
18*bbecb9d1SAndroid Build Coastguard Worker# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR
19*bbecb9d1SAndroid Build Coastguard Worker# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
20*bbecb9d1SAndroid Build Coastguard Worker# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
21*bbecb9d1SAndroid Build Coastguard Worker# OTHER DEALINGS IN THE SOFTWARE.
22*bbecb9d1SAndroid Build Coastguard Worker#
23*bbecb9d1SAndroid Build Coastguard Worker
24*bbecb9d1SAndroid Build Coastguard Workersubdir('mesa')
25*bbecb9d1SAndroid Build Coastguard Workersubdir('gallium')
26*bbecb9d1SAndroid Build Coastguard Worker
27*bbecb9d1SAndroid Build Coastguard Workervirgl_sources = [
28*bbecb9d1SAndroid Build Coastguard Worker   'iov.c',
29*bbecb9d1SAndroid Build Coastguard Worker   'virgl_context.c',
30*bbecb9d1SAndroid Build Coastguard Worker   'virgl_context.h',
31*bbecb9d1SAndroid Build Coastguard Worker   'virgl_hw.h',
32*bbecb9d1SAndroid Build Coastguard Worker   'virgl_protocol.h',
33*bbecb9d1SAndroid Build Coastguard Worker   'virgl_resource.c',
34*bbecb9d1SAndroid Build Coastguard Worker   'virgl_resource.h',
35*bbecb9d1SAndroid Build Coastguard Worker   'virgl_util.c',
36*bbecb9d1SAndroid Build Coastguard Worker   'virgl_util.h',
37*bbecb9d1SAndroid Build Coastguard Worker]
38*bbecb9d1SAndroid Build Coastguard Worker
39*bbecb9d1SAndroid Build Coastguard Workervrend_sources = [
40*bbecb9d1SAndroid Build Coastguard Worker   'vrend_blitter.c',
41*bbecb9d1SAndroid Build Coastguard Worker   'vrend_blitter.h',
42*bbecb9d1SAndroid Build Coastguard Worker   'vrend_debug.c',
43*bbecb9d1SAndroid Build Coastguard Worker   'vrend_debug.h',
44*bbecb9d1SAndroid Build Coastguard Worker   'vrend_decode.c',
45*bbecb9d1SAndroid Build Coastguard Worker   'vrend_formats.c',
46*bbecb9d1SAndroid Build Coastguard Worker   'vrend_iov.h',
47*bbecb9d1SAndroid Build Coastguard Worker   'vrend_object.c',
48*bbecb9d1SAndroid Build Coastguard Worker   'vrend_object.h',
49*bbecb9d1SAndroid Build Coastguard Worker   'vrend_renderer.c',
50*bbecb9d1SAndroid Build Coastguard Worker   'vrend_renderer.h',
51*bbecb9d1SAndroid Build Coastguard Worker   'vrend_shader.c',
52*bbecb9d1SAndroid Build Coastguard Worker   'vrend_shader.h',
53*bbecb9d1SAndroid Build Coastguard Worker   'vrend_strbuf.h',
54*bbecb9d1SAndroid Build Coastguard Worker   'vrend_tweaks.c',
55*bbecb9d1SAndroid Build Coastguard Worker   'vrend_tweaks.h',
56*bbecb9d1SAndroid Build Coastguard Worker   'vrend_winsys.c',
57*bbecb9d1SAndroid Build Coastguard Worker   'vrend_winsys.h',
58*bbecb9d1SAndroid Build Coastguard Worker]
59*bbecb9d1SAndroid Build Coastguard Worker
60*bbecb9d1SAndroid Build Coastguard Workervirglrenderer_sources = [
61*bbecb9d1SAndroid Build Coastguard Worker   'virglrenderer.c',
62*bbecb9d1SAndroid Build Coastguard Worker   'virglrenderer.h',
63*bbecb9d1SAndroid Build Coastguard Worker   'virglrenderer_hw.h',
64*bbecb9d1SAndroid Build Coastguard Worker]
65*bbecb9d1SAndroid Build Coastguard Worker
66*bbecb9d1SAndroid Build Coastguard Workervrend_winsys_egl_sources = [
67*bbecb9d1SAndroid Build Coastguard Worker   'vrend_winsys_gbm_stubs.c',
68*bbecb9d1SAndroid Build Coastguard Worker   'vrend_winsys_egl.c',
69*bbecb9d1SAndroid Build Coastguard Worker   'vrend_winsys_egl.h',
70*bbecb9d1SAndroid Build Coastguard Worker]
71*bbecb9d1SAndroid Build Coastguard Worker
72*bbecb9d1SAndroid Build Coastguard Workervrend_winsys_glx_sources = [
73*bbecb9d1SAndroid Build Coastguard Worker   'vrend_winsys_glx.c',
74*bbecb9d1SAndroid Build Coastguard Worker   'vrend_winsys_glx.h',
75*bbecb9d1SAndroid Build Coastguard Worker]
76*bbecb9d1SAndroid Build Coastguard Worker
77*bbecb9d1SAndroid Build Coastguard Workervenus_sources = [
78*bbecb9d1SAndroid Build Coastguard Worker   'venus_hw.h',
79*bbecb9d1SAndroid Build Coastguard Worker   'venus/venus-protocol/vn_protocol_renderer.h',
80*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_allocator.c',
81*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_allocator.h',
82*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_buffer.c',
83*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_buffer.h',
84*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_command_buffer.c',
85*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_command_buffer.h',
86*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_common.c',
87*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_common.h',
88*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_context.c',
89*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_context.h',
90*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_cs.c',
91*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_cs.h',
92*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_descriptor_set.c',
93*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_descriptor_set.h',
94*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_device.c',
95*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_device.h',
96*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_device_memory.c',
97*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_device_memory.h',
98*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_image.c',
99*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_image.h',
100*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_instance.c',
101*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_instance.h',
102*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_physical_device.c',
103*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_physical_device.h',
104*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_pipeline.c',
105*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_pipeline.h',
106*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_query_pool.c',
107*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_query_pool.h',
108*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_queue.c',
109*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_queue.h',
110*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_render_pass.c',
111*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_render_pass.h',
112*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_renderer.c',
113*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_renderer.h',
114*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_ring.c',
115*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_ring.h',
116*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_transport.c',
117*bbecb9d1SAndroid Build Coastguard Worker   'venus/vkr_transport.h',
118*bbecb9d1SAndroid Build Coastguard Worker]
119*bbecb9d1SAndroid Build Coastguard Worker
120*bbecb9d1SAndroid Build Coastguard Workervenus_codegen = custom_target(
121*bbecb9d1SAndroid Build Coastguard Worker   'venus_codegen',
122*bbecb9d1SAndroid Build Coastguard Worker   input : ['venus/vkr_device_object.py', 'venus/vkr_device_object.json'],
123*bbecb9d1SAndroid Build Coastguard Worker   output : [
124*bbecb9d1SAndroid Build Coastguard Worker      'vkr_buffer_gen.h',
125*bbecb9d1SAndroid Build Coastguard Worker      'vkr_command_buffer_gen.h',
126*bbecb9d1SAndroid Build Coastguard Worker      'vkr_descriptor_set_gen.h',
127*bbecb9d1SAndroid Build Coastguard Worker      'vkr_device_memory_gen.h',
128*bbecb9d1SAndroid Build Coastguard Worker      'vkr_image_gen.h',
129*bbecb9d1SAndroid Build Coastguard Worker      'vkr_pipeline_gen.h',
130*bbecb9d1SAndroid Build Coastguard Worker      'vkr_query_pool_gen.h',
131*bbecb9d1SAndroid Build Coastguard Worker      'vkr_queue_gen.h',
132*bbecb9d1SAndroid Build Coastguard Worker      'vkr_render_pass_gen.h',
133*bbecb9d1SAndroid Build Coastguard Worker   ],
134*bbecb9d1SAndroid Build Coastguard Worker   command : [prog_python, '@INPUT0@', '-o', '@OUTDIR@', '@INPUT1@'],
135*bbecb9d1SAndroid Build Coastguard Worker)
136*bbecb9d1SAndroid Build Coastguard Worker
137*bbecb9d1SAndroid Build Coastguard Workerdrm_sources = [
138*bbecb9d1SAndroid Build Coastguard Worker   'drm/drm_fence.c',
139*bbecb9d1SAndroid Build Coastguard Worker   'drm/drm_fence.h',
140*bbecb9d1SAndroid Build Coastguard Worker   'drm/drm_renderer.c',
141*bbecb9d1SAndroid Build Coastguard Worker   'drm/drm_renderer.h',
142*bbecb9d1SAndroid Build Coastguard Worker   'drm/drm_util.c',
143*bbecb9d1SAndroid Build Coastguard Worker   'drm/drm_util.h',
144*bbecb9d1SAndroid Build Coastguard Worker]
145*bbecb9d1SAndroid Build Coastguard Worker
146*bbecb9d1SAndroid Build Coastguard Workerdrm_msm_sources = [
147*bbecb9d1SAndroid Build Coastguard Worker   'drm/drm-uapi/msm_drm.h',
148*bbecb9d1SAndroid Build Coastguard Worker   'drm/msm/msm_proto.h',
149*bbecb9d1SAndroid Build Coastguard Worker   'drm/msm/msm_renderer.c',
150*bbecb9d1SAndroid Build Coastguard Worker   'drm/msm/msm_renderer.h',
151*bbecb9d1SAndroid Build Coastguard Worker]
152*bbecb9d1SAndroid Build Coastguard Worker
153*bbecb9d1SAndroid Build Coastguard Workerproxy_sources = [
154*bbecb9d1SAndroid Build Coastguard Worker   'proxy/proxy_client.c',
155*bbecb9d1SAndroid Build Coastguard Worker   'proxy/proxy_common.c',
156*bbecb9d1SAndroid Build Coastguard Worker   'proxy/proxy_context.c',
157*bbecb9d1SAndroid Build Coastguard Worker   'proxy/proxy_renderer.c',
158*bbecb9d1SAndroid Build Coastguard Worker   'proxy/proxy_server.c',
159*bbecb9d1SAndroid Build Coastguard Worker   'proxy/proxy_socket.c',
160*bbecb9d1SAndroid Build Coastguard Worker]
161*bbecb9d1SAndroid Build Coastguard Worker
162*bbecb9d1SAndroid Build Coastguard Workervideo_sources = [
163*bbecb9d1SAndroid Build Coastguard Worker   'virgl_video_hw.h',
164*bbecb9d1SAndroid Build Coastguard Worker   'virgl_video.c',
165*bbecb9d1SAndroid Build Coastguard Worker   'virgl_video.h',
166*bbecb9d1SAndroid Build Coastguard Worker   'vrend_video.c',
167*bbecb9d1SAndroid Build Coastguard Worker   'vrend_video.h',
168*bbecb9d1SAndroid Build Coastguard Worker]
169*bbecb9d1SAndroid Build Coastguard Worker
170*bbecb9d1SAndroid Build Coastguard Workervirgl_depends = [
171*bbecb9d1SAndroid Build Coastguard Worker   gallium_dep,
172*bbecb9d1SAndroid Build Coastguard Worker   epoxy_dep,
173*bbecb9d1SAndroid Build Coastguard Worker   libdrm_dep,
174*bbecb9d1SAndroid Build Coastguard Worker   thread_dep,
175*bbecb9d1SAndroid Build Coastguard Worker   m_dep,
176*bbecb9d1SAndroid Build Coastguard Worker]
177*bbecb9d1SAndroid Build Coastguard Worker
178*bbecb9d1SAndroid Build Coastguard Workerif with_tracing == 'perfetto'
179*bbecb9d1SAndroid Build Coastguard Worker   virgl_depends += [vperfetto_min_dep]
180*bbecb9d1SAndroid Build Coastguard Workerendif
181*bbecb9d1SAndroid Build Coastguard Worker
182*bbecb9d1SAndroid Build Coastguard Workerif with_tracing == 'percetto'
183*bbecb9d1SAndroid Build Coastguard Worker   virgl_depends += [percetto_dep]
184*bbecb9d1SAndroid Build Coastguard Workerendif
185*bbecb9d1SAndroid Build Coastguard Worker
186*bbecb9d1SAndroid Build Coastguard Workervirgl_sources += vrend_sources
187*bbecb9d1SAndroid Build Coastguard Worker
188*bbecb9d1SAndroid Build Coastguard Workerif have_egl
189*bbecb9d1SAndroid Build Coastguard Worker   virgl_sources += vrend_winsys_egl_sources
190*bbecb9d1SAndroid Build Coastguard Workerendif
191*bbecb9d1SAndroid Build Coastguard Worker
192*bbecb9d1SAndroid Build Coastguard Workerif have_glx
193*bbecb9d1SAndroid Build Coastguard Worker   virgl_sources += vrend_winsys_glx_sources
194*bbecb9d1SAndroid Build Coastguard Worker   virgl_depends += [glx_dep]
195*bbecb9d1SAndroid Build Coastguard Workerendif
196*bbecb9d1SAndroid Build Coastguard Worker
197*bbecb9d1SAndroid Build Coastguard Workerif with_venus
198*bbecb9d1SAndroid Build Coastguard Worker   virgl_sources += venus_sources
199*bbecb9d1SAndroid Build Coastguard Worker   virgl_sources += venus_codegen
200*bbecb9d1SAndroid Build Coastguard Worker   virgl_depends += [venus_dep]
201*bbecb9d1SAndroid Build Coastguard Workerendif
202*bbecb9d1SAndroid Build Coastguard Worker
203*bbecb9d1SAndroid Build Coastguard Workerif with_drm
204*bbecb9d1SAndroid Build Coastguard Worker   virgl_sources += drm_sources
205*bbecb9d1SAndroid Build Coastguard Workerendif
206*bbecb9d1SAndroid Build Coastguard Worker
207*bbecb9d1SAndroid Build Coastguard Workerif with_drm_msm
208*bbecb9d1SAndroid Build Coastguard Worker   virgl_sources += drm_msm_sources
209*bbecb9d1SAndroid Build Coastguard Workerendif
210*bbecb9d1SAndroid Build Coastguard Worker
211*bbecb9d1SAndroid Build Coastguard Workerif with_render_server
212*bbecb9d1SAndroid Build Coastguard Worker   virgl_sources += proxy_sources
213*bbecb9d1SAndroid Build Coastguard Workerendif
214*bbecb9d1SAndroid Build Coastguard Worker
215*bbecb9d1SAndroid Build Coastguard Workerif with_video
216*bbecb9d1SAndroid Build Coastguard Worker  virgl_sources += video_sources
217*bbecb9d1SAndroid Build Coastguard Worker  virgl_depends += [libva_dep, libvadrm_dep]
218*bbecb9d1SAndroid Build Coastguard Workerendif
219*bbecb9d1SAndroid Build Coastguard Worker
220*bbecb9d1SAndroid Build Coastguard Workerlibvirgl = static_library(
221*bbecb9d1SAndroid Build Coastguard Worker   'virgl',
222*bbecb9d1SAndroid Build Coastguard Worker   virgl_sources,
223*bbecb9d1SAndroid Build Coastguard Worker   include_directories: [inc_gallium, inc_configuration, 'venus', 'drm', 'drm/drm-uapi'],
224*bbecb9d1SAndroid Build Coastguard Worker   dependencies : virgl_depends,
225*bbecb9d1SAndroid Build Coastguard Worker)
226*bbecb9d1SAndroid Build Coastguard Worker
227*bbecb9d1SAndroid Build Coastguard Workerlibvirgl_inc = [
228*bbecb9d1SAndroid Build Coastguard Worker   inc_gallium,
229*bbecb9d1SAndroid Build Coastguard Worker   inc_configuration,
230*bbecb9d1SAndroid Build Coastguard Worker   include_directories(['.', 'venus', 'drm'])
231*bbecb9d1SAndroid Build Coastguard Worker]
232*bbecb9d1SAndroid Build Coastguard Worker
233*bbecb9d1SAndroid Build Coastguard Workerlibvirgl_dep = declare_dependency(
234*bbecb9d1SAndroid Build Coastguard Worker   link_with: libvirgl,
235*bbecb9d1SAndroid Build Coastguard Worker   include_directories: libvirgl_inc
236*bbecb9d1SAndroid Build Coastguard Worker)
237*bbecb9d1SAndroid Build Coastguard Worker
238*bbecb9d1SAndroid Build Coastguard Workerlibvirglrenderer = library(
239*bbecb9d1SAndroid Build Coastguard Worker   'virglrenderer',
240*bbecb9d1SAndroid Build Coastguard Worker   virglrenderer_sources,
241*bbecb9d1SAndroid Build Coastguard Worker   include_directories: [inc_gallium, inc_configuration],
242*bbecb9d1SAndroid Build Coastguard Worker   dependencies : [virgl_depends, libvirgl_dep],
243*bbecb9d1SAndroid Build Coastguard Worker   version : binary_age.to_string() + '.'
244*bbecb9d1SAndroid Build Coastguard Worker             + interface_age.to_string() + '.'
245*bbecb9d1SAndroid Build Coastguard Worker             + revision.to_string(),
246*bbecb9d1SAndroid Build Coastguard Worker   install : true
247*bbecb9d1SAndroid Build Coastguard Worker)
248*bbecb9d1SAndroid Build Coastguard Worker
249*bbecb9d1SAndroid Build Coastguard Workerpkg = import('pkgconfig')
250*bbecb9d1SAndroid Build Coastguard Workerpkg.generate(libvirglrenderer,
251*bbecb9d1SAndroid Build Coastguard Worker   description: 'virgl GL renderer',
252*bbecb9d1SAndroid Build Coastguard Worker   subdirs: 'virgl'
253*bbecb9d1SAndroid Build Coastguard Worker)
254*bbecb9d1SAndroid Build Coastguard Worker
255*bbecb9d1SAndroid Build Coastguard Workerlibvirglrenderer_dep = declare_dependency(
256*bbecb9d1SAndroid Build Coastguard Worker   link_with: libvirglrenderer,
257*bbecb9d1SAndroid Build Coastguard Worker   include_directories: libvirgl_inc,
258*bbecb9d1SAndroid Build Coastguard Worker   dependencies : [libvirgl_dep, gallium_dep]
259*bbecb9d1SAndroid Build Coastguard Worker)
260*bbecb9d1SAndroid Build Coastguard Worker
261*bbecb9d1SAndroid Build Coastguard Workerinstall_headers('virglrenderer.h', subdir : 'virgl')
262