summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2017-01-18 15:40:00 +0000
committerEmmanuele Bassi <ebassi@gnome.org>2017-02-06 13:48:53 +0000
commit476851ba416c0fa478a8ec0620d482ed5079e38b (patch)
tree2c8248271f9b3c95e6584f6674bca5a0bf24a8ec
parent6af57b07459742b90ef7471733bd090a4580fe61 (diff)
downloadlibepoxy-476851ba416c0fa478a8ec0620d482ed5079e38b.tar.gz
Allow enabling and disabling GLX support
Currently, GLX support in libepoxy at build time is hard coded, but various platforms have expressed their preference for having a configure-time option for it. For instance: - various embedded distributors do not ship with X11, but wish to use libraries that depend on libepoxy now that Wayland is available - distributors for macOS still wish to retain the ability to ship their software with X11 enabled By default, we want epoxy to build with GLX enabled pretty much everywhere it makes sense, since it's only a build-time option and it's not a run-time dependency.
-rw-r--r--meson.build28
-rw-r--r--meson_options.txt5
-rw-r--r--src/dispatch_common.h8
-rw-r--r--test/meson.build2
4 files changed, 34 insertions, 9 deletions
diff --git a/meson.build b/meson.build
index c8e45cd..9c44d3c 100644
--- a/meson.build
+++ b/meson.build
@@ -30,26 +30,48 @@ conf.set_quoted('PACKAGE_LOCALEDIR', join_paths(get_option('prefix'), get_option
conf.set_quoted('PACKAGE_LIBEXECDIR', join_paths(get_option('prefix'), get_option('libexecdir')))
conf.set('HAVE_KHRPLATFORM_H', cc.has_header('KHR/khrplatform.h', required: false))
-if host_system == 'windows'
+# GLX can be used on different platforms, so we expose a
+# configure time switch to enable or disable it; in case
+# the "auto" default value is set, we only enable GLX
+# support on Linux and Unix
+enable_glx = get_option('enable-glx')
+if enable_glx == 'auto'
+ if host_system == 'windows'
+ build_glx = false
+ elif host_system == 'darwin'
+ build_glx = false
+ elif host_system == 'android'
+ build_glx = false
+ else
+ build_glx = true
+ endif
+elif enable_glx == 'yes'
+ build_glx = true
+elif enable_glx == 'no'
build_glx = false
+endif
+
+# The remaining platform specific API for GL/GLES are enabled
+# depending on the platform we're building for
+if host_system == 'windows'
build_egl = false
build_apple = false
build_wgl = true
has_znow = true
elif host_system == 'darwin'
- build_glx = false
build_egl = false
build_apple = true
build_wgl = false
has_znow = false
else
- build_glx = true
build_egl = true
build_apple = false
build_wgl = false
has_znow = true
endif
+conf.set10('ENABLE_GLX', build_glx)
+
# Compiler flags, taken from the Xorg macros
test_cflags = [
'-Wpointer-arith',
diff --git a/meson_options.txt b/meson_options.txt
index 4eaa634..18932f5 100644
--- a/meson_options.txt
+++ b/meson_options.txt
@@ -1,3 +1,8 @@
option('enable-docs',
type: 'boolean', value: false,
description: 'Enable generating the Epoxy API reference (depends on Doxygen)')
+option('enable-glx',
+ type: 'combo',
+ choices: [ 'auto', 'yes', 'no' ],
+ value: 'auto',
+ description: 'Enable GLX support')
diff --git a/src/dispatch_common.h b/src/dispatch_common.h
index 40d4bbc..b41f54b 100644
--- a/src/dispatch_common.h
+++ b/src/dispatch_common.h
@@ -23,15 +23,13 @@
#include "config.h"
-#include <stdbool.h>
-
#ifdef _WIN32
#define PLATFORM_HAS_EGL 0
-#define PLATFORM_HAS_GLX 0
+#define PLATFORM_HAS_GLX ENABLE_GLX
#define PLATFORM_HAS_WGL 1
#elif defined(__APPLE__)
#define PLATFORM_HAS_EGL 0
-#define PLATFORM_HAS_GLX 0
+#define PLATFORM_HAS_GLX ENABLE_GLX
#define PLATFORM_HAS_WGL 0
#elif defined(ANDROID)
#define PLATFORM_HAS_EGL 1
@@ -39,7 +37,7 @@
#define PLATFORM_HAS_WGL 0
#else
#define PLATFORM_HAS_EGL 1
-#define PLATFORM_HAS_GLX 1
+#define PLATFORM_HAS_GLX ENABLE_GLX
#define PLATFORM_HAS_WGL 0
#endif
diff --git a/test/meson.build b/test/meson.build
index 857a980..2340fc6 100644
--- a/test/meson.build
+++ b/test/meson.build
@@ -1,6 +1,6 @@
has_gles1 = gles1_dep.found()
has_gles2 = gles2_dep.found()
-build_x11_tests = x11_dep.found()
+build_x11_tests = build_glx and x11_dep.found()
test_cflags = common_cflags + [
'-D_XOPEN_SOURCE',