aboutsummaryrefslogtreecommitdiff
path: root/src/meson.build
diff options
context:
space:
mode:
Diffstat (limited to 'src/meson.build')
-rw-r--r--src/meson.build112
1 files changed, 112 insertions, 0 deletions
diff --git a/src/meson.build b/src/meson.build
new file mode 100644
index 0000000..fe092d1
--- /dev/null
+++ b/src/meson.build
@@ -0,0 +1,112 @@
+# Configuration file
+configure_file(output: 'config.h', configuration: conf)
+
+# List of generated sources:
+# - name of the generated file
+# - registry source file
+# - additional sources
+generated_sources = [
+ [ 'gl_generated_dispatch.c', gl_registry, [ 'dispatch_common.c', 'dispatch_common.h' ] ]
+]
+
+if build_egl
+ generated_sources += [ [ 'egl_generated_dispatch.c', egl_registry, 'dispatch_egl.c' ] ]
+endif
+
+if build_glx
+ generated_sources += [ [ 'glx_generated_dispatch.c', glx_registry, 'dispatch_glx.c' ] ]
+endif
+
+if build_wgl
+ generated_sources += [ [ 'wgl_generated_dispatch.c', wgl_registry, 'dispatch_wgl.c' ] ]
+endif
+
+gen_sources = [ ]
+sources = [ ]
+
+foreach g: generated_sources
+ gen_source = g[0]
+ registry = g[1]
+ source = g[2]
+
+ generated = custom_target(gen_source,
+ input: registry,
+ output: [ gen_source ],
+ command: [
+ python,
+ gen_dispatch_py,
+ '--source',
+ '--no-header',
+ '--outputdir=@OUTDIR@',
+ '@INPUT@',
+ ])
+
+ gen_sources += [ generated ]
+ sources += [ source ]
+endforeach
+
+epoxy_sources = sources + gen_sources
+
+common_ldflags = []
+
+if host_system == 'linux' and cc.get_id() == 'gcc'
+ common_ldflags += cc.get_supported_link_arguments([ '-Wl,-Bsymbolic-functions', '-Wl,-z,relro' ])
+endif
+
+# Maintain compatibility with autotools; see: https://github.com/anholt/libepoxy/issues/108
+if host_system == 'darwin'
+ common_ldflags += [ '-compatibility_version 1', '-current_version 1.0', ]
+endif
+
+epoxy_deps = [ dl_dep, ]
+if host_system == 'windows'
+ epoxy_deps += [ opengl32_dep, gdi32_dep ]
+endif
+
+libepoxy = library(
+ 'epoxy',
+ sources: epoxy_sources + epoxy_headers,
+ version: '0.0.0',
+ install: true,
+ dependencies: epoxy_deps,
+ include_directories: libepoxy_inc,
+ c_args: common_cflags + visibility_cflags,
+ link_args: common_ldflags,
+)
+
+libepoxy_dep = declare_dependency(
+ link_with: libepoxy,
+ include_directories: libepoxy_inc,
+ dependencies: epoxy_deps,
+ sources: epoxy_headers,
+)
+
+epoxy_has_glx = build_glx ? '1' : '0'
+epoxy_has_egl = build_egl ? '1' : '0'
+epoxy_has_wgl = build_wgl ? '1' : '0'
+
+# We don't want to add these dependencies to the library, as they are
+# not needed when building Epoxy; we do want to add them to the generated
+# pkg-config file, for consumers of Epoxy
+gl_reqs = []
+if gl_dep.found() and gl_dep.type_name() == 'pkgconfig'
+ gl_reqs += 'gl'
+endif
+if build_egl and egl_dep.found() and egl_dep.type_name() == 'pkgconfig'
+ gl_reqs += 'egl'
+endif
+
+pkg = import('pkgconfig')
+pkg.generate(
+ libraries: libepoxy,
+ name: 'epoxy',
+ description: 'GL dispatch library',
+ version: meson.project_version(),
+ variables: [
+ 'epoxy_has_glx=@0@'.format(epoxy_has_glx),
+ 'epoxy_has_egl=@0@'.format(epoxy_has_egl),
+ 'epoxy_has_wgl=@0@'.format(epoxy_has_wgl),
+ ],
+ filebase: 'epoxy',
+ requires_private: ' '.join(gl_reqs),
+)