[https://bugs.freedesktop.org/enter_bug.cgi?product=Mesa])
AC_CONFIG_AUX_DIR([bin])
AC_CANONICAL_HOST
-AM_INIT_AUTOMAKE([foreign])
+AM_INIT_AUTOMAKE([foreign -Wall])
+
+dnl http://people.gnome.org/~walters/docs/build-api.txt
+dnl We don't support srcdir != builddir.
+echo \#buildapi-variable-no-builddir >/dev/null
# Support silent build rules, requires at least automake-1.11. Disable
# by either passing --disable-silent-rules to configure or passing V=1
dnl Versions for external dependencies
LIBDRM_REQUIRED=2.4.24
-LIBDRM_RADEON_REQUIRED=2.4.24
-LIBDRM_INTEL_REQUIRED=2.4.30
-LIBDRM_NOUVEAU_REQUIRED=0.6
+LIBDRM_RADEON_REQUIRED=2.4.31
+LIBDRM_INTEL_REQUIRED=2.4.32
+LIBDRM_NVVIEUX_REQUIRED=2.4.33
+LIBDRM_NOUVEAU_REQUIRED=2.4.33
DRI2PROTO_REQUIRED=2.6
GLPROTO_REQUIRED=1.4.14
LIBDRM_XORG_REQUIRED=2.4.24
AC_PROG_CPP
AC_PROG_CC
AC_PROG_CXX
+AM_PROG_CC_C_O
AC_CHECK_PROGS([MAKE], [gmake make])
AC_CHECK_PROGS([PYTHON2], [python2 python])
AC_PROG_SED
+AC_PROG_MKDIR_P
AC_PATH_PROG([MKDEP], [makedepend])
if test "x$MKDEP" = "x"; then
AC_MSG_ERROR([makedepend is required to build Mesa])
fi
-AC_PATH_PROG([FLEX], [flex])
-test "x$FLEX" = "x" && AC_MSG_ERROR([flex is needed to build Mesa])
+AC_PROG_YACC
+AC_PATH_PROG([YACC_INST], $YACC)
+if test ! -f "$srcdir/src/glsl/glcpp/glcpp-parse.y"; then
+ if test -z "$YACC_INST"; then
+ AC_MSG_ERROR([yacc not found - unable to compile glcpp-parse.y])
+ fi
+fi
+AC_PROG_LEX
-AC_PATH_PROG([BISON], [bison])
-test "x$BISON" = "x" && AC_MSG_ERROR([bison is needed to build Mesa])
+AC_PATH_PROG([PERL], [perl])
dnl Our fallback install-sh is a symlink to minstall. Use the existing
dnl configuration in that case.
;;
esac
-AC_PATH_PROG([GTESTCONFIG], [gtest-config])
-if test "x$GTESTCONFIG" != "x"; then
- GTEST_CFLAGS=`gtest-config --cppflags --cxxflags`
- GTEST_LIBS=`gtest-config --ldflags --libs`
- AC_SUBST([GTEST_CFLAGS])
- AC_SUBST([GTEST_LIBS])
- HAVE_GTEST=yes
-else
- HAVE_GTEST=no
-fi
-AM_CONDITIONAL(HAVE_GTEST, test x$HAVE_GTEST = xyes)
-
dnl clang is mostly GCC-compatible, but its version is much lower,
dnl so we have to check for it.
AC_MSG_CHECKING([if compiling with clang])
not clang
#endif
]])],
-[CLANG=yes], [CLANG=no])
+[acv_mesa_CLANG=yes], [acv_mesa_CLANG=no])
-AC_MSG_RESULT([$CLANG])
+AC_MSG_RESULT([$acv_mesa_CLANG])
dnl If we're using GCC, make sure that it is at least version 3.3.0. Older
dnl versions are explictly not supported.
-if test "x$GCC" = xyes -a "x$CLANG" = xno; then
+if test "x$GCC" = xyes -a "x$acv_mesa_CLANG" = xno; then
AC_MSG_CHECKING([whether gcc version is sufficient])
major=0
minor=0
dnl Add flags for gcc and g++
if test "x$GCC" = xyes; then
- CFLAGS="$CFLAGS -Wall -Wmissing-prototypes -std=c99"
+ CFLAGS="$CFLAGS -Wall -std=c99"
+
+ # Enable -Werror=implicit-function-declaration and
+ # -Werror=missing-prototypes, if available, or otherwise, just
+ # -Wmissing-prototypes. This is particularly useful to avoid
+ # generating a loadable driver module that has undefined symbols.
+ save_CFLAGS="$CFLAGS"
+ AC_MSG_CHECKING([whether $CC supports -Werror=missing-prototypes])
+ CFLAGS="$CFLAGS -Werror=implicit-function-declaration"
+ CFLAGS="$CFLAGS -Werror=missing-prototypes"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM()],
+ AC_MSG_RESULT([yes]),
+ [CFLAGS="$save_CFLAGS -Wmissing-prototypes";
+ AC_MSG_RESULT([no])]);
# Enable -fvisibility=hidden if using a gcc that supports it
save_CFLAGS="$CFLAGS"
fi
fi
-dnl
-dnl shared/static libraries, mimic libtool options
-dnl
-AC_ARG_ENABLE([static],
- [AS_HELP_STRING([--enable-static],
- [build static libraries @<:@default=disabled@:>@])],
- [enable_static="$enableval"],
- [enable_static=no]
-)
-case "x$enable_static" in
-xyes|xno ) ;;
-x ) enable_static=no ;;
-* )
- AC_MSG_ERROR([Static library option '$enable_static' is not a valid])
- ;;
-esac
-AC_ARG_ENABLE([shared],
- [AS_HELP_STRING([--disable-shared],
- [build shared libraries @<:@default=enabled@:>@])],
- [enable_shared="$enableval"],
- [enable_shared=yes]
-)
-case "x$enable_shared" in
-xyes|xno ) ;;
-x ) enable_shared=yes ;;
-* )
- AC_MSG_ERROR([Shared library option '$enable_shared' is not a valid])
- ;;
-esac
-
dnl Can't have static and shared libraries, default to static if user
dnl explicitly requested. If both disabled, set to static since shared
-dnl was explicitly requirested.
+dnl was explicitly requested.
case "x$enable_static$enable_shared" in
xyesyes )
AC_MSG_WARN([Can't build static and shared libraries, disabling shared])
AC_SUBST([GL_LIB])
AC_SUBST([GLU_LIB])
AC_SUBST([OSMESA_LIB])
+AM_CONDITIONAL(HAVE_MANGLED_GL, test $GL_LIB = MangledGL)
dnl
dnl potentially-infringing-but-nobody-knows-for-sure stuff
GLESv2_LIB_NAME='lib$(GLESv2_LIB).'${LIB_EXTENSION}
VG_LIB_NAME='lib$(VG_LIB).'${LIB_EXTENSION}
GLAPI_LIB_NAME='lib$(GLAPI_LIB).'${LIB_EXTENSION}
-WAYLAND_EGL_LIB_NAME='lib$(WAYLAND_EGL_LIB).'${LIB_EXTENSION}
-GBM_LIB_NAME='lib$(GBM_LIB).'${LIB_EXTENSION}
GL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
GLU_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLU_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
GLESv2_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLESv2_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
VG_LIB_GLOB=${LIB_PREFIX_GLOB}'$(VG_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
GLAPI_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GLAPI_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
-WAYLAND_EGL_LIB_GLOB=${LIB_PREFIX_GLOB}'$(WAYLAND_EGL_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
-GBM_LIB_GLOB=${LIB_PREFIX_GLOB}'$(GBM_LIB)'${LIB_VERSION_SEPARATOR}'*'${LIB_EXTENSION}'*'
AC_SUBST([GL_LIB_NAME])
AC_SUBST([GLU_LIB_NAME])
AC_SUBST([GLESv2_LIB_NAME])
AC_SUBST([VG_LIB_NAME])
AC_SUBST([GLAPI_LIB_NAME])
-AC_SUBST([WAYLAND_EGL_LIB_NAME])
-AC_SUBST([GBM_LIB_NAME])
AC_SUBST([GL_LIB_GLOB])
AC_SUBST([GLU_LIB_GLOB])
AC_SUBST([GLESv2_LIB_GLOB])
AC_SUBST([VG_LIB_GLOB])
AC_SUBST([GLAPI_LIB_GLOB])
-AC_SUBST([WAYLAND_EGL_LIB_GLOB])
-AC_SUBST([GBM_LIB_GLOB])
dnl
dnl Arch/platform-specific settings
GLAPI_ASM_SOURCES='$(X86-64_API)'
AC_MSG_RESULT([yes, x86_64])
;;
- ppc)
- ASM_FLAGS="-DUSE_PPC_ASM -DUSE_VMX_ASM"
- MESA_ASM_SOURCES='$(PPC_SOURCES)'
- AC_MSG_RESULT([yes, ppc])
- ;;
sparc)
ASM_FLAGS="-DUSE_SPARC_ASM"
MESA_ASM_SOURCES='$(SPARC_SOURCES)'
[enable_gallium_gbm="$enableval"],
[enable_gallium_gbm=auto])
+AC_ARG_ENABLE([r600-llvm-compiler],
+ [AS_HELP_STRING([--enable-r600-llvm-compilerl],
+ [Enable experimental LLVM backend for graphics shaders @<:default=disable@:>@])],
+ [enable_r600_llvm="$enableval"],
+ [enable_r600_llvm=no])
+
# Option for Gallium drivers
GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast"
fi
AC_SUBST([API_DEFINES])
+AC_ARG_ENABLE([shared-glapi],
+ [AS_HELP_STRING([--enable-shared-glapi],
+ [EXPERIMENTAL. Enable shared glapi for OpenGL @<:@default=no@:>@])],
+ [enable_shared_glapi="$enableval"],
+ [enable_shared_glapi=no])
+
+SHARED_GLAPI="0"
+if test "x$enable_shared_glapi" = xyes; then
+ SHARED_GLAPI="1"
+ # libGL will use libglapi for function lookups (IN_DRI_DRIVER means to use
+ # the remap table)
+ DEFINES="$DEFINES -DIN_DRI_DRIVER"
+ SRC_DIRS="$SRC_DIRS mapi/shared-glapi"
+fi
+AC_SUBST([SHARED_GLAPI])
+AM_CONDITIONAL(HAVE_SHARED_GLAPI, test $SHARED_GLAPI = 1)
+
dnl
dnl Driver configuration. Options are xlib, dri and osmesa right now.
dnl More later: fbdev, ...
case "$host_os" in
linux*)
case "$host_cpu" in
- i*86|x86_64|powerpc*|sparc*) default_driver="dri";;
+ i*86|x86_64|powerpc*|sparc*|ia64*) default_driver="dri";;
esac
;;
*freebsd* | dragonfly* | *netbsd*)
enable_xlib_glx=no
fi
+AM_CONDITIONAL(HAVE_DRI, test x"$enable_dri" = xyes)
+
dnl
dnl Driver specific build directories
dnl
dnl this variable will be prepended to SRC_DIRS and is not exported
-CORE_DIRS="mapi/shared-glapi"
+CORE_DIRS=""
-SRC_DIRS=""
+SRC_DIRS="gtest"
GLU_DIRS="sgi"
GALLIUM_DIRS="auxiliary drivers state_trackers"
GALLIUM_TARGET_DIRS=""
GALLIUM_DRIVERS_DIRS="galahad trace rbug noop identity"
GALLIUM_STATE_TRACKERS_DIRS=""
+# build shared-glapi if enabled for OpenGL or if OpenGL ES is enabled
+case "x$enable_shared_glapi$enable_gles1$enable_gles2" in
+x*yes*)
+ CORE_DIRS="$CORE_DIRS mapi/shared-glapi"
+ ;;
+esac
+
# build glapi if OpenGL is enabled
if test "x$enable_opengl" = xyes; then
CORE_DIRS="$CORE_DIRS mapi/glapi"
# builds.
AM_CONDITIONAL(HAVE_XCB_GLX_CREATE_CONTEXT,
test x$HAVE_XCB_GLX_CREATE_CONTEXT = xyes)
+AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
GLESv1_CM_LIB_DEPS="$LIBDRM_LIBS -lm -lpthread $DLOPEN_LIBS"
GLESv1_CM_PC_LIB_PRIV="-lm -lpthread $DLOPEN_LIBS"
DRI_LIB_DEPS='$(TOP)/src/mesa/libmesa.a'
MESA_MODULES='$(TOP)/src/mesa/libmesa.a'
-if test "x$enable_dri" = xyes ; then
+if test "x$enable_dri" = xyes && test "x$driglx_direct" = xyes ; then
DRICORE_GLSL_LIBS='$(TOP)/$(LIB_DIR)/libglsl.so'
DRICORE_LIBS='$(TOP)/$(LIB_DIR)/libdricore.so'
DRICORE_LIB_DEPS='-L$(TOP)/$(LIB_DIR) -Wl,-R$(DRI_DRIVER_INSTALL_DIR) -lglsl'
EXPAT_LIB="-L$withval/$LIB_DIR -lexpat"
])
AC_CHECK_HEADER([expat.h],[],[AC_MSG_ERROR([Expat required for DRI.])])
+ save_LIBS="$LIBS"
AC_CHECK_LIB([expat],[XML_ParserCreate],[],
[AC_MSG_ERROR([Expat required for DRI.])])
+ LIBS="$save_LIBS"
fi
- # libdrm is required for all except swrast
+ # if we are building any dri driver other than swrast ...
if test -n "$DRI_DIRS" -a x"$DRI_DIRS" != xswrast; then
+ # ... libdrm is required
if test "x$have_libdrm" != xyes; then
AC_MSG_ERROR([DRI drivers requires libdrm >= $LIBDRM_REQUIRED])
fi
+ # ... and build dricommon
+ HAVE_COMMON_DRI=yes
fi
# put all the necessary libs together
;;
esac
+case $DRI_DIRS in
+*nouveau*)
+ PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
+ HAVE_NOUVEAU_DRI=yes;
+ ;;
+esac
+
case $DRI_DIRS in
*radeon*|*r200*)
PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
;;
esac
+case $DRI_DIRS in
+*swrast*)
+ HAVE_SWRAST_DRI=yes;
+ ;;
+esac
+
AM_CONDITIONAL(HAVE_I915_DRI, test x$HAVE_I915_DRI = xyes)
AM_CONDITIONAL(HAVE_I965_DRI, test x$HAVE_I965_DRI = xyes)
+AM_CONDITIONAL(HAVE_NOUVEAU_DRI, test x$HAVE_NOUVEAU_DRI = xyes)
AM_CONDITIONAL(HAVE_R200_DRI, test x$HAVE_R200_DRI = xyes)
AM_CONDITIONAL(HAVE_RADEON_DRI, test x$HAVE_RADEON_DRI = xyes)
-
-case $DRI_DIRS in
-*nouveau*)
- PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
- ;;
-esac
+AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes)
+AM_CONDITIONAL(HAVE_COMMON_DRI, test x$HAVE_COMMON_DRI = xyes)
dnl
dnl OSMesa configuration
fi
if test "x$enable_gbm" = xyes; then
SRC_DIRS="$SRC_DIRS gbm"
- GBM_BACKEND_DIRS=""
PKG_CHECK_MODULES([LIBUDEV], [libudev], [],
AC_MSG_ERROR([gbm needs udev]))
- GBM_LIB_DEPS="$DLOPEN_LIBS $LIBUDEV_LIBS"
if test "x$enable_dri" = xyes; then
GBM_BACKEND_DIRS="$GBM_BACKEND_DIRS dri"
+ if test "$SHARED_GLAPI" -eq 0; then
+ AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
+ fi
fi
fi
-AC_SUBST([GBM_LIB_DEPS])
-AC_SUBST([GBM_BACKEND_DIRS])
GBM_PC_REQ_PRIV="libudev"
GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
-GBM_PC_CFLAGS=
AC_SUBST([GBM_PC_REQ_PRIV])
AC_SUBST([GBM_PC_LIB_PRIV])
-AC_SUBST([GBM_PC_CFLAGS])
dnl
dnl EGL configuration
if test "x$enable_egl" = xyes; then
SRC_DIRS="$SRC_DIRS egl"
EGL_LIB_DEPS="$DLOPEN_LIBS $SELINUX_LIBS -lpthread"
- EGL_DRIVERS_DIRS=""
AC_CHECK_FUNC(mincore, [DEFINES="$DEFINES -DHAVE_MINCORE"])
if test "$enable_static" != yes; then
# build egl_glx when libGL is built
if test "x$enable_glx" = xyes; then
- EGL_DRIVERS_DIRS="glx"
+ HAVE_EGL_DRIVER_GLX=1
fi
PKG_CHECK_MODULES([LIBUDEV], [libudev > 150],
# build egl_dri2 when xcb-dri2 is available
PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb-dri2 xcb-xfixes],
[have_xcb_dri2=yes],[have_xcb_dri2=no])
-
if test "$have_xcb_dri2" = yes; then
- EGL_DRIVER_DRI2=dri2
- DEFINES="$DEFINES -DHAVE_XCB_DRI2"
+ HAVE_EGL_DRIVER_DRI2=1
# workaround a bug in xcb-dri2 generated by xcb-proto 1.6
+ save_LIBS="$LIBS"
AC_CHECK_LIB(xcb-dri2, xcb_dri2_connect_alignment_pad, [],
[DEFINES="$DEFINES -DXCB_DRI2_CONNECT_DEVICE_NAME_BROKEN"])
+ LIBS="$save_LIBS"
fi
fi
- EGL_DRIVERS_DIRS="$EGL_DRIVERS_DIRS $EGL_DRIVER_DRI2"
fi
fi
AC_SUBST([EGL_LIB_DEPS])
-AC_SUBST([EGL_DRIVERS_DIRS])
dnl
dnl EGL Gallium configuration
fi
if test "x$enable_xvmc" = xyes; then
- PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 xorg-server])
- GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xorg/xvmc"
+ PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6 x11-xcb xcb-dri2 >= 1.8])
+ GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS xvmc"
HAVE_ST_XVMC="yes"
fi
if test "x$enable_vdpau" = xyes; then
- PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1])
+ PKG_CHECK_MODULES([VDPAU], [vdpau >= 0.4.1 x11-xcb xcb-dri2 >= 1.8])
GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS vdpau"
HAVE_ST_VDPAU="yes"
fi
if test "x$enable_va" = xyes; then
- PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1])
+ PKG_CHECK_MODULES([LIBVA], [libva = 0.31.1 x11-xcb xcb-dri2 >= 1.8])
AC_MSG_WARN([vaapi state tracker currently unmaintained])
GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS va"
HAVE_ST_VA="yes"
SRC_DIRS="$SRC_DIRS gallium gallium/winsys gallium/targets"
fi
+AC_SUBST([LLVM_BINDIR])
AC_SUBST([LLVM_CFLAGS])
+AC_SUBST([LLVM_CXXFLAGS])
AC_SUBST([LLVM_LIBS])
AC_SUBST([LLVM_LDFLAGS])
+AC_SUBST([LLVM_INCLUDEDIR])
AC_SUBST([LLVM_VERSION])
case "x$enable_opengl$enable_gles1$enable_gles2" in
[comma delimited native platforms libEGL supports, e.g.
"x11,drm" @<:@default=auto@:>@])],
[with_egl_platforms="$withval"],
- [with_egl_platforms=yes])
+ [if test "x$enable_egl" = xyes; then
+ with_egl_platforms="x11"
+ else
+ with_egl_platforms=""
+ fi])
EGL_PLATFORMS=""
-WAYLAND_EGL_LIB_DEPS=""
-case "$with_egl_platforms" in
-yes)
- if test "x$enable_egl" = xyes; then
- EGL_PLATFORMS="x11"
- fi
- ;;
-*)
- if test "x$enable_egl" != xyes; then
- AC_MSG_ERROR([cannot build egl state tracker without EGL library])
- fi
- # verify the requested driver directories exist
- egl_platforms=`IFS=', '; echo $with_egl_platforms`
- for plat in $egl_platforms; do
+if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
+ AC_MSG_ERROR([cannot build egl state tracker without EGL library])
+fi
+
+# verify the requested driver directories exist
+egl_platforms=`IFS=', '; echo $with_egl_platforms`
+for plat in $egl_platforms; do
test -d "$srcdir/src/gallium/state_trackers/egl/$plat" || \
- AC_MSG_ERROR([EGL platform '$plat' doesn't exist])
+ AC_MSG_ERROR([EGL platform '$plat' does not exist])
if test "$plat" = "fbdev"; then
GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/fbdev"
fi
if test "$plat" = "wayland"; then
PKG_CHECK_MODULES([WAYLAND], [wayland-client wayland-server],, \
[AC_MSG_ERROR([cannot find libwayland-client])])
- WAYLAND_EGL_LIB_DEPS="$WAYLAND_LIBS $LIBDRM_LIBS"
GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/wayland"
+
+ m4_ifdef([WAYLAND_SCANNER_RULES],
+ [WAYLAND_SCANNER_RULES(['$(top_srcdir)/src/egl/wayland/wayland-drm/protocol'])])
fi
if test "$plat" = "drm" && test "x$enable_gbm" = "xno"; then
AC_MSG_ERROR([EGL platform drm needs gbm])
waylandno|drmno)
AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;;
esac
- done
- EGL_PLATFORMS="$egl_platforms"
- ;;
-esac
-AC_SUBST([EGL_PLATFORMS])
+done
-AC_SUBST([WAYLAND_EGL_LIB_DEPS])
-WAYLAND_EGL_PC_REQ_PRIV="wayland-client libdrm"
-WAYLAND_EGL_PC_LIB_PRIV=
-WAYLAND_EGL_PC_CFLAGS=
+# libEGL wants to default to the first platform specified in
+# ./configure. parse that here.
+if test "x$egl_platforms" != "x"; then
+ FIRST_PLATFORM_CAPS=`echo $egl_platforms | sed 's| .*||' | tr 'a-z' 'A-Z'`
+ EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS"
+else
+ EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM"
+fi
-AC_SUBST([WAYLAND_EGL_PC_REQ_PRIV])
-AC_SUBST([WAYLAND_EGL_PC_LIB_PRIV])
-AC_SUBST([WAYLAND_EGL_PC_CFLAGS])
+EGL_PLATFORMS="$egl_platforms"
+AM_CONDITIONAL(HAVE_EGL_PLATFORM_X11, echo "$egl_platforms" | grep 'x11' >/dev/null 2>&1)
+AM_CONDITIONAL(HAVE_EGL_PLATFORM_WAYLAND, echo "$egl_platforms" | grep 'wayland' >/dev/null 2>&1)
+AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep 'drm' >/dev/null 2>&1)
+AM_CONDITIONAL(HAVE_EGL_PLATFORM_FBDEV, echo "$egl_platforms" | grep 'fbdev' >/dev/null 2>&1)
+AM_CONDITIONAL(HAVE_EGL_PLATFORM_NULL, echo "$egl_platforms" | grep 'null' >/dev/null 2>&1)
+
+AM_CONDITIONAL(HAVE_EGL_DRIVER_DRI2, test "x$HAVE_EGL_DRIVER_DRI2" != "x")
+AM_CONDITIONAL(HAVE_EGL_DRIVER_GLX, test "x$HAVE_EGL_DRIVER_GLX" != "x")
+
+AC_SUBST([EGL_NATIVE_PLATFORM])
+AC_SUBST([EGL_PLATFORMS])
+AC_SUBST([EGL_CFLAGS])
AC_ARG_WITH([egl-driver-dir],
[AS_HELP_STRING([--with-egl-driver-dir=DIR],
[build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])],
[enable_gallium_llvm="$enableval"],
[enable_gallium_llvm=auto])
+
+AC_ARG_WITH([llvm-shared-libs],
+ [AS_HELP_STRING([--with-llvm-shared-libs],
+ [link with LLVM shared libraries @<:@default=disabled@:>@])],
+ [with_llvm_shared_libs=yes],
+ [with_llvm_shared_libs=no])
+
if test "x$with_gallium_drivers" = x; then
enable_gallium_llvm=no
fi
if test "x$LLVM_CONFIG" != xno; then
LLVM_VERSION=`$LLVM_CONFIG --version | sed 's/svn.*//g'`
LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g'`
- LLVM_LIBS="`$LLVM_CONFIG --libs`"
-
+ if test "x$with_llvm_shared_libs" = xyes; then
+ dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
+ LLVM_LIBS="-lLLVM-`$LLVM_CONFIG --version`"
+ else
+ LLVM_LIBS="`$LLVM_CONFIG --libs engine bitwriter`"
+ fi
LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags`
- DEFINES="$DEFINES -D__STDC_CONSTANT_MACROS"
+ LLVM_BINDIR=`$LLVM_CONFIG --bindir`
+ LLVM_CXXFLAGS=`$LLVM_CONFIG --cxxflags`
+ LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir`
+ DEFINES="${DEFINES} -DHAVE_LLVM=`echo $LLVM_VERSION | sed -e 's/\([[0-9]]\)\.\([[0-9]]\)/0x0\10\2/g'`"
MESA_LLVM=1
else
MESA_LLVM=0
MESA_LLVM=0
fi
+dnl Directory for XVMC libs
+AC_ARG_WITH([xvmc-libdir],
+ [AS_HELP_STRING([--with-xvmc-libdir=DIR],
+ [directory for the XVMC libraries @<:@default=${libdir}@:>@])],
+ [XVMC_LIB_INSTALL_DIR="$withval"],
+ [XVMC_LIB_INSTALL_DIR='${libdir}'])
+AC_SUBST([XVMC_LIB_INSTALL_DIR])
+
dnl Directory for VDPAU libs
AC_ARG_WITH([vdpau-libdir],
[AS_HELP_STRING([--with-vdpau-libdir=DIR],
fi
if test "x$HAVE_ST_XVMC" = xyes && test "x$5" != x; then
GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $5"
- NEED_G3DVL_DRI="yes"
fi
if test "x$HAVE_ST_VDPAU" = xyes && test "x$6" != x; then
GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $6"
- NEED_G3DVL_DRI="yes"
fi
if test "x$HAVE_ST_VA" = xyes && test "x$7" != x; then
GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS $7"
- NEED_G3DVL_DRI="yes"
fi
}
gallium_check_st "i915/drm" "dri-i915" "xorg-i915"
;;
xr300)
+ PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
gallium_require_llvm "Gallium R300"
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r300"
gallium_check_st "radeon/drm" "dri-r300" "xorg-r300" "" "xvmc-r300" "vdpau-r300" "va-r300"
;;
xr600)
+ PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS r600"
+ if test "x$enable_r600_llvm" = xyes; then
+ if test "x$LLVM_VERSION" != "x3.1"; then
+ AC_MSG_ERROR([LLVM 3.1 is required for the r600 llvm compiler.])
+ fi
+ NEED_RADEON_GALLIUM=yes;
+ USE_R600_LLVM_COMPILER=yes;
+ fi
gallium_check_st "radeon/drm" "dri-r600" "xorg-r600" "" "xvmc-r600" "vdpau-r600" "va-r600"
;;
+ xradeonsi)
+ GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS radeonsi"
+ if test "x$LLVM_VERSION" != "x3.1"; then
+ AC_MSG_ERROR([LLVM 3.1 is required to build the radeonsi driver.])
+ fi
+ NEED_RADEON_GALLIUM=yes;
+ gallium_check_st "radeon/drm" "dri-radeonsi" "xorg-radeonsi"
+ ;;
xnouveau)
PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
- GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nvfx nv50 nvc0"
+ GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0"
gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau"
;;
xswrast)
done
fi
-if test "x$NEED_G3DVL_DRI" = xyes; then
- GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri"
-fi
+dnl Tell Automake which drivers to build
+for driver in $GALLIUM_DRIVERS_DIRS; do
+ case "x$driver" in
+ xgalahad)
+ HAVE_GALAHAD_GALLIUM=yes;
+ ;;
+ xidentity)
+ HAVE_IDENTITY_GALLIUM=yes;
+ ;;
+ xnoop)
+ HAVE_NOOP_GALLIUM=yes;
+ ;;
+ *)
+ GALLIUM_MAKE_DIRS="$GALLIUM_MAKE_DIRS $driver"
+ ;;
+ esac
+done
+
+AM_CONDITIONAL(HAVE_GALAHAD_GALLIUM, test x$HAVE_GALAHAD_GALLIUM = xyes)
+AM_CONDITIONAL(HAVE_IDENTITY_GALLIUM, test x$HAVE_IDENTITY_GALLIUM = xyes)
+AM_CONDITIONAL(HAVE_NOOP_GALLIUM, test x$HAVE_NOOP_GALLIUM = xyes)
+AM_CONDITIONAL(NEED_RADEON_GALLIUM, test x$NEED_RADEON_GALLIUM = xyes)
+AM_CONDITIONAL(USE_R600_LLVM_COMPILER, test x$USE_R600_LLVM_COMPILER = xyes)
+AC_SUBST([GALLIUM_MAKE_DIRS])
dnl prepend CORE_DIRS to SRC_DIRS
SRC_DIRS="$CORE_DIRS $SRC_DIRS"
dnl Substitute the config
AC_CONFIG_FILES([configs/autoconf
+ src/gallium/drivers/Makefile
+ src/gallium/drivers/r300/Makefile
+ src/gallium/drivers/r600/Makefile
+ src/gbm/Makefile
+ src/gbm/main/gbm.pc
+ src/egl/drivers/Makefile
+ src/egl/drivers/dri2/Makefile
+ src/egl/drivers/glx/Makefile
+ src/egl/main/Makefile
+ src/egl/main/egl.pc
+ src/egl/wayland/Makefile
+ src/egl/wayland/wayland-egl/Makefile
+ src/egl/wayland/wayland-egl/wayland-egl.pc
+ src/egl/wayland/wayland-drm/Makefile
+ src/glsl/tests/Makefile
+ src/glx/Makefile
+ src/mapi/shared-glapi/Makefile
+ src/gtest/Makefile
+ src/mesa/drivers/dri/dri.pc
+ src/mesa/drivers/dri/Makefile
+ src/mesa/drivers/dri/common/Makefile
src/mesa/drivers/dri/i915/Makefile
src/mesa/drivers/dri/i965/Makefile
+ src/mesa/drivers/dri/nouveau/Makefile
src/mesa/drivers/dri/r200/Makefile
src/mesa/drivers/dri/radeon/Makefile
+ src/mesa/drivers/dri/swrast/Makefile
tests/Makefile
tests/glx/Makefile])
GALLIUM_TARGET_DIRS=`echo $GALLIUM_TARGET_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
GALLIUM_WINSYS_DIRS=`echo $GALLIUM_WINSYS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
GALLIUM_DRIVERS_DIRS=`echo $GALLIUM_DRIVERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
+GALLIUM_MAKE_DIRS=`echo $GALLIUM_MAKE_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
GALLIUM_STATE_TRACKERS_DIRS=`echo $GALLIUM_STATE_TRACKERS_DIRS|tr " " "\n"|sort -u|tr "\n" " "`
AC_OUTPUT
echo " EGL platforms: $EGL_PLATFORMS"
egl_drivers=""
- for d in $EGL_DRIVERS_DIRS; do
- egl_drivers="$egl_drivers builtin:egl_$d"
- done
+ if test "x$HAVE_EGL_DRIVER_GLX" != "x"; then
+ egl_drivers="$egl_drivers builtin:egl_glx"
+ fi
+ if test "x$HAVE_EGL_DRIVER_DRI2" != "x"; then
+ egl_drivers="$egl_drivers builtin:egl_dri2"
+ fi
if test "x$HAVE_ST_EGL" = xyes; then
echo " EGL drivers: ${egl_drivers} egl_gallium"