Mesa (master): configure: Add machinery for --enable-shader-cache ( and --disable-shader-cache)

Carl Worth cworth at kemper.freedesktop.org
Fri Jan 16 21:58:40 UTC 2015


Module: Mesa
Branch: master
Commit: 59216f53ecb3076b64a0e55856382029919ba738
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=59216f53ecb3076b64a0e55856382029919ba738

Author: Carl Worth <cworth at cworth.org>
Date:   Wed Jan 14 15:53:00 2015 -0800

configure: Add machinery for --enable-shader-cache (and --disable-shader-cache)

We don't actually have the code for the shader cache just yet, but
this configure machinery puts everything in place so that the shader
cache can be optionally compiled in.

Specifically, if the user passes no option (neither
--disable-shader-cache, nor --enable-shader-cache), then this feature
will be automatically detected based on the presence of a usable SHA-1
library. If no suitable library can be found, then the shader cache
will be automatically disabled, (and reported in the final output from
configure).

The user can force the shader-cache feature to not be compiled, (even
if a SHA-1 library is detected), by passing
--disable-shader-cache. This will prevent the compiled Mesa libraries
from depending on any library for SHA-1 implementation.

Finally, the user can also force the shader cache on with
--enable-shader-cache. This will cause configure to trigger a fatal
error if no sutiable SHA-1 implementation can be found for the
shader-cache feature.

Bug fix by José Fonseca <jfonseca at vmware.com>: Fix to put conditional
assignment in Makefile.am, not Makefile.sources to avoid breaking
scons build.

Note: As recommended by José, with this commit the scons build will
not compile any of the SHA-1-using code. This is waiting for someone
to write SConstruct detection of the available SHA-1 libraries, (and
set the appropriate HAVE_SHA1_* variables).

Reviewed-by: Matt Turner <mattst88 at gmail.com>

---

 configure.ac              |   23 ++++++++++++++++++++++-
 src/util/Makefile.am      |    4 ++--
 src/util/Makefile.sources |    2 +-
 src/util/SConscript       |    5 +++++
 4 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/configure.ac b/configure.ac
index 5b867de..a4c5c74 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1043,11 +1043,26 @@ if test "x$with_sha1" = xlibcrypto; then
 	fi
 fi
 AC_MSG_CHECKING([for SHA1 implementation])
-AM_CONDITIONAL([HAVE_SHA1], [test x$with_sha1 != x])
 AC_MSG_RESULT([$with_sha1])
 AC_SUBST(SHA1_LIBS)
 AC_SUBST(SHA1_CFLAGS)
 
+# Allow user to configure out the shader-cache feature
+AC_ARG_ENABLE([shader-cache],
+    AS_HELP_STRING([--disable-shader-cache], [Disable binary shader cache]),
+    [enable_shader_cache="$enableval"],
+    [if test "x$with_sha1" != "x"; then
+        enable_shader_cache=yes
+     else
+        enable_shader_cache=no
+     fi])
+if test "x$with_sha1" = "x"; then
+    if test "x$enable_shader_cache" = "xyes"; 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])
+
 # Check for libdrm
 PKG_CHECK_MODULES([LIBDRM], [libdrm >= $LIBDRM_REQUIRED],
                   [have_libdrm=yes], [have_libdrm=no])
@@ -2490,6 +2505,12 @@ else
     echo "        Gallium:         no"
 fi
 
+dnl Shader cache
+echo ""
+echo "        Shader cache:    $enable_shader_cache"
+if test "x$enable_shader_cache" = "xyes"; then
+    echo "        With SHA1 from:  $with_sha1"
+fi
 
 dnl Libraries
 echo ""
diff --git a/src/util/Makefile.am b/src/util/Makefile.am
index 03b619e..7512138 100644
--- a/src/util/Makefile.am
+++ b/src/util/Makefile.am
@@ -38,8 +38,8 @@ libmesautil_la_SOURCES = \
 	$(MESA_UTIL_FILES) \
 	$(MESA_UTIL_GENERATED_FILES)
 
-if HAVE_SHA1
-libmesautil_la_SOURCES += $(MESA_UTIL_SHA1_FILES)
+if ENABLE_SHADER_CACHE
+libmesautil_la_SOURCES += $(MESA_UTIL_SHADER_CACHE_FILES)
 endif
 
 libmesautil_la_LIBADD = $(SHA1_LIBS)
diff --git a/src/util/Makefile.sources b/src/util/Makefile.sources
index 4e54c74..52ae5cc 100644
--- a/src/util/Makefile.sources
+++ b/src/util/Makefile.sources
@@ -1,4 +1,4 @@
-MESA_UTIL_SHA1_FILES := \
+MESA_UTIL_SHADER_CACHE_FILES := \
 	sha1.c \
 	sha1.h
 
diff --git a/src/util/SConscript b/src/util/SConscript
index 34b9a2d..28fedd8 100644
--- a/src/util/SConscript
+++ b/src/util/SConscript
@@ -29,6 +29,11 @@ mesautil_sources = (
     source_lists['MESA_UTIL_GENERATED_FILES']
 )
 
+# XXX We don't yet have scons support for detecting any of the various
+# HAVE_SHA1_* definitions, so for now simply disable the shader cache.
+if False:
+    mesautil_sources += source_lists['MESA_UTIL_SHADER_CACHE_FILES']
+
 mesautil = env.ConvenienceLibrary(
     target = 'mesautil',
     source = mesautil_sources,




More information about the mesa-commit mailing list