aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Thiago Macieira <thiago@macieira.org>2013-04-13 09:00:15 -0700
committerGravatar Thiago Macieira <thiago@macieira.org>2013-04-23 00:06:32 -0700
commitc11ce7e1574889734fa010ad3d8379aa41720fdc (patch)
tree7663dd8996b8fd66faa22da99a56a9a1eef6baeb
parentd47b9045802f5f05dfafad982cdf4ab4b86a2c2c (diff)
downloadsubsurface-c11ce7e1574889734fa010ad3d8379aa41720fdc.tar.gz
Introduce a cache of the configuration
You may have noticed that running make is a little slow. Every time that it is loaded, it will try to detect everything again. So, instead, save the output and reload it the next time. This is implemented by adding a rule that (re-)creates the config.cache file, which is included by make. If the file doesn't exist yet, make will first run the rule which creates it, then reload itself. You can also cause it to reconfigure by running "make configure". Signed-off-by: Thiago Macieira <thiago@macieira.org>
-rw-r--r--.gitignore1
-rw-r--r--Configure.mk48
-rw-r--r--Rules.mk3
3 files changed, 52 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
index 54650bcf2..b62d8982b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -22,3 +22,4 @@ Documentation/user-manual.pdf
Documentation/user-manual.text
packaging/windows/subsurface.nsi
packaging/macos/Info.plist
+config.cache
diff --git a/Configure.mk b/Configure.mk
index f9b9e0674..fa04a44ec 100644
--- a/Configure.mk
+++ b/Configure.mk
@@ -1,5 +1,6 @@
# -*- Makefile -*-
# This file contains the detection rules
+all:
PKGCONFIG=pkg-config
XML2CONFIG=xml2-config
@@ -8,6 +9,11 @@ QMAKE=qmake
MOC=moc
UIC=uic
+CONFIGFILE = config.cache
+ifeq ($(CONFIGURING),1)
+
+# Detect the target system
+# Ask the compiler what OS it's producing files for
UNAME := $(shell $(CC) -dumpmachine 2>&1 | grep -E -o "linux|darwin|win|gnu|kfreebsd")
# find libdivecomputer
@@ -110,3 +116,45 @@ ZIPFLAGS = $(strip $(shell $(PKGCONFIG) --cflags libzip 2> /dev/null))
LIBSQLITE3 = $(shell $(PKGCONFIG) --libs sqlite3 2> /dev/null)
SQLITE3FLAGS = $(strip $(shell $(PKGCONFIG) --cflags sqlite3))
+
+# Write the configure file
+all: configure
+configure $(CONFIGURE): Configure.mk
+ @echo "\
+ CONFIGURED = 1 \\\
+ UNAME = $(UNAME) \\\
+ LIBDIVECOMPUTERDIR = $(LIBDIVECOMPUTERDIR) \\\
+ LIBDIVECOMPUTERCFLAGS = $(LIBDIVECOMPUTERCFLAGS) \\\
+ LIBDIVECOMPUTER = $(LIBDIVECOMPUTER) \\\
+ LIBQT = $(LIBQT) \\\
+ QTCXXFLAGS = $(QTCXXFLAGS) \\\
+ LIBGTK = $(LIBGTK) \\\
+ GTKCFLAGS = $(GTKCFLAGS) \\\
+ LIBGCONF2 = $(LIBGCONF2) \\\
+ GCONF2CFLAGS = $(GCONF2CFLAGS) \\\
+ GTK_MAC_BUNDLER = $(GTK_MAC_BUNDLER) \\\
+ LIBXML2 = $(LIBXML2) \\\
+ LIBXSLT = $(LIBXSLT) \\\
+ XML2CFLAGS = $(XML2CFLAGS) \\\
+ GLIB2CFLAGS = $(GLIB2CFLAGS) \\\
+ XSLCFLAGS = $(XSLCFLAGS) \\\
+ OSMGPSMAPFLAGS = $(OSMGPSMAPFLAGS) \\\
+ LIBOSMGPSMAP = $(LIBOSMGPSMAP) \\\
+ LIBSOUPCFLAGS = $(LIBSOUPCFLAGS) \\\
+ LIBSOUP = $(LIBSOUP) \\\
+ LIBZIP = $(LIBZIP) \\\
+ ZIPFLAGS = $(ZIPFLAGS) \\\
+ LIBSQLITE3 = $(LIBSQLITE3) \\\
+ SQLITE3FLAGS = $(SQLITE3FLAGS) \\\
+ " | sed 's,\\,\n,g' > $(CONFIGFILE)
+
+else
+configure $(CONFIGFILE): Configure.mk
+ @test -e $(CONFIGFILE) && echo Reconfiguring.. || echo Configuring...
+ @$(MAKE) CONFIGURING=1 configure
+ @echo Done
+
+-include $(CONFIGFILE)
+endif
+
+.PHONY: configure all
diff --git a/Rules.mk b/Rules.mk
index 59e73e13d..5374e060b 100644
--- a/Rules.mk
+++ b/Rules.mk
@@ -197,4 +197,7 @@ clean:
$(VERSION_FILE) qt-ui/*.moc qt-ui/ui_*.h
rm -rf share .dep
+confclean: clean
+ rm -f $(CONFIGFILE)
+
-include $(DEPS)