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)