summaryrefslogtreecommitdiff
path: root/configure.ac
diff options
context:
space:
mode:
authorEmmanuele Bassi <ebassi@gnome.org>2017-02-06 15:58:53 +0000
committerEmmanuele Bassi <ebassi@gnome.org>2017-02-06 15:58:53 +0000
commitec93dcd5a13de753b853141780ba6021ff371cc6 (patch)
tree97ddd696697cbbec9146da88acbd4bc5587c2348 /configure.ac
parent6a2994d1ed63ebadcdf659f03461194b6e31ce5f (diff)
parent7b52d33d86b23d663adb585a32a411e658d5a4c9 (diff)
downloadlibepoxy-ec93dcd5a13de753b853141780ba6021ff371cc6.tar.gz
Allow enabling and disabling GLX support
Since X11 can be used on multiple platforms, or disabled in special environments, we should provide a way to control whether or not Epoxy is built with GLX support. Fixes anholt/libepoxy#52 Fixes anholt/libepoxy#63 Closes anholt/libepoxy#80 Closes anholt/libepoxy#81
Diffstat (limited to 'configure.ac')
-rw-r--r--configure.ac120
1 files changed, 82 insertions, 38 deletions
diff --git a/configure.ac b/configure.ac
index 17a398b..8ca6afd 100644
--- a/configure.ac
+++ b/configure.ac
@@ -58,41 +58,71 @@ AC_CHECK_HEADER([KHR/khrplatform.h],
# uintptr_t to a void *") by default. Kill that.
XORG_TESTSET_CFLAG(CWARNFLAGS, [-Wno-int-conversion])
-has_znow=yes
-
-case $host_os in
- mingw*)
- build_egl=no
- build_glx=no
- build_wgl=yes
- # On windows, the DLL has to have all of its functions
- # resolved at link time, so we have to link directly aginst
- # opengl32.dll. But that's the only GL provider, anyway.
- EPOXY_LINK_LIBS="-lopengl32"
-
- # Testing our built windows binaries requires that they be run
- # under wine. Yeah, we should be nice and autodetect, but
- # there's lots of missing autodetection for the testsuite
- # (like checking for EGL and GLX libs in non-windows.).
- AC_SUBST([LOG_COMPILER], [wine])
- ;;
- darwin*)
- build_egl=no
- build_glx=no
- build_wgl=no
- build_apple=yes
- has_znow=no
- EPOXY_LINK_LIBS=""
- ;;
- *)
- build_egl=yes
- build_glx=yes
- build_wgl=no
- # On platforms with dlopen, we load everything dynamically and
- # don't link against a specific window system or GL implementation.
- EPOXY_LINK_LIBS=""
- ;;
-esac
+AC_ARG_ENABLE([glx],
+ [AC_HELP_STRING([--enable-glx=@<:@auto,yes,no@:>@], [Enable GLX support @<:@default=auto@:>@])],
+ [enable_glx=$enableval],
+ [enable_glx=auto])
+
+# 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
+AS_CASE([$enable_glx],
+ [auto], [
+ AS_CASE([$host_os],
+ [mingw*], [build_glx=no],
+ [darwin*], [build_glx=no],
+ [android*], [build_glx=no],
+ [build_glx=yes])
+ ],
+
+ [yes], [
+ build_glx=yes
+ ],
+
+ [no], [
+ build_glx=no
+ ],
+
+ [AC_MSG_ERROR([Invalid value "$enable_glx" for option "--enable-glx"])]
+])
+
+# The remaining platform specific API for GL/GLES are enabled
+# depending on the platform we're building for
+AS_CASE([$host_os],
+ [mingw*], [
+ build_egl=no
+ build_wgl=yes
+ has_znow=yes
+ # On windows, the DLL has to have all of its functions
+ # resolved at link time, so we have to link directly aginst
+ # opengl32.dll. But that's the only GL provider, anyway.
+ EPOXY_LINK_LIBS="-lopengl32"
+
+ # Testing our built windows binaries requires that they be run
+ # under wine. Yeah, we should be nice and autodetect, but
+ # there's lots of missing autodetection for the testsuite
+ # (like checking for EGL and GLX libs in non-windows.).
+ AC_SUBST([LOG_COMPILER], [wine])
+ ],
+
+ [darwin*], [
+ build_egl=no
+ build_wgl=no
+ build_apple=yes
+ has_znow=no
+ EPOXY_LINK_LIBS=""
+ ],
+
+ [
+ build_egl=yes
+ build_wgl=no
+ has_znow=yes
+ # On platforms with dlopen, we load everything dynamically and
+ # don't link against a specific window system or GL implementation.
+ EPOXY_LINK_LIBS=""
+ ]
+)
AC_SUBST(EPOXY_LINK_LIBS)
@@ -161,15 +191,29 @@ AS_CASE(["$host"],
AC_SUBST([VISIBILITY_CFLAGS])
-PKG_CHECK_MODULES(X11, [x11], [x11=yes], [x11=no])
-if test x$x11 = xno -a x$build_glx = xyes; then
- AC_MSG_ERROR([libX11 headers (libx11-dev) required to build with GLX support])
+if test x$build_glx = xyes; then
+ PKG_CHECK_MODULES(X11, [x11], [x11=yes], [x11=no])
+ if test x$x11 = xno -a x$build_glx = xyes; then
+ AC_MSG_ERROR([libX11 headers (libx11-dev) required to build with GLX support])
+ fi
+ AC_DEFINE(ENABLE_GLX, [1], [Whether GLX support is enabled])
+else
+ x11=no
fi
AM_CONDITIONAL(HAVE_X11, test x$x11 = xyes)
PKG_CHECK_MODULES(GL, [gl], [gl=yes], [gl=no])
+# Variables for the pkg-config file; AC_SUBST does not do `test` substitutions,
+# so we need to specify the boolean values here
+AS_IF([test x$build_glx = xyes], [epoxy_has_glx=1], [epoxy_has_glx=0])
+AS_IF([test x$build_egl = xyes], [epoxy_has_egl=1], [epoxy_has_egl=0])
+AS_IF([test x$build_wgl = xyes], [epoxy_has_wgl=1], [epoxy_has_wgl=0])
+AC_SUBST(epoxy_has_glx)
+AC_SUBST(epoxy_has_egl)
+AC_SUBST(epoxy_has_wgl)
+
AC_CONFIG_FILES([
epoxy.pc
Makefile