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