X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=configure.ac;h=2573e0da57ee1baf5017d2fc86cbe7fd4bd9508a;hb=486091bc00ea06f996910885bad080ce7f591c59;hp=875c47fcd43a29e6c5d5a87c0bda641fc9d205e0;hpb=1db4ec05462914096b1f243e9b2af7e71cf38622;p=mesa.git diff --git a/configure.ac b/configure.ac index 875c47fcd43..2573e0da57e 100644 --- a/configure.ac +++ b/configure.ac @@ -74,11 +74,10 @@ AC_SUBST([OPENCL_VERSION]) # in the first entry. LIBDRM_REQUIRED=2.4.75 LIBDRM_RADEON_REQUIRED=2.4.71 -LIBDRM_AMDGPU_REQUIRED=2.4.91 +LIBDRM_AMDGPU_REQUIRED=2.4.95 LIBDRM_INTEL_REQUIRED=2.4.75 LIBDRM_NVVIEUX_REQUIRED=2.4.66 LIBDRM_NOUVEAU_REQUIRED=2.4.66 -LIBDRM_FREEDRENO_REQUIRED=2.4.92 LIBDRM_ETNAVIV_REQUIRED=2.4.89 LIBDRM_VC4_REQUIRED=2.4.89 @@ -90,7 +89,7 @@ LIBOMXIL_TIZONIA_REQUIRED=0.10.0 LIBVA_REQUIRED=0.39.0 VDPAU_REQUIRED=1.1 WAYLAND_REQUIRED=1.11 -WAYLAND_EGL_REQUIRED=1.15 +WAYLAND_EGL_BACKEND_REQUIRED=3 WAYLAND_PROTOCOLS_REQUIRED=1.8 XCB_REQUIRED=1.9.3 XCBDRI2_REQUIRED=1.8 @@ -108,9 +107,9 @@ dnl LLVM versions LLVM_REQUIRED_GALLIUM=3.3.0 LLVM_REQUIRED_OPENCL=3.9.0 LLVM_REQUIRED_R600=3.9.0 -LLVM_REQUIRED_RADEONSI=5.0.0 -LLVM_REQUIRED_RADV=5.0.0 -LLVM_REQUIRED_SWR=4.0.0 +LLVM_REQUIRED_RADEONSI=6.0.0 +LLVM_REQUIRED_RADV=6.0.0 +LLVM_REQUIRED_SWR=6.0.0 dnl Check for progs AC_PROG_CPP @@ -125,7 +124,8 @@ AC_PROG_GREP AC_PROG_NM AM_PROG_AS AX_CHECK_GNU_MAKE -AC_CHECK_PROGS([PYTHON2], [python2.7 python2 python]) +AM_PATH_PYTHON([2.7],, [AM_PATH_PYTHON([3.4],, [:])]) + AC_PROG_SED AC_PROG_MKDIR_P @@ -157,7 +157,7 @@ fi AX_CHECK_PYTHON_MAKO_MODULE($PYTHON_MAKO_REQUIRED) -if test -z "$PYTHON2"; then +if test "$PYTHON" = ":"; then if test ! -f "$srcdir/src/util/format_srgb.c"; then AC_MSG_ERROR([Python not found - unable to generate sources]) fi @@ -295,6 +295,12 @@ esac AM_CONDITIONAL(HAVE_ANDROID, test "x$android" = xyes) +# Toggle Werror since at some point clang started treating unknown -W +# flags as warnings, succeeding with the build, yet issuing an annoying +# warning. +save_CFLAGS="$CFLAGS" +export CFLAGS="$CFLAGS -Werror" + dnl dnl Check compiler flags dnl @@ -302,10 +308,19 @@ AX_CHECK_COMPILE_FLAG([-Wall], [CFLAGS="$CFLAGS 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"]) +dnl Dylan Baker: gcc and clang always accepr -Wno-*, hence check for the original warning, then set the no-* flag +AX_CHECK_COMPILE_FLAG([-Wmissing-field-initializers], [CFLAGS="$CFLAGS -Wno-missing-field-initializers"]) +AX_CHECK_COMPILE_FLAG([-Wformat-truncation], [CFLAGS="$CFLAGS -Wno-format-truncation"]) 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"]) +CFLAGS="$save_CFLAGS" + +# Toggle Werror since at some point clang started treating unknown -W +# flags as warnings, succeeding with the build, yet issuing an annoying +# warning. dnl dnl Check C++ compiler flags dnl @@ -314,6 +329,8 @@ AX_CHECK_COMPILE_FLAG([-Wall], [CXXFLAGS="$CXXFL 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"]) +AX_CHECK_COMPILE_FLAG([-Wmissing-field-initializers], [CXXFLAGS="$CXXFLAGS -Wno-missing-field-initializers"]) +AX_CHECK_COMPILE_FLAG([-Wformat-truncation], [CXXFLAGS="$CXXFLAGS -Wno-format-truncation"]) AC_LANG_POP([C++]) # Flags to help ensure that certain portions of the code -- and only those @@ -445,7 +462,8 @@ int main() { struct { uint64_t *v; } x; - return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE); + return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE) & + (int)__atomic_add_fetch(x.v, (uint64_t)1, __ATOMIC_ACQ_REL); }]])], GCC_ATOMIC_BUILTINS_SUPPORTED=yes, GCC_ATOMIC_BUILTINS_SUPPORTED=no) dnl If that didn't work, we try linking with -latomic, which is needed on some @@ -459,7 +477,8 @@ if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" != xyes; then struct { uint64_t *v; } x; - return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE); + return (int)__atomic_load_n(x.v, __ATOMIC_ACQUIRE) & + (int)__atomic_add_fetch(x.v, (uint64_t)1, __ATOMIC_ACQ_REL); }]])], GCC_ATOMIC_BUILTINS_SUPPORTED=yes LIBATOMIC_LIBS="-latomic", GCC_ATOMIC_BUILTINS_SUPPORTED=no) LDFLAGS=$save_LDFLAGS @@ -761,21 +780,6 @@ esac AC_SUBST([LIB_EXT]) -dnl -dnl potentially-infringing-but-nobody-knows-for-sure stuff -dnl -AC_ARG_ENABLE([texture-float], - [AS_HELP_STRING([--enable-texture-float], - [enable floating-point textures and renderbuffers @<:@default=disabled@:>@])], - [enable_texture_float="$enableval"], - [enable_texture_float=no] -) -if test "x$enable_texture_float" = xyes; then - AC_MSG_WARN([Floating-point textures enabled.]) - AC_MSG_WARN([Please consult docs/patents.txt with your lawyer before building Mesa.]) - DEFINES="$DEFINES -DTEXTURE_FLOAT_ENABLED" -fi - dnl dnl Arch/platform-specific settings dnl @@ -881,6 +885,7 @@ AC_HEADER_MAJOR AC_CHECK_HEADER([xlocale.h], [DEFINES="$DEFINES -DHAVE_XLOCALE_H"]) AC_CHECK_HEADER([sys/sysctl.h], [DEFINES="$DEFINES -DHAVE_SYS_SYSCTL_H"]) AC_CHECK_HEADERS([endian.h]) +AC_CHECK_HEADER([dlfcn.h], [DEFINES="$DEFINES -DHAVE_DLFCN_H"]) AC_CHECK_FUNC([strtof], [DEFINES="$DEFINES -DHAVE_STRTOF"]) AC_CHECK_FUNC([mkostemp], [DEFINES="$DEFINES -DHAVE_MKOSTEMP"]) AC_CHECK_FUNC([timespec_get], [DEFINES="$DEFINES -DHAVE_TIMESPEC_GET"]) @@ -973,6 +978,22 @@ if test "x$pthread_stubs_possible" = xyes; then PKG_CHECK_MODULES(PTHREADSTUBS, pthread-stubs >= 0.4) fi +save_LIBS="$LIBS" +LIBS="$PTHREAD_LIBS" +AC_MSG_CHECKING(whether pthread_setaffinity_np is supported) +AC_LINK_IFELSE([AC_LANG_SOURCE([[ + #define _GNU_SOURCE + #include + int main() { + void *a = (void*) &pthread_setaffinity_np; + long b = (long) a; + return (int) b; + }]])], + [DEFINES="$DEFINES -DHAVE_PTHREAD_SETAFFINITY"]; + AC_MSG_RESULT([yes]), + AC_MSG_RESULT([no])) +LIBS="$save_LIBS" + dnl Check for futex for fast inline simple_mtx_t. AC_CHECK_HEADER([linux/futex.h], [DEFINES="$DEFINES -DHAVE_LINUX_FUTEX_H"]) @@ -1423,6 +1444,7 @@ 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_opengl" = xyes -o \ "x$enable_gles1" = xyes -o \ "x$enable_gles2" = xyes) @@ -1511,15 +1533,15 @@ fi AC_ARG_WITH([gl-lib-name], [AS_HELP_STRING([--with-gl-lib-name@<:@=NAME@:>@], [specify GL library name @<:@default=GL@:>@])], - [GL_LIB=$withval], - [GL_LIB="$DEFAULT_GL_LIB_NAME"]) + [AC_MSG_ERROR([--with-gl-lib-name is no longer supported. Rename the library manually if needed.])], + []) AC_ARG_WITH([osmesa-lib-name], [AS_HELP_STRING([--with-osmesa-lib-name@<:@=NAME@:>@], [specify OSMesa library name @<:@default=OSMesa@:>@])], - [OSMESA_LIB=$withval], - [OSMESA_LIB=OSMesa]) -AS_IF([test "x$GL_LIB" = xyes], [GL_LIB="$DEFAULT_GL_LIB_NAME"]) -AS_IF([test "x$OSMESA_LIB" = xyes], [OSMESA_LIB=OSMesa]) + [AC_MSG_ERROR([--with-osmesa-lib-name is no longer supported. Rename the library manually if needed.])], + []) +GL_LIB="$DEFAULT_GL_LIB_NAME" +OSMESA_LIB=OSMesa dnl dnl Mangled Mesa support @@ -1531,6 +1553,9 @@ AC_ARG_ENABLE([mangling], [enable_mangling=no] ) if test "x${enable_mangling}" = "xyes" ; then + if test "x$enable_libglvnd" = xyes; then + AC_MSG_ERROR([Conflicting options --enable-mangling and --enable-libglvnd.]) + fi DEFINES="${DEFINES} -DUSE_MGL_NAMESPACE" GL_LIB="Mangled${GL_LIB}" OSMESA_LIB="Mangled${OSMESA_LIB}" @@ -1538,6 +1563,15 @@ fi AC_SUBST([GL_LIB]) AC_SUBST([OSMESA_LIB]) +dnl HACK when building glx + glvnd we ship gl.pc, despite that glvnd should do it +dnl Thus we need to use GL as a DSO name. +if test "x$enable_libglvnd" = xyes -a "x$enable_glx" != xno; then + GL_PKGCONF_LIB="GL" +else + GL_PKGCONF_LIB="$GL_LIB" +fi +AC_SUBST([GL_PKGCONF_LIB]) + # Check for libdrm PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED], [have_libdrm=yes], [have_libdrm=no]) @@ -1577,6 +1611,7 @@ AM_CONDITIONAL(HAVE_APPLEDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = x AM_CONDITIONAL(HAVE_LMSENSORS, test "x$enable_lmsensors" = xyes ) AM_CONDITIONAL(HAVE_GALLIUM_EXTRA_HUD, test "x$enable_gallium_extra_hud" = xyes ) AM_CONDITIONAL(HAVE_WINDOWSDRI, test "x$enable_dri" = xyes -a "x$dri_platform" = xwindows ) +AM_CONDITIONAL(HAVE_XLEASE, test "x$have_xlease" = xyes ) AC_ARG_ENABLE([shared-glapi], [AS_HELP_STRING([--enable-shared-glapi], @@ -1665,6 +1700,8 @@ xxlib | xgallium-xlib) xdri) # DRI-based GLX + require_dri_shared_libs_and_glapi "GLX" + # find the DRI deps for libGL dri_modules="x11 xext xdamage >= $XDAMAGE_REQUIRED xfixes x11-xcb xcb xcb-glx >= $XCBGLX_REQUIRED" @@ -1810,13 +1847,17 @@ for plat in $platforms; do PKG_CHECK_MODULES([WAYLAND_SERVER], [wayland-server >= $WAYLAND_REQUIRED]) PKG_CHECK_MODULES([WAYLAND_PROTOCOLS], [wayland-protocols >= $WAYLAND_PROTOCOLS_REQUIRED]) if test "x$enable_egl" = xyes; then - PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl >= $WAYLAND_EGL_REQUIRED]) + PKG_CHECK_MODULES([WAYLAND_EGL], [wayland-egl-backend >= $WAYLAND_EGL_BACKEND_REQUIRED]) fi WAYLAND_PROTOCOLS_DATADIR=`$PKG_CONFIG --variable=pkgdatadir wayland-protocols` PKG_CHECK_MODULES([WAYLAND_SCANNER], [wayland-scanner], WAYLAND_SCANNER=`$PKG_CONFIG --variable=wayland_scanner wayland-scanner`, WAYLAND_SCANNER='') + PKG_CHECK_EXISTS([wayland-scanner >= 1.15], + AC_SUBST(SCANNER_ARG, 'private-code'), + AC_SUBST(SCANNER_ARG, 'code')) + if test "x$WAYLAND_SCANNER" = x; then AC_PATH_PROG([WAYLAND_SCANNER], [wayland-scanner], [:]) fi @@ -1844,6 +1885,9 @@ for plat in $platforms; do android) PKG_CHECK_MODULES([ANDROID], [cutils hardware sync]) + if test -n "$with_gallium_drivers"; then + PKG_CHECK_MODULES([BACKTRACE], [backtrace]) + fi DEFINES="$DEFINES -DHAVE_ANDROID_PLATFORM" ;; @@ -1879,12 +1923,45 @@ if test x"$enable_dri3" = xyes; then fi fi + +if echo "$platforms" | grep -q 'x11' && echo "$platforms" | grep -q 'drm'; then + have_xlease=yes +else + have_xlease=no +fi + +if test x"$have_xlease" = xyes; then + randr_modules="x11-xcb xcb-randr" + PKG_CHECK_MODULES([XCB_RANDR], [$randr_modules]) + xlib_randr_modules="xrandr" + PKG_CHECK_MODULES([XLIB_RANDR], [$xlib_randr_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') +AC_ARG_ENABLE(xlib-lease, + [AS_HELP_STRING([--enable-xlib-lease] + [enable VK_acquire_xlib_display using X leases])], + [enable_xlib_lease=$enableval], [enable_xlib_lease=auto]) +case "x$enable_xlib_lease" in +xyes) + ;; +xno) + ;; +*) + if echo "$platforms" | grep -q 'x11' && echo "$platforms" | grep -q 'drm'; then + enable_xlib_lease=yes + else + enable_xlib_lease=no + fi +esac + +AM_CONDITIONAL(HAVE_XLIB_LEASE, test "x$enable_xlib_lease" = xyes) + dnl dnl More DRI setup dnl @@ -2223,13 +2300,13 @@ else have_vdpau_platform=no fi -if echo $platforms | grep -q "x11\|drm"; then +if echo $platforms | egrep -q "x11|drm"; then have_omx_platform=yes else have_omx_platform=no fi -if echo $platforms | grep -q "x11\|drm\|wayland"; then +if echo $platforms | egrep -q "x11|drm|wayland"; then have_va_platform=yes else have_va_platform=no @@ -2653,7 +2730,6 @@ if test -n "$with_gallium_drivers"; then ;; xfreedreno) HAVE_GALLIUM_FREEDRENO=yes - PKG_CHECK_MODULES([FREEDRENO], [libdrm >= $LIBDRM_FREEDRENO_REQUIRED libdrm_freedreno >= $LIBDRM_FREEDRENO_REQUIRED]) require_libdrm "freedreno" ;; xetnaviv) @@ -2768,8 +2844,8 @@ if test -n "$with_gallium_drivers"; then fi # XXX: Keep in sync with LLVM_REQUIRED_SWR -AM_CONDITIONAL(SWR_INVALID_LLVM_VERSION, test "x$LLVM_VERSION" != x4.0.0 -a \ - "x$LLVM_VERSION" != x4.0.1) +AM_CONDITIONAL(SWR_INVALID_LLVM_VERSION, test "x$LLVM_VERSION" != x6.0.0 -a \ + "x$LLVM_VERSION" != x6.0.1) if test "x$enable_llvm" = "xyes" -a "$with_gallium_drivers"; then llvm_require_version $LLVM_REQUIRED_GALLIUM "gallium" @@ -2977,7 +3053,7 @@ AC_SUBST([XVMC_MAJOR], 1) AC_SUBST([XVMC_MINOR], 0) AC_SUBST([XA_MAJOR], 2) -AC_SUBST([XA_MINOR], 4) +AC_SUBST([XA_MINOR], 5) AC_SUBST([XA_PATCH], 0) AC_SUBST([XA_VERSION], "$XA_MAJOR.$XA_MINOR.$XA_PATCH") @@ -3126,7 +3202,9 @@ AC_CONFIG_FILES([Makefile src/mesa/main/tests/Makefile src/mesa/state_tracker/tests/Makefile src/util/Makefile + src/util/tests/fast_idiv_by_const/Makefile src/util/tests/hash_table/Makefile + src/util/tests/set/Makefile src/util/tests/string_buffer/Makefile src/util/tests/vma/Makefile src/util/xmlpool/Makefile @@ -3296,7 +3374,7 @@ if test "x$enable_llvm" = xyes; then echo " LLVM_LDFLAGS: $LLVM_LDFLAGS" echo "" fi -echo " PYTHON2: $PYTHON2" +echo " PYTHON: $PYTHON" echo "" echo " Run '${MAKE-make}' to build Mesa"