X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=configure.ac;h=5ccf77d6593a24b02baa295268862df84a02e21c;hb=667cdba2118cf82e0027bf44314c9d1334d00840;hp=e41e13aab94e794ab41fd7ced6ae2aecdbb64e2c;hpb=80aa78142d12b21dd7d4f0edc786af98a159a80f;p=mesa.git diff --git a/configure.ac b/configure.ac index e41e13aab94..5ccf77d6593 100644 --- a/configure.ac +++ b/configure.ac @@ -16,7 +16,11 @@ AC_INIT([Mesa],[mesa_version], [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 @@ -32,9 +36,10 @@ USER_CXXFLAGS="$CXXFLAGS" 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.34 +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 @@ -44,6 +49,7 @@ dnl Check for progs 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 @@ -54,11 +60,16 @@ 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. @@ -75,18 +86,6 @@ solaris*) ;; 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]) @@ -97,24 +96,24 @@ AC_COMPILE_IFELSE( 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 GCC_VERSION=`$CC -dumpversion` if test $? -eq 0; then - major=`echo $GCC_VERSION | cut -d. -f1` - minor=`echo $GCC_VERSION | cut -d. -f2` + GCC_VERSION_MAJOR=`echo $GCC_VERSION | cut -d. -f1` + GCC_VERSION_MINOR=`echo $GCC_VERSION | cut -d. -f2` fi - if test $major -lt 3 -o $major -eq 3 -a $minor -lt 3 ; then + if test $GCC_VERSION_MAJOR -lt 3 -o $GCC_VERSION_MAJOR -eq 3 -a $GCC_VERSION_MINOR -lt 3 ; then AC_MSG_RESULT([no]) AC_MSG_ERROR([If using GCC, version 3.3.0 or later is required.]) else @@ -176,7 +175,20 @@ esac 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" @@ -273,39 +285,9 @@ if test "x$enable_64bit" = xyes; then 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]) @@ -389,6 +371,7 @@ fi 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 @@ -633,7 +616,11 @@ AC_ARG_ENABLE([va], [enable va library @<:@default=auto@:>@])], [enable_va="$enableval"], [enable_va=auto]) - +AC_ARG_ENABLE([opencl], + [AS_HELP_STRING([--enable-opencl], + [enable OpenCL library @<:@default=no@:>@])], + [enable_opencl="$enableval"], + [enable_opencl=no]) AC_ARG_ENABLE([xlib_glx], [AS_HELP_STRING([--enable-xlib-glx], [make GLX library Xlib-based instead of DRI-based @<:@default=disable@:>@])], @@ -654,6 +641,18 @@ AC_ARG_ENABLE([gallium_gbm], [enable_gallium_gbm="$enableval"], [enable_gallium_gbm=auto]) +AC_ARG_ENABLE([r600-llvm-compiler], + [AS_HELP_STRING([--enable-r600-llvm-compiler], + [Enable experimental LLVM backend for graphics shaders @<:@default=disable@:>@])], + [enable_r600_llvm="$enableval"], + [enable_r600_llvm=no]) + +AC_ARG_ENABLE([gallium_tests], + [AS_HELP_STRING([--enable-gallium-tests], + [Enable optional Gallium tests) @<:@default=disable@:>@])], + [enable_gallium_tests="$enableval"], + [enable_gallium_tests=no]) + # Option for Gallium drivers GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast" @@ -681,7 +680,8 @@ if test "x$enable_opengl" = xno -a \ "x$enable_d3d1x" = xno -a \ "x$enable_xvmc" = xno -a \ "x$enable_vdpau" = xno -a \ - "x$enable_va" = xno; then + "x$enable_va" = xno -a \ + "x$enable_opencl" = xno; then AC_MSG_ERROR([at least one API should be enabled]) fi @@ -708,8 +708,13 @@ AC_ARG_ENABLE([shared-glapi], 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. @@ -720,7 +725,7 @@ default_driver="xlib" 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*) @@ -798,7 +803,7 @@ dnl dnl this variable will be prepended to SRC_DIRS and is not exported CORE_DIRS="" -SRC_DIRS="" +SRC_DIRS="gtest" GLU_DIRS="sgi" GALLIUM_DIRS="auxiliary drivers state_trackers" GALLIUM_TARGET_DIRS="" @@ -1047,6 +1052,7 @@ esac # 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" @@ -1250,11 +1256,14 @@ if test "x$enable_dri" = xyes; then 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 @@ -1284,7 +1293,7 @@ esac case $DRI_DIRS in *nouveau*) - PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED]) + PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED]) HAVE_NOUVEAU_DRI=yes; ;; esac @@ -1319,6 +1328,7 @@ 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) 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 @@ -1401,14 +1411,13 @@ EGL_CLIENT_APIS="" 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], @@ -1420,21 +1429,19 @@ if test "x$enable_egl" = xyes; then # 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 @@ -1481,6 +1488,7 @@ if test "x$enable_gallium_gbm" = xyes; then GALLIUM_STATE_TRACKERS_DIRS="gbm $GALLIUM_STATE_TRACKERS_DIRS" GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS gbm" HAVE_ST_GBM="yes" + enable_gallium_loader=yes fi dnl @@ -1582,24 +1590,42 @@ if test "x$enable_gallium_g3dvl" = xyes; then fi if test "x$enable_xvmc" = xyes; then - PKG_CHECK_MODULES([XVMC], [xvmc >= 1.0.6]) - 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" fi +dnl +dnl OpenCL configuration +dnl + +if test "x$enable_opencl" = xyes; then + if test "x$with_gallium_drivers" = x; then + AC_MSG_ERROR([cannot enable OpenCL without Gallium]) + fi + + if test $GCC_VERSION_MAJOR -lt 4 -o $GCC_VERSION_MAJOR -eq 4 -a $GCC_VERSION_MINOR -lt 6; then + AC_MSG_ERROR([gcc >= 4.6 is required to build clover]) + fi + + GALLIUM_STATE_TRACKERS_DIRS="$GALLIUM_STATE_TRACKERS_DIRS clover" + GALLIUM_TARGET_DIRS="$GALLIUM_TARGET_DIRS opencl" + enable_gallium_loader=yes +fi + dnl dnl GLU configuration dnl @@ -1661,9 +1687,12 @@ if test "x$with_gallium_drivers" != x; then 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 @@ -1680,23 +1709,21 @@ AC_ARG_WITH([egl-platforms], [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="" -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' does not exist]) if test "$plat" = "fbdev"; then @@ -1720,11 +1747,31 @@ yes) waylandno|drmno) AC_MSG_ERROR([cannot build $plat platfrom without udev]) ;; esac - done - EGL_PLATFORMS="$egl_platforms" - ;; -esac +done + +# 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 + +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], @@ -1763,6 +1810,13 @@ AC_ARG_ENABLE([gallium-llvm], [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 @@ -1776,11 +1830,18 @@ if test "x$enable_gallium_llvm" = xyes; then 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`" - + LLVM_CFLAGS=`$LLVM_CONFIG --cppflags|sed -e 's/-DNDEBUG\>//g' -e 's/-pedantic//g' -e 's/-Wcovered-switch-default//g'` + 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 @@ -1789,6 +1850,22 @@ else 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 +dnl Gallium Tests +dnl +if test "x$enable_gallium_tests" = xyes; then + SRC_DIRS="$SRC_DIRS gallium/tests/trivial" + enable_gallium_loader=yes +fi + dnl Directory for VDPAU libs AC_ARG_WITH([vdpau-libdir], [AS_HELP_STRING([--with-vdpau-libdir=DIR], @@ -1805,6 +1882,14 @@ AC_ARG_WITH([va-libdir], [VA_LIB_INSTALL_DIR='${libdir}/va']) AC_SUBST([VA_LIB_INSTALL_DIR]) +dnl Directory for OpenCL libs +AC_ARG_WITH([opencl-libdir], + [AS_HELP_STRING([--with-opencl-libdir=DIR], + [directory for the OpenCL libraries @<:@default=${libdir}/opencl@:>@])], + [OPENCL_LIB_INSTALL_DIR="$withval"], + [OPENCL_LIB_INSTALL_DIR='${libdir}/opencl']) +AC_SUBST([OPENCL_LIB_INSTALL_DIR]) + dnl dnl Gallium helper functions dnl @@ -1828,15 +1913,12 @@ gallium_check_st() { 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 } @@ -1848,6 +1930,17 @@ gallium_require_llvm() { fi } +gallium_require_drm_loader() { + if test "x$enable_gallium_loader" = xyes; then + PKG_CHECK_MODULES([LIBUDEV], [libudev], [], + AC_MSG_ERROR([Gallium drm loader requrires libudev])) + if test "x$have_libdrm" != xyes; then + AC_MSG_ERROR([Gallium drm loader requires libdrm >= $LIBDRM_REQUIRED]) + fi + enable_gallium_drm_loader=yes + fi +} + dnl Gallium drivers dnl Duplicates in GALLIUM_DRIVERS_DIRS are removed by sorting it after this block if test "x$with_gallium_drivers" != x; then @@ -1868,17 +1961,38 @@ if test "x$with_gallium_drivers" != x; then 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_require_drm_loader 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) + PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) + gallium_require_drm_loader + 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_require_drm_loader + GALLIUM_DRIVERS_DIRS="$GALLIUM_DRIVERS_DIRS nouveau nv30 nv50 nvc0" gallium_check_st "nouveau/drm" "dri-nouveau" "xorg-nouveau" "" "xvmc-nouveau" "vdpau-nouveau" ;; xswrast) @@ -1914,9 +2028,51 @@ if test "x$with_gallium_drivers" != x; then done fi -if test "x$NEED_G3DVL_DRI" = xyes; then - GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS g3dvl/dri" -fi +if test "x$enable_gallium_loader" = xyes; then + GALLIUM_WINSYS_DIRS="$GALLIUM_WINSYS_DIRS sw/null" + GALLIUM_PIPE_LOADER_DEFINES="-DHAVE_PIPE_LOADER_SW" + GALLIUM_PIPE_LOADER_LIBS="\$(TOP)/src/gallium/auxiliary/pipe-loader/libpipe_loader.a" + GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/null/libws_null.a" + + if test "x$HAVE_WINSYS_XLIB" = xyes; then + GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_XLIB" + GALLIUM_PIPE_LOADER_LIBS="$GALLIUM_PIPE_LOADER_LIBS \$(TOP)/src/gallium/winsys/sw/xlib/libws_xlib.a" + fi + + if test "x$enable_gallium_drm_loader" = xyes; then + GALLIUM_PIPE_LOADER_DEFINES="$GALLIUM_PIPE_LOADER_DEFINES -DHAVE_PIPE_LOADER_DRM" + fi + + AC_SUBST([GALLIUM_PIPE_LOADER_DEFINES]) + AC_SUBST([GALLIUM_PIPE_LOADER_LIBS]) +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) +AM_CONDITIONAL(HAVE_LOADER_GALLIUM, test x$enable_gallium_loader = xyes) +AM_CONDITIONAL(HAVE_DRM_LOADER_GALLIUM, test x$enable_gallium_drm_loader = xyes) +AC_SUBST([GALLIUM_MAKE_DIRS]) dnl prepend CORE_DIRS to SRC_DIRS SRC_DIRS="$CORE_DIRS $SRC_DIRS" @@ -1931,12 +2087,27 @@ CXXFLAGS="$CXXFLAGS $USER_CXXFLAGS" dnl Substitute the config AC_CONFIG_FILES([configs/autoconf + src/gallium/auxiliary/pipe-loader/Makefile + src/gallium/state_trackers/clover/Makefile + src/gallium/drivers/Makefile + src/gallium/drivers/r300/Makefile + src/gallium/drivers/r600/Makefile + src/gallium/targets/opencl/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 @@ -1961,6 +2132,7 @@ dnl Sort the dirs alphabetically 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 @@ -2020,9 +2192,12 @@ if test "$enable_egl" = yes; then 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"