configure.ac: Use new llvm_add_default_components
[mesa.git] / configure.ac
index 7e63bfa6ca001b2201f79179be1cce46168bcc93..82b9e5ff7902ba9e0ce23bc0f72b040ff6ce5663 100644 (file)
@@ -74,7 +74,7 @@ LIBDRM_AMDGPU_REQUIRED=2.4.63
 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
@@ -823,8 +823,11 @@ if test "x$ax_pthread_ok" = xno; then
 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
@@ -860,6 +863,42 @@ fi
 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],
@@ -955,9 +994,16 @@ AC_ARG_ENABLE([xa],
     [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@:>@])],
@@ -1351,7 +1397,6 @@ if test "x$with_sha1" = "x"; then
         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
@@ -1667,13 +1712,6 @@ AC_ARG_WITH([vulkan-icddir],
     [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
@@ -1755,14 +1793,6 @@ AC_SUBST([OSMESA_PC_LIB_PRIV])
 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$enable_dri" = xyes; then
         if test "x$enable_shared_glapi" = xno; then
@@ -2018,9 +2048,13 @@ AC_ARG_WITH([egl-platforms],
         "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
@@ -2060,6 +2094,7 @@ for plat in $egl_platforms; do
                ;;
 
        android)
+               PKG_CHECK_MODULES([ANDROID], [cutils hardware sync])
                ;;
 
        *)
@@ -2167,10 +2202,12 @@ if test "x$enable_gallium_llvm" = xauto; then
     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
@@ -2205,11 +2242,7 @@ if test "x$enable_gallium_llvm" = xyes || test "x$HAVE_RADEON_VULKAN" = xyes; th
             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"
@@ -2300,22 +2333,21 @@ gallium_require_llvm() {
     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() {
@@ -2431,7 +2463,7 @@ if test -n "$with_gallium_drivers"; then
             PKG_CHECK_MODULES([AMDGPU], [libdrm_amdgpu >= $LIBDRM_AMDGPU_REQUIRED])
             require_libdrm "radeonsi"
             radeon_gallium_llvm_check "radeonsi" "3" "6" "0"
-            require_egl_drm "radeonsi"
+            require_basic_egl "radeonsi"
             ;;
         xnouveau)
             HAVE_GALLIUM_NOUVEAU=yes
@@ -2482,7 +2514,7 @@ if test -n "$with_gallium_drivers"; then
         xvirgl)
             HAVE_GALLIUM_VIRGL=yes
             require_libdrm "virgl"
-            require_egl_drm "virgl"
+            require_basic_egl "virgl"
             ;;
         *)
             AC_MSG_ERROR([Unknown Gallium driver: $driver])
@@ -2646,8 +2678,6 @@ AC_SUBST([XA_MINOR], $XA_MINOR)
 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)])],
@@ -2687,7 +2717,6 @@ dnl Substitute the config
 AC_CONFIG_FILES([Makefile
                src/Makefile
                src/amd/Makefile
-               src/amd/common/Makefile
                src/amd/vulkan/Makefile
                src/compiler/Makefile
                src/egl/Makefile
@@ -2870,6 +2899,11 @@ if test "$enable_egl" = yes; then
 
     echo "        EGL drivers:    $egl_drivers"
 fi
+if test "x$enable_gbm" = xyes; then
+    echo "        GBM:             yes"
+else
+    echo "        GBM:             no"
+fi
 
 # Vulkan
 echo ""