# in the first entry.
LIBDRM_REQUIRED=2.4.75
LIBDRM_RADEON_REQUIRED=2.4.71
-LIBDRM_AMDGPU_REQUIRED=2.4.81
+LIBDRM_AMDGPU_REQUIRED=2.4.90
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.80
+LIBDRM_FREEDRENO_REQUIRED=2.4.89
+LIBDRM_ETNAVIV_REQUIRED=2.4.82
dnl Versions for external dependencies
DRI2PROTO_REQUIRED=2.8
LIBVA_REQUIRED=0.38.0
VDPAU_REQUIRED=1.1
WAYLAND_REQUIRED=1.11
+WAYLAND_PROTOCOLS_REQUIRED=1.8
XCB_REQUIRED=1.9.3
XCBDRI2_REQUIRED=1.8
XCBGLX_REQUIRED=1.8.1
dnl LLVM versions
LLVM_REQUIRED_GALLIUM=3.3.0
-LLVM_REQUIRED_OPENCL=3.6.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_SWR=3.9.0
+LLVM_REQUIRED_RADEONSI=4.0.0
+LLVM_REQUIRED_RADV=4.0.0
+LLVM_REQUIRED_SWR=4.0.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
+AC_PROG_NM
AM_PROG_AS
AX_CHECK_GNU_MAKE
AC_CHECK_PROGS([PYTHON2], [python2.7 python2 python])
AC_SYS_LARGEFILE
+
LT_PREREQ([2.2])
LT_INIT([disable-static])
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)
AM_CONDITIONAL(HAVE_ANDROID, test "x$android" = xyes)
-dnl Add flags for gcc and g++
-if test "x$GCC" = xyes; then
- CFLAGS="$CFLAGS -Wall"
+dnl
+dnl Check compiler flags
+dnl
+AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS="$CFLAGS -Wall"])
+AX_CHECK_COMPILE_FLAG([-Werror=implicit-function-declaration], [CFLAGS="$CFLAGS -Werror=implicit-function-declaration"])
+AX_CHECK_COMPILE_FLAG([-Werror=missing-prototypes], [CFLAGS="$CFLAGS -Werror=missing-prototypes"])
+AX_CHECK_COMPILE_FLAG([-Wmissing-prototypes], [CFLAGS="$CFLAGS -Wmissing-prototypes"])
+AX_CHECK_COMPILE_FLAG([-fno-math-errno], [CFLAGS="$CFLAGS -fno-math-errno"])
+AX_CHECK_COMPILE_FLAG([-fno-trapping-math], [CFLAGS="$CFLAGS -fno-trapping-math"])
+AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [VISIBILITY_CFLAGS="-fvisibility=hidden"])
+dnl
+dnl Check C++ compiler flags
+dnl
+AC_LANG_PUSH([C++])
+AX_CHECK_COMPILE_FLAG([-Wall], [CXXFLAGS="$CXXFLAGS -Wall"])
+AX_CHECK_COMPILE_FLAG([-fno-math-errno], [CXXFLAGS="$CXXFLAGS -fno-math-errno"])
+AX_CHECK_COMPILE_FLAG([-fno-trapping-math], [CXXFLAGS="$CXXFLAGS -fno-trapping-math"])
+AX_CHECK_COMPILE_FLAG([-fvisibility=hidden], [VISIBILITY_CXXFLAGS="-fvisibility=hidden"])
+AC_LANG_POP([C++])
+
+# Flags to help ensure that certain portions of the code -- and only those
+# portions -- can be built with MSVC:
+# - src/util, src/gallium/auxiliary, rc/gallium/drivers/llvmpipe, and
+# - 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="$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="$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])
+AC_SUBST([MSVC2013_COMPAT_CXXFLAGS])
+
+if test "x$GCC" = xyes; then
if test "x$USE_GNU99" = xyes; then
- CFLAGS="$CFLAGS -std=gnu99"
+ CFLAGS="$CFLAGS -std=gnu99"
else
- CFLAGS="$CFLAGS -std=c99"
- fi
-
- # 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"
- AC_MSG_CHECKING([whether $CC supports -fvisibility=hidden])
- VISIBILITY_CFLAGS="-fvisibility=hidden"
- CFLAGS="$CFLAGS $VISIBILITY_CFLAGS"
- AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
- [VISIBILITY_CFLAGS=""; AC_MSG_RESULT([no])])
-
- # Restore CFLAGS; VISIBILITY_CFLAGS are added to it where needed.
- CFLAGS=$save_CFLAGS
-
- # We don't want floating-point math functions to set errno or trap
- CFLAGS="$CFLAGS -fno-math-errno -fno-trapping-math"
-
- # Flags to help ensure that certain portions of the code -- and only those
- # portions -- can be built with MSVC:
- # - src/util, src/gallium/auxiliary, rc/gallium/drivers/llvmpipe, and
- # - non-Linux/Posix OpenGL portions needs to build on MSVC 2013 (which
- # supports most of C99)
- # - the rest has no compiler compiler restrictions
- MSVC2013_COMPAT_CFLAGS="-Werror=pointer-arith"
- MSVC2013_COMPAT_CXXFLAGS="-Werror=pointer-arith"
-
- # Enable -Werror=vla if compiler supports it
- save_CFLAGS="$CFLAGS"
- AC_MSG_CHECKING([whether $CC supports -Werror=vla])
- CFLAGS="$CFLAGS -Werror=vla"
- AC_LINK_IFELSE([AC_LANG_PROGRAM()],
- [MSVC2013_COMPAT_CFLAGS="$MSVC2013_COMPAT_CFLAGS -Werror=vla";
- MSVC2013_COMPAT_CXXFLAGS="$MSVC2013_COMPAT_CXXFLAGS -Werror=vla";
- AC_MSG_RESULT([yes])],
- AC_MSG_RESULT([no]))
- CFLAGS="$save_CFLAGS"
-fi
-if test "x$GXX" = xyes; then
- CXXFLAGS="$CXXFLAGS -Wall"
-
- # Enable -fvisibility=hidden if using a gcc that supports it
- save_CXXFLAGS="$CXXFLAGS"
- AC_MSG_CHECKING([whether $CXX supports -fvisibility=hidden])
- VISIBILITY_CXXFLAGS="-fvisibility=hidden"
- CXXFLAGS="$CXXFLAGS $VISIBILITY_CXXFLAGS"
- AC_LANG_PUSH([C++])
- AC_LINK_IFELSE([AC_LANG_PROGRAM()], AC_MSG_RESULT([yes]),
- [VISIBILITY_CXXFLAGS="" ; AC_MSG_RESULT([no])])
- AC_LANG_POP([C++])
+ CFLAGS="$CFLAGS -std=c99"
+ fi
+fi
- # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
- CXXFLAGS=$save_CXXFLAGS
+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 <tuple>
+ ])
+ ], [
+ AC_MSG_RESULT(yes)
+ cxx11_support=yes
+ ], AC_MSG_RESULT(no))
+ eval "$output_support=\$cxx11_support"
+}
- # We don't want floating-point math functions to set errno or trap
- CXXFLAGS="$CXXFLAGS -fno-math-errno -fno-trapping-math"
+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
-AC_SUBST([MSVC2013_COMPAT_CFLAGS])
-AC_SUBST([MSVC2013_COMPAT_CXXFLAGS])
+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
AC_SUBST([VISIBILITY_CFLAGS])
AC_SUBST([VISIBILITY_CXXFLAGS])
+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
dnl Optional flags, check for compiler support
dnl
}]])], GCC_ATOMIC_BUILTINS_SUPPORTED=1)
if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then
DEFINES="$DEFINES -DUSE_GCC_ATOMIC_BUILTINS"
+ dnl On some platforms, new-style atomics need a helper library
+ AC_MSG_CHECKING(whether -latomic is needed)
+ AC_LINK_IFELSE([AC_LANG_SOURCE([[
+ #include <stdint.h>
+ uint64_t v;
+ int main() {
+ return (int)__atomic_load_n(&v, __ATOMIC_ACQUIRE);
+ }]])], GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC=no, GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC=yes)
+ AC_MSG_RESULT($GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC)
+ if test "x$GCC_ATOMIC_BUILTINS_NEED_LIBATOMIC" = xyes; then
+ LIBATOMIC_LIBS="-latomic"
+ fi
fi
AM_CONDITIONAL([GCC_ATOMIC_BUILTINS_SUPPORTED], [test x$GCC_ATOMIC_BUILTINS_SUPPORTED = x1])
+AC_SUBST([LIBATOMIC_LIBS])
dnl Check if host supports 64-bit atomics
dnl note that lack of support usually results in link (not compile) error
dnl
AC_MSG_CHECKING([if the linker supports version-scripts])
save_LDFLAGS=$LDFLAGS
-LDFLAGS="$LDFLAGS -Wl,--version-script=conftest.map"
-cat > conftest.map <<EOF
-VERSION_1 {
- global:
- main;
-
- local:
- *;
-};
-EOF
+LDFLAGS="$LDFLAGS -Wl,--version-script=$srcdir/build-support/conftest.map"
AC_LINK_IFELSE(
[AC_LANG_SOURCE([int main() { return 0;}])],
[have_ld_version_script=yes;AC_MSG_RESULT(yes)],
dnl
AC_MSG_CHECKING([if the linker supports --dynamic-list])
save_LDFLAGS=$LDFLAGS
-LDFLAGS="$LDFLAGS -Wl,--dynamic-list=conftest.dyn"
-cat > conftest.dyn <<EOF
-{
- radeon_drm_winsys_create;
-};
-EOF
+LDFLAGS="$LDFLAGS -Wl,--dynamic-list=$srcdir/build-support/conftest.dyn"
AC_LINK_IFELSE(
[AC_LANG_SOURCE([int main() { return 0;}])],
[have_ld_dynamic_list=yes;AC_MSG_RESULT(yes)],
LDFLAGS=$save_LDFLAGS
AM_CONDITIONAL(HAVE_LD_DYNAMIC_LIST, test "$have_ld_dynamic_list" = "yes")
+dnl
+dnl OSX linker does not support build-id
+dnl
+case "$host_os" in
+darwin*)
+ LD_BUILD_ID=""
+ ;;
+*)
+ LD_BUILD_ID="-Wl,--build-id=sha1"
+ ;;
+esac
+AC_SUBST([LD_BUILD_ID])
+
dnl
dnl compatibility symlinks
dnl
;;
esac
;;
+ powerpc64le)
+ case "$host_os" in
+ linux*)
+ asm_arch=ppc64le
+ ;;
+ esac
+ ;;
+ aarch64)
+ case "$host_os" in
+ linux*)
+ asm_arch=aarch64
+ ;;
+ esac
+ ;;
+ arm)
+ case "$host_os" in
+ linux*)
+ asm_arch=arm
+ ;;
+ esac
+ ;;
esac
case "$asm_arch" in
DEFINES="$DEFINES -DUSE_SPARC_ASM"
AC_MSG_RESULT([yes, sparc])
;;
+ ppc64le)
+ DEFINES="$DEFINES -DUSE_PPC64LE_ASM"
+ AC_MSG_RESULT([yes, ppc64le])
+ ;;
+ aarch64)
+ DEFINES="$DEFINES -DUSE_AARCH64_ASM"
+ AC_MSG_RESULT([yes, aarch64])
+ ;;
+ arm)
+ DEFINES="$DEFINES -DUSE_ARM_ASM"
+ AC_MSG_RESULT([yes, arm])
+ ;;
*)
AC_MSG_RESULT([no, platform not supported])
;;
AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"])
AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"])
+AC_CHECK_FUNC([timespec_get], [DEFINES="$DEFINES -DHAVE_TIMESPEC_GET"])
+AC_CHECK_FUNC([memfd_create], [DEFINES="$DEFINES -DHAVE_MEMFD_CREATE"])
+
+AC_MSG_CHECKING([whether strtod has locale support])
+AC_LINK_IFELSE([AC_LANG_SOURCE([[
+ #define _GNU_SOURCE
+ #include <stdlib.h>
+ #include <locale.h>
+ #ifdef HAVE_XLOCALE_H
+ #include <xlocale.h>
+ #endif
+ int main() {
+ locale_t loc = newlocale(LC_CTYPE_MASK, "C", NULL);
+ const char *s = "1.0";
+ char *end;
+ double d = strtod_l(s, end, loc);
+ float f = strtof_l(s, end, loc);
+ freelocale(loc);
+ return 0;
+ }]])],
+ [DEFINES="$DEFINES -DHAVE_STRTOD_L"];
+ AC_MSG_RESULT([yes]),
+ AC_MSG_RESULT([no]))
dnl Check to see if dlopen is in default libraries (like Solaris, which
dnl has it in libc), or if libdl is needed to get it.
-AC_CHECK_FUNC([dlopen], [DEFINES="$DEFINES -DHAVE_DLOPEN"],
+AC_CHECK_FUNC([dlopen], [],
[AC_CHECK_LIB([dl], [dlopen],
- [DEFINES="$DEFINES -DHAVE_DLOPEN"; DLOPEN_LIBS="-ldl"])])
+ [DLOPEN_LIBS="-ldl"])])
AC_SUBST([DLOPEN_LIBS])
dnl Check if that library also has dladdr
dnl Check for zlib
PKG_CHECK_MODULES([ZLIB], [zlib >= $ZLIB_REQUIRED])
+DEFINES="$DEFINES -DHAVE_ZLIB"
dnl Check for pthreads
AX_PTHREAD
dnl platforms build with GCC and Clang support the flag.
PTHREAD_LIBS="$PTHREAD_LIBS -pthread"
-dnl pthread-stubs is mandatory on BSD platforms, due to the nature of the
+dnl pthread-stubs is mandatory on some 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
-linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu*)
+linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu* | openbsd*)
pthread_stubs_possible="no"
;;
* )
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],
fi
}
+llvm_add_optional_component() {
+ new_llvm_component=$1
+ driver_name=$2
+
+ if $LLVM_CONFIG --components | grep -iqw $new_llvm_component ; then
+ LLVM_COMPONENTS="${LLVM_COMPONENTS} ${new_llvm_component}"
+ fi
+}
+
llvm_add_default_components() {
driver_name=$1
llvm_add_component "mcjit" $driver_name
# Optional default components
- if $LLVM_CONFIG --components | grep -iqw inteljitevents ; then
- LLVM_COMPONENTS="$LLVM_COMPONENTS inteljitevents"
- fi
+ llvm_add_optional_component "inteljitevents" $driver_name
}
llvm_add_target() {
[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
;;
*)
[enable_vdpau=auto])
AC_ARG_ENABLE([omx],
[AS_HELP_STRING([--enable-omx],
- [enable OpenMAX library @<:@default=disabled@:>@])],
- [enable_omx="$enableval"],
- [enable_omx=no])
+ [DEPRECATED: Use --enable-omx-bellagio instead @<:@default=auto@:>@])],
+ [AC_MSG_ERROR([--enable-omx is deprecated. Use --enable-omx-bellagio instead.])],
+ [])
+AC_ARG_ENABLE([omx-bellagio],
+ [AS_HELP_STRING([--enable-omx-bellagio],
+ [enable OpenMAX Bellagio library @<:@default=disabled@:>@])],
+ [enable_omx_bellagio="$enableval"],
+ [enable_omx_bellagio=no])
AC_ARG_ENABLE([va],
[AS_HELP_STRING([--enable-va],
[enable va library @<:@default=auto@:>@])],
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],
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,pl111,svga,swrast,swr,vc4,virgl,etnaviv,imx"
+ "i915,nouveau,r300,r600,radeonsi,freedreno,pl111,svga,swrast,swr,vc4,vc5,virgl,etnaviv,imx"
@<:@default=r300,r600,svga,swrast@:>@])],
[with_gallium_drivers="$withval"],
[with_gallium_drivers="$GALLIUM_DRIVERS_DEFAULT"])
"x$enable_xa" = xno -a \
"x$enable_xvmc" = xno -a \
"x$enable_vdpau" = xno -a \
- "x$enable_omx" = xno -a \
+ "x$enable_omx_bellagio" = xno -a \
"x$enable_va" = xno -a \
"x$enable_opencl" = xno; then
AC_MSG_ERROR([at least one API should be enabled])
AM_CONDITIONAL(NEED_OPENGL_COMMON, test "x$enable_opengl" = xyes -o \
"x$enable_gles1" = xyes -o \
"x$enable_gles2" = xyes)
+AM_CONDITIONAL(NEED_KHRPLATFORM, test "x$enable_egl" = xyes -o \
+ "x$enable_gles1" = xyes -o \
+ "x$enable_gles2" = xyes)
# Validate GLX options
if test "x$enable_glx" = xyes; then
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)
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],
PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
[have_libdrm=yes], [have_libdrm=no])
if test "x$have_libdrm" = xyes; then
- DEFINES="$DEFINES -DHAVE_LIBDRM"
+ DEFINES="$DEFINES -DHAVE_LIBDRM"
fi
require_libdrm() {
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"])
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
+ case "$plat" in
+ wayland)
+
+ PKG_CHECK_MODULES([WAYLAND_CLIENT], [wayland-client >= $WAYLAND_REQUIRED])
+ PKG_CHECK_MODULES([WAYLAND_SERVER], [wayland-server >= $WAYLAND_REQUIRED])
+ PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED])
+ WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`
+
+ 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
+
+ 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 -DWL_HIDE_DEPRECATED"
+ ;;
+
+ 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
+AC_SUBST([WAYLAND_PROTOCOLS_DATADIR])
if test "x$enable_glx" != xno; then
if ! echo "$platforms" | grep -q 'x11'; then
with_dri_drivers=''
fi
+# Check for expat
+PKG_CHECK_MODULES([EXPAT], [expat],,
+ [PKG_CHECK_MODULES([EXPAT], [expat21])]
+)
+
dnl If $with_dri_drivers is yes, drivers will be added through
dnl platform checks. Set DEFINES and LIB_DEPS
if test "x$enable_dri" = xyes; then
with_dri_drivers="i915 i965 nouveau r200 radeon swrast"
fi
- # Check for expat
- PKG_CHECK_MODULES([EXPAT], [expat], [],
- # expat version 2.0 and earlier do not provide expat.pc
- [AC_CHECK_HEADER([expat.h],[],
- [AC_MSG_ERROR([Expat headers required for DRI not found])])
- AC_CHECK_LIB([expat],[XML_ParserCreate],[],
- [AC_MSG_ERROR([Expat library required for DRI not found])])
- EXPAT_LIBS="-lexpat"])
-
# put all the necessary libs together
DRI_LIB_DEPS="$DRI_LIB_DEPS $SELINUX_LIBS $LIBDRM_LIBS $EXPAT_LIBS -lm $PTHREAD_LIBS $DLOPEN_LIBS"
fi
xi965)
require_libdrm "i965"
HAVE_I965_DRI=yes
- PKG_CHECK_MODULES([INTEL], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
;;
xnouveau)
require_libdrm "nouveau"
case "x$driver" in
xintel)
require_libdrm "ANV"
- PKG_CHECK_MODULES([INTEL], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
require_x11_dri3 "ANV"
HAVE_INTEL_VULKAN=yes
;;
fi
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])
+ PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no])
fi
- 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])
+ if test "x$enable_omx_bellagio" = xauto -a "x$have_omx_platform" = xyes; then
+ PKG_CHECK_EXISTS([libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED], [enable_omx_bellagio=yes], [enable_omx_bellagio=no])
fi
if test "x$enable_va" = xauto -a "x$have_va_platform" = xyes; then
if test "x$enable_dri" = xyes -o \
"x$enable_xvmc" = xyes -o \
"x$enable_vdpau" = xyes -o \
- "x$enable_omx" = xyes -o \
+ "x$enable_omx_bellagio" = xyes -o \
"x$enable_va" = xyes; then
need_gallium_vl=yes
fi
if test "x$enable_xvmc" = xyes -o \
"x$enable_vdpau" = xyes -o \
- "x$enable_omx" = 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)
fi
AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
-if test "x$enable_omx" = xyes; then
+if test "x$enable_omx_bellagio" = 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"
+ PKG_CHECK_MODULES([OMX_BELLAGIO], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED])
+ gallium_st="$gallium_st omx_bellagio"
fi
-AM_CONDITIONAL(HAVE_ST_OMX, test "x$enable_omx" = xyes)
+AM_CONDITIONAL(HAVE_ST_OMX_BELLAGIO, test "x$enable_omx_bellagio" = xyes)
if test "x$enable_va" = xyes; then
if test "x$have_va_platform" != 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
llvm_add_default_components "opencl"
llvm_add_component "all-targets" "opencl"
+ llvm_add_component "coverage" "opencl"
llvm_add_component "linker" "opencl"
llvm_add_component "instrumentation" "opencl"
llvm_add_component "ipo" "opencl"
llvm_add_component "irreader" "opencl"
+ llvm_add_component "lto" "opencl"
llvm_add_component "option" "opencl"
llvm_add_component "objcarcopts" "opencl"
llvm_add_component "profiledata" "opencl"
+ llvm_add_optional_component "coroutines" "opencl"
dnl Check for Clang internal headers
if test -z "$CLANG_LIBDIR"; then
[VDPAU_LIB_INSTALL_DIR='${libdir}/vdpau'])
AC_SUBST([VDPAU_LIB_INSTALL_DIR])
-dnl Directory for OMX libs
+dnl Directory for OMX_BELLAGIO libs
-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 --exists libomxil-bellagio && \
- $PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
-AC_SUBST([OMX_LIB_INSTALL_DIR])
+AC_ARG_WITH([omx-bellagio-libdir],
+ [AS_HELP_STRING([--with-omx-bellagio-libdir=DIR],
+ [directory for the OMX_BELLAGIO libraries])],
+ [OMX_BELLAGIO_LIB_INSTALL_DIR="$withval"],
+ [OMX_BELLAGIO_LIB_INSTALL_DIR=`$PKG_CONFIG --exists libomxil-bellagio && \
+ $PKG_CONFIG --define-variable=libdir=\$libdir --variable=pluginsdir libomxil-bellagio`])
+AC_SUBST([OMX_BELLAGIO_LIB_INSTALL_DIR])
dnl Directory for VA libs
[D3D_DRIVER_INSTALL_DIR="${libdir}/d3d"])
AC_SUBST([D3D_DRIVER_INSTALL_DIR])
+dnl Architectures to build SWR library for
+
+AC_ARG_WITH([swr-archs],
+ [AS_HELP_STRING([--with-swr-archs@<:@=DIRS...@:>@],
+ [comma delimited swr architectures list, e.g.
+ "avx,avx2,knl,skx" @<:@default="avx,avx2"@:>@])],
+ [with_swr_archs="$withval"],
+ [with_swr_archs="avx,avx2"])
+
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
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
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__)" \
- ",-mavx,-march=core-avx" \
+ ",-target-cpu=sandybridge,-mavx,-march=core-avx,-tp=sandybridge" \
SWR_AVX_CXXFLAGS
AC_SUBST([SWR_AVX_CXXFLAGS])
- swr_require_cxx_feature_flags "AVX2" "defined(__AVX2__)" \
- ",-mavx2 -mfma -mbmi2 -mf16c,-march=core-avx2" \
- SWR_AVX2_CXXFLAGS
- AC_SUBST([SWR_AVX2_CXXFLAGS])
+ swr_archs=`IFS=', '; echo $with_swr_archs`
+ for arch in $swr_archs; do
+ case "x$arch" in
+ xavx)
+ HAVE_SWR_AVX=yes
+ ;;
+ xavx2)
+ swr_require_cxx_feature_flags "AVX2" "defined(__AVX2__)" \
+ ",-target-cpu=haswell,-mavx2 -mfma -mbmi2 -mf16c,-march=core-avx2,-tp=haswell" \
+ SWR_AVX2_CXXFLAGS
+ AC_SUBST([SWR_AVX2_CXXFLAGS])
+ HAVE_SWR_AVX2=yes
+ ;;
+ xknl)
+ swr_require_cxx_feature_flags "KNL" "defined(__AVX512F__) && defined(__AVX512ER__)" \
+ ",-target-cpu=mic-knl,-march=knl,-xMIC-AVX512" \
+ SWR_KNL_CXXFLAGS
+ AC_SUBST([SWR_KNL_CXXFLAGS])
+ HAVE_SWR_KNL=yes
+ ;;
+ xskx)
+ swr_require_cxx_feature_flags "SKX" "defined(__AVX512F__) && defined(__AVX512BW__)" \
+ ",-target-cpu=x86-skylake,-march=skylake-avx512,-xCORE-AVX512" \
+ SWR_SKX_CXXFLAGS
+ AC_SUBST([SWR_SKX_CXXFLAGS])
+ HAVE_SWR_SKX=yes
+ ;;
+ *)
+ AC_MSG_ERROR([unknown SWR build architecture '$arch'])
+ ;;
+ esac
+ done
+
+ if test "x$HAVE_SWR_AVX" != xyes -a \
+ "x$HAVE_SWR_AVX2" != xyes -a \
+ "x$HAVE_SWR_KNL" != xyes -a \
+ "x$HAVE_SWR_SKX" != xyes; 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)
HAVE_GALLIUM_VC4=yes
- PKG_CHECK_MODULES([VC4], [libdrm >= $LIBDRM_VC4_REQUIRED libdrm_vc4 >= $LIBDRM_VC4_REQUIRED])
require_libdrm "vc4"
PKG_CHECK_MODULES([SIMPENROSE], [simpenrose],
DEFINES="$DEFINES -DUSE_VC4_SIMULATOR"],
[USE_VC4_SIMULATOR=no])
;;
+ xvc5)
+ HAVE_GALLIUM_VC5=yes
+
+ PKG_CHECK_MODULES([VC5_SIMULATOR], [v3dv3],
+ [USE_VC5_SIMULATOR=yes;
+ DEFINES="$DEFINES -DUSE_VC5_SIMULATOR"],
+ [AC_MSG_ERROR([vc5 requires the simulator])])
+ ;;
xpl111)
HAVE_GALLIUM_PL111=yes
;;
fi
# 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)
+AM_CONDITIONAL(SWR_INVALID_LLVM_VERSION, test "x$LLVM_VERSION" != x4.0.0 -a \
+ "x$LLVM_VERSION" != x4.0.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
+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.
if test "x$HAVE_GALLIUM_ETNAVIV" != xyes -a "x$HAVE_GALLIUM_IMX" = xyes ; then
AC_MSG_ERROR([Building with pl111 requires vc4])
fi
+
+detect_old_buggy_llvm() {
+ dnl llvm-config may not give the right answer when llvm is a built as a
+ dnl single shared library, so we must work the library name out for
+ dnl ourselves.
+ dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
+ dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
+ LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
+ AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes])
+
+ if test "x$llvm_have_one_so" = xyes; then
+ dnl LLVM was built using auto*, so there is only one shared object.
+ LLVM_LIBS="-l$LLVM_SO_NAME"
+ else
+ dnl If LLVM was built with CMake, there will be one shared object per
+ dnl component.
+ AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"],
+ [AC_MSG_ERROR([Could not find llvm shared libraries:
+ Please make sure you have built llvm with the --enable-shared option
+ and that your llvm libraries are installed in $LLVM_LIBDIR
+ If you have installed your llvm libraries to a different directory you
+ can use the --with-llvm-prefix= configure flag to specify this directory.
+ NOTE: Mesa is attempting to use llvm shared libraries by default.
+ If you do not want to build with llvm shared libraries and instead want to
+ use llvm static libraries then add --disable-llvm-shared-libs to your configure
+ invocation and rebuild.])])
+
+ dnl We don't need to update LLVM_LIBS in this case because the LLVM
+ dnl install uses a shared object for each component and we have
+ dnl already added all of these objects to LLVM_LIBS.
+ fi
+}
+
dnl
dnl Set defines and buildtime variables only when using LLVM.
dnl
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])
- fi
- LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
-
- dnl llvm-config may not give the right answer when llvm is a built as a
- dnl single shared library, so we must work the library name out for
- dnl ourselves.
- dnl (See https://llvm.org/bugs/show_bug.cgi?id=6823)
- if test "x$enable_llvm_shared_libs" = xyes; then
- dnl We can't use $LLVM_VERSION because it has 'svn' stripped out,
- LLVM_SO_NAME=LLVM-`$LLVM_CONFIG --version`
- AS_IF([test -f "$LLVM_LIBDIR/lib$LLVM_SO_NAME.$IMP_LIB_EXT"], [llvm_have_one_so=yes])
-
- if test "x$llvm_have_one_so" = xyes; then
- dnl LLVM was built using auto*, so there is only one shared object.
- LLVM_LIBS="-l$LLVM_SO_NAME"
+ if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 9; then
+ if test "x$enable_llvm_shared_libs" = xyes; then
+ LLVM_LIBS="`$LLVM_CONFIG --link-shared --libs ${LLVM_COMPONENTS}`"
else
- dnl If LLVM was built with CMake, there will be one shared object per
- dnl component.
- AS_IF([test ! -f "$LLVM_LIBDIR/libLLVMTarget.$IMP_LIB_EXT"],
- [AC_MSG_ERROR([Could not find llvm shared libraries:
- Please make sure you have built llvm with the --enable-shared option
- and that your llvm libraries are installed in $LLVM_LIBDIR
- If you have installed your llvm libraries to a different directory you
- can use the --with-llvm-prefix= configure flag to specify this directory.
- NOTE: Mesa is attempting to use llvm shared libraries by default.
- If you do not want to build with llvm shared libraries and instead want to
- use llvm static libraries then add --disable-llvm-shared-libs to your configure
- invocation and rebuild.])])
-
- dnl We don't need to update LLVM_LIBS in this case because the LLVM
- dnl install uses a shared object for each component and we have
- dnl already added all of these objects to LLVM_LIBS.
+ dnl Invoking llvm-config with both -libs and --system-libs produces the
+ dnl two separate lines - each for the set of libraries.
+ dnl Call the program twice, effectively folding them into a single line.
+ LLVM_LIBS="`$LLVM_CONFIG --link-static --libs ${LLVM_COMPONENTS}`"
+ dnl We need to link to llvm system libs when using static libs
+ LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --link-static --system-libs`"
fi
else
- AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
- dnl We need to link to llvm system libs when using static libs
- dnl However, only llvm 3.5+ provides --system-libs
- if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
- LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
+ LLVM_LIBS="`$LLVM_CONFIG --libs ${LLVM_COMPONENTS}`"
+ if test "x$enable_llvm_shared_libs" = xyes; then
+ detect_old_buggy_llvm
+ else
+ AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
+ dnl We need to link to llvm system libs when using static libs
+ dnl However, only llvm 3.5+ provides --system-libs
+ if test $LLVM_VERSION_MAJOR -ge 4 -o $LLVM_VERSION_MAJOR -eq 3 -a $LLVM_VERSION_MINOR -ge 5; then
+ LLVM_LIBS="$LLVM_LIBS `$LLVM_CONFIG --system-libs`"
+ 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)
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)
-AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_R600" = xyes -o \
- "x$HAVE_GALLIUM_RADEONSI" = xyes)
+AM_CONDITIONAL(HAVE_GALLIUM_RADEON_COMMON, test "x$HAVE_GALLIUM_RADEONSI" = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_NOUVEAU, test "x$HAVE_GALLIUM_NOUVEAU" = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_FREEDRENO, test "x$HAVE_GALLIUM_FREEDRENO" = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_ETNAVIV, test "x$HAVE_GALLIUM_ETNAVIV" = xyes)
"x$HAVE_GALLIUM_LLVMPIPE" = xyes -o \
"x$HAVE_GALLIUM_SWR" = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_VC4, test "x$HAVE_GALLIUM_VC4" = xyes)
+AM_CONDITIONAL(HAVE_GALLIUM_VC5, test "x$HAVE_GALLIUM_VC5" = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_VIRGL, test "x$HAVE_GALLIUM_VIRGL" = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_STATIC_TARGETS, test "x$enable_shared_pipe_drivers" = xno)
AM_CONDITIONAL(HAVE_AMD_DRIVERS, test "x$HAVE_GALLIUM_RADEONSI" = xyes -o \
"x$HAVE_RADEON_VULKAN" = xyes)
+AM_CONDITIONAL(HAVE_BROADCOM_DRIVERS, test "x$HAVE_GALLIUM_VC4" = xyes -o \
+ "x$HAVE_GALLIUM_VC5" = xyes)
+
AM_CONDITIONAL(HAVE_INTEL_DRIVERS, test "x$HAVE_INTEL_VULKAN" = xyes -o \
"x$HAVE_I965_DRI" = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_COMPUTE, test x$enable_opencl = xyes)
AM_CONDITIONAL(HAVE_GALLIUM_LLVM, test "x$enable_llvm" = xyes)
AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
+AM_CONDITIONAL(USE_VC5_SIMULATOR, test x$USE_VC5_SIMULATOR = xyes)
AM_CONDITIONAL(HAVE_LIBDRM, test "x$have_libdrm" = xyes)
AM_CONDITIONAL(HAVE_OSMESA, test "x$enable_osmesa" = xyes)
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)
+AM_CONDITIONAL(HAVE_AARCH64_ASM, test "x$asm_arch" = xaarch64)
+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)
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],
[Build mesa with valgrind support (default: auto)])],
[VALGRIND=$enableval], [VALGRIND=auto])
if test "x$VALGRIND" != xno; then
- PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no])
+ PKG_CHECK_MODULES(VALGRIND, [valgrind], [have_valgrind=yes], [have_valgrind=no])
fi
AC_MSG_CHECKING([whether to enable Valgrind support])
if test "x$VALGRIND" = xauto; then
- VALGRIND="$have_valgrind"
+ VALGRIND="$have_valgrind"
fi
if test "x$VALGRIND" = "xyes"; then
- if ! test "x$have_valgrind" = xyes; then
- AC_MSG_ERROR([Valgrind support required but not present])
- fi
- AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings])
+ if ! test "x$have_valgrind" = xyes; then
+ AC_MSG_ERROR([Valgrind support required but not present])
+ fi
+ AC_DEFINE([HAVE_VALGRIND], 1, [Use valgrind intrinsics to suppress false warnings])
fi
AC_MSG_RESULT([$VALGRIND])
dnl Substitute the config
AC_CONFIG_FILES([Makefile
- src/Makefile
- src/amd/Makefile
- src/amd/vulkan/Makefile
- src/compiler/Makefile
- src/egl/Makefile
- src/egl/main/egl.pc
- src/egl/wayland/wayland-drm/Makefile
- src/egl/wayland/wayland-egl/Makefile
- src/egl/wayland/wayland-egl/wayland-egl.pc
- src/gallium/Makefile
- src/gallium/auxiliary/Makefile
- src/gallium/auxiliary/pipe-loader/Makefile
- src/gallium/drivers/freedreno/Makefile
- src/gallium/drivers/ddebug/Makefile
- src/gallium/drivers/i915/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
- src/gallium/drivers/radeonsi/Makefile
- src/gallium/drivers/rbug/Makefile
- src/gallium/drivers/softpipe/Makefile
- src/gallium/drivers/svga/Makefile
- src/gallium/drivers/swr/Makefile
- src/gallium/drivers/trace/Makefile
- src/gallium/drivers/etnaviv/Makefile
- src/gallium/drivers/imx/Makefile
- src/gallium/drivers/vc4/Makefile
- src/gallium/drivers/virgl/Makefile
- src/gallium/state_trackers/clover/Makefile
- src/gallium/state_trackers/dri/Makefile
- src/gallium/state_trackers/glx/xlib/Makefile
- src/gallium/state_trackers/nine/Makefile
- src/gallium/state_trackers/omx/Makefile
- src/gallium/state_trackers/osmesa/Makefile
- src/gallium/state_trackers/va/Makefile
- src/gallium/state_trackers/vdpau/Makefile
- src/gallium/state_trackers/xa/Makefile
- src/gallium/state_trackers/xvmc/Makefile
- src/gallium/targets/d3dadapter9/Makefile
- src/gallium/targets/d3dadapter9/d3d.pc
- src/gallium/targets/dri/Makefile
- src/gallium/targets/libgl-xlib/Makefile
- src/gallium/targets/omx/Makefile
- src/gallium/targets/opencl/Makefile
- src/gallium/targets/opencl/mesa.icd
- src/gallium/targets/osmesa/Makefile
- src/gallium/targets/osmesa/osmesa.pc
- src/gallium/targets/pipe-loader/Makefile
- src/gallium/targets/va/Makefile
- src/gallium/targets/vdpau/Makefile
- src/gallium/targets/xa/Makefile
- src/gallium/targets/xa/xatracker.pc
- src/gallium/targets/xvmc/Makefile
- src/gallium/tests/trivial/Makefile
- src/gallium/tests/unit/Makefile
- src/gallium/winsys/etnaviv/drm/Makefile
- src/gallium/winsys/imx/drm/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
- src/gallium/winsys/sw/dri/Makefile
- src/gallium/winsys/sw/kms-dri/Makefile
- src/gallium/winsys/sw/null/Makefile
- src/gallium/winsys/sw/wrapper/Makefile
- src/gallium/winsys/sw/xlib/Makefile
- src/gallium/winsys/vc4/drm/Makefile
- src/gallium/winsys/virgl/drm/Makefile
- src/gallium/winsys/virgl/vtest/Makefile
- src/gbm/Makefile
- src/gbm/main/gbm.pc
- src/glx/Makefile
- src/glx/apple/Makefile
- src/glx/tests/Makefile
- src/glx/windows/Makefile
- src/glx/windows/windowsdriproto.pc
- src/gtest/Makefile
- src/intel/Makefile
- src/loader/Makefile
- src/mapi/Makefile
- src/mapi/es1api/glesv1_cm.pc
- src/mapi/es2api/glesv2.pc
- src/mapi/glapi/gen/Makefile
- src/mesa/Makefile
- src/mesa/gl.pc
- src/mesa/drivers/dri/dri.pc
- src/mesa/drivers/dri/common/Makefile
- src/mesa/drivers/dri/common/xmlpool/Makefile
- src/mesa/drivers/dri/i915/Makefile
- src/mesa/drivers/dri/i965/Makefile
- src/mesa/drivers/dri/Makefile
- src/mesa/drivers/dri/nouveau/Makefile
- src/mesa/drivers/dri/r200/Makefile
- src/mesa/drivers/dri/radeon/Makefile
- src/mesa/drivers/dri/swrast/Makefile
- src/mesa/drivers/osmesa/Makefile
- src/mesa/drivers/osmesa/osmesa.pc
- src/mesa/drivers/x11/Makefile
- src/mesa/main/tests/Makefile
- src/util/Makefile
- src/util/tests/hash_table/Makefile
- src/vulkan/Makefile])
+ src/Makefile
+ src/amd/Makefile
+ src/amd/vulkan/Makefile
+ src/broadcom/Makefile
+ src/compiler/Makefile
+ src/egl/Makefile
+ src/egl/main/egl.pc
+ src/egl/wayland/wayland-drm/Makefile
+ src/egl/wayland/wayland-egl/Makefile
+ src/egl/wayland/wayland-egl/wayland-egl.pc
+ src/gallium/Makefile
+ src/gallium/auxiliary/Makefile
+ src/gallium/auxiliary/pipe-loader/Makefile
+ src/gallium/drivers/freedreno/Makefile
+ src/gallium/drivers/ddebug/Makefile
+ src/gallium/drivers/i915/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
+ src/gallium/drivers/radeonsi/Makefile
+ src/gallium/drivers/rbug/Makefile
+ src/gallium/drivers/softpipe/Makefile
+ src/gallium/drivers/svga/Makefile
+ src/gallium/drivers/swr/Makefile
+ src/gallium/drivers/trace/Makefile
+ src/gallium/drivers/etnaviv/Makefile
+ src/gallium/drivers/imx/Makefile
+ src/gallium/drivers/vc4/Makefile
+ src/gallium/drivers/vc5/Makefile
+ src/gallium/drivers/virgl/Makefile
+ src/gallium/state_trackers/clover/Makefile
+ src/gallium/state_trackers/dri/Makefile
+ src/gallium/state_trackers/glx/xlib/Makefile
+ src/gallium/state_trackers/nine/Makefile
+ src/gallium/state_trackers/omx_bellagio/Makefile
+ src/gallium/state_trackers/osmesa/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
+ src/gallium/targets/dri/Makefile
+ src/gallium/targets/libgl-xlib/Makefile
+ src/gallium/targets/omx-bellagio/Makefile
+ src/gallium/targets/opencl/Makefile
+ src/gallium/targets/opencl/mesa.icd
+ src/gallium/targets/osmesa/Makefile
+ src/gallium/targets/osmesa/osmesa.pc
+ src/gallium/targets/pipe-loader/Makefile
+ src/gallium/targets/va/Makefile
+ src/gallium/targets/vdpau/Makefile
+ src/gallium/targets/xa/Makefile
+ src/gallium/targets/xa/xatracker.pc
+ src/gallium/targets/xvmc/Makefile
+ src/gallium/tests/trivial/Makefile
+ src/gallium/tests/unit/Makefile
+ src/gallium/winsys/etnaviv/drm/Makefile
+ src/gallium/winsys/imx/drm/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
+ src/gallium/winsys/sw/dri/Makefile
+ src/gallium/winsys/sw/kms-dri/Makefile
+ src/gallium/winsys/sw/null/Makefile
+ src/gallium/winsys/sw/wrapper/Makefile
+ src/gallium/winsys/sw/xlib/Makefile
+ src/gallium/winsys/vc4/drm/Makefile
+ src/gallium/winsys/vc5/drm/Makefile
+ src/gallium/winsys/virgl/drm/Makefile
+ src/gallium/winsys/virgl/vtest/Makefile
+ src/gbm/Makefile
+ src/gbm/main/gbm.pc
+ src/glx/Makefile
+ src/glx/apple/Makefile
+ src/glx/tests/Makefile
+ src/glx/windows/Makefile
+ src/glx/windows/windowsdriproto.pc
+ src/gtest/Makefile
+ src/intel/Makefile
+ src/loader/Makefile
+ src/mapi/Makefile
+ src/mapi/es1api/glesv1_cm.pc
+ src/mapi/es2api/glesv2.pc
+ src/mapi/glapi/gen/Makefile
+ src/mesa/Makefile
+ src/mesa/gl.pc
+ src/mesa/drivers/dri/dri.pc
+ src/mesa/drivers/dri/common/Makefile
+ src/mesa/drivers/dri/i915/Makefile
+ src/mesa/drivers/dri/i965/Makefile
+ src/mesa/drivers/dri/Makefile
+ src/mesa/drivers/dri/nouveau/Makefile
+ src/mesa/drivers/dri/r200/Makefile
+ src/mesa/drivers/dri/radeon/Makefile
+ src/mesa/drivers/dri/swrast/Makefile
+ src/mesa/drivers/osmesa/Makefile
+ src/mesa/drivers/osmesa/osmesa.pc
+ src/mesa/drivers/x11/Makefile
+ src/mesa/main/tests/Makefile
+ src/mesa/state_tracker/tests/Makefile
+ src/util/Makefile
+ src/util/tests/hash_table/Makefile
+ src/util/tests/string_buffer/Makefile
+ src/util/xmlpool/Makefile
+ src/vulkan/Makefile])
AC_OUTPUT
# source file
$SED -i -e 's/brw_blorp.cpp/brw_blorp.c/' src/mesa/drivers/dri/i965/.deps/brw_blorp.Plo
+rm -f src/compiler/spirv/spirv_info.lo
+echo "# dummy" > src/compiler/spirv/.deps/spirv_info.Plo
dnl
dnl Output some configuration info for the user
echo " HUD lmsensors: yes"
fi
+echo ""
+if test "x$HAVE_GALLIUM_SWR" != x; then
+ if test "x$HAVE_SWR_BUILTIN" = xyes; then
+ echo " SWR archs: $swr_archs (builtin)"
+ else
+ echo " SWR archs: $swr_archs"
+ fi
+fi
+
dnl Libraries
echo ""
echo " Shared libs: $enable_shared"
echo ""
echo " CFLAGS: $cflags"
echo " CXXFLAGS: $cxxflags"
+echo " CXX11_CXXFLAGS: $CXX11_CXXFLAGS"
echo " LDFLAGS: $ldflags"
echo " Macros: $defines"
echo ""