xref: /aosp_15_r20/external/libepoxy/src/meson.build (revision 706d0b42ae4182339789e08d473a0b312ecdc60f)
1*706d0b42SXin Li# Configuration file
2*706d0b42SXin Liconfigure_file(output: 'config.h', configuration: conf)
3*706d0b42SXin Li
4*706d0b42SXin Li# List of generated sources:
5*706d0b42SXin Li#   - name of the generated file
6*706d0b42SXin Li#   - registry source file
7*706d0b42SXin Li#   - additional sources
8*706d0b42SXin Ligenerated_sources = [
9*706d0b42SXin Li  [ 'gl_generated_dispatch.c', gl_registry, [ 'dispatch_common.c', 'dispatch_common.h' ] ]
10*706d0b42SXin Li]
11*706d0b42SXin Li
12*706d0b42SXin Liif build_egl
13*706d0b42SXin Li  generated_sources += [ [ 'egl_generated_dispatch.c', egl_registry, 'dispatch_egl.c' ] ]
14*706d0b42SXin Liendif
15*706d0b42SXin Li
16*706d0b42SXin Liif build_glx
17*706d0b42SXin Li  generated_sources += [ [ 'glx_generated_dispatch.c', glx_registry, 'dispatch_glx.c' ] ]
18*706d0b42SXin Liendif
19*706d0b42SXin Li
20*706d0b42SXin Liif build_wgl
21*706d0b42SXin Li  generated_sources += [ [ 'wgl_generated_dispatch.c', wgl_registry, 'dispatch_wgl.c' ] ]
22*706d0b42SXin Liendif
23*706d0b42SXin Li
24*706d0b42SXin Ligen_sources = [ ]
25*706d0b42SXin Lisources = [ ]
26*706d0b42SXin Li
27*706d0b42SXin Liforeach g: generated_sources
28*706d0b42SXin Li  gen_source = g[0]
29*706d0b42SXin Li  registry = g[1]
30*706d0b42SXin Li  source = g[2]
31*706d0b42SXin Li
32*706d0b42SXin Li  generated = custom_target(gen_source,
33*706d0b42SXin Li                            input: registry,
34*706d0b42SXin Li                            output: [ gen_source ],
35*706d0b42SXin Li                            command: [
36*706d0b42SXin Li                              gen_dispatch_py,
37*706d0b42SXin Li                              '--source',
38*706d0b42SXin Li                              '--no-header',
39*706d0b42SXin Li                              '--outputdir=@OUTDIR@',
40*706d0b42SXin Li                              '@INPUT@',
41*706d0b42SXin Li                            ])
42*706d0b42SXin Li
43*706d0b42SXin Li  gen_sources += [ generated ]
44*706d0b42SXin Li  sources += [ source ]
45*706d0b42SXin Liendforeach
46*706d0b42SXin Li
47*706d0b42SXin Liepoxy_sources = sources + gen_sources
48*706d0b42SXin Li
49*706d0b42SXin Licommon_ldflags = []
50*706d0b42SXin Li
51*706d0b42SXin Liif host_system == 'linux' and cc.get_id() == 'gcc'
52*706d0b42SXin Li  common_ldflags += cc.get_supported_link_arguments([ '-Wl,-Bsymbolic-functions', '-Wl,-z,relro' ])
53*706d0b42SXin Liendif
54*706d0b42SXin Li
55*706d0b42SXin Li# Maintain compatibility with autotools; see: https://github.com/anholt/libepoxy/issues/108
56*706d0b42SXin Lidarwin_versions = [1, '1.0']
57*706d0b42SXin Li
58*706d0b42SXin Liepoxy_deps = [ dl_dep, ]
59*706d0b42SXin Liif host_system == 'windows'
60*706d0b42SXin Li  epoxy_deps += [ opengl32_dep, gdi32_dep ]
61*706d0b42SXin Liendif
62*706d0b42SXin Liif enable_x11
63*706d0b42SXin Li  epoxy_deps += [ x11_headers_dep, ]
64*706d0b42SXin Liendif
65*706d0b42SXin Liif build_egl
66*706d0b42SXin Li  epoxy_deps += [ elg_headers_dep, ]
67*706d0b42SXin Liendif
68*706d0b42SXin Li
69*706d0b42SXin Lilibepoxy = library(
70*706d0b42SXin Li  'epoxy',
71*706d0b42SXin Li  sources: epoxy_sources + epoxy_headers,
72*706d0b42SXin Li  version: '0.0.0',
73*706d0b42SXin Li  darwin_versions: darwin_versions,
74*706d0b42SXin Li  install: true,
75*706d0b42SXin Li  dependencies: epoxy_deps,
76*706d0b42SXin Li  include_directories: libepoxy_inc,
77*706d0b42SXin Li  c_args: common_cflags + visibility_cflags,
78*706d0b42SXin Li  link_args: common_ldflags,
79*706d0b42SXin Li)
80*706d0b42SXin Li
81*706d0b42SXin Liepoxy_has_glx = build_glx ? '1' : '0'
82*706d0b42SXin Liepoxy_has_egl = build_egl ? '1' : '0'
83*706d0b42SXin Liepoxy_has_wgl = build_wgl ? '1' : '0'
84*706d0b42SXin Li
85*706d0b42SXin Lilibepoxy_dep = declare_dependency(
86*706d0b42SXin Li  link_with: libepoxy,
87*706d0b42SXin Li  include_directories: libepoxy_inc,
88*706d0b42SXin Li  dependencies: epoxy_deps,
89*706d0b42SXin Li  sources: epoxy_headers,
90*706d0b42SXin Li  variables: {
91*706d0b42SXin Li    'epoxy_has_glx': epoxy_has_glx,
92*706d0b42SXin Li    'epoxy_has_egl': epoxy_has_egl,
93*706d0b42SXin Li    'epoxy_has_wgl': epoxy_has_wgl,
94*706d0b42SXin Li  },
95*706d0b42SXin Li)
96*706d0b42SXin Li
97*706d0b42SXin Li# We don't want to add these dependencies to the library, as they are
98*706d0b42SXin Li# not needed when building Epoxy; we do want to add them to the generated
99*706d0b42SXin Li# pkg-config file, for consumers of Epoxy
100*706d0b42SXin Ligl_reqs = []
101*706d0b42SXin Liif gl_dep.found() and gl_dep.type_name() == 'pkgconfig'
102*706d0b42SXin Li  gl_reqs += 'gl'
103*706d0b42SXin Liendif
104*706d0b42SXin Liif build_egl and egl_dep.found() and egl_dep.type_name() == 'pkgconfig'
105*706d0b42SXin Li  gl_reqs += 'egl'
106*706d0b42SXin Liendif
107*706d0b42SXin Li
108*706d0b42SXin Lipkg = import('pkgconfig')
109*706d0b42SXin Lipkg.generate(
110*706d0b42SXin Li  libraries: libepoxy,
111*706d0b42SXin Li  name: 'epoxy',
112*706d0b42SXin Li  description: 'GL dispatch library',
113*706d0b42SXin Li  version: meson.project_version(),
114*706d0b42SXin Li  variables: [
115*706d0b42SXin Li    'epoxy_has_glx=@0@'.format(epoxy_has_glx),
116*706d0b42SXin Li    'epoxy_has_egl=@0@'.format(epoxy_has_egl),
117*706d0b42SXin Li    'epoxy_has_wgl=@0@'.format(epoxy_has_wgl),
118*706d0b42SXin Li  ],
119*706d0b42SXin Li  filebase: 'epoxy',
120*706d0b42SXin Li  requires_private: ' '.join(gl_reqs),
121*706d0b42SXin Li)
122