# 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.79
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.8
dnl LLVM versions
LLVM_REQUIRED_GALLIUM=3.3.0
LLVM_REQUIRED_OPENCL=3.6.0
-LLVM_REQUIRED_R600=3.6.0
-LLVM_REQUIRED_RADEONSI=3.6.0
+LLVM_REQUIRED_R600=3.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_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,
- [AC_HELP_STRING([--disable-pwr8-inst],
+ [AS_HELP_STRING([--disable-pwr8-inst],
[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
test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
fi
-dnl pthread-stubs is mandatory on targets where it exists
+dnl pthread-stubs is mandatory on BSD platforms, due to the nature of the
+dnl project. Even then there's a notable issue as described in the project README
case "$host_os" in
-cygwin* )
+linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu*)
pthread_stubs_possible="no"
;;
* )
esac
if test "x$pthread_stubs_possible" = xyes; then
- PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs)
+ PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs >= 0.4)
AC_SUBST(PTHREADSTUBS_CFLAGS)
AC_SUBST(PTHREADSTUBS_LIBS)
fi
# 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_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"])
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}"
FOUND_LLVM=yes
else
}
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_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
+AC_ARG_ENABLE([libunwind],
+ [AS_HELP_STRING([--enable-libunwind],
+ [Use libunwind for backtracing (default: auto)])],
+ [LIBUNWIND="$enableval"],
+ [LIBUNWIND="auto"])
+
+PKG_CHECK_EXISTS(libunwind, [HAVE_LIBUNWIND=yes], [HAVE_LIBUNWIND=no])
+if test "x$LIBUNWIND" = "xauto"; then
+ LIBUNWIND="$HAVE_LIBUNWIND"
+fi
+
+if test "x$LIBUNWIND" = "xyes"; then
+ PKG_CHECK_MODULES(LIBUNWIND, libunwind)
+ if test "x$HAVE_LIBUNWIND" != "xyes"; then
+ AC_MSG_ERROR([libunwind requested but not installed.])
+ fi
+ AC_DEFINE(HAVE_LIBUNWIND, 1, [Have libunwind support])
+fi
+
+AM_CONDITIONAL(HAVE_LIBUNWIND, [test "x$LIBUNWIND" = xyes])
+
+
dnl Options for APIs
AC_ARG_ENABLE([opengl],
[AS_HELP_STRING([--disable-opengl],
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
case "x$driver" in
xi915)
require_libdrm "i915"
- HAVE_I915_DRI=yes;
+ HAVE_I915_DRI=yes
PKG_CHECK_MODULES([INTEL], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
;;
xi965)
require_libdrm "i965"
- HAVE_I965_DRI=yes;
+ HAVE_I965_DRI=yes
PKG_CHECK_MODULES([INTEL], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
;;
xnouveau)
require_libdrm "nouveau"
- HAVE_NOUVEAU_DRI=yes;
+ HAVE_NOUVEAU_DRI=yes
PKG_CHECK_MODULES([NVVIEUX], [libdrm >= $LIBDRM_NVVIEUX_REQUIRED libdrm_nouveau >= $LIBDRM_NVVIEUX_REQUIRED])
;;
xradeon)
;;
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])
dnl
dnl Gallium LLVM
-dnl
-dnl With follow-up commits we'll rework --enable-gallium-llvm to --enable-llvm
-dnl Since that is too invasive to stable, do the more conservative thing for now
-dnl and consider it as a global LLVM toggle.
+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 "x$enable_gallium_llvm" = xauto; then
- case "$host_cpu" in
- i*86|x86_64|amd64) enable_gallium_llvm=yes;;
- esac
+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" = xyes -a "x$FOUND_LLVM" = xno; then
- AC_MSG_ERROR([--enable-gallium-llvm selected but llvm-config is not found])
+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
#
AC_SUBST([VULKAN_ICD_INSTALL_DIR])
if test -n "$with_vulkan_drivers"; then
+ if test "x$ac_cv_func_dl_iterate_phdr" = xno; then
+ AC_MSG_ERROR([Vulkan drivers require the dl_iterate_phdr function])
+ fi
+
VULKAN_DRIVERS=`IFS=', '; echo $with_vulkan_drivers`
for driver in $VULKAN_DRIVERS; do
case "x$driver" in
xintel)
- if test "x$HAVE_I965_DRI" != xyes; then
- AC_MSG_ERROR([Intel Vulkan driver requires the i965 dri driver])
- fi
- HAVE_INTEL_VULKAN=yes;
-
+ require_libdrm "ANV"
+ PKG_CHECK_MODULES([INTEL], [libdrm >= $LIBDRM_INTEL_REQUIRED libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
+ HAVE_INTEL_VULKAN=yes
;;
xradeon)
+ require_libdrm "radv"
PKG_CHECK_MODULES([AMDGPU], [libdrm >= $LIBDRM_AMDGPU_REQUIRED libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
radeon_llvm_check $LLVM_REQUIRED_RADV "radv"
- HAVE_RADEON_VULKAN=yes;
+ HAVE_RADEON_VULKAN=yes
;;
*)
AC_MSG_ERROR([Vulkan driver '$driver' does not exist])
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"
AM_CONDITIONAL(HAVE_GALLIUM, test -n "$with_gallium_drivers")
dnl
-dnl EGL Platforms configuration
+dnl DEPRECATED: 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@:>@])],
+ [DEPRECATED: use --with-platforms instead@<:@default=auto@:>@])],
[with_egl_platforms="$withval"],
- [if test "x$enable_egl" = xyes; then
+ [with_egl_platforms=auto])
+
+if test "x$with_egl_platforms" = xauto; then
+ if test "x$enable_egl" = xyes; then
if test "x$enable_gbm" = xyes; then
with_egl_platforms="x11,drm"
else
fi
else
with_egl_platforms=""
- fi])
+ fi
+else
+ AC_MSG_WARN([--with-egl-platforms is deprecated. Use --with-platforms instead.])
+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])
+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])
+
+# For the time being, we still reuse the EGL named variables/defines.
+if test "x$with_platforms" != xauto; then
+ with_egl_platforms=$with_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])
+ AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:])
fi
# Do per-EGL platform setups and checks
PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
- if test "x$WAYLAND_SCANNER" = x; then
+ if test "x$WAYLAND_SCANNER" = "x:"; then
AC_MSG_ERROR([wayland-scanner is needed to compile the wayland egl platform])
fi
;;
[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
;;
*)
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"
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"
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
;;
xswrast)
HAVE_GALLIUM_SOFTPIPE=yes
- if test "x$enable_gallium_llvm" = xyes; then
+ if test "x$enable_llvm" = xyes; then
HAVE_GALLIUM_LLVMPIPE=yes
fi
;;
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])
+ swr_require_cxx_feature_flags "C++14" "__cplusplus >= 201402L" \
+ "-std=c++14" \
+ SWR_CXX14_CXXFLAGS
+ AC_SUBST([SWR_CXX14_CXXFLAGS])
swr_require_cxx_feature_flags "AVX" "defined(__AVX__)" \
",-mavx,-march=core-avx" \
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
-if test "x$enable_gallium_llvm" = "xyes" -a "$with_gallium_drivers"; then
+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])
+ AC_MSG_ERROR([Building with imx requires etnaviv])
fi
dnl
dnl Set defines and buildtime variables only when using LLVM.
dnl
-if test "x$enable_gallium_llvm" = xyes; then
+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
"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_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)
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/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: $egl_platforms"
+
# Vulkan
echo ""
if test "x$VULKAN_DRIVERS" != x; then
fi
echo ""
-if test "x$enable_gallium_llvm" = xyes; then
+if test "x$enable_llvm" = xyes; then
echo " llvm: yes"
echo " llvm-config: $LLVM_CONFIG"
echo " llvm-version: $LLVM_VERSION"
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_gallium_llvm" = xyes; then
+if test "x$enable_llvm" = xyes; then
echo " LLVM_CFLAGS: $LLVM_CFLAGS"
echo " LLVM_CXXFLAGS: $LLVM_CXXFLAGS"
echo " LLVM_CPPFLAGS: $LLVM_CPPFLAGS"