X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=configure.ac;h=8ed606c769460c1b04e3486513fa0888a1677fa7;hb=528bc14fa54105ac893de197bdc0592cdca3e6b5;hp=62d33a1941c3209cf3447e0888cb0a2d75bae1e7;hpb=df3a43018020c16c1dfa88a76c9a84c9fb85be38;p=mesa.git diff --git a/configure.ac b/configure.ac index 62d33a1941c..8ed606c7694 100644 --- a/configure.ac +++ b/configure.ac @@ -74,11 +74,11 @@ AC_SUBST([OPENCL_VERSION]) # in the first entry. LIBDRM_REQUIRED=2.4.75 LIBDRM_RADEON_REQUIRED=2.4.71 -LIBDRM_AMDGPU_REQUIRED=2.4.84 +LIBDRM_AMDGPU_REQUIRED=2.4.89 LIBDRM_INTEL_REQUIRED=2.4.75 LIBDRM_NVVIEUX_REQUIRED=2.4.66 LIBDRM_NOUVEAU_REQUIRED=2.4.66 -LIBDRM_FREEDRENO_REQUIRED=2.4.74 +LIBDRM_FREEDRENO_REQUIRED=2.4.89 LIBDRM_ETNAVIV_REQUIRED=2.4.82 dnl Versions for external dependencies @@ -103,14 +103,18 @@ dnl LLVM versions LLVM_REQUIRED_GALLIUM=3.3.0 LLVM_REQUIRED_OPENCL=3.9.0 LLVM_REQUIRED_R600=3.9.0 -LLVM_REQUIRED_RADEONSI=3.9.0 -LLVM_REQUIRED_RADV=3.9.0 +LLVM_REQUIRED_RADEONSI=4.0.0 +LLVM_REQUIRED_RADV=4.0.0 LLVM_REQUIRED_SWR=3.9.0 dnl Check for progs AC_PROG_CPP AC_PROG_CC AC_PROG_CXX +dnl add this here, so the help for this environmnet variable is close to +dnl other CC/CXX flags related help +AC_ARG_VAR([CXX11_CXXFLAGS], [Compiler flag to enable C++11 support (only needed if not + enabled by default and different from -std=c++11)]) AM_PROG_CC_C_O AM_PROG_AS AX_CHECK_GNU_MAKE @@ -120,6 +124,7 @@ AC_PROG_MKDIR_P AC_SYS_LARGEFILE + LT_PREREQ([2.2]) LT_INIT([disable-static]) @@ -245,6 +250,7 @@ AX_GCC_FUNC_ATTRIBUTE([visibility]) AX_GCC_FUNC_ATTRIBUTE([warn_unused_result]) AX_GCC_FUNC_ATTRIBUTE([weak]) AX_GCC_FUNC_ATTRIBUTE([alias]) +AX_GCC_FUNC_ATTRIBUTE([noreturn]) AM_CONDITIONAL([GEN_ASM_OFFSETS], test "x$GEN_ASM_OFFSETS" = xyes) @@ -309,11 +315,11 @@ AC_LANG_POP([C++]) # - non-Linux/Posix OpenGL portions needs to build on MSVC 2013 (which # supports most of C99) # - the rest has no compiler compiler restrictions -AX_CHECK_COMPILE_FLAG([-Werror=pointer-arith], [MSVC2013_COMPAT_CFLAGS="-Werror=pointer-arith"]) -AX_CHECK_COMPILE_FLAG([-Werror=vla], [MSVC2013_COMPAT_CFLAGS="-Werror=vla"]) +AX_CHECK_COMPILE_FLAG([-Werror=pointer-arith], [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=pointer-arith"]) +AX_CHECK_COMPILE_FLAG([-Werror=vla], [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=vla"]) AC_LANG_PUSH([C++]) -AX_CHECK_COMPILE_FLAG([-Werror=pointer-arith], [MSVC2013_COMPAT_CXXFLAGS="-Werror=pointer-arith"]) -AX_CHECK_COMPILE_FLAG([-Werror=vla], [MSVC2013_COMPAT_CXXFLAGS="-Werror=vla"]) +AX_CHECK_COMPILE_FLAG([-Werror=pointer-arith], [MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=pointer-arith"]) +AX_CHECK_COMPILE_FLAG([-Werror=vla], [MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=vla"]) AC_LANG_POP([C++]) AC_SUBST([MSVC2013_COMPAT_CFLAGS]) @@ -327,6 +333,56 @@ if test "x$GCC" = xyes; then fi fi +dnl +dnl Check whether C++11 is supported, if the environment variable +dnl CXX11_CXXFLAGS is set it takes precedence. +dnl + +AC_LANG_PUSH([C++]) + +check_cxx11_available() { + output_support=$1 + AC_COMPILE_IFELSE( + [AC_LANG_PROGRAM([ + #if !(__cplusplus >= 201103L) + #error + #endif + #include + ]) + ], [ + AC_MSG_RESULT(yes) + cxx11_support=yes + ], AC_MSG_RESULT(no)) + eval "$output_support=\$cxx11_support" +} + +HAVE_CXX11=no +save_CXXFLAGS="$CXXFLAGS" + +dnl If the user provides a flag to enable c++11, then we test only this +if test "x$CXX11_CXXFLAGS" != "x"; then + CXXFLAGS="$CXXFLAGS $CXX11_CXXFLAGS" + AC_MSG_CHECKING(whether c++11 is enabled by via $CXX11_CXXFLAGS) + check_cxx11_available HAVE_CXX11 +else + dnl test whether c++11 is enabled by default + AC_MSG_CHECKING(whether c++11 is enabled by default) + check_cxx11_available HAVE_CXX11 + + dnl C++11 not enabled by default, test whether -std=c++11 does the job + if test "x$HAVE_CXX11" != "xyes"; then + CXX11_CXXFLAGS=-std=c++11 + CXXFLAGS="$CXXFLAGS $CXX11_CXXFLAGS" + AC_MSG_CHECKING(whether c++11 is enabled by via $CXX11_CXXFLAGS) + check_cxx11_available HAVE_CXX11 + fi +fi + +CXXFLAGS="$save_CXXFLAGS" +AM_CONDITIONAL(HAVE_STD_CXX11, test "x$HAVE_CXX11" = "xyes") +AC_SUBST(CXX11_CXXFLAGS) +AC_LANG_POP([C++]) + dnl even if the compiler appears to support it, using visibility attributes isn't dnl going to do anything useful currently on cygwin apart from emit lots of warnings case "$host_os" in @@ -339,8 +395,10 @@ esac AC_SUBST([VISIBILITY_CFLAGS]) AC_SUBST([VISIBILITY_CXXFLAGS]) -AX_CHECK_COMPILE_FLAG([-Wno-override-init], [WNO_OVERRIDE_INIT="-Wno-override-init"]) # gcc -AX_CHECK_COMPILE_FLAG([-Wno-initializer-overrides], [WNO_OVERRIDE_INIT="-Wno-initializer-overrides"]) # clang +dnl For some reason, the test for -Wno-foo always succeeds with gcc, even if the +dnl option is not supported. Hence, check for -Wfoo instead. +AX_CHECK_COMPILE_FLAG([-Woverride-init], [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-override-init"]) # gcc +AX_CHECK_COMPILE_FLAG([-Winitializer-overrides], [WNO_OVERRIDE_INIT="$WNO_OVERRIDE_INIT -Wno-initializer-overrides"]) # clang AC_SUBST([WNO_OVERRIDE_INIT]) dnl @@ -606,16 +664,7 @@ dnl Check if linker supports version scripts dnl AC_MSG_CHECKING([if the linker supports version-scripts]) save_LDFLAGS=$LDFLAGS -LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map" -cat > conftest.map < conftest.dyn <= $ZLIB_REQUIRED]) +DEFINES="$DEFINES -DHAVE_ZLIB" dnl Check for pthreads AX_PTHREAD @@ -894,6 +954,9 @@ if test "x$pthread_stubs_possible" = xyes; then PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs >= 0.4) fi +dnl Check for futex for fast inline simple_mtx_t. +AC_CHECK_HEADER([linux/futex.h], [DEFINES="$DEFINES -DHAVE_LINUX_FUTEX_H"]) + dnl SELinux awareness. AC_ARG_ENABLE([selinux], [AS_HELP_STRING([--enable-selinux], @@ -1220,10 +1283,10 @@ AC_ARG_ENABLE([xa], [enable_xa=no]) AC_ARG_ENABLE([gbm], [AS_HELP_STRING([--enable-gbm], - [enable gbm library @<:@default=yes except cygwin@:>@])], + [enable gbm library @<:@default=yes except cygwin and macOS@:>@])], [enable_gbm="$enableval"], [case "$host_os" in - cygwin*) + cygwin* | darwin*) enable_gbm=no ;; *) @@ -1269,9 +1332,9 @@ AC_ARG_ENABLE([opencl], AC_ARG_ENABLE([opencl_icd], [AS_HELP_STRING([--enable-opencl-icd], [Build an OpenCL ICD library to be loaded by an ICD implementation - @<:@default=disabled@:>@])], + @<:@default=enabled@:>@])], [enable_opencl_icd="$enableval"], - [enable_opencl_icd=no]) + [enable_opencl_icd=yes]) AC_ARG_ENABLE([gallium-tests], [AS_HELP_STRING([--enable-gallium-tests], @@ -1397,18 +1460,10 @@ AC_ARG_ENABLE([libglvnd], AM_CONDITIONAL(USE_LIBGLVND, test "x$enable_libglvnd" = xyes) if test "x$enable_libglvnd" = xyes ; then - dnl XXX: update once we can handle more than libGL/glx. - dnl Namely: we should error out if neither of the glvnd enabled libraries - dnl are built case "x$enable_glx" in - xno) - AC_MSG_ERROR([cannot build libglvnd without GLX]) - ;; xxlib | xgallium-xlib ) AC_MSG_ERROR([cannot build libgvnd when Xlib-GLX or Gallium-Xlib-GLX is enabled]) ;; - xdri) - ;; esac PKG_CHECK_MODULES([GLVND], libglvnd >= 0.2.0) @@ -1417,6 +1472,10 @@ if test "x$enable_libglvnd" = xyes ; then DEFINES="${DEFINES} -DUSE_LIBGLVND=1" DEFAULT_GL_LIB_NAME=GLX_mesa + + if test "x$enable_glx" = xno -a "x$enable_egl" = xno; then + AC_MSG_ERROR([cannot build libglvnd without GLX or EGL]) + fi fi AC_ARG_WITH([gl-lib-name], @@ -1552,7 +1611,7 @@ fi AC_ARG_ENABLE([driglx-direct], [AS_HELP_STRING([--disable-driglx-direct], [disable direct rendering in GLX and EGL for DRI \ - @<:@default=auto@:>@])], + @<:@default=enabled@:>@])], [driglx_direct="$enableval"], [driglx_direct="yes"]) @@ -2174,7 +2233,9 @@ if test "x$enable_xvmc" = xyes -o \ "x$enable_vdpau" = xyes -o \ "x$enable_omx_bellagio" = xyes -o \ "x$enable_va" = xyes; then - PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED]) + if echo $platforms | grep -q "x11"; then + PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED]) + fi need_gallium_vl_winsys=yes fi AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes) @@ -2255,8 +2316,8 @@ if test "x$enable_opencl" = xyes; 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 7; then - AC_MSG_ERROR([gcc >= 4.7 is required to build clover]) + if test "x$HAVE_CXX11" != "xyes"; then + AC_MSG_ERROR([clover requires c++11 support]) fi if test "x$have_libclc" = xno; then @@ -2424,12 +2485,13 @@ dnl Surfaceless is an alternative for the last one. dnl require_basic_egl() { case "$with_platforms" in - *drm*|*surfaceless*) + *drm*|*surfaceless*|*android*) ;; *) AC_MSG_ERROR([$1 requires one of these: 1) --with-platforms=drm (X, Wayland, offscreen rendering based on DRM) 2) --with-platforms=surfaceless (offscreen only) + 3) --with-platforms=android (Android only) Recommended options: drm,x11]) ;; esac @@ -2542,10 +2604,9 @@ if test -n "$with_gallium_drivers"; then xswr) llvm_require_version $LLVM_REQUIRED_SWR "swr" - swr_require_cxx_feature_flags "C++11" "__cplusplus >= 201103L" \ - ",-std=c++11" \ - SWR_CXX11_CXXFLAGS - AC_SUBST([SWR_CXX11_CXXFLAGS]) + if test "x$HAVE_CXX11" != "xyes"; then + AC_MSG_ERROR([swr requires c++11 support]) + fi swr_require_cxx_feature_flags "AVX" "defined(__AVX__)" \ ",-target-cpu=sandybridge,-mavx,-march=core-avx,-tp=sandybridge" \ @@ -2592,6 +2653,11 @@ if test -n "$with_gallium_drivers"; then AC_MSG_ERROR([swr enabled but no swr architectures selected]) fi + # test if more than one swr arch configured + if test `echo $swr_archs | wc -w` -eq 1; then + HAVE_SWR_BUILTIN=yes + fi + HAVE_GALLIUM_SWR=yes ;; xvc4) @@ -2641,6 +2707,7 @@ AM_CONDITIONAL(HAVE_SWR_AVX, test "x$HAVE_SWR_AVX" = xyes) AM_CONDITIONAL(HAVE_SWR_AVX2, test "x$HAVE_SWR_AVX2" = xyes) AM_CONDITIONAL(HAVE_SWR_KNL, test "x$HAVE_SWR_KNL" = xyes) AM_CONDITIONAL(HAVE_SWR_SKX, test "x$HAVE_SWR_SKX" = xyes) +AM_CONDITIONAL(HAVE_SWR_BUILTIN, test "x$HAVE_SWR_BUILTIN" = xyes) dnl We need to validate some needed dependencies for renderonly drivers. @@ -2726,6 +2793,18 @@ if test "x$enable_llvm" = xyes; then fi fi fi + + dnl The gallium-xlib GLX and gallium OSMesa targets directly embed the + dnl swr/llvmpipe driver into the final binary. Adding LLVM_LIBS results in + dnl the LLVM library propagated in the Libs.private of the respective .pc + dnl file which ensures complete dependency information when statically + dnl linking. + if test "x$enable_glx" == xgallium-xlib; then + GL_PC_LIB_PRIV="$GL_PC_LIB_PRIV $LLVM_LIBS" + fi + if test "x$enable_gallium_osmesa" = xyes; then + OSMESA_PC_LIB_PRIV="$OSMESA_PC_LIB_PRIV $LLVM_LIBS" + fi fi AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes) @@ -2803,8 +2882,8 @@ AM_CONDITIONAL(HAVE_ARM_ASM, test "x$asm_arch" = xarm) AC_SUBST([NINE_MAJOR], 1) AC_SUBST([NINE_MINOR], 0) -AC_SUBST([NINE_TINY], 0) -AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_TINY") +AC_SUBST([NINE_PATCH], 0) +AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_PATCH") AC_SUBST([VDPAU_MAJOR], 1) AC_SUBST([VDPAU_MINOR], 0) @@ -2821,15 +2900,10 @@ AM_CONDITIONAL(HAVE_VULKAN_COMMON, test "x$VULKAN_DRIVERS" != "x") AC_SUBST([XVMC_MAJOR], 1) AC_SUBST([XVMC_MINOR], 0) -XA_HEADER="$srcdir/src/gallium/state_trackers/xa/xa_tracker.h" -XA_MAJOR=`grep "#define XA_TRACKER_VERSION_MAJOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MAJOR //'` -XA_MINOR=`grep "#define XA_TRACKER_VERSION_MINOR" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_MINOR //'` -XA_TINY=`grep "#define XA_TRACKER_VERSION_PATCH" $XA_HEADER | $SED 's/^#define XA_TRACKER_VERSION_PATCH //'` - -AC_SUBST([XA_MAJOR], $XA_MAJOR) -AC_SUBST([XA_MINOR], $XA_MINOR) -AC_SUBST([XA_TINY], $XA_TINY) -AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY") +AC_SUBST([XA_MAJOR], 2) +AC_SUBST([XA_MINOR], 3) +AC_SUBST([XA_PATCH], 0) +AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_PATCH") AC_ARG_ENABLE(valgrind, [AS_HELP_STRING([--enable-valgrind], @@ -2911,6 +2985,7 @@ AC_CONFIG_FILES([Makefile src/gallium/state_trackers/va/Makefile src/gallium/state_trackers/vdpau/Makefile src/gallium/state_trackers/xa/Makefile + src/gallium/state_trackers/xa/xa_tracker.h src/gallium/state_trackers/xvmc/Makefile src/gallium/targets/d3dadapter9/Makefile src/gallium/targets/d3dadapter9/d3d.pc @@ -3109,7 +3184,11 @@ fi echo "" if test "x$HAVE_GALLIUM_SWR" != x; then - echo " SWR archs: $swr_archs" + if test "x$HAVE_SWR_BUILTIN" = xyes; then + echo " SWR archs: $swr_archs (builtin)" + else + echo " SWR archs: $swr_archs" + fi fi dnl Libraries @@ -3129,6 +3208,7 @@ defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'` echo "" echo " CFLAGS: $cflags" echo " CXXFLAGS: $cxxflags" +echo " CXX11_CXXFLAGS: $CXX11_CXXFLAGS" echo " LDFLAGS: $ldflags" echo " Macros: $defines" echo ""