X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=configure.ac;h=7fade23b6af697f6b1eb9bcdb1147c7b2e3ca60f;hb=b2a87ce34f081671c7e4969874de91ac6953d062;hp=78b9b0316f0446ed76da96636e2d6627f1dc3158;hpb=a66ffcd736459753a2c3ab73b6c47c66f621fd79;p=mesa.git diff --git a/configure.ac b/configure.ac index 78b9b0316f0..7fade23b6af 100644 --- a/configure.ac +++ b/configure.ac @@ -72,20 +72,18 @@ AC_SUBST([OPENCL_VERSION]) # 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.66 -LIBDRM_RADEON_REQUIRED=2.4.56 -LIBDRM_AMDGPU_REQUIRED=2.4.63 +LIBDRM_REQUIRED=2.4.75 +LIBDRM_RADEON_REQUIRED=2.4.71 +LIBDRM_AMDGPU_REQUIRED=2.4.81 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_VC4_REQUIRED=2.4.69 -LIBDRM_ETNAVIV_REQUIRED=2.4.74 +LIBDRM_ETNAVIV_REQUIRED=2.4.80 dnl Versions for external dependencies -DRI2PROTO_REQUIRED=2.6 -DRI3PROTO_REQUIRED=1.0 -PRESENTPROTO_REQUIRED=1.0 +DRI2PROTO_REQUIRED=2.8 GLPROTO_REQUIRED=1.4.14 LIBOMXIL_BELLAGIO_REQUIRED=0.0 LIBVA_REQUIRED=0.38.0 @@ -94,18 +92,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.3 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.9.0 +LLVM_REQUIRED_RADEONSI=3.9.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 @@ -124,7 +124,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"], @@ -270,7 +269,7 @@ DEFINES="-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS" AC_SUBST([DEFINES]) android=no case "$host_os" in -*-android) +*-android*) android=yes ;; linux*|*-gnu*|gnu*|cygwin*) @@ -304,7 +303,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" @@ -312,7 +311,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 @@ -337,7 +336,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 @@ -350,7 +349,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. @@ -414,6 +413,20 @@ if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then fi AM_CONDITIONAL([GCC_ATOMIC_BUILTINS_SUPPORTED], [test x$GCC_ATOMIC_BUILTINS_SUPPORTED = x1]) +dnl Check if host supports 64-bit atomics +dnl note that lack of support usually results in link (not compile) error +AC_MSG_CHECKING(whether __sync_add_and_fetch_8 is supported) +AC_LINK_IFELSE([AC_LANG_SOURCE([[ +#include +uint64_t v; +int main() { + return __sync_add_and_fetch(&v, (uint64_t)1); +}]])], GCC_64BIT_ATOMICS_SUPPORTED=yes, GCC_64BIT_ATOMICS_SUPPORTED=no) +if test "x$GCC_64BIT_ATOMICS_SUPPORTED" != xyes; then + DEFINES="$DEFINES -DMISSING_64BIT_ATOMICS" +fi +AC_MSG_RESULT($GCC_64BIT_ATOMICS_SUPPORTED) + dnl Check for Endianness AC_C_BIGENDIAN( little_endian=no, @@ -442,7 +455,7 @@ int main () { CFLAGS=$save_CFLAGS AC_ARG_ENABLE(pwr8, - [AC_HELP_STRING([--disable-pwr8-inst], + [AS_HELP_STRING([--disable-pwr8], [disable POWER8-specific instructions])], [enable_pwr8=$enableval], [enable_pwr8=auto]) @@ -500,6 +513,12 @@ AC_ARG_ENABLE([profile], [enable_profile=no] ) +AC_ARG_ENABLE([sanitize], + [AS_HELP_STRING([--enable-sanitize@<:@=address|undefined@:>@], + [enable code sanitizer @<:@default=disabled@:>@])], + [enable_sanitize="$enableval"], + [enable_sanitize=no]) + if test "x$enable_profile" = xyes; then DEFINES="$DEFINES -DPROFILE" if test "x$GCC" = xyes; then @@ -535,6 +554,21 @@ else DEFINES="$DEFINES -DNDEBUG" fi +if test "x$enable_sanitize" != xno; then + if test "x$enable_profile" = xyes; then + AC_MSG_WARN([Sanitize and Profile are enabled at the same time]) + fi + + CFLAGS="$CFLAGS -fsanitize=$enable_sanitize" + CXXFLAGS="$CXXFLAGS -fsanitize=$enable_sanitize" + LDFLAGS="$LDFLAGS -fsanitize=$enable_sanitize" + + AC_LINK_IFELSE( + [AC_LANG_SOURCE([int main(){return 0;}])], + [], + [AC_MSG_FAILURE([sanitize flags '$enable_sanitize' not supported])]) +fi + dnl dnl Check if linker supports -Bsymbolic dnl @@ -575,7 +609,12 @@ case "$host_os" in openbsd* | darwin* ) LD_NO_UNDEFINED="" ;; *) - LD_NO_UNDEFINED="-Wl,--no-undefined" ;; + if test "x$enable_sanitize" = xno; then + LD_NO_UNDEFINED="-Wl,--no-undefined" + else + LD_NO_UNDEFINED="" + fi + ;; esac AC_SUBST([LD_NO_UNDEFINED]) @@ -685,7 +724,7 @@ dnl Arch/platform-specific settings dnl AC_ARG_ENABLE([asm], [AS_HELP_STRING([--disable-asm], - [disable assembly usage @<:@default=enabled on supported plaforms@:>@])], + [disable assembly usage @<:@default=enabled on supported platforms@:>@])], [enable_asm="$enableval"], [enable_asm=yes] ) @@ -727,6 +766,13 @@ if test "x$enable_asm" = xyes; then ;; esac ;; + powerpc64le) + case "$host_os" in + linux*) + asm_arch=ppc64le + ;; + esac + ;; esac case "$asm_arch" in @@ -742,6 +788,10 @@ if test "x$enable_asm" = xyes; then DEFINES="$DEFINES -DUSE_SPARC_ASM" AC_MSG_RESULT([yes, sparc]) ;; + ppc64le) + DEFINES="$DEFINES -DUSE_PPC64LE_ASM" + AC_MSG_RESULT([yes, ppc64le]) + ;; *) AC_MSG_RESULT([no, platform not supported]) ;; @@ -767,6 +817,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*) ;; @@ -781,6 +833,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 @@ -793,10 +848,16 @@ dnl is not valid for that platform. if test "x$android" = xno; then test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread" fi +dnl According to the manual when using pthreads, one should add -pthread to +dnl both compile and link-time arguments. +dnl In practise that should be sufficient for all platforms, since any +dnl platforms build with GCC and Clang support the flag. +PTHREAD_LIBS="$PTHREAD_LIBS -pthread" -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* | gnu*) pthread_stubs_possible="no" ;; * ) @@ -805,9 +866,7 @@ cygwin* ) esac if test "x$pthread_stubs_possible" = xyes; then - PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs) - AC_SUBST(PTHREADSTUBS_CFLAGS) - AC_SUBST(PTHREADSTUBS_LIBS) + PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs >= 0.4) fi dnl SELinux awareness. @@ -900,44 +959,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"]) @@ -953,31 +999,22 @@ 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 } require_llvm() { - if test "x$enable_gallium_llvm" != "xyes"; then - AC_MSG_ERROR([--enable-gallium-llvm is required when building $1]) + if test "x$enable_llvm" != "xyes"; then + AC_MSG_ERROR([--enable-llvm is required when building $1]) fi } llvm_require_version() { - if test "x$MESA_LLVM" = x0; then - AC_MSG_ERROR([LLVM $1 or newer is required for $2]) - return - fi require_llvm $2 llvm_target_version_major=`echo $1 | cut -d. -f1 | egrep -o '^[[0-9]]+'` @@ -1027,23 +1064,34 @@ 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([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 +dnl libunwind +dnl +PKG_CHECK_EXISTS(libunwind, [HAVE_LIBUNWIND=yes], [HAVE_LIBUNWIND=no]) +AC_ARG_ENABLE([libunwind], + [AS_HELP_STRING([--enable-libunwind], + [Use libunwind for backtracing (default: auto)])], + [LIBUNWIND="$enableval"], + [LIBUNWIND="$HAVE_LIBUNWIND"]) + +if test "x$LIBUNWIND" = "xyes"; then + PKG_CHECK_MODULES(LIBUNWIND, libunwind) + AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support]) +fi + dnl Options for APIs AC_ARG_ENABLE([opengl], @@ -1202,7 +1250,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,swr,vc4,virgl,etnaviv,imx" + "i915,nouveau,r300,r600,radeonsi,freedreno,pl111,svga,swrast,swr,vc4,virgl,etnaviv,imx" @<:@default=r300,r600,svga,swrast@:>@])], [with_gallium_drivers="$withval"], [with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"]) @@ -1303,10 +1351,11 @@ dnl Libglvnd configuration dnl AC_ARG_ENABLE([libglvnd], [AS_HELP_STRING([--enable-libglvnd], - [Build for libglvnd @<:@default=disabled@:>@])], + [Build GLX and EGL for libglvnd @<:@default=disabled@:>@])], [enable_libglvnd="$enableval"], [enable_libglvnd=no]) -AM_CONDITIONAL(USE_LIBGLVND_GLX, test "x$enable_libglvnd" = xyes) +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 @@ -1322,8 +1371,11 @@ if test "x$enable_libglvnd" = xyes ; then ;; esac - PKG_CHECK_MODULES([GLVND], libglvnd >= 0.1.0) - DEFINES="${DEFINES} -DUSE_LIBGLVND_GLX=1" + PKG_CHECK_MODULES([GLVND], libglvnd >= 0.2.0) + LIBGLVND_DATADIR=`$PKG_CONFIG --variable=datadir libglvnd` + AC_SUBST([LIBGLVND_DATADIR]) + + DEFINES="${DEFINES} -DUSE_LIBGLVND=1" DEFAULT_GL_LIB_NAME=GLX_mesa fi @@ -1485,7 +1537,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 @@ -1494,20 +1546,10 @@ xdri) PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED]) GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED" - if test x"$enable_dri3" = xyes; then - PKG_CHECK_MODULES([DRI3PROTO], [dri3proto >= $DRI3PROTO_REQUIRED]) - PKG_CHECK_MODULES([PRESENTPROTO], [presentproto >= $PRESENTPROTO_REQUIRED]) - fi if test x"$enable_dri" = xyes; then dri_modules="$dri_modules xcb-dri2 >= $XCBDRI2_REQUIRED" fi - - if test x"$enable_dri3" = xyes; then - PKG_CHECK_EXISTS([xcb >= $XCB_REQUIRED], [], AC_MSG_ERROR([DRI3 requires xcb >= $XCB_REQUIRED])) - dri3_modules="xcb xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED" - PKG_CHECK_MODULES([XCB_DRI3], [$dri3_modules]) - fi fi if test x"$dri_platform" = xapple ; then DEFINES="$DEFINES -DGLX_USE_APPLEGL" @@ -1596,6 +1638,111 @@ if test "x$enable_glx_read_only_text" = xyes; then DEFINES="$DEFINES -DGLX_X86_READONLY_TEXT" fi +dnl +dnl DEPRECATED: EGL Platforms configuration +dnl +AC_ARG_WITH([egl-platforms], + [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@], + [DEPRECATED: use --with-platforms instead@<:@default=auto@:>@])], + [with_egl_platforms="$withval"], + [with_egl_platforms=auto]) + +if test "x$with_egl_platforms" = xauto; then + with_egl_platforms="x11,surfaceless" + if test "x$enable_gbm" = xyes; then + with_egl_platforms="$with_egl_platforms,drm" + fi +else + AC_MSG_WARN([--with-egl-platforms is deprecated. Use --with-platforms instead.]) +fi + +dnl +dnl Platforms configuration +dnl +AC_ARG_WITH([platforms], + [AS_HELP_STRING([--with-platforms@<:@=DIRS...@:>@], + [comma delimited native platforms libEGL/Vulkan/other supports, e.g. + "x11,drm,wayland,surfaceless..." @<:@default=auto@:>@])], + [with_platforms="$withval"], + [with_platforms=auto]) + +# Reuse the autodetection rather than duplicating it. +if test "x$with_platforms" = xauto; then + with_platforms=$with_egl_platforms +fi + +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], [:]) +fi + +# Do per platform setups and checks +platforms=`IFS=', '; echo $with_platforms` +for plat in $platforms; do + case "$plat" in + wayland) + + PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED]) + + if test "x$WAYLAND_SCANNER" = "x:"; then + AC_MSG_ERROR([wayland-scanner is needed to compile the wayland platform]) + fi + DEFINES="$DEFINES -DHAVE_WAYLAND_PLATFORM" + ;; + + x11) + PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes]) + DEFINES="$DEFINES -DHAVE_X11_PLATFORM" + ;; + + drm) + test "x$enable_gbm" = "xno" && + AC_MSG_ERROR([EGL platform drm needs gbm]) + DEFINES="$DEFINES -DHAVE_DRM_PLATFORM" + ;; + + surfaceless) + DEFINES="$DEFINES -DHAVE_SURFACELESS_PLATFORM" + ;; + + android) + PKG_CHECK_MODULES([ANDROID], [cutils hardware sync]) + DEFINES="$DEFINES -DHAVE_ANDROID_PLATFORM" + ;; + + *) + AC_MSG_ERROR([platform '$plat' does not exist]) + ;; + esac + + case "$plat" in + wayland|drm|surfaceless) + require_libdrm "Platform $plat" + ;; + esac +done + +if test "x$enable_glx" != xno; then + if ! echo "$platforms" | grep -q 'x11'; then + AC_MSG_ERROR([Building GLX without the x11 platform is not supported]) + fi +fi + +if test x"$enable_dri3" = xyes; then + DEFINES="$DEFINES -DHAVE_DRI3" + + dri3_modules="x11-xcb xcb >= $XCB_REQUIRED xcb-dri3 xcb-xfixes xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED" + PKG_CHECK_MODULES([XCB_DRI3], [$dri3_modules]) +fi + +AM_CONDITIONAL(HAVE_PLATFORM_X11, echo "$platforms" | grep -q 'x11') +AM_CONDITIONAL(HAVE_PLATFORM_WAYLAND, echo "$platforms" | grep -q 'wayland') +AM_CONDITIONAL(HAVE_PLATFORM_DRM, echo "$platforms" | grep -q 'drm') +AM_CONDITIONAL(HAVE_PLATFORM_SURFACELESS, echo "$platforms" | grep -q 'surfaceless') +AM_CONDITIONAL(HAVE_PLATFORM_ANDROID, echo "$platforms" | grep -q 'android') + dnl dnl More DRI setup dnl @@ -1638,10 +1785,6 @@ if test "x$enable_dri" = xyes; then # Platform specific settings and drivers to build case "$host_os" in linux*) - if test "x$enable_dri3" = xyes; then - DEFINES="$DEFINES -DHAVE_DRI3" - fi - case "$host_cpu" in powerpc* | sparc*) # Build only the drivers for cards that exist on PowerPC/sparc @@ -1697,17 +1840,16 @@ if test -n "$with_dri_drivers"; then case "x$driver" in xi915) require_libdrm "i915" - HAVE_I915_DRI=yes; - PKG_CHECK_MODULES([INTEL], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) + HAVE_I915_DRI=yes + PKG_CHECK_MODULES([I915], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) ;; xi965) require_libdrm "i965" - HAVE_I965_DRI=yes; - PKG_CHECK_MODULES([INTEL], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) + HAVE_I965_DRI=yes ;; 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) @@ -1717,11 +1859,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]) @@ -1734,20 +1876,41 @@ fi dnl dnl Gallium LLVM +dnl Deprecated: kept for backwards compatibility dnl AC_ARG_ENABLE([gallium-llvm], [AS_HELP_STRING([--enable-gallium-llvm], - [build gallium LLVM support @<:@default=enabled on x86/x86_64@:>@])], + [DEPRECATED: use --enable-llvm instead])], [enable_gallium_llvm="$enableval"], [enable_gallium_llvm=auto]) -if test -z "$with_gallium_drivers"; then - enable_gallium_llvm=no +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 -if test "x$enable_gallium_llvm" = xauto; then - case "$host_cpu" in - i*86|x86_64|amd64) enable_gallium_llvm=yes;; - esac + +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 # @@ -1776,21 +1939,33 @@ AC_ARG_WITH([vulkan-icddir], [VULKAN_ICD_INSTALL_DIR='${datarootdir}/vulkan/icd.d']) AC_SUBST([VULKAN_ICD_INSTALL_DIR]) +require_x11_dri3() { + if echo "$platforms" | grep -q 'x11'; then + if test "x$enable_dri3" != xyes; then + AC_MSG_ERROR([$1 Vulkan driver requires DRI3 when built with X11]) + fi + fi +} + 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" + require_x11_dri3 "ANV" + 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; + require_x11_dri3 "radv" + HAVE_RADEON_VULKAN=yes ;; *) AC_MSG_ERROR([Vulkan driver '$driver' does not exist]) @@ -1895,23 +2070,47 @@ if test "x$enable_xa" = xyes; then fi AM_CONDITIONAL(HAVE_ST_XA, test "x$enable_xa" = xyes) +if echo $platforms | grep -q "x11"; then + have_xvmc_platform=yes +else + have_xvmc_platform=no +fi + +if echo $platforms | grep -q "x11"; then + have_vdpau_platform=yes +else + have_vdpau_platform=no +fi + +if echo $platforms | grep -q "x11\|drm"; then + have_omx_platform=yes +else + have_omx_platform=no +fi + +if echo $platforms | grep -q "x11\|drm\|wayland"; then + have_va_platform=yes +else + have_va_platform=no +fi + dnl dnl Gallium G3DVL configuration dnl if test -n "$with_gallium_drivers" -a "x$with_gallium_drivers" != xswrast; then - if test "x$enable_xvmc" = xauto; then - PKG_CHECK_EXISTS([xvmc >= $XVMC_REQUIRED], [enable_xvmc=yes], [enable_xvmc=no]) + if test "x$enable_xvmc" = xauto -a "x$have_xvmc_platform" = xyes; then + PKG_CHECK_EXISTS([xvmc >= $XVMC_REQUIRED], [enable_xvmc=yes], [enable_xvmc=no]) fi - if test "x$enable_vdpau" = xauto; then + if test "x$enable_vdpau" = xauto -a "x$have_vdpau_platform" = xyes; then PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no]) fi - if test "x$enable_omx" = xauto; then - PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx=yes], [enable_omx=no]) + if test "x$enable_omx" = xauto -a "x$have_omx_platform" = xyes; then + PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx=yes], [enable_omx=no]) fi - if test "x$enable_va" = xauto; then + if test "x$enable_va" = xauto -a "x$have_va_platform" = xyes; then PKG_CHECK_EXISTS([libva >= $LIBVA_REQUIRED], [enable_va=yes], [enable_va=no]) fi fi @@ -1929,23 +2128,24 @@ if test "x$enable_xvmc" = xyes -o \ "x$enable_vdpau" = xyes -o \ "x$enable_omx" = xyes -o \ "x$enable_va" = xyes; then - if test x"$enable_dri3" = xyes; then - PKG_CHECK_MODULES([VL], [xcb-dri3 xcb-present xcb-sync xshmfence >= $XSHMFENCE_REQUIRED - xcb-xfixes x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED]) - else - PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED]) - fi + PKG_CHECK_MODULES([VL], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED]) need_gallium_vl_winsys=yes fi AM_CONDITIONAL(NEED_GALLIUM_VL_WINSYS, test "x$need_gallium_vl_winsys" = xyes) if test "x$enable_xvmc" = xyes; then + if test "x$have_xvmc_platform" != xyes; then + AC_MSG_ERROR([XVMC requires the x11 platforms]) + fi PKG_CHECK_MODULES([XVMC], [xvmc >= $XVMC_REQUIRED]) gallium_st="$gallium_st xvmc" fi AM_CONDITIONAL(HAVE_ST_XVMC, test "x$enable_xvmc" = xyes) if test "x$enable_vdpau" = xyes; then + if test "x$have_vdpau_platform" != xyes; then + AC_MSG_ERROR([VDPAU requires the x11 platforms]) + fi PKG_CHECK_MODULES([VDPAU], [vdpau >= $VDPAU_REQUIRED]) gallium_st="$gallium_st vdpau" DEFINES="$DEFINES -DHAVE_ST_VDPAU" @@ -1953,12 +2153,18 @@ fi AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes) if test "x$enable_omx" = xyes; then + if test "x$have_omx_platform" != xyes; then + AC_MSG_ERROR([OMX requires at least one of the x11 or drm platforms]) + fi PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED]) gallium_st="$gallium_st omx" fi AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes) if test "x$enable_va" = xyes; then + if test "x$have_va_platform" != xyes; then + AC_MSG_ERROR([VA requires at least one of the x11 drm or wayland platforms]) + fi PKG_CHECK_MODULES([VA], [libva >= $LIBVA_REQUIRED]) gallium_st="$gallium_st va" fi @@ -2031,6 +2237,20 @@ if test "x$enable_opencl" = xyes; then AC_MSG_ERROR([Clover requires libelf]) fi + 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" @@ -2061,97 +2281,21 @@ dnl Gallium configuration dnl AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers") -dnl -dnl EGL Platforms configuration -dnl -AC_ARG_WITH([egl-platforms], - [AS_HELP_STRING([--with-egl-platforms@<:@=DIRS...@:>@], - [comma delimited native platforms libEGL supports, e.g. - "x11,drm" @<:@default=auto@:>@])], - [with_egl_platforms="$withval"], - [if test "x$enable_egl" = xyes; then - if test "x$enable_gbm" = xyes; then - with_egl_platforms="x11,drm" - else - with_egl_platforms="x11" - fi - else - with_egl_platforms="" - fi]) - -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 - -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]) -fi - -# Do per-EGL platform setups and checks -egl_platforms=`IFS=', '; echo $with_egl_platforms` -for plat in $egl_platforms; do - case "$plat" in - wayland) - - PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED]) - - if test "x$WAYLAND_SCANNER" = x; then - AC_MSG_ERROR([wayland-scanner is needed to compile the wayland egl platform]) - fi - ;; - - x11) - PKG_CHECK_MODULES([XCB_DRI2], [x11-xcb xcb xcb-dri2 >= $XCBDRI2_REQUIRED xcb-xfixes]) - ;; - - drm) - test "x$enable_gbm" = "xno" && - AC_MSG_ERROR([EGL platform drm needs gbm]) - ;; - - surfaceless) - ;; - - android) - PKG_CHECK_MODULES([ANDROID], [cutils hardware sync]) - ;; - - *) - AC_MSG_ERROR([EGL platform '$plat' does not exist]) - ;; - esac - - case "$plat" in - wayland|drm|surfaceless) - require_libdrm "Platform $plat" - ;; - 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]]'` +if test "x$platforms" != "x"; then + FIRST_PLATFORM_CAPS=`echo $platforms | sed 's| .*||' | tr '[[a-z]]' '[[A-Z]]'` EGL_NATIVE_PLATFORM="_EGL_PLATFORM_$FIRST_PLATFORM_CAPS" else EGL_NATIVE_PLATFORM="_EGL_INVALID_PLATFORM" fi -AM_CONDITIONAL(HAVE_PLATFORM_X11, echo "$egl_platforms" | grep -q 'x11') -AM_CONDITIONAL(HAVE_PLATFORM_WAYLAND, echo "$egl_platforms" | grep -q 'wayland') -AM_CONDITIONAL(HAVE_EGL_PLATFORM_DRM, echo "$egl_platforms" | grep -q 'drm') -AM_CONDITIONAL(HAVE_EGL_PLATFORM_SURFACELESS, echo "$egl_platforms" | grep -q 'surfaceless') -AM_CONDITIONAL(HAVE_EGL_PLATFORM_ANDROID, echo "$egl_platforms" | grep -q 'android') - AC_SUBST([EGL_NATIVE_PLATFORM]) AC_SUBST([EGL_CFLAGS]) # If we don't have the X11 platform, set this define so we don't try to include # the X11 headers. -if ! echo "$egl_platforms" | grep -q 'x11'; then +if ! echo "$platforms" | grep -q 'x11'; then DEFINES="$DEFINES -DMESA_EGL_NO_X11_HEADERS" GL_PC_CFLAGS="$GL_PC_CFLAGS -DMESA_EGL_NO_X11_HEADERS" fi @@ -2183,7 +2327,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 @@ -2220,25 +2365,18 @@ dnl DRM is needed by X, Wayland, and offscreen rendering. dnl Surfaceless is an alternative for the last one. dnl require_basic_egl() { - case "$with_egl_platforms" in + case "$with_platforms" in *drm*|*surfaceless*) ;; *) AC_MSG_ERROR([$1 requires one of these: - 1) --with-egl-platforms=drm (X, Wayland, offscreen rendering based on DRM) - 2) --with-egl-platforms=surfaceless (offscreen only) + 1) --with-platforms=drm (X, Wayland, offscreen rendering based on DRM) + 2) --with-platforms=surfaceless (offscreen only) Recommended options: drm,x11]) ;; 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" @@ -2289,7 +2427,7 @@ if test -n "$with_gallium_drivers"; then ;; xi915) HAVE_GALLIUM_I915=yes - PKG_CHECK_MODULES([INTEL], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) + PKG_CHECK_MODULES([I915], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED]) require_libdrm "Gallium i915" ;; xr300) @@ -2302,8 +2440,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" @@ -2314,8 +2452,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 @@ -2337,7 +2477,7 @@ 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 ;; @@ -2371,10 +2511,15 @@ if test -n "$with_gallium_drivers"; then DEFINES="$DEFINES -DUSE_VC4_SIMULATOR"], [USE_VC4_SIMULATOR=no]) ;; + xpl111) + HAVE_GALLIUM_PL111=yes + ;; xvirgl) HAVE_GALLIUM_VIRGL=yes require_libdrm "virgl" - require_basic_egl "virgl" + if test "x$enable_egl" = xyes; then + require_basic_egl "virgl" + fi ;; *) AC_MSG_ERROR([Unknown Gallium driver: $driver]) @@ -2383,25 +2528,41 @@ if test -n "$with_gallium_drivers"; then done fi -if test "x$enable_gallium_llvm" == "xyes"; then +# XXX: Keep in sync with LLVM_REQUIRED_SWR +AM_CONDITIONAL(SWR_INVALID_LLVM_VERSION, test "x$LLVM_VERSION" != x3.9.0 -a \ + "x$LLVM_VERSION" != x3.9.1) + +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. +if test "x$HAVE_GALLIUM_VC4" != xyes -a "x$HAVE_GALLIUM_PL111" = xyes ; then + AC_MSG_ERROR([Building with pl111 requires vc4]) +fi -if test "x$MESA_LLVM" != x0; then +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"` + + 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]) @@ -2450,6 +2611,7 @@ fi AM_CONDITIONAL(HAVE_GALLIUM_SVGA, test "x$HAVE_GALLIUM_SVGA" = xyes) AM_CONDITIONAL(HAVE_GALLIUM_I915, test "x$HAVE_GALLIUM_I915" = xyes) +AM_CONDITIONAL(HAVE_GALLIUM_PL111, test "x$HAVE_GALLIUM_PL111" = xyes) AM_CONDITIONAL(HAVE_GALLIUM_R300, test "x$HAVE_GALLIUM_R300" = xyes) AM_CONDITIONAL(HAVE_GALLIUM_R600, test "x$HAVE_GALLIUM_R600" = xyes) AM_CONDITIONAL(HAVE_GALLIUM_RADEONSI, test "x$HAVE_GALLIUM_RADEONSI" = xyes) @@ -2489,8 +2651,7 @@ AM_CONDITIONAL(HAVE_SWRAST_DRI, test x$HAVE_SWRAST_DRI = xyes) AM_CONDITIONAL(HAVE_RADEON_VULKAN, test "x$HAVE_RADEON_VULKAN" = xyes) AM_CONDITIONAL(HAVE_INTEL_VULKAN, test "x$HAVE_INTEL_VULKAN" = xyes) -AM_CONDITIONAL(HAVE_AMD_DRIVERS, test "x$HAVE_GALLIUM_R600" = xyes -o \ - "x$HAVE_GALLIUM_RADEONSI" = xyes -o \ +AM_CONDITIONAL(HAVE_AMD_DRIVERS, test "x$HAVE_GALLIUM_RADEONSI" = xyes -o \ "x$HAVE_RADEON_VULKAN" = xyes) AM_CONDITIONAL(HAVE_INTEL_DRIVERS, test "x$HAVE_INTEL_VULKAN" = xyes -o \ @@ -2500,10 +2661,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) @@ -2515,6 +2674,7 @@ AM_CONDITIONAL(HAVE_COMMON_OSMESA, test "x$enable_osmesa" = xyes -o \ AM_CONDITIONAL(HAVE_X86_ASM, test "x$asm_arch" = xx86 -o "x$asm_arch" = xx86_64) AM_CONDITIONAL(HAVE_X86_64_ASM, test "x$asm_arch" = xx86_64) AM_CONDITIONAL(HAVE_SPARC_ASM, test "x$asm_arch" = xsparc) +AM_CONDITIONAL(HAVE_PPC64LE_ASM, test "x$asm_arch" = xppc64le) AC_SUBST([NINE_MAJOR], 1) AC_SUBST([NINE_MINOR], 0) @@ -2524,8 +2684,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) @@ -2599,6 +2761,7 @@ AC_CONFIG_FILES([Makefile src/gallium/drivers/llvmpipe/Makefile src/gallium/drivers/noop/Makefile src/gallium/drivers/nouveau/Makefile + src/gallium/drivers/pl111/Makefile src/gallium/drivers/r300/Makefile src/gallium/drivers/r600/Makefile src/gallium/drivers/radeon/Makefile @@ -2644,6 +2807,7 @@ AC_CONFIG_FILES([Makefile src/gallium/winsys/freedreno/drm/Makefile src/gallium/winsys/i915/drm/Makefile src/gallium/winsys/nouveau/drm/Makefile + src/gallium/winsys/pl111/drm/Makefile src/gallium/winsys/radeon/drm/Makefile src/gallium/winsys/amdgpu/drm/Makefile src/gallium/winsys/svga/drm/Makefile @@ -2664,8 +2828,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 @@ -2689,7 +2851,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 @@ -2755,7 +2917,6 @@ dnl EGL echo "" echo " EGL: $enable_egl" if test "$enable_egl" = yes; then - echo " EGL platforms: $egl_platforms" egl_drivers="" if test "x$enable_dri" != "xno"; then @@ -2773,6 +2934,8 @@ else echo " GBM: no" fi + echo " EGL/Vulkan/VL platforms: $platforms" + # Vulkan echo "" if test "x$VULKAN_DRIVERS" != x; then @@ -2783,7 +2946,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" @@ -2819,18 +2982,20 @@ echo " Static libs: $enable_static" echo " Shared-glapi: $enable_shared_glapi" dnl Compiler options -# cleanup the CFLAGS/CXXFLAGS/DEFINES vars +# cleanup the CFLAGS/CXXFLAGS/LDFLAGS/DEFINES vars cflags=`echo $CFLAGS | \ $SED 's/^ *//;s/ */ /;s/ *$//'` cxxflags=`echo $CXXFLAGS | \ $SED 's/^ *//;s/ */ /;s/ *$//'` +ldflags=`echo $LDFLAGS | $SED 's/^ *//;s/ */ /;s/ *$//'` defines=`echo $DEFINES | $SED 's/^ *//;s/ */ /;s/ *$//'` echo "" echo " CFLAGS: $cflags" echo " CXXFLAGS: $cxxflags" +echo " LDFLAGS: $ldflags" 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"