#!/usr/bin/make -f # -*- makefile -*- # Uncomment this to turn on verbose mode. #export DH_VERBOSE=1 # These are used for cross-compiling and for saving the configure script # from having to guess our platform (since we know it already) DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH) DEB_TEST_TARGET ?= Experimental ifeq (,$(DISTRIBUTION)) DISTRIBUTION := $(shell dpkg-parsechangelog --format rfc822 | sed -ne "s/^Distribution: //p") endif ifneq ($(DISTRIBUTION),$(findstring $(DISTRIBUTION),"squeeze wheezy lucid maverick natty oneiric precise quantal raring sid-oracle")) DISTRIBUTION := sid endif DEB_BUILD_NAME ?= $(DISTRIBUTION)-$(DEB_BUILD_ARCH) ifeq (,$(DISPLAY)) TESTMAKE=xvfb-run -a -n 1 -s "-screen 0 1280x1024x24 -dpi 96" $(MAKE) else TESTMAKE=$(MAKE) endif ifneq (,$(findstring $(DISTRIBUTION),"lucid")) # excludes tests requiring unittest2 not available on lucid TESTMAKE += ARGS="-E PyQgsRectangle" endif QGIS_MAJOR=$(shell sed -ne 's/SET(CPACK_PACKAGE_VERSION_MAJOR "\([0-9]*\)")/\1/p' CMakeLists.txt) QGIS_MINOR=$(shell sed -ne 's/SET(CPACK_PACKAGE_VERSION_MINOR "\([0-9]*\)")/\1/p' CMakeLists.txt) QGIS_PATCH=$(shell sed -ne 's/SET(CPACK_PACKAGE_VERSION_PATCH "\([0-9]*\)")/\1/p' CMakeLists.txt) QGIS_ABI=$(QGIS_MAJOR).$(QGIS_MINOR).$(QGIS_PATCH) GRASS_ABI=$(subst .,,$(shell pkg-config --modversion grass|sed -e "s/\.//g" -e "s/RC/-/")) GRASS=grass$(subst .,,$(shell pkg-config --modversion grass|cut -d. -f1,2)) CMAKE_OPTS := \ -D BUILDNAME=$(DEB_BUILD_NAME) \ -D GRASS_PREFIX=/usr/lib/grass64 \ -D CMAKE_INSTALL_PREFIX=/usr \ -D BINDINGS_GLOBAL_INSTALL=TRUE \ -D PEDANTIC=TRUE \ -D WITH_QSPATIALITE=TRUE \ -D WITH_MAPSERVER=TRUE \ -D MAPSERVER_SKIP_ECW=TRUE \ -D QGIS_CGIBIN_SUBDIR=/usr/lib/cgi-bin \ -D WITH_APIDOC=TRUE MAKEFLAGS += VERBOSE=YES ifneq (,$(findstring $(DISTRIBUTION),"squeeze lucid")) CMAKE_OPTS += -D WITH_STAGED_PLUGINS=FALSE endif ifeq (,$(findstring $(DISTRIBUTION),"squeeze lucid maverick natty oneiric")) DEB_BUILD_MULTIARCH ?= $(shell dpkg-architecture -qDEB_BUILD_MULTIARCH) QT_PLUGIN_DIR = usr/lib/$(DEB_BUILD_MULTIARCH)/qt4/plugins else QT_PLUGIN_DIR = usr/lib/qt4/plugins endif ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) MAKEFLAGS += -j$(NUMJOBS) endif ifneq (,$(findstring $(DISTRIBUTION),"squeeze wheezy sid lucid maverick natty oneiric precise raring")) CMAKE_OPTS += -D WITH_PYSPATIALITE=TRUE endif ifneq (,$(findstring $(DISTRIBUTION),"squeeze lucid maverick natty oneiric")) CMAKE_OPTS += -D WITH_INTERNAL_SPATIALITE=TRUE endif ifneq (,$(findstring $(DISTRIBUTION),"squeeze lucid maverick natty oneiric sid")) CMAKE_OPTS += -D WITH_GLOBE=FALSE else CMAKE_OPTS += -D WITH_GLOBE=TRUE endif ifneq (,$(findstring $(DISTRIBUTION),"raring sid sid-oracle")) CMAKE_OPTS += -D PYTHON_LIBRARY=/usr/lib/$(DEB_BUILD_MULTIARCH)/libpython2.7.so endif ifneq (,$(findstring -oracle,$(DISTRIBUTION))) CMAKE_OPTS += -D WITH_ORACLE=TRUE endif ifneq (,$(findstring $(DISTRIBUTION),"wheezy sid")) CPPFLAGS := $(shell dpkg-buildflags --get CPPFLAGS) CFLAGS := $(shell dpkg-buildflags --get CFLAGS) $(CPPFLAGS) CXXFLAGS := $(shell dpkg-buildflags --get CXXFLAGS) $(CPPFLAGS) LDFLAGS := $(shell dpkg-buildflags --get LDFLAGS) endif ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS))) CFLAGS += -O0 CXXFLAGS += -O0 else CFLAGS += -O2 CXXFLAGS += -O2 endif ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS))) INSTALL_PROGRAM += -s endif ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS))) CMAKE_OPTS += -D CMAKE_BUILD_TYPE=Debug endif ifneq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) CMAKE_OPTS += -D ENABLE_TESTS=FALSE endif ifneq (,$(findstring profile,$(DEB_BUILD_OPTIONS))) CFLAGS += -pg CXXFLAGS += -pg LDFLAGS += -pg endif define gentemplate $(2): $(1) sed \ -e "s/{DEB_BUILD_GNU_TYPE}/$(DEB_BUILD_GNU_TYPE)/g" \ -e "s#{QT_PLUGIN_DIR}#$(QT_PLUGIN_DIR)#g" \ -e "s/{QGIS_ABI}/$(QGIS_ABI)/g" \ -e "s/{GRASS}/$(GRASS)/g" \ -e "s/{GRASS_ABI}/$(GRASS_ABI)/g" $$^ >$$@ templates:: $(2) templateclean:: rm -f $(2) endef $(foreach t,$(wildcard debian/*.in debian/*.$(DISTRIBUTION)),$(eval $(call gentemplate,$(t),$(basename $(t))))) $(foreach t,$(wildcard debian/*{QGIS_ABI}*),$(eval $(call gentemplate,$(t),$(subst {QGIS_ABI},$(QGIS_ABI),$(t))))) debian/build/CMakeCache.txt: templates CMakeLists.txt dh_testdir # Add here commands to configure the package. [ -d debian/build ] || mkdir debian/build [ ! -e CMakeCache.txt ] || rm CMakeCache.txt cd debian/build; CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" cmake $(CMAKE_OPTS) ../.. build: build-stamp build-stamp: debian/build/CMakeCache.txt dh_testdir ifneq (,$(findstring $(DISTRIBUTION),"squeeze lucid")) perl -0777 -i.bak -pe 's/^%Module\(name=(.*),\s*version=(\d+),\s*keyword_arguments="Optional"\s*\)/%Module $$1 $$2/m;' python/core/core.sip python/gui/gui.sip python/analysis/analysis.sip python/analysis/network/networkanalysis.sip endif # Add here commands to compile the package. $(MAKE) -C debian/build ifneq (,$(findstring $(DISTRIBUTION),"squeeze lucid")) for i in python/core/core.sip python/gui/gui.sip python/analysis/analysis.sip python/analysis/network/networkanalysis.sip; do mv $$i.bak $$i; done endif ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) # Code to run the package test suite - and ignore the outcome for now -LD_LIBRARY_PATH=$(PWD)/debian/build/output/lib:$(LD_LIBRARY_PATH) $(TESTMAKE) -C debian/build $(DEB_TEST_TARGET) else @echo Skipping tests. endif touch $@ cleantemplates: $(MAKE) -f debian/rules templateclean $(MAKE) -f debian/rules debian/control debian/compat clean: cleantemplates dh_testdir dh_testroot rm -f build-stamp rm -f i18n/*.qm rm -rf debian/tmp # Add here commands to clean up after the build process. rm -rf debian/build dh_clean install: build dh_testdir dh_testroot dh_prep dh_installdirs # Add here commands to install the package into debian/tmp. $(MAKE) -C debian/build install DESTDIR=$(CURDIR)/debian/tmp # remove unwanted files ! [ -f debian/tmp/usr/share/qgis/doc/api/installdox ] || rm debian/tmp/usr/share/qgis/doc/api/installdox ! [ -f debian/tmp/usr/share/qgis/doc/api/jquery.js ] || ln -sf /usr/share/javascript/jquery/jquery.js debian/tmp/usr/share/qgis/doc/api/jquery.js # Install menu pixmap install -o root -g root -d $(CURDIR)/debian/tmp/usr/share/pixmaps install -o root -g root -m 644 $(CURDIR)/images/icons/qgis-icon.png $(CURDIR)/debian/tmp/usr/share/pixmaps install -o root -g root -m 644 $(CURDIR)/images/icons/qgis-mime-icon.png $(CURDIR)/debian/tmp/usr/share/pixmaps install -o root -g root -m 644 $(CURDIR)/debian/qgis-icon.xpm $(CURDIR)/debian/tmp/usr/share/pixmaps # Build architecture-independent files here. binary-indep: build install # We have nothing to do by default. # Build architecture-dependent files here. binary-arch: build install dh_testdir dh_testroot dh_installchangelogs ChangeLog dh_installdocs dh_installexamples dh_install --sourcedir=debian/tmp install -o root -g root -m 755 -d $(CURDIR)/debian/qgis/usr/bin install -o root -g root -m 755 $(CURDIR)/debian/tmp/usr/bin/qgis $(CURDIR)/debian/qgis/usr/bin install -o root -g root -m 755 $(CURDIR)/debian/tmp/usr/bin/qbrowser $(CURDIR)/debian/qgis/usr/bin install -o root -g root -m 755 -d $(CURDIR)/debian/qgis-plugin-grass/usr/bin install -o root -g root -m 755 $(CURDIR)/debian/qgis.sh $(CURDIR)/debian/qgis-plugin-grass/usr/bin/qgis install -o root -g root -m 755 $(CURDIR)/debian/qgis.sh $(CURDIR)/debian/qgis-plugin-grass/usr/bin/qbrowser ifneq ($(DISTRIBUTION),$(findstring $(DISTRIBUTION),"natty oneiric")) dh_sip endif ifneq (,$(findstring $(DISTRIBUTION),"wheezy sid quantal raring")) dh_python2 --no-guessing-versions else dh_pycentral endif dh_installmenu dh_icons dh_installman -pqgis qgis.1 qbrowser.1 dh_installmime -pqgis dh_link if which dh_lintian >/dev/null; then dh_lintian; fi dh_strip dh_compress --exclude=pdf dh_fixperms dh_makeshlibs dh_installdeb dh_shlibdeps -l/usr/lib/$(GRASS)/lib dh_gencontrol dh_md5sums dh_builddeb binary: binary-indep binary-arch .PHONY: build clean binary-indep binary-arch binary install debian/control cleantemplates templateclean