X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=configure.ac;h=ab9a91ed17bff352c71e039337ee07115ef2c2d7;hb=b27a883205156d9b5e13b84aebbcc4c679c5d71a;hp=0addfd5992bdcc680c556fb943a82c2bfef79b3f;hpb=9d5b681a11320757450e275e7efbafd47f4bcca5;p=mesa.git diff --git a/configure.ac b/configure.ac index 0addfd5992b..ab9a91ed17b 100644 --- a/configure.ac +++ b/configure.ac @@ -66,9 +66,14 @@ AC_SUBST([OSMESA_VERSION]) OPENCL_VERSION=1 AC_SUBST([OPENCL_VERSION]) -dnl Versions for external dependencies -LIBDRM_REQUIRED=2.4.66 -LIBDRM_RADEON_REQUIRED=2.4.56 +# The idea is that libdrm is distributed as one cohesive package, even +# though it is composed of multiple libraries. However some drivers +# may have different version requirements than others. This list +# codifies which drivers need which version of libdrm. Any libdrm +# version dependencies in non-driver-specific code should be reflected +# in the first entry. +LIBDRM_REQUIRED=2.4.75 +LIBDRM_RADEON_REQUIRED=2.4.71 LIBDRM_AMDGPU_REQUIRED=2.4.63 LIBDRM_INTEL_REQUIRED=2.4.75 LIBDRM_NVVIEUX_REQUIRED=2.4.66 @@ -76,7 +81,9 @@ LIBDRM_NOUVEAU_REQUIRED=2.4.66 LIBDRM_FREEDRENO_REQUIRED=2.4.74 LIBDRM_VC4_REQUIRED=2.4.69 LIBDRM_ETNAVIV_REQUIRED=2.4.74 -DRI2PROTO_REQUIRED=2.6 + +dnl Versions for external dependencies +DRI2PROTO_REQUIRED=2.8 DRI3PROTO_REQUIRED=1.0 PRESENTPROTO_REQUIRED=1.0 GLPROTO_REQUIRED=1.4.14 @@ -87,18 +94,20 @@ WAYLAND_REQUIRED=1.11 XCB_REQUIRED=1.9.3 XCBDRI2_REQUIRED=1.8 XCBGLX_REQUIRED=1.8.1 +XDAMAGE_REQUIRED=1.1 XSHMFENCE_REQUIRED=1.1 XVMC_REQUIRED=1.0.6 PYTHON_MAKO_REQUIRED=0.8.0 LIBSENSORS_REQUIRED=4.0.0 +ZLIB_REQUIRED=1.2.8 dnl LLVM versions LLVM_REQUIRED_GALLIUM=3.3.0 LLVM_REQUIRED_OPENCL=3.6.0 -LLVM_REQUIRED_R600=3.6.0 -LLVM_REQUIRED_RADEONSI=3.6.0 +LLVM_REQUIRED_R600=3.8.0 +LLVM_REQUIRED_RADEONSI=3.8.0 LLVM_REQUIRED_RADV=3.9.0 -LLVM_REQUIRED_SWR=3.6.0 +LLVM_REQUIRED_SWR=3.9.0 dnl Check for progs AC_PROG_CPP @@ -117,7 +126,6 @@ LT_PREREQ([2.2]) LT_INIT([disable-static]) AC_CHECK_PROG(RM, rm, [rm -f]) -AC_CHECK_PROG(XXD, xxd, [xxd]) AX_PROG_BISON([], AS_IF([test ! -f "$srcdir/src/compiler/glsl/glcpp/glcpp-parse.c"], @@ -297,7 +305,7 @@ if test "x$GCC" = xyes; then AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]), [CFLAGS="$save_CFLAGS -Wmissing-prototypes"; - AC_MSG_RESULT([no])]); + AC_MSG_RESULT([no])]) # Enable -fvisibility=hidden if using a gcc that supports it save_CFLAGS="$CFLAGS" @@ -305,7 +313,7 @@ if test "x$GCC" = xyes; then VISIBILITY_CFLAGS="-fvisibility=hidden" CFLAGS="$CFLAGS $VISIBILITY_CFLAGS" AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]), - [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]); + [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])]) # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed. CFLAGS=$save_CFLAGS @@ -330,7 +338,7 @@ if test "x$GCC" = xyes; then [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=vla"; MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=vla"; AC_MSG_RESULT([yes])], - AC_MSG_RESULT([no])); + AC_MSG_RESULT([no])) CFLAGS="$save_CFLAGS" fi if test "x$GXX" = xyes; then @@ -343,7 +351,7 @@ if test "x$GXX" = xyes; then CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS" AC_LANG_PUSH([C++]) AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]), - [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]); + [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])]) AC_LANG_POP([C++]) # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed. @@ -435,7 +443,7 @@ int main () { CFLAGS=$save_CFLAGS AC_ARG_ENABLE(pwr8, - [AC_HELP_STRING([--disable-pwr8-inst], + [AS_HELP_STRING([--disable-pwr8-inst], [disable POWER8-specific instructions])], [enable_pwr8=$enableval], [enable_pwr8=auto]) @@ -528,8 +536,6 @@ else DEFINES="$DEFINES -DNDEBUG" fi -DEFAULT_GL_LIB_NAME=GL - dnl dnl Check if linker supports -Bsymbolic dnl @@ -627,23 +633,6 @@ esac AM_CONDITIONAL(HAVE_COMPAT_SYMLINKS, test "x$HAVE_COMPAT_SYMLINKS" = xyes) -DEFAULT_GL_LIB_NAME=GL - -dnl -dnl Libglvnd configuration -dnl -AC_ARG_ENABLE([libglvnd], - [AS_HELP_STRING([--enable-libglvnd], - [Build for libglvnd @<:@default=disabled@:>@])], - [enable_libglvnd="$enableval"], - [enable_libglvnd=no]) -AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd" = xyes) -#AM_COND_IF([USE_LIBGLVND_GLX], [DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1"]) -if test "x$enable_libglvnd" = xyes ; then - DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1" - DEFAULT_GL_LIB_NAME=GLX_mesa -fi - dnl dnl library names dnl @@ -677,36 +666,6 @@ esac AC_SUBST([LIB_EXT]) -AC_ARG_WITH([gl-lib-name], - [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@], - [specify GL library name @<:@default=GL@:>@])], - [GL_LIB=$withval], - [GL_LIB="$DEFAULT_GL_LIB_NAME"]) -AC_ARG_WITH([osmesa-lib-name], - [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@], - [specify OSMesa library name @<:@default=OSMesa@:>@])], - [OSMESA_LIB=$withval], - [OSMESA_LIB=OSMesa]) -AS_IF([test "x$GL_LIB" = xyes], [GL_LIB="$DEFAULT_GL_LIB_NAME"]) -AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa]) - -dnl -dnl Mangled Mesa support -dnl -AC_ARG_ENABLE([mangling], - [AS_HELP_STRING([--enable-mangling], - [enable mangled symbols and library name @<:@default=disabled@:>@])], - [enable_mangling="${enableval}"], - [enable_mangling=no] -) -if test "x${enable_mangling}" = "xyes" ; then - DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE" - GL_LIB="Mangled${GL_LIB}" - OSMESA_LIB="Mangled${OSMESA_LIB}" -fi -AC_SUBST([GL_LIB]) -AC_SUBST([OSMESA_LIB]) - dnl dnl potentially-infringing-but-nobody-knows-for-sure stuff dnl @@ -809,6 +768,8 @@ LIBS="$LIBS $DLOPEN_LIBS" AC_CHECK_FUNCS([dladdr]) LIBS="$save_LIBS" +AC_CHECK_FUNC([dl_iterate_phdr], [DEFINES="$DEFINES -DHAVE_DL_ITERATE_PHDR"]) + case "$host_os" in darwin*) ;; @@ -823,6 +784,9 @@ esac dnl See if posix_memalign is available AC_CHECK_FUNC([posix_memalign], [DEFINES="$DEFINES -DHAVE_POSIX_MEMALIGN"]) +dnl Check for zlib +PKG_CHECK_MODULES([ZLIB], [zlib >= $ZLIB_REQUIRED]) + dnl Check for pthreads AX_PTHREAD if test "x$ax_pthread_ok" = xno; then @@ -836,9 +800,10 @@ if test "x$android" = xno; then test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread" fi -dnl pthread-stubs is mandatory on targets where it exists +dnl pthread-stubs is mandatory on BSD platforms, due to the nature of the +dnl project. Even then there's a notable issue as described in the project README case "$host_os" in -cygwin* ) +linux* | cygwin* | darwin* | solaris* | gnu*) pthread_stubs_possible="no" ;; * ) @@ -847,7 +812,7 @@ cygwin* ) esac if test "x$pthread_stubs_possible" = xyes; then - PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs) + PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs >= 0.4) AC_SUBST(PTHREADSTUBS_CFLAGS) AC_SUBST(PTHREADSTUBS_LIBS) fi @@ -942,44 +907,31 @@ llvm_add_target() { # Call this inside ` ` to get the return value. # $1 is the llvm-config command with arguments. strip_unwanted_llvm_flags() { - # Use \> (marks the end of the word) - echo `$1` | sed \ - -e 's/-march=\S*//g' \ - -e 's/-mtune=\S*//g' \ - -e 's/-mcpu=\S*//g' \ - -e 's/-DNDEBUG\>//g' \ - -e 's/-D_GNU_SOURCE\>//g' \ - -e 's/-pedantic\>//g' \ - -e 's/-Wcovered-switch-default\>//g' \ - -e 's/-O.\>//g' \ - -e 's/-g\>//g' \ - -e 's/-Wall\>//g' \ - -e 's/-Wcast-qual\>//g' \ - -e 's/-Woverloaded-virtual\>//g' \ - -e 's/-fcolor-diagnostics\>//g' \ - -e 's/-fdata-sections\>//g' \ - -e 's/-ffunction-sections\>//g' \ - -e 's/-fno-exceptions\>//g' \ - -e 's/-fomit-frame-pointer\>//g' \ - -e 's/-fvisibility-inlines-hidden\>//g' \ - -e 's/-fPIC\>//g' \ - -e 's/-fstack-protector-strong\>//g' + echo " `$1` " | sed -E \ + -e 's/[[[:space:]]]+-m[[^[:space:]]]*//g' \ + -e 's/[[[:space:]]]+-DNDEBUG[[[:space:]]]/ /g' \ + -e 's/[[[:space:]]]+-D_GNU_SOURCE[[[:space:]]]/ /g' \ + -e 's/[[[:space:]]]+-pedantic[[[:space:]]]/ /g' \ + -e 's/[[[:space:]]]+-W[[^[:space:]]]*//g' \ + -e 's/[[[:space:]]]+-O[[^[:space:]]]*//g' \ + -e 's/[[[:space:]]]+-g[[^[:space:]]]*//g' \ + -e 's/-fno-rtti[[[:space:]]]/-Fno-rtti /g' \ + -e 's/[[[:space:]]]+-f[[^[:space:]]]*//g' \ + -e 's/-Fno-rtti[[[:space:]]]/-fno-rtti /g' \ + -e 's/^[[[:space:]]]//' \ + -e 's/[[[:space:]]]$//' } llvm_set_environment_variables() { if test "x$LLVM_CONFIG" != xno; then LLVM_VERSION=`$LLVM_CONFIG --version | egrep -o '^[[0-9.]]+'` - LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags` - LLVM_BINDIR=`$LLVM_CONFIG --bindir` LLVM_CPPFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cppflags"` - LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient - LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"` LLVM_INCLUDEDIR=`$LLVM_CONFIG --includedir` LLVM_LIBDIR=`$LLVM_CONFIG --libdir` - # We need to respect LLVM_CFLAGS when compiling LLVM headers. + # We need to respect LLVM_CPPFLAGS when compiling LLVM headers. save_CFLAGS="$CFLAGS" - CFLAGS="$CFLAGS $LLVM_CFLAGS" + CFLAGS="$CFLAGS $LLVM_CPPFLAGS" AC_COMPUTE_INT([LLVM_VERSION_MAJOR], [LLVM_VERSION_MAJOR], [#include "${LLVM_INCLUDEDIR}/llvm/Config/llvm-config.h"]) @@ -995,25 +947,23 @@ llvm_set_environment_variables() { LLVM_VERSION_PATCH=0 fi - if test "$LLVM_VERSION_MINOR" -lt 10; then - LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}" - else - LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}${LLVM_VERSION_MINOR}" - fi + LLVM_VERSION_INT="${LLVM_VERSION_MAJOR}0${LLVM_VERSION_MINOR}" - DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH" - MESA_LLVM=1 + FOUND_LLVM=yes else - MESA_LLVM=0 + FOUND_LLVM=no LLVM_VERSION_INT=0 fi } -llvm_check_version_for() { - if test "x$MESA_LLVM" = x0; then - AC_MSG_ERROR([LLVM $1 or newer is required for $2]) - return +require_llvm() { + if test "x$enable_llvm" != "xyes"; then + AC_MSG_ERROR([--enable-llvm is required when building $1]) fi +} + +llvm_require_version() { + require_llvm $2 llvm_target_version_major=`echo $1 | cut -d. -f1 | egrep -o '^[[0-9]]+'` llvm_target_version_minor=`echo $1 | cut -d. -f2 | egrep -o '^[[0-9]]+'` @@ -1054,7 +1004,7 @@ radeon_llvm_check() { amdgpu_llvm_target_name='amdgpu' fi - llvm_check_version_for $* + llvm_require_version $* llvm_add_target $amdgpu_llvm_target_name $2 @@ -1062,24 +1012,18 @@ radeon_llvm_check() { llvm_add_component "bitreader" $2 llvm_add_component "ipo" $2 - NEED_RADEON_LLVM=yes if test "x$have_libelf" != xyes; then - AC_MSG_ERROR([$1 requires libelf when using llvm]) + AC_MSG_ERROR([$2 requires libelf when using llvm]) fi } llvm_set_environment_variables -AC_SUBST([MESA_LLVM]) -AC_SUBST([LLVM_BINDIR]) AC_SUBST([LLVM_CFLAGS]) -AC_SUBST([LLVM_CPPFLAGS]) AC_SUBST([LLVM_CXXFLAGS]) -AC_SUBST([LLVM_LIBDIR]) AC_SUBST([LLVM_LIBS]) AC_SUBST([LLVM_LDFLAGS]) AC_SUBST([LLVM_INCLUDEDIR]) -AC_SUBST([LLVM_VERSION]) dnl Options for APIs AC_ARG_ENABLE([opengl], @@ -1238,7 +1182,7 @@ GALLIUM_DRIVERS_DEFAULT="r300,r600,svga,swrast" AC_ARG_WITH([gallium-drivers], [AS_HELP_STRING([--with-gallium-drivers@<:@=DIRS...@:>@], [comma delimited Gallium drivers list, e.g. - "i915,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,vc4,virgl,etnaviv,imx" + "i915,nouveau,r300,r600,radeonsi,freedreno,svga,swrast,swr,vc4,virgl,etnaviv,imx" @<:@default=r300,r600,svga,swrast@:>@])], [with_gallium_drivers="$withval"], [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"]) @@ -1332,6 +1276,8 @@ AM_CONDITIONAL(HAVE_DRI_GLX, test "x$enable_glx" = xdri) AM_CONDITIONAL(HAVE_XLIB_GLX, test "x$enable_glx" = xxlib) AM_CONDITIONAL(HAVE_GALLIUM_XLIB_GLX, test "x$enable_glx" = xgallium-xlib) +DEFAULT_GL_LIB_NAME=GL + dnl dnl Libglvnd configuration dnl @@ -1361,6 +1307,36 @@ if test "x$enable_libglvnd" = xyes ; then DEFAULT_GL_LIB_NAME=GLX_mesa fi +AC_ARG_WITH([gl-lib-name], + [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@], + [specify GL library name @<:@default=GL@:>@])], + [GL_LIB=$withval], + [GL_LIB="$DEFAULT_GL_LIB_NAME"]) +AC_ARG_WITH([osmesa-lib-name], + [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@], + [specify OSMesa library name @<:@default=OSMesa@:>@])], + [OSMESA_LIB=$withval], + [OSMESA_LIB=OSMesa]) +AS_IF([test "x$GL_LIB" = xyes], [GL_LIB="$DEFAULT_GL_LIB_NAME"]) +AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa]) + +dnl +dnl Mangled Mesa support +dnl +AC_ARG_ENABLE([mangling], + [AS_HELP_STRING([--enable-mangling], + [enable mangled symbols and library name @<:@default=disabled@:>@])], + [enable_mangling="${enableval}"], + [enable_mangling=no] +) +if test "x${enable_mangling}" = "xyes" ; then + DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE" + GL_LIB="Mangled${GL_LIB}" + OSMESA_LIB="Mangled${OSMESA_LIB}" +fi +AC_SUBST([GL_LIB]) +AC_SUBST([OSMESA_LIB]) + # Check for libdrm PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED], [have_libdrm=yes], [have_libdrm=no]) @@ -1489,7 +1465,7 @@ xdri) # DRI-based GLX # find the DRI deps for libGL - dri_modules="x11 xext xdamage xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED" + dri_modules="x11 xext xdamage >= $XDAMAGE_REQUIRED xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED" if test x"$driglx_direct" = xyes; then if test x"$dri_platform" = xdrm ; then @@ -1701,17 +1677,17 @@ if test -n "$with_dri_drivers"; then case "x$driver" in xi915) require_libdrm "i915" - HAVE_I915_DRI=yes; + HAVE_I915_DRI=yes PKG_CHECK_MODULES([INTEL], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) ;; xi965) require_libdrm "i965" - HAVE_I965_DRI=yes; + HAVE_I965_DRI=yes PKG_CHECK_MODULES([INTEL], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) ;; xnouveau) require_libdrm "nouveau" - HAVE_NOUVEAU_DRI=yes; + HAVE_NOUVEAU_DRI=yes PKG_CHECK_MODULES([NVVIEUX], [libdrm >= $LIBDRM_NVVIEUX_REQUIRED libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED]) ;; xradeon) @@ -1721,11 +1697,11 @@ if test -n "$with_dri_drivers"; then ;; xr200) require_libdrm "r200" - HAVE_R200_DRI=yes; + HAVE_R200_DRI=yes PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) ;; xswrast) - HAVE_SWRAST_DRI=yes; + HAVE_SWRAST_DRI=yes ;; *) AC_MSG_ERROR([classic DRI driver '$driver' does not exist]) @@ -1736,6 +1712,45 @@ if test -n "$with_dri_drivers"; then fi +dnl +dnl Gallium LLVM +dnl Deprecated: kept for backwards compatibility +dnl +AC_ARG_ENABLE([gallium-llvm], + [AS_HELP_STRING([--enable-gallium-llvm], + [DEPRECATED: use --enable-llvm instead])], + [enable_gallium_llvm="$enableval"], + [enable_gallium_llvm=auto]) + +if test "x$enable_gallium_llvm" != xauto; then + AC_MSG_WARN([The --enable-gallium-llvm option has been deprecated. Use --enable-llvm instead.]) + enable_llvm=$enable_gallium_llvm +fi + +dnl +dnl LLVM +dnl +AC_ARG_ENABLE([llvm], + [AS_HELP_STRING([--enable-llvm], + [build with LLVM support @<:@default=enabled on x86/x86_64@:>@])], + [enable_llvm="$enableval"], + [enable_llvm=auto]) + +if test "x$enable_llvm" = xauto -a "x$FOUND_LLVM" = xyes; then + if test "x$FOUND_LLVM" = xyes; then + case "$host_cpu" in + i*86|x86_64|amd64) enable_llvm=yes;; + *) enable_llvm=no;; + esac + else + enable_llvm=no + fi +fi + +if test "x$enable_llvm" = xyes -a "x$FOUND_LLVM" = xno; then + AC_MSG_ERROR([--enable-llvm selected but llvm-config is not found]) +fi + # # Vulkan driver configuration # @@ -1763,20 +1778,23 @@ AC_ARG_WITH([vulkan-icddir], AC_SUBST([VULKAN_ICD_INSTALL_DIR]) if test -n "$with_vulkan_drivers"; then + if test "x$ac_cv_func_dl_iterate_phdr" = xno; then + AC_MSG_ERROR([Vulkan drivers require the dl_iterate_phdr function]) + fi + VULKAN_DRIVERS=`IFS=', '; echo $with_vulkan_drivers` for driver in $VULKAN_DRIVERS; do case "x$driver" in xintel) - if test "x$HAVE_I965_DRI" != xyes; then - AC_MSG_ERROR([Intel Vulkan driver requires the i965 dri driver]) - fi - HAVE_INTEL_VULKAN=yes; - + require_libdrm "ANV" + PKG_CHECK_MODULES([INTEL], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) + HAVE_INTEL_VULKAN=yes ;; xradeon) + require_libdrm "radv" PKG_CHECK_MODULES([AMDGPU], [libdrm >= $LIBDRM_AMDGPU_REQUIRED libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED]) radeon_llvm_check $LLVM_REQUIRED_RADV "radv" - HAVE_RADEON_VULKAN=yes; + HAVE_RADEON_VULKAN=yes ;; *) AC_MSG_ERROR([Vulkan driver '$driver' does not exist]) @@ -2017,7 +2035,21 @@ if test "x$enable_opencl" = xyes; then AC_MSG_ERROR([Clover requires libelf]) fi - llvm_check_version_for $LLVM_REQUIRED_OPENCL "opencl" + if test "x${ac_cv_cxx_compiler_gnu}" = xyes; then + altivec_enabled=no + AC_COMPILE_IFELSE([AC_LANG_SOURCE([ + #if !defined(__VEC__) || !defined(__ALTIVEC__) + #error "AltiVec not enabled" + #endif + ])], altivec_enabled=yes) + + if test "$altivec_enabled" = yes; then + CLOVER_STD_OVERRIDE="-std=gnu++11" + fi + AC_SUBST([CLOVER_STD_OVERRIDE]) + fi + + llvm_require_version $LLVM_REQUIRED_OPENCL "opencl" llvm_add_default_components "opencl" llvm_add_component "all-targets" "opencl" @@ -2073,7 +2105,7 @@ PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`, WAYLAND_SCANNER='') if test "x$WAYLAND_SCANNER" = x; then - AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner]) + AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:]) fi # Do per-EGL platform setups and checks @@ -2084,7 +2116,7 @@ for plat in $egl_platforms; do PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED]) - if test "x$WAYLAND_SCANNER" = x; then + if test "x$WAYLAND_SCANNER" = "x:"; then AC_MSG_ERROR([wayland-scanner is needed to compile the wayland egl platform]) fi ;; @@ -2142,24 +2174,6 @@ if ! echo "$egl_platforms" | grep -q 'x11'; then GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS" fi -dnl -dnl Gallium LLVM -dnl -AC_ARG_ENABLE([gallium-llvm], - [AS_HELP_STRING([--enable-gallium-llvm], - [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])], - [enable_gallium_llvm="$enableval"], - [enable_gallium_llvm=auto]) - -if test -z "$with_gallium_drivers"; then - enable_gallium_llvm=no -fi -if test "x$enable_gallium_llvm" = xauto; then - case "$host_cpu" in - i*86|x86_64|amd64) enable_gallium_llvm=yes;; - esac -fi - dnl Directory for XVMC libs AC_ARG_WITH([xvmc-libdir], [AS_HELP_STRING([--with-xvmc-libdir=DIR], @@ -2187,7 +2201,8 @@ AC_ARG_WITH([omx-libdir], [AS_HELP_STRING([--with-omx-libdir=DIR], [directory for the OMX libraries])], [OMX_LIB_INSTALL_DIR="$withval"], - [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`]) + [OMX_LIB_INSTALL_DIR=`$PKG_CONFIG --exists libomxil-bellagio && \ + $PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`]) AC_SUBST([OMX_LIB_INSTALL_DIR]) dnl Directory for VA libs @@ -2206,17 +2221,6 @@ AC_ARG_WITH([d3d-libdir], [D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"]) AC_SUBST([D3D_DRIVER_INSTALL_DIR]) -dnl -dnl Gallium helper functions -dnl -gallium_require_llvm() { - if test "x$enable_gallium_llvm" = "xyes"; then - llvm_check_version_for $LLVM_REQUIRED_GALLIUM "gallium" - else - AC_MSG_ERROR([--enable-gallium-llvm is required when building $1]) - fi -} - dnl dnl r300 doesn't strictly require LLVM, but for performance reasons we dnl highly recommend LLVM usage. So require it at least on x86 and x86_64 @@ -2225,7 +2229,7 @@ dnl r300_require_llvm() { case "$host" in *gnux32) return;; esac case "$host_cpu" in - i*86|x86_64|amd64) gallium_require_llvm $1 + i*86|x86_64|amd64) require_llvm $1 ;; esac } @@ -2247,13 +2251,6 @@ require_basic_egl() { esac } -radeon_gallium_llvm_check() { - if test "x$enable_gallium_llvm" != "xyes"; then - AC_MSG_ERROR([--enable-gallium-llvm is required when building $2]) - fi - radeon_llvm_check $* -} - swr_require_cxx_feature_flags() { feature_name="$1" preprocessor_test="$2" @@ -2317,8 +2314,8 @@ if test -n "$with_gallium_drivers"; then HAVE_GALLIUM_R600=yes PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) require_libdrm "r600" - if test "x$enable_opencl" = xyes; then - radeon_gallium_llvm_check $LLVM_REQUIRED_R600 "r600" + if test "x$enable_llvm" = xyes; then + radeon_llvm_check $LLVM_REQUIRED_R600 "r600" llvm_add_component "asmparser" "r600" llvm_add_component "bitreader" "r600" @@ -2329,8 +2326,10 @@ if test -n "$with_gallium_drivers"; then PKG_CHECK_MODULES([RADEON], [libdrm >= $LIBDRM_RADEON_REQUIRED libdrm_radeon >= $LIBDRM_RADEON_REQUIRED]) PKG_CHECK_MODULES([AMDGPU], [libdrm >= $LIBDRM_AMDGPU_REQUIRED libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED]) require_libdrm "radeonsi" - radeon_gallium_llvm_check $LLVM_REQUIRED_RADEONSI "radeonsi" - require_basic_egl "radeonsi" + radeon_llvm_check $LLVM_REQUIRED_RADEONSI "radeonsi" + if test "x$enable_egl" = xyes; then + require_basic_egl "radeonsi" + fi ;; xnouveau) HAVE_GALLIUM_NOUVEAU=yes @@ -2352,13 +2351,12 @@ if test -n "$with_gallium_drivers"; then ;; xswrast) HAVE_GALLIUM_SOFTPIPE=yes - if test "x$MESA_LLVM" = x1 && test "x$enable_gallium_llvm" == "xyes"; then + if test "x$enable_llvm" = xyes; then HAVE_GALLIUM_LLVMPIPE=yes fi ;; xswr) - llvm_check_version_for $LLVM_REQUIRED_SWR "swr" - gallium_require_llvm "swr" + llvm_require_version $LLVM_REQUIRED_SWR "swr" swr_require_cxx_feature_flags "C++11" "__cplusplus >= 201103L" \ ",-std=c++11" \ @@ -2399,25 +2397,33 @@ if test -n "$with_gallium_drivers"; then done fi -if test "x$enable_gallium_llvm" == "xyes"; then - llvm_check_version_for $LLVM_REQUIRED_GALLIUM "gallium" +if test "x$enable_llvm" = "xyes" -a "$with_gallium_drivers"; then + llvm_require_version $LLVM_REQUIRED_GALLIUM "gallium" llvm_add_default_components "gallium" fi dnl We need to validate some needed dependencies for renderonly drivers. -if test "x$HAVE_GALLIUM_ETNAVIV" != xyes -a "x$HAVE_GALLIUM_IMX" == xyes ; then - AC_ERROR([Building with imx requires etnaviv]) +if test "x$HAVE_GALLIUM_ETNAVIV" != xyes -a "x$HAVE_GALLIUM_IMX" = xyes ; then + AC_MSG_ERROR([Building with imx requires etnaviv]) fi -dnl Set LLVM_LIBS - This is done after the driver configuration so -dnl that drivers can add additional components to LLVM_COMPONENTS. -dnl Previously, gallium drivers were updating LLVM_LIBS directly -dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but -dnl this was causing the same libraries to be appear multiple times -dnl in LLVM_LIBS. +dnl +dnl Set defines and buildtime variables only when using LLVM. +dnl +if test "x$enable_llvm" = xyes; then + DEFINES="${DEFINES} -DHAVE_LLVM=0x0$LLVM_VERSION_INT -DMESA_LLVM_VERSION_PATCH=$LLVM_VERSION_PATCH" + + LLVM_LDFLAGS=`$LLVM_CONFIG --ldflags` + LLVM_CFLAGS=$LLVM_CPPFLAGS # CPPFLAGS seem to be sufficient + LLVM_CXXFLAGS=`strip_unwanted_llvm_flags "$LLVM_CONFIG --cxxflags"` -if test "x$MESA_LLVM" != x0; then + dnl Set LLVM_LIBS - This is done after the driver configuration so + dnl that drivers can add additional components to LLVM_COMPONENTS. + dnl Previously, gallium drivers were updating LLVM_LIBS directly + dnl by calling llvm-config --libs ${DRIVER_LLVM_COMPONENTS}, but + dnl this was causing the same libraries to be appear multiple times + dnl in LLVM_LIBS. if ! $LLVM_CONFIG --libs ${LLVM_COMPONENTS} >/dev/null; then AC_MSG_ERROR([Calling ${LLVM_CONFIG} failed]) @@ -2516,10 +2522,8 @@ AM_CONDITIONAL(NEED_RADEON_DRM_WINSYS, test "x$HAVE_GALLIUM_R300" = xyes -o \ "x$HAVE_GALLIUM_R600" = xyes -o \ "x$HAVE_GALLIUM_RADEONSI" = xyes) AM_CONDITIONAL(NEED_WINSYS_XLIB, test "x$enable_glx" = xgallium-xlib) -AM_CONDITIONAL(NEED_RADEON_LLVM, test x$NEED_RADEON_LLVM = xyes) AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes) -AM_CONDITIONAL(HAVE_GALLIUM_LLVM, test "x$MESA_LLVM" = x1 -a \ - "x$enable_gallium_llvm" = xyes) +AM_CONDITIONAL(HAVE_GALLIUM_LLVM, test "x$enable_llvm" = xyes) AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes) AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes) @@ -2540,8 +2544,10 @@ AC_SUBST([NINE_VERSION], "$NINE_MAJOR.$NINE_MINOR.$NINE_TINY") AC_SUBST([VDPAU_MAJOR], 1) AC_SUBST([VDPAU_MINOR], 0) -VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'` -VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'` +if test "x$enable_va" = xyes; then + VA_MAJOR=`$PKG_CONFIG --modversion libva | $SED -n 's/\([[^\.]]*\)\..*$/\1/p'` + VA_MINOR=`$PKG_CONFIG --modversion libva | $SED -n 's/.*\.\(.*\)\..*$/\1/p'` +fi AC_SUBST([VA_MAJOR], $VA_MAJOR) AC_SUBST([VA_MINOR], $VA_MINOR) @@ -2659,7 +2665,6 @@ AC_CONFIG_FILES([Makefile src/gallium/winsys/imx/drm/Makefile src/gallium/winsys/freedreno/drm/Makefile src/gallium/winsys/i915/drm/Makefile - src/gallium/winsys/intel/drm/Makefile src/gallium/winsys/nouveau/drm/Makefile src/gallium/winsys/radeon/drm/Makefile src/gallium/winsys/amdgpu/drm/Makefile @@ -2681,8 +2686,6 @@ AC_CONFIG_FILES([Makefile src/glx/windows/windowsdriproto.pc src/gtest/Makefile src/intel/Makefile - src/intel/tools/Makefile - src/intel/vulkan/Makefile src/loader/Makefile src/mapi/Makefile src/mapi/es1api/glesv1_cm.pc @@ -2706,7 +2709,7 @@ AC_CONFIG_FILES([Makefile src/mesa/main/tests/Makefile src/util/Makefile src/util/tests/hash_table/Makefile - src/vulkan/wsi/Makefile]) + src/vulkan/Makefile]) AC_OUTPUT @@ -2800,7 +2803,7 @@ else fi echo "" -if test "x$MESA_LLVM" = x1; then +if test "x$enable_llvm" = xyes; then echo " llvm: yes" echo " llvm-config: $LLVM_CONFIG" echo " llvm-version: $LLVM_VERSION" @@ -2847,7 +2850,7 @@ echo " CFLAGS: $cflags" echo " CXXFLAGS: $cxxflags" echo " Macros: $defines" echo "" -if test "x$MESA_LLVM" = x1; then +if test "x$enable_llvm" = xyes; then echo " LLVM_CFLAGS: $LLVM_CFLAGS" echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS" echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"