diff options
Diffstat (limited to 'configure.ac')
-rw-r--r-- | configure.ac | 275 |
1 files changed, 275 insertions, 0 deletions
diff --git a/configure.ac b/configure.ac new file mode 100644 index 0000000..b0bb452 --- /dev/null +++ b/configure.ac @@ -0,0 +1,275 @@ +# Copyright © 2013 Intel Corporation +# +# Permission is hereby granted, free of charge, to any person obtaining a +# copy of this software and associated documentation files (the "Software"), +# to deal in the Software without restriction, including without limitation +# the rights to use, copy, modify, merge, publish, distribute, sublicense, +# and/or sell copies of the Software, and to permit persons to whom the +# Software is furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice (including the next +# paragraph) shall be included in all copies or substantial portions of the +# Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL +# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +# IN THE SOFTWARE. + +# Initialize Autoconf +AC_PREREQ([2.60]) +AC_INIT([libepoxy], + [1.5.4], + [https://github.com/anholt/libepoxy], + [libepoxy]) +AC_CONFIG_SRCDIR([Makefile.am]) +AC_CONFIG_HEADERS([config.h]) +AC_CONFIG_MACRO_DIR([m4]) + +# Initialize Automake +AM_INIT_AUTOMAKE([foreign -Wno-portability dist-xz no-dist-gzip tar-ustar subdir-objects]) + +# Require X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS +m4_ifndef([XORG_MACROS_VERSION], + [m4_fatal([must install xorg-macros 1.8 or later before running autoconf/autogen. + Hint: either install from source, git://anongit.freedesktop.org/xorg/util/macros or, + depending on you distribution, try package 'xutils-dev' or 'xorg-x11-util-macros'])]) + +XORG_MACROS_VERSION(1.8) +XORG_DEFAULT_OPTIONS + +AC_CHECK_PROGS([PYTHON], [python3 python2 python]) + +# Initialize libtool +AC_DISABLE_STATIC +AC_LIBTOOL_WIN32_DLL +AC_PROG_LIBTOOL +AC_SYS_LARGEFILE + +AC_CHECK_HEADER([KHR/khrplatform.h], + [AC_DEFINE([HAVE_KHRPLATFORM_H], [1], + [Define to 1 if you have <KHR/khrplatform.h> (used for tests)] + )] + ) + +# OS X defaults to having -Wint-conversion ("warn when passing +# uintptr_t to a void *") by default. Kill that. +XORG_TESTSET_CFLAG(CWARNFLAGS, [-Wno-int-conversion]) + +AC_ARG_ENABLE([x11], + [AC_HELP_STRING([--enable-x11=@<:@yes,no@:>@], [Enable X11 support @<:@default=yes@:>@])], + [enable_x11=$enableval], + [enable_x11=yes]) + +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"])] +]) + +AC_ARG_ENABLE([egl], + [AC_HELP_STRING([--enable-egl=@<:@auto,yes,no@:>@], [Enable EGL support @<:@default=auto@:>@])], + [enable_egl=$enableval], + [enable_egl=auto]) + +AS_CASE([$enable_egl], + [auto], [ + AS_CASE([$host_os], + [mingw*], [build_egl=no], + [darwin*], [build_egl=no], + [build_egl=yes]) + ], + + [yes], [ + build_egl=yes + ], + + [no], [ + build_egl=no + ], + + [AC_MSG_ERROR([Invalid value "$enable_egl" for option "--enable-egl"])] +]) + +# The remaining platform specific API are enabled depending on the +# platform we're building for +AS_CASE([$host_os], + [mingw*], [ + 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 against + # 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_wgl=no + has_znow=no + EPOXY_LINK_LIBS="" + ], + + [ + 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) + +if test x$enable_x11 = xno; then + if test x$enable_glx = xyes; then + AC_MSG_ERROR([GLX support is explicitly enabled, but X11 was disabled]) + fi + build_glx=no +else + AC_DEFINE([ENABLE_X11], [1], [Whether X11 support is enabled]) +fi + +AM_CONDITIONAL(BUILD_EGL, test x$build_egl = xyes) +if test x$build_egl = xyes; then + PKG_CHECK_MODULES(EGL, [egl]) + AC_DEFINE([BUILD_EGL], [1], [build EGL tests]) + AC_DEFINE(ENABLE_EGL, [1], [Whether EGL support is enabled]) +fi + +AM_CONDITIONAL(BUILD_GLX, test x$build_glx = xyes) +if test x$build_glx = xyes; then + AC_DEFINE([BUILD_GLX], [1], [build GLX tests]) +fi + +AM_CONDITIONAL(BUILD_WGL, test x$build_wgl = xyes) +if test x$build_wgl = xyes; then + AC_DEFINE([BUILD_WGL], [1], [build WGL tests]) +fi + +AM_CONDITIONAL(HAS_ZNOW, test x$has_znow = xyes) + +AC_CHECK_LIB([GLESv1_CM], [glFlush], [has_gles1=yes], [has_gles1=no]) +AM_CONDITIONAL(HAS_GLES1, test x$has_gles1 = xyes) + +AC_CHECK_LIB([dl], [dlopen], [DLOPEN_LIBS="-ldl"]) +AC_SUBST([DLOPEN_LIBS]) + +savelibs=$LIBS +LIBS=$DLOPEN_LIBS +AC_CHECK_FUNCS([dlvsym], [have_dlvsym=1], [have_dlvsym=0]) +AM_CONDITIONAL(HAVE_DLVSYM, test $have_dlvsym = 1) +LIBS=$savelibs + +VISIBILITY_CFLAGS="" +AS_CASE(["$host"], + + [*-*-mingw*], [ + dnl on mingw32 we do -fvisibility=hidden and __declspec(dllexport) + AC_DEFINE([EPOXY_PUBLIC], + [__attribute__((visibility("default"))) __declspec(dllexport) extern], + [defines how to decorate public symbols while building]) + VISIBILITY_CFLAGS="-fvisibility=hidden" + ], + + [ + dnl on other compilers, check if we can do -fvisibility=hidden + SAVED_CFLAGS="${CFLAGS}" + CFLAGS="-fvisibility=hidden" + AC_MSG_CHECKING([for -fvisibility=hidden compiler flag]) + AC_TRY_COMPILE([], [int main (void) { return 0; }], [ + AC_MSG_RESULT(yes) + enable_fvisibility_hidden=yes + ], [ + AC_MSG_RESULT(no) + enable_fvisibility_hidden=no + ]) + CFLAGS="${SAVED_CFLAGS}" + + AS_IF([test "${enable_fvisibility_hidden}" = "yes"], [ + AC_DEFINE([EPOXY_PUBLIC], + [__attribute__((visibility("default"))) extern], + [defines how to decorate public symbols while building]) + VISIBILITY_CFLAGS="-fvisibility=hidden" + ]) + ] +) + +AC_SUBST([VISIBILITY_CFLAGS]) + +if test x$enable_x11 = 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) are required to build with GLX support]) + fi +else + x11=no +fi + +if test x$build_glx = xyes; then + AC_DEFINE(ENABLE_GLX, [1], [Whether GLX support is enabled]) +fi + +AM_CONDITIONAL(HAVE_X11, test x$x11 = xyes) + +PKG_CHECK_MODULES(GL, [gl], [gl=yes], [gl=no]) +PKG_CHECK_MODULES(EGL, [egl], [egl=yes], [egl=no]) + +GL_REQS="" +AS_IF([test x$gl = xyes], [GL_REQS="$GL_REQS gl"]) +AS_IF([test x$build_egl = xyes && test x$egl = xyes], [GL_REQS="$GL_REQS egl"]) +AC_SUBST(GL_REQS) + +# 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 + include/epoxy/Makefile + src/Makefile + test/Makefile +]) +AC_OUTPUT + +echo " EGL: $build_egl" +echo " GLX: $build_glx" +echo " WGL: $build_wgl" +echo " PYTHON: $PYTHON" |