# 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
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
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"],
AC_SUBST([DEFINES])
android=no
case "$host_os" in
-*-android)
+*-android*)
android=yes
;;
linux*|*-gnu*|gnu*|cygwin*)
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"
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
[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
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.
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 <stdint.h>
+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,
CFLAGS=$save_CFLAGS
AC_ARG_ENABLE(pwr8,
- [AS_HELP_STRING([--disable-pwr8-inst],
+ [AS_HELP_STRING([--disable-pwr8],
[disable POWER8-specific instructions])],
[enable_pwr8=$enableval], [enable_pwr8=auto])
[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
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
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])
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]
)
AC_CHECK_FUNCS([dladdr])
LIBS="$save_LIBS"
+AC_CHECK_FUNC([dl_iterate_phdr], [DEFINES="$DEFINES -DHAVE_DL_ITERATE_PHDR"])
+
case "$host_os" in
darwin*)
;;
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
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"
;;
* )
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.
# 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/\s\+-m\S*//g' \
- -e 's/\s\+-DNDEBUG\>//g' \
- -e 's/\s\+-D_GNU_SOURCE\>//g' \
- -e 's/\s\+-pedantic\>//g' \
- -e 's/\s\+-W\S*//g' \
- -e 's/\s\+-O\S*//g' \
- -e 's/\s\+-g\S*//g' \
- -e 's/-fno-rtti\>/-Fno-rtti/g' \
- -e 's/\s\+-f\S*//g' \
- -e 's/-Fno-rtti\>/-fno-rtti/g' \
- -e 's/^ //'
+ 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() {
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
}
AC_SUBST([LLVM_LDFLAGS])
AC_SUBST([LLVM_INCLUDEDIR])
+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],
[AS_HELP_STRING([--disable-opengl],
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"])
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
;;
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
# 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
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"
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
# 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
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)
;;
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])
[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])
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
"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"
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
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"
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
[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
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
;;
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)
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
+ if test "x$enable_llvm" = xyes; then
radeon_llvm_check $LLVM_REQUIRED_R600 "r600"
llvm_add_component "asmparser" "r600"
PKG_CHECK_MODULES([AMDGPU], [libdrm >= $LIBDRM_AMDGPU_REQUIRED libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
require_libdrm "radeonsi"
radeon_llvm_check $LLVM_REQUIRED_RADEONSI "radeonsi"
- require_basic_egl "radeonsi"
+ if test "x$enable_egl" = xyes; then
+ require_basic_egl "radeonsi"
+ fi
;;
xnouveau)
HAVE_GALLIUM_NOUVEAU=yes
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])
done
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)
+
if test "x$enable_llvm" = "xyes" -a "$with_gallium_drivers"; then
llvm_require_version $LLVM_REQUIRED_GALLIUM "gallium"
llvm_add_default_components "gallium"
AC_MSG_ERROR([Building with imx requires etnaviv])
fi
+if test "x$HAVE_GALLIUM_VC4" != xyes -a "x$HAVE_GALLIUM_PL111" = xyes ; then
+ AC_MSG_ERROR([Building with pl111 requires vc4])
+fi
+
dnl
dnl Set defines and buildtime variables only when using LLVM.
dnl
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)
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 \
"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$enable_llvm" = xyes)
AM_CONDITIONAL(USE_VC4_SIMULATOR, test x$USE_VC4_SIMULATOR = xyes)
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)
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/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/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
src/mesa/main/tests/Makefile
src/util/Makefile
src/util/tests/hash_table/Makefile
- src/vulkan/wsi/Makefile])
+ src/vulkan/Makefile])
AC_OUTPUT
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
echo " GBM: no"
fi
+ echo " EGL/Vulkan/VL platforms: $platforms"
+
# Vulkan
echo ""
if test "x$VULKAN_DRIVERS" != x; then
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$enable_llvm" = xyes; then