LIBDRM_INTEL_REQUIRED=2.4.61
LIBDRM_NVVIEUX_REQUIRED=2.4.66
LIBDRM_NOUVEAU_REQUIRED=2.4.66
-LIBDRM_FREEDRENO_REQUIRED=2.4.68
+LIBDRM_FREEDRENO_REQUIRED=2.4.74
LIBDRM_VC4_REQUIRED=2.4.69
DRI2PROTO_REQUIRED=2.6
DRI3PROTO_REQUIRED=1.0
PRESENTPROTO_REQUIRED=1.0
-LIBUDEV_REQUIRED=151
GLPROTO_REQUIRED=1.4.14
LIBOMXIL_BELLAGIO_REQUIRED=0.0
LIBVA_REQUIRED=0.38.0
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"],
fi
dnl AX_PTHREADS leaves PTHREAD_LIBS empty for gcc and sets PTHREAD_CFLAGS
dnl to -pthread, which causes problems if we need -lpthread to appear in
-dnl pkgconfig files.
-test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
+dnl pkgconfig files. Since Android doesn't have a pthread lib, this check
+dnl is not valid for that platform.
+if test "x$android" = xno; then
+ test -z "$PTHREAD_LIBS" && PTHREAD_LIBS="-lpthread"
+fi
dnl pthread-stubs is mandatory on targets where it exists
case "$host_os" in
AC_SUBST([SELINUX_CFLAGS])
AC_SUBST([SELINUX_LIBS])
+dnl
+dnl LLVM
+dnl
+llvm_add_component() {
+ new_llvm_component=$1
+ driver_name=$2
+
+ LLVM_COMPONENTS="$LLVM_COMPONENTS $new_llvm_component"
+}
+
+llvm_add_default_components() {
+ driver_name=$1
+
+ # Required default components
+ llvm_add_component "bitwriter" $driver_name
+ llvm_add_component "engine" $driver_name
+ llvm_add_component "mcdisassembler" $driver_name
+ 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_target() {
+ new_llvm_target=$1
+ driver_name=$2
+
+ if $LLVM_CONFIG --targets-built | grep -iqw $new_llvm_target ; then
+ llvm_add_component $new_llvm_target $driver_name
+ else
+ AC_MSG_ERROR([LLVM target '$new_llvm_target' not enabled in your LLVM build. Required by $driver_name.])
+ fi
+}
+
dnl Options for APIs
AC_ARG_ENABLE([opengl],
[AS_HELP_STRING([--disable-opengl],
[enable_xa=no])
AC_ARG_ENABLE([gbm],
[AS_HELP_STRING([--enable-gbm],
- [enable gbm library @<:@default=auto@:>@])],
+ [enable gbm library @<:@default=yes except cygwin@:>@])],
[enable_gbm="$enableval"],
- [enable_gbm=auto])
+ [case "$host_os" in
+ cygwin*)
+ enable_gbm=no
+ ;;
+ *)
+ enable_gbm=yes
+ ;;
+ esac])
AC_ARG_ENABLE([nine],
[AS_HELP_STRING([--enable-nine],
[enable build of the nine Direct3D9 API @<:@default=no@:>@])],
DEFINES="$DEFINES -DHAVE_LIBDRM"
fi
+require_libdrm() {
+ if test "x$have_libdrm" != xyes; then
+ AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
+ fi
+}
+
+
# Select which platform-dependent DRI code gets built
case "$host_os" in
darwin*)
AC_MSG_ERROR([Cannot enable shader cache (no SHA-1 implementation found)])
fi
fi
-AM_CONDITIONAL([ENABLE_SHADER_CACHE], [test x$enable_shader_cache = xyes])
if test "x$enable_shader_cache" = "xyes"; then
AC_DEFINE([ENABLE_SHADER_CACHE], [1], [Enable shader cache])
fi
-case "$host_os" in
-linux*)
- need_pci_id=yes ;;
-*)
- need_pci_id=no ;;
-esac
-
-PKG_CHECK_MODULES([LIBUDEV], [libudev >= $LIBUDEV_REQUIRED],
- have_libudev=yes, have_libudev=no)
-
-AC_ARG_ENABLE([sysfs],
- [AS_HELP_STRING([--enable-sysfs],
- [enable /sys PCI identification @<:@default=disabled@:>@])],
- [have_sysfs="$enableval"],
- [have_sysfs=no]
-)
-
if test "x$enable_dri" = xyes; then
if test "$enable_static" = yes; then
AC_MSG_ERROR([Cannot use static libraries for DRI drivers])
if test x"$driglx_direct" = xyes; then
if test x"$dri_platform" = xdrm ; then
DEFINES="$DEFINES -DGLX_USE_DRM"
- if test "x$have_libdrm" != xyes; then
- AC_MSG_ERROR([Direct rendering requires libdrm >= $LIBDRM_REQUIRED])
- fi
+ require_libdrm "Direct rendering"
PKG_CHECK_MODULES([DRI2PROTO], [dri2proto >= $DRI2PROTO_REQUIRED])
GL_PC_REQ_PRIV="$GL_PC_REQ_PRIV libdrm >= $LIBDRM_REQUIRED"
;;
esac
-have_pci_id=no
-if test "$have_libudev" = yes; then
- DEFINES="$DEFINES -DHAVE_LIBUDEV"
- have_pci_id=yes
-fi
-
-if test "$have_sysfs" = yes; then
- DEFINES="$DEFINES -DHAVE_SYSFS"
- have_pci_id=yes
-fi
-
# This is outside the case (above) so that it is invoked even for non-GLX
# builds.
AM_CONDITIONAL(HAVE_XF86VIDMODE, test "x$HAVE_XF86VIDMODE" = xyes)
DEFINES="$DEFINES -DHAVE_DRI3"
fi
- if test "x$have_pci_id" != xyes; then
- AC_MSG_ERROR([libudev-dev or sysfs required for building DRI])
- fi
-
case "$host_cpu" in
powerpc* | sparc*)
# Build only the drivers for cards that exist on PowerPC/sparc
[VULKAN_ICD_INSTALL_DIR='${datarootdir}/vulkan/icd.d'])
AC_SUBST([VULKAN_ICD_INSTALL_DIR])
-AC_ARG_ENABLE([vulkan-icd-full-driver-path],
- [AS_HELP_STRING([--disable-vulkan-icd-full-driver-path],
- [create Vulkan ICD files with just a .so name and no path])],
- [vulkan_icd_driver_path="$enableval"],
- [vulkan_icd_driver_path="yes"])
-AM_CONDITIONAL(VULKAN_ICD_DRIVER_PATH, test "x$vulkan_icd_driver_path" = xyes)
-
if test -n "$with_vulkan_drivers"; then
VULKAN_DRIVERS=`IFS=', '; echo $with_vulkan_drivers`
for driver in $VULKAN_DRIVERS; do
xradeon)
PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
HAVE_RADEON_VULKAN=yes;
+ if test "x$with_sha1" == "x"; then
+ AC_MSG_ERROR([radv vulkan driver requires SHA1])
+ fi
;;
*)
AC_MSG_ERROR([Vulkan driver '$driver' does not exist])
dnl
dnl gbm configuration
dnl
-if test "x$enable_gbm" = xauto; then
- case "$with_egl_platforms" in
- *drm*)
- enable_gbm=yes ;;
- *)
- enable_gbm=no ;;
- esac
-fi
if test "x$enable_gbm" = xyes; then
- if test "x$need_pci_id$have_pci_id" = xyesno; then
- AC_MSG_ERROR([gbm requires udev >= $LIBUDEV_REQUIRED or sysfs])
- fi
-
if test "x$enable_dri" = xyes; then
if test "x$enable_shared_glapi" = xno; then
AC_MSG_ERROR([gbm_dri requires --enable-shared-glapi])
fi
fi
AM_CONDITIONAL(HAVE_GBM, test "x$enable_gbm" = xyes)
-if test "x$need_pci_id$have_libudev" = xyesyes; then
- GBM_PC_REQ_PRIV="libudev >= $LIBUDEV_REQUIRED"
-else
- GBM_PC_REQ_PRIV=""
-fi
+# FINISHME: GBM has a number of dependencies which we should add below
+GBM_PC_REQ_PRIV=""
GBM_PC_LIB_PRIV="$DLOPEN_LIBS"
AC_SUBST([GBM_PC_REQ_PRIV])
AC_SUBST([GBM_PC_LIB_PRIV])
"x11,drm" @<:@default=auto@:>@])],
[with_egl_platforms="$withval"],
[if test "x$enable_egl" = xyes; then
- with_egl_platforms="x11"
+ if test "x$enable_gbm" = xyes; then
+ with_egl_platforms="x11,drm"
+ else
+ with_egl_platforms="x11"
+ fi
else
- with_egl_platforms=""
+ with_egl_platforms=""
fi])
if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then
for plat in $egl_platforms; do
case "$plat" in
wayland)
- test "x$have_libdrm" != xyes &&
- AC_MSG_ERROR([EGL platform wayland requires libdrm >= $LIBDRM_REQUIRED])
PKG_CHECK_MODULES([WAYLAND], [wayland-client >= $WAYLAND_REQUIRED wayland-server >= $WAYLAND_REQUIRED])
drm)
test "x$enable_gbm" = "xno" &&
AC_MSG_ERROR([EGL platform drm needs gbm])
- test "x$have_libdrm" != xyes &&
- AC_MSG_ERROR([EGL platform drm requires libdrm >= $LIBDRM_REQUIRED])
;;
surfaceless)
- test "x$have_libdrm" != xyes &&
- AC_MSG_ERROR([EGL platform surfaceless requires libdrm >= $LIBDRM_REQUIRED])
;;
android)
+ PKG_CHECK_MODULES([ANDROID], [cutils hardware sync])
;;
*)
;;
esac
- case "$plat$need_pci_id$have_pci_id" in
- waylandyesno|drmyesno)
- AC_MSG_ERROR([cannot build $plat platform without udev >= $LIBUDEV_REQUIRED or sysfs]) ;;
- esac
+ case "$plat" in
+ wayland|drm|surfaceless)
+ require_libdrm "Platform $plat"
+ ;;
+ esac
done
# libEGL wants to default to the first platform specified in
esac
fi
if test "x$enable_gallium_llvm" = xyes || test "x$HAVE_RADEON_VULKAN" = xyes; then
- if test -n "$llvm_prefix"; then
- AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
- else
- AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
+ if test -z "$LLVM_CONFIG"; then
+ if test -n "$llvm_prefix"; then
+ AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no], ["$llvm_prefix/bin"])
+ else
+ AC_PATH_TOOL([LLVM_CONFIG], [llvm-config], [no])
+ fi
fi
if test "x$LLVM_CONFIG" != xno; then
AC_MSG_ERROR([LLVM $LLVM_REQUIRED_VERSION_MAJOR.$LLVM_REQUIRED_VERSION_MINOR or newer is required])
fi
- LLVM_COMPONENTS="engine bitwriter mcjit mcdisassembler"
-
- if $LLVM_CONFIG --components | grep -q inteljitevents ; then
- LLVM_COMPONENTS="${LLVM_COMPONENTS} inteljitevents"
- fi
+ llvm_add_default_components "gallium"
if test "x$enable_opencl" = xyes; then
llvm_check_version_for "3" "6" "0" "opencl"
dnl
dnl Gallium helper functions
dnl
-gallium_require_drm() {
- if test "x$have_libdrm" != xyes; then
- AC_MSG_ERROR([$1 requires libdrm >= $LIBDRM_REQUIRED])
- fi
-}
-
gallium_require_llvm() {
if test "x$MESA_LLVM" = x0; then
case "$host" in *gnux32) return;; esac
fi
}
-gallium_require_drm_loader() {
- if test "x$need_pci_id$have_pci_id" = xyesno; then
- AC_MSG_ERROR([Gallium drm loader requires libudev >= $LIBUDEV_REQUIRED or sysfs])
- fi
-}
-
-dnl This is for Glamor. Skip this if OpenGL is disabled.
-require_egl_drm() {
- if test "x$enable_opengl" = xno; then
- return 0
- fi
-
+dnl
+dnl DRM is needed by X, Wayland, and offscreen rendering.
+dnl Surfaceless is an alternative for the last one.
+dnl
+require_basic_egl() {
case "$with_egl_platforms" in
- *drm*)
+ *drm*|*surfaceless*)
;;
- *)
- AC_MSG_ERROR([--with-egl-platforms=drm is required to build the $1 driver.])
+ *)
+ 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)
+ Recommended options: drm,x11])
;;
esac
- if test "x$enable_gbm" != xyes; then
- AC_MSG_ERROR([--enable-gbm is required to build the $1 driver.])
- fi
}
radeon_llvm_check() {
case "x$driver" in
xsvga)
HAVE_GALLIUM_SVGA=yes
- gallium_require_drm "svga"
- gallium_require_drm_loader
+ require_libdrm "svga"
;;
xi915)
HAVE_GALLIUM_I915=yes
PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
- gallium_require_drm "Gallium i915"
- gallium_require_drm_loader
+ require_libdrm "Gallium i915"
;;
xilo)
HAVE_GALLIUM_ILO=yes
PKG_CHECK_MODULES([INTEL], [libdrm_intel >= $LIBDRM_INTEL_REQUIRED])
- gallium_require_drm "Gallium i965/ilo"
- gallium_require_drm_loader
+ require_libdrm "Gallium i965/ilo"
;;
xr300)
HAVE_GALLIUM_R300=yes
PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
- gallium_require_drm "Gallium R300"
- gallium_require_drm_loader
+ require_libdrm "Gallium R300"
gallium_require_llvm "Gallium R300"
;;
xr600)
HAVE_GALLIUM_R600=yes
PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
- gallium_require_drm "Gallium R600"
- gallium_require_drm_loader
+ require_libdrm "Gallium R600"
if test "x$enable_opencl" = xyes; then
radeon_gallium_llvm_check "r600g" "3" "6" "0"
LLVM_COMPONENTS="${LLVM_COMPONENTS} bitreader asmparser"
HAVE_GALLIUM_RADEONSI=yes
PKG_CHECK_MODULES([RADEON], [libdrm_radeon >= $LIBDRM_RADEON_REQUIRED])
PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
- gallium_require_drm "radeonsi"
- gallium_require_drm_loader
+ require_libdrm "radeonsi"
radeon_gallium_llvm_check "radeonsi" "3" "6" "0"
- require_egl_drm "radeonsi"
+ require_basic_egl "radeonsi"
;;
xnouveau)
HAVE_GALLIUM_NOUVEAU=yes
PKG_CHECK_MODULES([NOUVEAU], [libdrm_nouveau >= $LIBDRM_NOUVEAU_REQUIRED])
- gallium_require_drm "nouveau"
- gallium_require_drm_loader
+ require_libdrm "nouveau"
;;
xfreedreno)
HAVE_GALLIUM_FREEDRENO=yes
PKG_CHECK_MODULES([FREEDRENO], [libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED])
- gallium_require_drm "freedreno"
- gallium_require_drm_loader
+ require_libdrm "freedreno"
;;
xswrast)
HAVE_GALLIUM_SOFTPIPE=yes
xvc4)
HAVE_GALLIUM_VC4=yes
PKG_CHECK_MODULES([VC4], [libdrm_vc4 >= $LIBDRM_VC4_REQUIRED])
- gallium_require_drm "vc4"
- gallium_require_drm_loader
+ require_libdrm "vc4"
PKG_CHECK_MODULES([SIMPENROSE], [simpenrose],
[USE_VC4_SIMULATOR=yes;
;;
xvirgl)
HAVE_GALLIUM_VIRGL=yes
- gallium_require_drm "virgl"
- gallium_require_drm_loader
- require_egl_drm "virgl"
+ require_libdrm "virgl"
+ require_basic_egl "virgl"
;;
*)
AC_MSG_ERROR([Unknown Gallium driver: $driver])
done
fi
-if test "x$HAVE_RADEON_VULKAN" != "x0"; then
+if test "x$HAVE_RADEON_VULKAN" = "xyes"; then
radeon_llvm_check "radv" "3" "9" "0"
fi
AC_SUBST([VA_MAJOR], $VA_MAJOR)
AC_SUBST([VA_MINOR], $VA_MINOR)
+AM_CONDITIONAL(HAVE_VULKAN_COMMON, test "x$VULKAN_DRIVERS" != "x")
+
AC_SUBST([XVMC_MAJOR], 1)
AC_SUBST([XVMC_MINOR], 0)
AC_SUBST([XA_TINY], $XA_TINY)
AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_TINY")
-AC_SUBST([TIMESTAMP_CMD], '`test $(SOURCE_DATE_EPOCH) && echo $(SOURCE_DATE_EPOCH) || date +%s`')
-
AC_ARG_ENABLE(valgrind,
[AS_HELP_STRING([--enable-valgrind],
[Build mesa with valgrind support (default: auto)])],
AC_CONFIG_FILES([Makefile
src/Makefile
src/amd/Makefile
- src/amd/common/Makefile
src/amd/vulkan/Makefile
src/compiler/Makefile
src/egl/Makefile
src/mesa/drivers/x11/Makefile
src/mesa/main/tests/Makefile
src/util/Makefile
- src/util/tests/hash_table/Makefile])
+ src/util/tests/hash_table/Makefile
+ src/vulkan/wsi/Makefile])
AC_OUTPUT
echo " EGL drivers: $egl_drivers"
fi
+if test "x$enable_gbm" = xyes; then
+ echo " GBM: yes"
+else
+ echo " GBM: no"
+fi
# Vulkan
echo ""