xref: /aosp_15_r20/external/mesa3d/src/egl/meson.build (revision 6104692788411f58d303aa86923a9ff6ecaded22)
1*61046927SAndroid Build Coastguard Worker# Copyright © 2017-2019 Intel Corporation
2*61046927SAndroid Build Coastguard Worker# SPDX-License-Identifier: MIT
3*61046927SAndroid Build Coastguard Worker
4*61046927SAndroid Build Coastguard Workerinc_egl = include_directories('.', 'main')
5*61046927SAndroid Build Coastguard Workerinc_egl_dri2 = include_directories('drivers/dri2')
6*61046927SAndroid Build Coastguard Worker
7*61046927SAndroid Build Coastguard Workerc_args_for_egl = [asan_c_args]
8*61046927SAndroid Build Coastguard Workercpp_args_for_egl = []
9*61046927SAndroid Build Coastguard Workerlink_for_egl = [libpipe_loader_dynamic]
10*61046927SAndroid Build Coastguard Workerif with_dri
11*61046927SAndroid Build Coastguard Worker  link_for_egl += libgallium_dri
12*61046927SAndroid Build Coastguard Workerendif
13*61046927SAndroid Build Coastguard Workerif with_platform_windows
14*61046927SAndroid Build Coastguard Worker  link_for_egl += libgallium_wgl
15*61046927SAndroid Build Coastguard Workerendif
16*61046927SAndroid Build Coastguard Workerdeps_for_egl = []
17*61046927SAndroid Build Coastguard Workerincs_for_egl = [inc_include, inc_src, inc_egl]
18*61046927SAndroid Build Coastguard Worker
19*61046927SAndroid Build Coastguard Workerfiles_egl = files(
20*61046927SAndroid Build Coastguard Worker  'main/eglapi.c',
21*61046927SAndroid Build Coastguard Worker  'main/eglarray.c',
22*61046927SAndroid Build Coastguard Worker  'main/eglarray.h',
23*61046927SAndroid Build Coastguard Worker  'main/eglconfigdebug.c',
24*61046927SAndroid Build Coastguard Worker  'main/eglconfigdebug.h',
25*61046927SAndroid Build Coastguard Worker  'main/eglconfig.c',
26*61046927SAndroid Build Coastguard Worker  'main/eglconfig.h',
27*61046927SAndroid Build Coastguard Worker  'main/eglcontext.c',
28*61046927SAndroid Build Coastguard Worker  'main/eglcontext.h',
29*61046927SAndroid Build Coastguard Worker  'main/eglcurrent.c',
30*61046927SAndroid Build Coastguard Worker  'main/eglcurrent.h',
31*61046927SAndroid Build Coastguard Worker  'main/egldefines.h',
32*61046927SAndroid Build Coastguard Worker  'main/egldevice.c',
33*61046927SAndroid Build Coastguard Worker  'main/egldevice.h',
34*61046927SAndroid Build Coastguard Worker  'main/egldisplay.c',
35*61046927SAndroid Build Coastguard Worker  'main/egldisplay.h',
36*61046927SAndroid Build Coastguard Worker  'main/egldriver.h',
37*61046927SAndroid Build Coastguard Worker  'main/eglglobals.c',
38*61046927SAndroid Build Coastguard Worker  'main/eglglobals.h',
39*61046927SAndroid Build Coastguard Worker  'main/eglimage.c',
40*61046927SAndroid Build Coastguard Worker  'main/eglimage.h',
41*61046927SAndroid Build Coastguard Worker  'main/egllog.c',
42*61046927SAndroid Build Coastguard Worker  'main/egllog.h',
43*61046927SAndroid Build Coastguard Worker  'main/eglsurface.c',
44*61046927SAndroid Build Coastguard Worker  'main/eglsurface.h',
45*61046927SAndroid Build Coastguard Worker  'main/eglsync.c',
46*61046927SAndroid Build Coastguard Worker  'main/eglsync.h',
47*61046927SAndroid Build Coastguard Worker  'main/eglentrypoint.h',
48*61046927SAndroid Build Coastguard Worker  'main/egltypedefs.h',
49*61046927SAndroid Build Coastguard Worker)
50*61046927SAndroid Build Coastguard Worker
51*61046927SAndroid Build Coastguard Workerg_egldispatchstubs_c = custom_target(
52*61046927SAndroid Build Coastguard Worker  'g_egldispatchstubs.c',
53*61046927SAndroid Build Coastguard Worker  input : [
54*61046927SAndroid Build Coastguard Worker    'generate/gen_egl_dispatch.py',
55*61046927SAndroid Build Coastguard Worker    'generate/egl.xml', 'generate/egl_other.xml'
56*61046927SAndroid Build Coastguard Worker  ],
57*61046927SAndroid Build Coastguard Worker  output : 'g_egldispatchstubs.c',
58*61046927SAndroid Build Coastguard Worker  command : [
59*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT0@', 'source', '@INPUT1@', '@INPUT2@',
60*61046927SAndroid Build Coastguard Worker  ],
61*61046927SAndroid Build Coastguard Worker  depend_files : [ files('generate/eglFunctionList.py'), genCommon_py, ],
62*61046927SAndroid Build Coastguard Worker  capture : true,
63*61046927SAndroid Build Coastguard Worker)
64*61046927SAndroid Build Coastguard Worker
65*61046927SAndroid Build Coastguard Workerg_egldispatchstubs_h = custom_target(
66*61046927SAndroid Build Coastguard Worker  'g_egldispatchstubs.h',
67*61046927SAndroid Build Coastguard Worker  input : [
68*61046927SAndroid Build Coastguard Worker    'generate/gen_egl_dispatch.py',
69*61046927SAndroid Build Coastguard Worker    'generate/egl.xml', 'generate/egl_other.xml'
70*61046927SAndroid Build Coastguard Worker  ],
71*61046927SAndroid Build Coastguard Worker  output : 'g_egldispatchstubs.h',
72*61046927SAndroid Build Coastguard Worker  command : [
73*61046927SAndroid Build Coastguard Worker    prog_python, '@INPUT0@', 'header', '@INPUT1@', '@INPUT2@',
74*61046927SAndroid Build Coastguard Worker  ],
75*61046927SAndroid Build Coastguard Worker  depend_files : [ files('generate/eglFunctionList.py'), genCommon_py, ],
76*61046927SAndroid Build Coastguard Worker  capture : true,
77*61046927SAndroid Build Coastguard Worker)
78*61046927SAndroid Build Coastguard Worker
79*61046927SAndroid Build Coastguard Workerif with_dri
80*61046927SAndroid Build Coastguard Worker  files_egl += files(
81*61046927SAndroid Build Coastguard Worker    'drivers/dri2/egl_dri2.c',
82*61046927SAndroid Build Coastguard Worker    'drivers/dri2/egl_dri2.h',
83*61046927SAndroid Build Coastguard Worker  )
84*61046927SAndroid Build Coastguard Worker  files_egl += sha1_h
85*61046927SAndroid Build Coastguard Worker  deps_for_egl += idep_xmlconfig
86*61046927SAndroid Build Coastguard Worker  link_for_egl += libloader
87*61046927SAndroid Build Coastguard Worker  incs_for_egl += inc_loader
88*61046927SAndroid Build Coastguard Worker  incs_for_egl += inc_loader_x11
89*61046927SAndroid Build Coastguard Worker  incs_for_egl += inc_gallium
90*61046927SAndroid Build Coastguard Worker  incs_for_egl += inc_gallium_aux
91*61046927SAndroid Build Coastguard Worker  incs_for_egl += inc_mesa
92*61046927SAndroid Build Coastguard Worker  incs_for_egl += inc_st_dri
93*61046927SAndroid Build Coastguard Worker
94*61046927SAndroid Build Coastguard Worker  files_egl += files(
95*61046927SAndroid Build Coastguard Worker    'drivers/dri2/platform_device.c',
96*61046927SAndroid Build Coastguard Worker    'drivers/dri2/platform_surfaceless.c',
97*61046927SAndroid Build Coastguard Worker  )
98*61046927SAndroid Build Coastguard Worker
99*61046927SAndroid Build Coastguard Worker  if with_platform_x11
100*61046927SAndroid Build Coastguard Worker    files_egl += files('drivers/dri2/platform_x11.c')
101*61046927SAndroid Build Coastguard Worker    if with_dri_platform == 'drm'
102*61046927SAndroid Build Coastguard Worker      files_egl += files('drivers/dri2/platform_x11_dri3.c')
103*61046927SAndroid Build Coastguard Worker      link_for_egl += [libloader_x11]
104*61046927SAndroid Build Coastguard Worker    endif
105*61046927SAndroid Build Coastguard Worker    deps_for_egl += [dep_x11_xcb, dep_xcb_dri2, dep_xcb_xrandr, dep_xcb_xfixes, dep_xcb_shm]
106*61046927SAndroid Build Coastguard Worker  endif
107*61046927SAndroid Build Coastguard Worker  if with_gbm and not with_platform_android
108*61046927SAndroid Build Coastguard Worker    files_egl += files('drivers/dri2/platform_drm.c')
109*61046927SAndroid Build Coastguard Worker    link_for_egl += libgbm
110*61046927SAndroid Build Coastguard Worker    incs_for_egl += [inc_gbm, include_directories('../gbm/main')]
111*61046927SAndroid Build Coastguard Worker    deps_for_egl += dep_libdrm
112*61046927SAndroid Build Coastguard Worker  endif
113*61046927SAndroid Build Coastguard Worker  if with_platform_wayland
114*61046927SAndroid Build Coastguard Worker    deps_for_egl += [dep_wayland_client, dep_wayland_server, dep_wayland_egl_headers]
115*61046927SAndroid Build Coastguard Worker    link_for_egl += [libwayland_drm, libloader_wayland_helper]
116*61046927SAndroid Build Coastguard Worker    files_egl += files('drivers/dri2/platform_wayland.c')
117*61046927SAndroid Build Coastguard Worker    files_egl += wp_files['linux-dmabuf-unstable-v1']
118*61046927SAndroid Build Coastguard Worker    files_egl += [wayland_drm_client_protocol_h]
119*61046927SAndroid Build Coastguard Worker    incs_for_egl += include_directories('wayland/wayland-drm')
120*61046927SAndroid Build Coastguard Worker  endif
121*61046927SAndroid Build Coastguard Worker  if with_platform_android
122*61046927SAndroid Build Coastguard Worker    deps_for_egl += [dep_android, idep_u_gralloc]
123*61046927SAndroid Build Coastguard Worker    files_egl += files('drivers/dri2/platform_android.c')
124*61046927SAndroid Build Coastguard Worker  endif
125*61046927SAndroid Build Coastguard Workerelif with_platform_haiku
126*61046927SAndroid Build Coastguard Worker  c_args_for_egl += [
127*61046927SAndroid Build Coastguard Worker    '-D_EGL_BUILT_IN_DRIVER_HAIKU',
128*61046927SAndroid Build Coastguard Worker  ]
129*61046927SAndroid Build Coastguard Worker  files_egl += files('drivers/haiku/egl_haiku.cpp')
130*61046927SAndroid Build Coastguard Worker
131*61046927SAndroid Build Coastguard Worker  incs_for_egl += [inc_gallium, inc_gallium_aux, inc_gallium_drivers, inc_gallium_winsys, inc_gallium_winsys_sw]
132*61046927SAndroid Build Coastguard Worker  incs_for_egl += [inc_mesa, inc_mapi]
133*61046927SAndroid Build Coastguard Worker  incs_for_egl += [include_directories('../gallium/frontends/hgl')]
134*61046927SAndroid Build Coastguard Worker
135*61046927SAndroid Build Coastguard Worker  link_for_egl += [libmesa, libgallium, libswhgl, libsthgl]
136*61046927SAndroid Build Coastguard Worker  deps_for_egl += [cpp.find_library('be'), driver_swrast]
137*61046927SAndroid Build Coastguard Workerelif with_platform_windows
138*61046927SAndroid Build Coastguard Worker  c_args_for_egl += [
139*61046927SAndroid Build Coastguard Worker    '-DEGLAPI=', '-DPUBLIC='
140*61046927SAndroid Build Coastguard Worker  ]
141*61046927SAndroid Build Coastguard Worker  files_egl += files('drivers/wgl/egl_wgl.c')
142*61046927SAndroid Build Coastguard Worker  incs_for_egl += [inc_wgl, inc_gallium, inc_gallium_aux, inc_mesa, inc_mapi]
143*61046927SAndroid Build Coastguard Worker  link_for_egl += libgallium_wgl
144*61046927SAndroid Build Coastguard Workerendif
145*61046927SAndroid Build Coastguard Worker
146*61046927SAndroid Build Coastguard Workerif cc.has_function('mincore')
147*61046927SAndroid Build Coastguard Worker  c_args_for_egl += '-DHAVE_MINCORE'
148*61046927SAndroid Build Coastguard Workerendif
149*61046927SAndroid Build Coastguard Worker
150*61046927SAndroid Build Coastguard Workerif not with_glvnd
151*61046927SAndroid Build Coastguard Worker  egl_lib_name = 'EGL' + get_option('egl-lib-suffix')
152*61046927SAndroid Build Coastguard Worker  egl_lib_version = '1.0.0'
153*61046927SAndroid Build Coastguard Worker  egl_lib_soversion = host_machine.system() == 'windows' ? '' : '1'
154*61046927SAndroid Build Coastguard Workerelse
155*61046927SAndroid Build Coastguard Worker  egl_lib_name = 'EGL_@0@'.format(glvnd_vendor_name)
156*61046927SAndroid Build Coastguard Worker  egl_lib_version = '0.0.0'
157*61046927SAndroid Build Coastguard Worker  egl_lib_soversion = '0'
158*61046927SAndroid Build Coastguard Worker  deps_for_egl += dep_glvnd
159*61046927SAndroid Build Coastguard Worker  files_egl += [g_egldispatchstubs_h, g_egldispatchstubs_c]
160*61046927SAndroid Build Coastguard Worker  files_egl += files('main/eglglvnd.c', 'main/egldispatchstubs.c')
161*61046927SAndroid Build Coastguard Worker  glvnd_config = configuration_data()
162*61046927SAndroid Build Coastguard Worker  glvnd_config.set('glvnd_vendor_name', get_option('glvnd-vendor-name'))
163*61046927SAndroid Build Coastguard Worker  configure_file(
164*61046927SAndroid Build Coastguard Worker    configuration: glvnd_config,
165*61046927SAndroid Build Coastguard Worker    input : 'main/50_mesa.json',
166*61046927SAndroid Build Coastguard Worker    output: '50_@[email protected]'.format(glvnd_vendor_name),
167*61046927SAndroid Build Coastguard Worker    install : true,
168*61046927SAndroid Build Coastguard Worker    install_tag : 'runtime',
169*61046927SAndroid Build Coastguard Worker    install_dir : join_paths(get_option('datadir'), 'glvnd', 'egl_vendor.d')
170*61046927SAndroid Build Coastguard Worker  )
171*61046927SAndroid Build Coastguard Workerendif
172*61046927SAndroid Build Coastguard Worker
173*61046927SAndroid Build Coastguard Workeregl_def = custom_target(
174*61046927SAndroid Build Coastguard Worker  'egl.def',
175*61046927SAndroid Build Coastguard Worker  input: 'main/egl.def.in',
176*61046927SAndroid Build Coastguard Worker  output : 'egl.def',
177*61046927SAndroid Build Coastguard Worker  command : gen_vs_module_defs_normal_command,
178*61046927SAndroid Build Coastguard Worker)
179*61046927SAndroid Build Coastguard Worker
180*61046927SAndroid Build Coastguard Workerlibegl = shared_library(
181*61046927SAndroid Build Coastguard Worker  egl_lib_name,
182*61046927SAndroid Build Coastguard Worker  files_egl,
183*61046927SAndroid Build Coastguard Worker  c_args : [
184*61046927SAndroid Build Coastguard Worker    c_args_for_egl,
185*61046927SAndroid Build Coastguard Worker    '-D_EGL_NATIVE_PLATFORM=_EGL_PLATFORM_@0@'.format(egl_native_platform.to_upper()),
186*61046927SAndroid Build Coastguard Worker  ],
187*61046927SAndroid Build Coastguard Worker  cpp_args : [cpp_args_for_egl],
188*61046927SAndroid Build Coastguard Worker  gnu_symbol_visibility : 'hidden',
189*61046927SAndroid Build Coastguard Worker  include_directories : incs_for_egl,
190*61046927SAndroid Build Coastguard Worker  link_with : [link_for_egl, libglapi],
191*61046927SAndroid Build Coastguard Worker  link_args : [ld_args_bsymbolic, ld_args_gc_sections],
192*61046927SAndroid Build Coastguard Worker  dependencies : [deps_for_egl, dep_dl, dep_libdrm, dep_clock, dep_thread, idep_mesautil],
193*61046927SAndroid Build Coastguard Worker  install : true,
194*61046927SAndroid Build Coastguard Worker  version : egl_lib_version,
195*61046927SAndroid Build Coastguard Worker  soversion : egl_lib_soversion,
196*61046927SAndroid Build Coastguard Worker  name_prefix : host_machine.system() == 'windows' ? 'lib' : [],  # always use lib, but avoid warnings on !windows
197*61046927SAndroid Build Coastguard Worker  vs_module_defs : egl_def
198*61046927SAndroid Build Coastguard Worker)
199*61046927SAndroid Build Coastguard Worker
200*61046927SAndroid Build Coastguard Workerif not with_glvnd
201*61046927SAndroid Build Coastguard Worker  pkg.generate(
202*61046927SAndroid Build Coastguard Worker    name : 'egl',
203*61046927SAndroid Build Coastguard Worker    description : 'Mesa EGL Library',
204*61046927SAndroid Build Coastguard Worker    version : meson.project_version(),
205*61046927SAndroid Build Coastguard Worker    libraries : libegl,
206*61046927SAndroid Build Coastguard Worker    libraries_private: gl_priv_libs,
207*61046927SAndroid Build Coastguard Worker    requires_private : gl_priv_reqs,
208*61046927SAndroid Build Coastguard Worker    extra_cflags : gl_pkgconfig_c_flags,
209*61046927SAndroid Build Coastguard Worker  )
210*61046927SAndroid Build Coastguard Workerendif
211*61046927SAndroid Build Coastguard Worker
212*61046927SAndroid Build Coastguard Workerif with_symbols_check
213*61046927SAndroid Build Coastguard Worker  if with_glvnd
214*61046927SAndroid Build Coastguard Worker    egl_symbols = files('egl-glvnd-symbols.txt')
215*61046927SAndroid Build Coastguard Worker  else
216*61046927SAndroid Build Coastguard Worker    egl_symbols = files('egl-symbols.txt')
217*61046927SAndroid Build Coastguard Worker  endif
218*61046927SAndroid Build Coastguard Worker  test('egl-symbols-check',
219*61046927SAndroid Build Coastguard Worker    symbols_check,
220*61046927SAndroid Build Coastguard Worker    args : [
221*61046927SAndroid Build Coastguard Worker      '--lib', libegl,
222*61046927SAndroid Build Coastguard Worker      '--symbols-file', egl_symbols,
223*61046927SAndroid Build Coastguard Worker      symbols_check_args,
224*61046927SAndroid Build Coastguard Worker    ],
225*61046927SAndroid Build Coastguard Worker    suite : ['egl'],
226*61046927SAndroid Build Coastguard Worker  )
227*61046927SAndroid Build Coastguard Worker  test('egl-entrypoint-check',
228*61046927SAndroid Build Coastguard Worker    prog_python,
229*61046927SAndroid Build Coastguard Worker    args : files('egl-entrypoint-check.py', 'main/eglentrypoint.h'),
230*61046927SAndroid Build Coastguard Worker    suite : ['egl'],
231*61046927SAndroid Build Coastguard Worker  )
232*61046927SAndroid Build Coastguard Workerendif
233