From 3a93150bc0aec86afdb7d053247dc2448925e09a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20M=C3=BCller?= Date: Wed, 6 May 2015 10:45:22 +0200 Subject: [PATCH 1/2] select platforms based on configuration results MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upstream-Status: Submitted [1] [1] https://github.com/anholt/libepoxy/pull/52 Signed-off-by: Andreas Müller --- configure.ac | 13 +++++-------- src/dispatch_common.c | 9 ++++++--- src/dispatch_common.h | 9 +++++---- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/configure.ac b/configure.ac index a52fc58..bdd70da 100644 --- a/configure.ac +++ b/configure.ac @@ -58,6 +58,10 @@ AC_CHECK_HEADER([KHR/khrplatform.h], # uintptr_t to a void *") by default. Kill that. XORG_TESTSET_CFLAG(CWARNFLAGS, [-Wno-int-conversion]) +PKG_CHECK_MODULES(X11, [x11], [x11=yes], [x11=no]) + +AM_CONDITIONAL(HAVE_X11, test x$x11 = xyes) + has_znow=yes case $host_os in @@ -86,7 +90,7 @@ case $host_os in ;; *) build_egl=yes - build_glx=yes + build_glx=$x11 build_wgl=no # On platforms with dlopen, we load everything dynamically and # don't link against a specific window system or GL implementation. @@ -144,13 +148,6 @@ esac 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]) -fi - -AM_CONDITIONAL(HAVE_X11, test x$x11 = xyes) - PKG_CHECK_MODULES(GL, [gl], [gl=yes], [gl=no]) AC_CONFIG_FILES([ diff --git a/src/dispatch_common.c b/src/dispatch_common.c index 4e34d6e..2ab84ed 100644 --- a/src/dispatch_common.c +++ b/src/dispatch_common.c @@ -615,10 +615,13 @@ epoxy_get_proc_address(const char *name) #elif defined(__APPLE__) return epoxy_gl_dlsym(name); #else +#if PLATFORM_HAS_GLX if (epoxy_current_context_is_glx()) { return glXGetProcAddressARB((const GLubyte *)name); - } else { + } else +#endif /* PLATFORM_HAS_GLX */ #if PLATFORM_HAS_EGL + { GLenum egl_api = epoxy_egl_get_current_gl_context_api(); switch (egl_api) { @@ -628,10 +631,10 @@ epoxy_get_proc_address(const char *name) case EGL_NONE: break; } -#endif } +#endif /* PLATFORM_HAS_EGL */ errx(1, "Couldn't find current GLX or EGL context.\n"); -#endif +#endif /* _WIN32 | __APPLE__*/ } void diff --git a/src/dispatch_common.h b/src/dispatch_common.h index 6b8503a..82681e4 100644 --- a/src/dispatch_common.h +++ b/src/dispatch_common.h @@ -21,12 +21,13 @@ * IN THE SOFTWARE. */ +#include #include #ifdef _WIN32 #define PLATFORM_HAS_EGL 0 #define PLATFORM_HAS_GLX 0 -#define PLATFORM_HAS_WGL 1 +#define PLATFORM_HAS_WGL BUILD_WGL #define EPOXY_IMPORTEXPORT __declspec(dllexport) #elif defined(__APPLE__) #define PLATFORM_HAS_EGL 0 @@ -34,13 +35,13 @@ #define PLATFORM_HAS_WGL 0 #define EPOXY_IMPORTEXPORT #elif defined(ANDROID) -#define PLATFORM_HAS_EGL 1 +#define PLATFORM_HAS_EGL BUILD_EGL #define PLATFORM_HAS_GLX 0 #define PLATFORM_HAS_WGL 0 #define EPOXY_IMPORTEXPORT #else -#define PLATFORM_HAS_EGL 1 -#define PLATFORM_HAS_GLX 1 +#define PLATFORM_HAS_EGL BUILD_EGL +#define PLATFORM_HAS_GLX BUILD_GLX #define PLATFORM_HAS_WGL 0 #define EPOXY_IMPORTEXPORT #endif -- 1.9.3