X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=configure.ac;h=5c460f43d579910195bfd1d9bed29898f98219e5;hb=108250197996d76fbfe4ab437a696862d9a1971d;hp=bc9a9e48ddb02ff7f6b3980264fd77f82742bfd1;hpb=b82bd31c54cc91b972a027492fa75b13cd9c7267;p=mesa.git diff --git a/configure.ac b/configure.ac index bc9a9e48ddb..5c460f43d57 100644 --- a/configure.ac +++ b/configure.ac @@ -72,20 +72,18 @@ AC_SUBST([OPENCL_VERSION]) # 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_REQUIRED=2.4.75 LIBDRM_RADEON_REQUIRED=2.4.71 -LIBDRM_AMDGPU_REQUIRED=2.4.63 +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.8 -DRI3PROTO_REQUIRED=1.0 -PRESENTPROTO_REQUIRED=1.0 GLPROTO_REQUIRED=1.4.14 LIBOMXIL_BELLAGIO_REQUIRED=0.0 LIBVA_REQUIRED=0.38.0 @@ -104,8 +102,8 @@ ZLIB_REQUIRED=1.2.8 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 @@ -126,7 +124,6 @@ LT_PREREQ([2.2]) 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"], @@ -272,7 +269,7 @@ DEFINES="-D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS" AC_SUBST([DEFINES]) android=no case "$host_os" in -*-android) +*-android*) android=yes ;; linux*|*-gnu*|gnu*|cygwin*) @@ -416,6 +413,20 @@ if test "x$GCC_ATOMIC_BUILTINS_SUPPORTED" = x1; then 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 +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, @@ -444,7 +455,7 @@ int main () { 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]) @@ -502,6 +513,12 @@ AC_ARG_ENABLE([profile], [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 @@ -537,6 +554,21 @@ else 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 @@ -577,7 +609,12 @@ case "$host_os" in 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]) @@ -687,7 +724,7 @@ dnl Arch/platform-specific settings 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] ) @@ -804,7 +841,7 @@ fi 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 -linux* | cygwin* | darwin* | solaris* | gnu*) +linux* | cygwin* | darwin* | solaris* | *-gnu* | gnu*) pthread_stubs_possible="no" ;; * ) @@ -813,7 +850,7 @@ linux* | cygwin* | darwin* | solaris* | gnu*) 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 @@ -908,19 +945,19 @@ llvm_add_target() { # Call this inside ` ` to get the return value. # $1 is the llvm-config command with arguments. strip_unwanted_llvm_flags() { - # Use \> (marks the end of the word) - echo " `$1`" | sed \ - -e 's/\s\+-m\S*//g' \ - -e 's/\s\+-DNDEBUG\>//g' \ - -e 's/\s\+-D_GNU_SOURCE\>//g' \ - -e 's/\s\+-pedantic\>//g' \ - -e 's/\s\+-W\S*//g' \ - -e 's/\s\+-O\S*//g' \ - -e 's/\s\+-g\S*//g' \ - -e 's/-fno-rtti\>/-Fno-rtti/g' \ - -e 's/\s\+-f\S*//g' \ - -e 's/-Fno-rtti\>/-fno-rtti/g' \ - -e 's/^ //' + echo " `$1` " | sed -E \ + -e 's/[[[:space:]]]+-m[[^[:space:]]]*//g' \ + -e 's/[[[:space:]]]+-DNDEBUG[[[:space:]]]/ /g' \ + -e 's/[[[:space:]]]+-D_GNU_SOURCE[[[:space:]]]/ /g' \ + -e 's/[[[:space:]]]+-pedantic[[[:space:]]]/ /g' \ + -e 's/[[[:space:]]]+-W[[^[:space:]]]*//g' \ + -e 's/[[[:space:]]]+-O[[^[:space:]]]*//g' \ + -e 's/[[[:space:]]]+-g[[^[:space:]]]*//g' \ + -e 's/-fno-rtti[[[:space:]]]/-Fno-rtti /g' \ + -e 's/[[[:space:]]]+-f[[^[:space:]]]*//g' \ + -e 's/-Fno-rtti[[[:space:]]]/-fno-rtti /g' \ + -e 's/^[[[:space:]]]//' \ + -e 's/[[[:space:]]]$//' } llvm_set_environment_variables() { @@ -1026,6 +1063,31 @@ AC_SUBST([LLVM_LIBS]) 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], @@ -1284,10 +1346,11 @@ dnl Libglvnd configuration 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 @@ -1303,8 +1366,11 @@ if test "x$enable_libglvnd" = xyes ; then ;; 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 @@ -1475,11 +1541,6 @@ xdri) 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 @@ -1787,12 +1848,12 @@ if test -n "$with_vulkan_drivers"; then for driver in $VULKAN_DRIVERS; do case "x$driver" in xintel) - require_libdrm "i965" + 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 @@ -2081,14 +2142,16 @@ dnl 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 @@ -2096,10 +2159,24 @@ AC_ARG_WITH([egl-platforms], fi else with_egl_platforms="" - fi]) + 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]) -if test "x$with_egl_platforms" != "x" -a "x$enable_egl" != xyes; then - AC_MSG_ERROR([cannot build egl state tracker without EGL library]) +# 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], @@ -2245,8 +2322,8 @@ require_basic_egl() { ;; *) 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 @@ -2359,10 +2436,10 @@ if test -n "$with_gallium_drivers"; then 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" \ @@ -2389,7 +2466,9 @@ if test -n "$with_gallium_drivers"; then 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]) @@ -2776,7 +2855,6 @@ dnl EGL 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 @@ -2794,6 +2872,8 @@ else echo " GBM: no" fi + echo " EGL/Vulkan/VL platforms: $egl_platforms" + # Vulkan echo "" if test "x$VULKAN_DRIVERS" != x; then @@ -2840,15 +2920,17 @@ echo " Static libs: $enable_static" 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