summaryrefslogtreecommitdiffstats
path: root/Configure.mk
diff options
context:
space:
mode:
authorGravatar Dirk Hohndel <dirk@hohndel.org>2013-04-23 08:09:57 -0700
committerGravatar Dirk Hohndel <dirk@hohndel.org>2013-04-23 08:09:57 -0700
commit121740db2aa85430005a0774db831b599672fb04 (patch)
treeb547065dc7999c439d3ab032262a31ebbb5f94e6 /Configure.mk
parent72ad76fc2613e4cb51f7677d760985915cd25cbf (diff)
parentb073823e3acbeb4b15c95101e9708d60cc7b2703 (diff)
downloadsubsurface-121740db2aa85430005a0774db831b599672fb04.tar.gz
Merge branch 'buildsystem-for-dirk' of http://github.com/thiagomacieira/subsurface into Qt
Diffstat (limited to 'Configure.mk')
-rw-r--r--Configure.mk168
1 files changed, 168 insertions, 0 deletions
diff --git a/Configure.mk b/Configure.mk
new file mode 100644
index 000000000..99292795a
--- /dev/null
+++ b/Configure.mk
@@ -0,0 +1,168 @@
+# -*- Makefile -*-
+# This file contains the detection rules
+all:
+
+PKGCONFIG=pkg-config
+XML2CONFIG=xml2-config
+XSLCONFIG=xslt-config
+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
+# First deal with the cross compile environment and with Mac.
+# For the native case, Linus doesn't want to trust pkg-config given
+# how young libdivecomputer still is - so we check the typical
+# subdirectories of /usr/local and /usr and then we give up. You can
+# override by simply setting it here
+#
+ifeq ($(CC), i686-w64-mingw32-gcc)
+# ok, we are cross building for Windows
+ LIBDIVECOMPUTERINCLUDES = $(shell $(PKGCONFIG) --cflags libdivecomputer)
+ LIBDIVECOMPUTERARCHIVE = $(shell $(PKGCONFIG) --libs libdivecomputer)
+ RESFILE = packaging/windows/subsurface.res
+ LDFLAGS += -Wl,-subsystem,windows
+ LIBWINSOCK = -lwsock32
+else ifeq ($(UNAME), darwin)
+ LIBDIVECOMPUTERINCLUDES = $(shell $(PKGCONFIG) --cflags libdivecomputer)
+ LIBDIVECOMPUTERARCHIVE = $(shell $(PKGCONFIG) --libs libdivecomputer)
+else
+libdc-local := $(wildcard /usr/local/lib/libdivecomputer.a)
+libdc-local64 := $(wildcard /usr/local/lib64/libdivecomputer.a)
+libdc-usr := $(wildcard /usr/lib/libdivecomputer.a)
+libdc-usr64 := $(wildcard /usr/lib64/libdivecomputer.a)
+
+ifneq ($(LIBDCDEVEL),)
+ LIBDIVECOMPUTERDIR = ../libdivecomputer
+ LIBDIVECOMPUTERINCLUDES = -I$(LIBDIVECOMPUTERDIR)/include
+ LIBDIVECOMPUTERARCHIVE = $(LIBDIVECOMPUTERDIR)/src/.libs/libdivecomputer.a
+else ifneq ($(strip $(libdc-local)),)
+ LIBDIVECOMPUTERDIR = /usr/local
+ LIBDIVECOMPUTERINCLUDES = -I$(LIBDIVECOMPUTERDIR)/include
+ LIBDIVECOMPUTERARCHIVE = $(LIBDIVECOMPUTERDIR)/lib/libdivecomputer.a
+else ifneq ($(strip $(libdc-local64)),)
+ LIBDIVECOMPUTERDIR = /usr/local
+ LIBDIVECOMPUTERINCLUDES = -I$(LIBDIVECOMPUTERDIR)/include
+ LIBDIVECOMPUTERARCHIVE = $(LIBDIVECOMPUTERDIR)/lib64/libdivecomputer.a
+else ifneq ($(strip $(libdc-usr)),)
+ LIBDIVECOMPUTERDIR = /usr
+ LIBDIVECOMPUTERINCLUDES = -I$(LIBDIVECOMPUTERDIR)/include
+ LIBDIVECOMPUTERARCHIVE = $(LIBDIVECOMPUTERDIR)/lib/libdivecomputer.a
+else ifneq ($(strip $(libdc-usr64)),)
+ LIBDIVECOMPUTERDIR = /usr
+ LIBDIVECOMPUTERINCLUDES = -I$(LIBDIVECOMPUTERDIR)/include
+ LIBDIVECOMPUTERARCHIVE = $(LIBDIVECOMPUTERDIR)/lib64/libdivecomputer.a
+else
+$(error Cannot find libdivecomputer - please edit Makefile)
+endif
+endif
+
+# Libusb-1.0 is only required if libdivecomputer was built with it.
+# And libdivecomputer is only built with it if libusb-1.0 is
+# installed. So get libusb if it exists, but don't complain
+# about it if it doesn't.
+LIBUSB = $(shell $(PKGCONFIG) --libs libusb-1.0 2> /dev/null)
+
+# Use qmake to find out which Qt version we are building for.
+QT_VERSION_MAJOR = $(shell $(QMAKE) -query QT_VERSION | cut -d. -f1)
+ifeq ($(QT_VERSION_MAJOR), 5)
+ QT_MODULES = Qt5Widgets Qt5Svg
+ QT_CORE = Qt5Core
+ QTBINDIR = $(shell $(QMAKE) -query QT_HOST_BINS)
+else
+ QT_MODULES = QtGui QtSvg
+ QT_CORE = QtCore
+ QTBINDIR = $(shell $(QMAKE) -query QT_INSTALL_BINS)
+endif
+
+# we need GLIB2CFLAGS for gettext
+QTCXXFLAGS = $(shell $(PKGCONFIG) --cflags $(QT_MODULES)) $(GLIB2CFLAGS)
+LIBQT = $(shell $(PKGCONFIG) --libs $(QT_MODULES))
+ifneq ($(filter reduce_relocations, $(shell $(PKGCONFIG) --variable qt_config $(QT_CORE))), )
+ QTCXXFLAGS += -fPIE
+endif
+MOC = $(QTBINDIR)/moc
+UIC = $(QTBINDIR)/uic
+RCC = $(QTBINDIR)/rcc
+
+LIBGTK = $(shell $(PKGCONFIG) --libs gtk+-2.0 glib-2.0)
+ifneq (,$(filter $(UNAME),linux kfreebsd gnu))
+ LIBGCONF2 = $(shell $(PKGCONFIG) --libs gconf-2.0)
+ GCONF2CFLAGS = $(shell $(PKGCONFIG) --cflags gconf-2.0)
+else ifeq ($(UNAME), darwin)
+ LIBGTK += $(shell $(PKGCONFIG) --libs gtk-mac-integration) -framework CoreFoundation -framework CoreServices
+ GTKCFLAGS += $(shell $(PKGCONFIG) --cflags gtk-mac-integration)
+ GTK_MAC_BUNDLER = ~/.local/bin/gtk-mac-bundler
+endif
+
+LIBDIVECOMPUTERCFLAGS = $(LIBDIVECOMPUTERINCLUDES)
+LIBDIVECOMPUTER = $(LIBDIVECOMPUTERARCHIVE) $(LIBUSB)
+
+LIBXML2 = $(shell $(XML2CONFIG) --libs)
+LIBXSLT = $(shell $(XSLCONFIG) --libs)
+XML2CFLAGS = $(shell $(XML2CONFIG) --cflags)
+GLIB2CFLAGS = $(shell $(PKGCONFIG) --cflags glib-2.0)
+GTKCFLAGS = $(shell $(PKGCONFIG) --cflags gtk+-2.0)
+XSLCFLAGS = $(shell $(XSLCONFIG) --cflags)
+OSMGPSMAPFLAGS += $(shell $(PKGCONFIG) --cflags osmgpsmap 2> /dev/null)
+LIBOSMGPSMAP += $(shell $(PKGCONFIG) --libs osmgpsmap 2> /dev/null)
+LIBSOUPCFLAGS = $(shell $(PKGCONFIG) --cflags libsoup-2.4)
+LIBSOUP = $(shell $(PKGCONFIG) --libs libsoup-2.4)
+
+LIBZIP = $(shell $(PKGCONFIG) --libs libzip 2> /dev/null)
+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) \\\
+ MOC = $(MOC) \\\
+ UIC = $(UIC) \\\
+ RCC = $(RCC) \\\
+ 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