QGIS/debian/rules

257 lines
8.4 KiB
Plaintext
Raw Normal View History

#!/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
2012-09-08 16:30:01 +02:00
ifeq (,$(DISTRIBUTION))
DISTRIBUTION := $(shell dpkg-parsechangelog --format rfc822 | sed -ne "s/^Distribution: //p")
endif
2013-01-29 21:07:02 +01:00
ifneq ($(DISTRIBUTION),$(findstring $(DISTRIBUTION),"squeeze wheezy lucid maverick natty oneiric precise quantal raring sid-oracle"))
2012-09-08 16:30:01 +02:00
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
2012-09-18 22:19:23 +02:00
ifneq (,$(findstring $(DISTRIBUTION),"lucid"))
# excludes tests requiring unittest2 not available on lucid
TESTMAKE += ARGS="-E PyQgsRectangle"
endif
2013-02-03 21:09:29 +01:00
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
2012-05-26 16:09:07 +02:00
MAKEFLAGS += VERBOSE=YES
2013-02-20 23:53:06 +01:00
ifneq (,$(findstring $(DISTRIBUTION),"squeeze lucid"))
CMAKE_OPTS += -D WITH_STAGED_PLUGINS=FALSE
endif
ifeq (,$(findstring $(DISTRIBUTION),"squeeze lucid maverick natty oneiric"))
2013-02-20 23:53:06 +01:00
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
2012-09-08 16:30:01 +02:00
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
2013-02-20 23:53:06 +01:00
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
MAKEFLAGS += -j$(NUMJOBS)
2012-09-08 16:30:01 +02:00
endif
2013-02-03 21:09:29 +01:00
ifneq (,$(findstring $(DISTRIBUTION),"squeeze wheezy 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"))
CMAKE_OPTS += -D WITH_GLOBE=FALSE
else
CMAKE_OPTS += -D WITH_GLOBE=TRUE
endif
2013-05-19 18:24:09 +02:00
ifneq (,$(findstring $(DISTRIBUTION),"raring sid sid-oracle"))
2013-02-20 23:53:06 +01:00
CMAKE_OPTS += -D PYTHON_LIBRARY=/usr/lib/$(DEB_BUILD_MULTIARCH)/libpython2.7.so
2013-02-03 00:48:05 +01:00
endif
2013-01-09 16:46:30 +01:00
ifneq (,$(findstring -oracle,$(DISTRIBUTION)))
CMAKE_OPTS += -D WITH_ORACLE=TRUE
endif
2012-05-26 16:09:07 +02:00
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
2012-05-26 16:09:07 +02:00
CXXFLAGS += -O0
else
CFLAGS += -O2
2012-05-26 16:09:07 +02:00
CXXFLAGS += -O2
endif
2012-05-26 16:09:07 +02:00
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
INSTALL_PROGRAM += -s
endif
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
2012-09-08 16:30:01 +02:00
CMAKE_OPTS += -D CMAKE_BUILD_TYPE=Debug
endif
ifneq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
2013-02-20 23:53:06 +01:00
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 \
2013-01-09 16:46:30 +01:00
-e "s/{DEB_BUILD_GNU_TYPE}/$(DEB_BUILD_GNU_TYPE)/g" \
2013-02-19 22:32:07 +01:00
-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" $$^ >$$@
2012-09-08 16:30:01 +02:00
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)))))
2012-09-08 16:30:01 +02:00
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
2012-05-26 16:09:07 +02:00
cd debian/build; CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" LDFLAGS="$(LDFLAGS)" cmake $(CMAKE_OPTS) ../..
build: build-stamp
build-stamp: debian/build/CMakeCache.txt
dh_testdir
# Add here commands to compile the package.
$(MAKE) -C debian/build
2011-11-16 23:11:57 +01:00
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
# Code to run the package test suite - and ignore the outcome for now
2012-09-08 16:30:01 +02:00
-LD_LIBRARY_PATH=$(PWD)/debian/build/output/lib:$(LD_LIBRARY_PATH) $(TESTMAKE) -C debian/build $(DEB_TEST_TARGET)
else
2012-09-08 16:30:01 +02:00
@echo Skipping tests.
2011-11-16 23:11:57 +01:00
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
2011-05-24 22:12:08 +02:00
# 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
! [ -f debian/tmp/usr/share/qgis/python/plugins/sextante/help/_static/jquery.js ] || ln -sf /usr/share/javascript/jquery/jquery.js debian/tmp/usr/share/qgis/python/plugins/sextante/help/_static/jquery.js
! [ -f debian/tmp/usr/share/qgis/python/helpConsole/js/jquery-1.8.2.min.js ] || ln -sf /usr/share/javascript/jquery/jquery.js debian/tmp/usr/share/qgis/python/helpConsole/js/jquery-1.8.2.min.js
ifeq (,$(findstring $(DISTRIBUTION),"squeeze lucid"))
! [ -f debian/tmp/usr/share/qgis/python/plugins/sextante/help/_static/underscore.js ] || ln -sf /usr/share/javascript/underscore/underscore.js debian/tmp/usr/share/qgis/python/plugins/sextante/help/_static/underscore.js
endif
2011-05-24 22:12:08 +02:00
# 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
2013-05-31 01:08:49 +02:00
ifneq (,$(findstring $(DISTRIBUTION),"squeeze wheezy lucid maverick precise quantal raring sid sid-oracle"))
dh_sip
endif
ifneq (,$(findstring $(DISTRIBUTION),"wheezy sid quantal raring"))
dh_python2 --no-guessing-versions
else
dh_pycentral
endif
dh_installmenu
dh_icons
2011-05-24 22:12:08 +02:00
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