# in the first entry.
LIBDRM_REQUIRED=2.4.75
LIBDRM_RADEON_REQUIRED=2.4.71
-LIBDRM_AMDGPU_REQUIRED=2.4.79
+LIBDRM_AMDGPU_REQUIRED=2.4.82
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.82
dnl Versions for external dependencies
DRI2PROTO_REQUIRED=2.8
-DRI3PROTO_REQUIRED=1.0
-PRESENTPROTO_REQUIRED=1.0
GLPROTO_REQUIRED=1.4.14
LIBOMXIL_BELLAGIO_REQUIRED=0.0
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
XVMC_REQUIRED=1.0.6
PYTHON_MAKO_REQUIRED=0.8.0
LIBSENSORS_REQUIRED=4.0.0
-ZLIB_REQUIRED=1.2.8
+ZLIB_REQUIRED=1.2.3
dnl LLVM versions
LLVM_REQUIRED_GALLIUM=3.3.0
LLVM_REQUIRED_OPENCL=3.6.0
-LLVM_REQUIRED_R600=3.8.0
-LLVM_REQUIRED_RADEONSI=3.8.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
AC_SUBST([DEFINES])
android=no
case "$host_os" in
-*-android)
+*-android*)
android=yes
;;
linux*|*-gnu*|gnu*|cygwin*)
AM_CONDITIONAL(HAVE_ANDROID, test "x$android" = xyes)
-dnl Add flags for gcc and g++
-if test "x$GCC" = xyes; then
- CFLAGS="$CFLAGS -Wall"
-
- if test "x$USE_GNU99" = xyes; then
- 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++])
+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"])
- # Restore CXXFLAGS; VISIBILITY_CXXFLAGS are added to it where needed.
- CXXFLAGS=$save_CXXFLAGS
+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++])
- # We don't want floating-point math functions to set errno or trap
- CXXFLAGS="$CXXFLAGS -fno-math-errno -fno-trapping-math"
-fi
+# 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="-Werror=pointer-arith"])
+AX_CHECK_COMPILE_FLAG([-Werror=vla], [MSVC2013_COMPAT_CFLAGS="-Werror=vla"])
+AC_LANG_PUSH([C++])
+AX_CHECK_COMPILE_FLAG([-Werror=pointer-arith], [MSVC2013_COMPAT_CXXFLAGS="-Werror=pointer-arith"])
+AX_CHECK_COMPILE_FLAG([-Werror=vla], [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"
+ else
+ CFLAGS="$CFLAGS -std=c99"
+ fi
+fi
+
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
case "$host_os" in
AC_SUBST([VISIBILITY_CFLAGS])
AC_SUBST([VISIBILITY_CXXFLAGS])
+AX_CHECK_COMPILE_FLAG([-Wno-override-init], [WNO_OVERRIDE_INIT="-Wno-override-init"]) # gcc
+AX_CHECK_COMPILE_FLAG([-Wno-initializer-overrides], [WNO_OVERRIDE_INIT="-Wno-initializer-overrides"]) # clang
+AC_SUBST([WNO_OVERRIDE_INIT])
+
dnl
dnl Optional flags, check for compiler support
dnl
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])
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]
)
;;
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_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"])
AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"])
+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"],
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 BSD platforms, due to the nature of the
dnl project. Even then there's a notable issue as described in the project README
if test "x$pthread_stubs_possible" = xyes; then
PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs >= 0.4)
- AC_SUBST(PTHREADSTUBS_CFLAGS)
- AC_SUBST(PTHREADSTUBS_LIBS)
fi
dnl SELinux awareness.
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="auto"])
-
-PKG_CHECK_MODULES(LIBUNWIND, libunwind, [HAVE_LIBUNWIND=yes], [HAVE_LIBUNWIND=no])
-if test "x$LIBUNWIND" = "xauto"; then
- LIBUNWIND="$HAVE_LIBUNWIND"
-fi
+ [LIBUNWIND="$HAVE_LIBUNWIND"])
if test "x$LIBUNWIND" = "xyes"; then
- if test "x$HAVE_LIBUNWIND" != "xyes"; then
- AC_MSG_ERROR([libunwind requested but not installed.])
- fi
+ PKG_CHECK_MODULES(LIBUNWIND, libunwind)
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],
[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_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"])
"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
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
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() {
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
+
+PKG_CHECK_EXISTS([wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED], [have_wayland_protocols=yes], [have_wayland_protocols=no])
+if test "x$have_wayland_protocols" = xyes; then
+ ac_wayland_protocols_pkgdatadir=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols`
+fi
+AC_SUBST(WAYLAND_PROTOCOLS_DATADIR, $ac_wayland_protocols_pkgdatadir)
+
+# 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
+ if test "x$have_wayland_protocols" = xno; then
+ AC_MSG_ERROR([wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED 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
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
# 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
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
xi915)
require_libdrm "i915"
HAVE_I915_DRI=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])
;;
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"
[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])
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
;;
xradeon)
require_libdrm "radv"
PKG_CHECK_MODULES([AMDGPU], [libdrm >= $LIBDRM_AMDGPU_REQUIRED libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
radeon_llvm_check $LLVM_REQUIRED_RADV "radv"
+ require_x11_dri3 "radv"
HAVE_RADEON_VULKAN=yes
;;
*)
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
- PKG_CHECK_EXISTS([vdpau >= $VDPAU_REQUIRED], [enable_vdpau=yes], [enable_vdpau=no])
+ 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_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; 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
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
- 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"
fi
AM_CONDITIONAL(HAVE_ST_VDPAU, test "x$enable_vdpau" = xyes)
-if test "x$enable_omx" = xyes; then
- PKG_CHECK_MODULES([OMX], [libomxil-bellagio >= $LIBOMXIL_BELLAGIO_REQUIRED])
- gallium_st="$gallium_st omx"
+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_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([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
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
[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 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)
xswr)
llvm_require_version $LLVM_REQUIRED_SWR "swr"
- 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 "C++11" "__cplusplus >= 201103L" \
+ ",-std=c++11" \
+ SWR_CXX11_CXXFLAGS
+ AC_SUBST([SWR_CXX11_CXXFLAGS])
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
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])
;;
+ 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"
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)
+
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 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
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"
- 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.
+ if test $LLVM_VERSION_MAJOR -lt 4 -o "`$LLVM_CONFIG --shared-mode ${LLVM_COMPONENTS}`" = static; then
+ 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
fi
else
AC_MSG_WARN([Building mesa with statically linked LLVM may cause compilation issues])
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 \
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)
[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/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/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/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/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/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/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 ""
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 " HUD lmsensors: yes"
fi
+echo ""
+if test "x$HAVE_GALLIUM_SWR" != x; then
+ echo " SWR archs: $swr_archs"
+fi
+
dnl Libraries
echo ""
echo " Shared libs: $enable_shared"
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