mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-24 00:47:57 -05:00
274 lines
9.6 KiB
Makefile
Executable File
274 lines
9.6 KiB
Makefile
Executable File
#!/usr/bin/make -f
|
|
# -*- makefile -*-
|
|
|
|
# Uncomment this to turn on verbose mode.
|
|
#export DH_VERBOSE=1
|
|
|
|
# This has to be exported to make some magic below work.
|
|
export DH_OPTIONS
|
|
|
|
# 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_BUILD_MULTIARCH ?= $(shell dpkg-architecture -qDEB_BUILD_MULTIARCH)
|
|
QT_PLUGIN_DIR = usr/lib/$(DEB_BUILD_MULTIARCH)/qt4/plugins
|
|
|
|
DEB_TEST_TARGET ?= Experimental
|
|
|
|
QGIS_VERSION=$(shell dpkg-parsechangelog | sed -ne 's/^Version: \(.*\)-.*/\1/p')
|
|
|
|
ifeq (,$(DISTRIBUTION))
|
|
DISTRIBUTION := $(shell dpkg-parsechangelog --format rfc822 | sed -ne "s/^Distribution: //p")
|
|
endif
|
|
|
|
ifneq ($(DISTRIBUTION),$(findstring $(DISTRIBUTION),"wheezy jessie precise trusty utopic vivid 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
|
|
|
|
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 := \
|
|
-DBUILDNAME=$(DEB_BUILD_NAME) \
|
|
-DCMAKE_VERBOSE_MAKEFILE=1 \
|
|
-DCMAKE_INSTALL_PREFIX=/usr \
|
|
-DGRASS_PREFIX=/usr/lib/grass64 \
|
|
-DBINDINGS_GLOBAL_INSTALL=TRUE \
|
|
-DPEDANTIC=TRUE \
|
|
-DWITH_QSPATIALITE=TRUE \
|
|
-DWITH_SERVER=TRUE \
|
|
-DWITH_SERVER_PLUGINS=TRUE \
|
|
-DSERVER_SKIP_ECW=TRUE \
|
|
-DQGIS_CGIBIN_SUBDIR=/usr/lib/cgi-bin \
|
|
-DWITH_APIDOC=TRUE \
|
|
-DWITH_CUSTOM_WIDGETS=TRUE \
|
|
-DWITH_GLOBE=TRUE \
|
|
-DWITH_INTERNAL_HTTPLIB2=FALSE \
|
|
-DWITH_INTERNAL_JINJA2=FALSE \
|
|
-DWITH_INTERNAL_MARKUPSAFE=FALSE \
|
|
-DWITH_INTERNAL_PYGMENTS=FALSE \
|
|
-DWITH_INTERNAL_DATEUTIL=FALSE \
|
|
-DWITH_INTERNAL_PYTZ=FALSE \
|
|
-DWITH_INTERNAL_SIX=FALSE
|
|
|
|
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
|
|
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
|
|
MAKEFLAGS += -j$(NUMJOBS)
|
|
endif
|
|
|
|
ifneq (,$(findstring $(DISTRIBUTION),"wheezy jessie sid precise"))
|
|
CMAKE_OPTS += -DWITH_PYSPATIALITE=TRUE
|
|
endif
|
|
|
|
ifneq (,$(findstring $(DISTRIBUTION),"sid sid-oracle"))
|
|
CMAKE_OPTS += -DPOSTGRES_LIBRARY=/usr/lib/$(DEB_BUILD_MULTIARCH)/libpq.so
|
|
endif
|
|
|
|
ifneq (,$(findstring $(DISTRIBUTION),"jessie trusty utopic vivid sid sid-oracle"))
|
|
CMAKE_OPTS += -DPYTHON_LIBRARY=/usr/lib/$(DEB_BUILD_MULTIARCH)/libpython2.7.so
|
|
endif
|
|
|
|
ifneq (,$(findstring -oracle,$(DISTRIBUTION)))
|
|
CMAKE_OPTS += -DWITH_ORACLE=TRUE
|
|
endif
|
|
|
|
ifneq (,$(findstring $(DISTRIBUTION),"sid"))
|
|
CMAKE_OPTS += -DSPATIALINDEX_LIBRARY=/usr/lib/$(DEB_BUILD_MULTIARCH)/libspatialindex.so
|
|
endif
|
|
|
|
ifneq (,$(findstring debug,$(DEB_BUILD_OPTIONS)))
|
|
CMAKE_OPTS += -DCMAKE_BUILD_TYPE=Debug
|
|
ifneq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
|
|
CMAKE_OPTS += -DENABLE_COVERAGE=TRUE
|
|
endif
|
|
endif
|
|
|
|
ifneq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
|
|
CMAKE_OPTS += -DENABLE_TESTS=FALSE
|
|
else
|
|
CMAKE_OPTS += -DENABLE_TESTS=TRUE
|
|
endif
|
|
|
|
ifneq (,$(findstring $(DISTRIBUTION),"wheezy jessie trusty sid sid-oracle"))
|
|
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
|
|
|
|
ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
|
|
INSTALL_PROGRAM += -s
|
|
endif
|
|
|
|
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
|
|
CFLAGS += -O0
|
|
CXXFLAGS += -O0
|
|
else
|
|
CFLAGS += -O2
|
|
CXXFLAGS += -O2
|
|
endif
|
|
|
|
ifneq (,$(findstring profile,$(DEB_BUILD_OPTIONS)))
|
|
CFLAGS += -pg
|
|
CXXFLAGS += -pg
|
|
LDFLAGS += -pg
|
|
endif
|
|
|
|
define gentemplate
|
|
$(2): $(1)
|
|
sed -r \
|
|
-e 's/^#(.* |)$(DISTRIBUTION)( .*|)#//' \
|
|
-e '/^#($|[^!])/d' \
|
|
-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),$(eval $(call gentemplate,$(t),$(basename $(t)))))
|
|
$(foreach t,$(wildcard debian/*{QGIS_ABI}*),$(eval $(call gentemplate,$(t),$(subst {QGIS_ABI},$(QGIS_ABI),$(t)))))
|
|
|
|
cleantemplates:
|
|
$(MAKE) -f debian/rules templateclean
|
|
$(MAKE) -f debian/rules debian/control debian/compat
|
|
|
|
binary binary-arch build clean install:
|
|
dh $@ --with python2 --parallel --builddirectory=debian/build
|
|
|
|
override_dh_clean: cleantemplates
|
|
dh_clean
|
|
|
|
# automatically generated files
|
|
-$(RM) $(CURDIR)/src/core/qgscontexthelp_texts.cpp
|
|
-$(RM) $(CURDIR)/src/core/qgsexpression_texts.cpp
|
|
|
|
-$(RM) -r $(CURDIR)/debian/build/
|
|
|
|
override_dh_auto_configure: templates
|
|
dh_auto_configure -- $(CMAKE_OPTS)
|
|
|
|
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
|
|
override_dh_auto_test:
|
|
# Code to run the package test suite - and ignore the outcome for now
|
|
mkdir -p debian/tmp/locale/
|
|
localedef -f UTF-8 -i en_US ./debian/tmp/locale/en_US.UTF-8/
|
|
-LOCPATH=$(CURDIR)/debian/tmp/locale/ \
|
|
LC_ALL=en_US.UTF-8 \
|
|
LD_LIBRARY_PATH=$(CURDIR)/debian/build/output/lib:$(LD_LIBRARY_PATH) \
|
|
PATH=/usr/sbin:$(PATH) \
|
|
$(TESTMAKE) -C debian/build $(DEB_TEST_TARGET)
|
|
else
|
|
override_dh_auto_test:
|
|
@echo Skipping tests.
|
|
endif
|
|
|
|
override_dh_auto_install:
|
|
dh_auto_install
|
|
|
|
# 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.svg $(CURDIR)/debian/tmp/usr/share/pixmaps/qgis.svg
|
|
install -o root -g root -m 644 $(CURDIR)/images/icons/qgis-icon.png $(CURDIR)/debian/tmp/usr/share/pixmaps/qgis.png
|
|
install -o root -g root -m 644 $(CURDIR)/images/icons/qgis-mime-icon.png $(CURDIR)/debian/tmp/usr/share/pixmaps/qgis-mime.png
|
|
install -o root -g root -m 644 $(CURDIR)/debian/qgis-icon.xpm $(CURDIR)/debian/tmp/usr/share/pixmaps/qgis.xpm
|
|
|
|
# Install application icon
|
|
for size in 8x8 16x16 22x22 24x24 32x32 36x36 42x42 48x48 64x64 72x72 80x80 96x96 128x128 192x192 256x256 512x512; do \
|
|
install -o root -g root -d $(CURDIR)/debian/tmp/usr/share/icons/hicolor/$${size}/apps ; \
|
|
install -o root -g root -m 644 $(CURDIR)/debian/qgis-icon$${size}.png $(CURDIR)/debian/tmp/usr/share/icons/hicolor/$${size}/apps/qgis.png ; \
|
|
done
|
|
|
|
install -o root -g root -d $(CURDIR)/debian/tmp/usr/share/icons/scalable/apps
|
|
install -o root -g root -m 644 $(CURDIR)/images/icons/qgis_icon.svg $(CURDIR)/debian/tmp/usr/share/icons/scalable/apps/qgis.svg
|
|
|
|
# Install desktop files
|
|
install -o root -g root -d $(CURDIR)/debian/tmp/usr/share/applications
|
|
install -o root -g root -m 644 $(CURDIR)/debian/qgis.desktop $(CURDIR)/debian/tmp/usr/share/applications
|
|
install -o root -g root -m 644 $(CURDIR)/debian/qbrowser.desktop $(CURDIR)/debian/tmp/usr/share/applications
|
|
|
|
# Mime info
|
|
install -o root -g root -d $(CURDIR)/debian/tmp/usr/share/mime/packages
|
|
install -o root -g root -m 644 $(CURDIR)/debian/qgis.xml $(CURDIR)/debian/tmp/usr/share/mime/packages
|
|
|
|
install -o root -g root -d $(CURDIR)/debian/tmp/usr/share/mimelnk/application
|
|
install -o root -g root -m 644 $(CURDIR)/debian/mime/application/* $(CURDIR)/debian/tmp/usr/share/mimelnk/application
|
|
|
|
# qgis binaries
|
|
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
|
|
|
|
$(RM) $(CURDIR)/debian/tmp/usr/bin/qgis
|
|
$(RM) $(CURDIR)/debian/tmp/usr/bin/qbrowser
|
|
|
|
# qgis binary wrappers
|
|
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
|
|
|
|
override_dh_install:
|
|
# Don't ship srs.db, automatically updated in postinst with crssync
|
|
mv $(CURDIR)/debian/tmp/usr/share/qgis/resources/srs.db $(CURDIR)/debian/tmp/usr/share/qgis/resources/srs-template.db
|
|
|
|
perl -i -pe 's=#!/usr/bin/env python=#!/usr/bin/python2.7=;' $$(find debian/tmp -name "*.py")
|
|
|
|
# remove unwanted files
|
|
$(RM) $(CURDIR)/debian/tmp/usr/share/qgis/doc/api/installdox
|
|
$(RM) $(CURDIR)/debian/tmp/usr/share/qgis/doc/api/html/jquery.js
|
|
|
|
# Don't include a copy of the world.tif also included in osgearth-data
|
|
$(RM) $(CURDIR)/debian/tmp/usr/share/qgis/globe/world.tif
|
|
|
|
# remove extra license files
|
|
-find $(CURDIR)/debian/tmp/usr/share/qgis/resources/cpt-city-qgis-min/ -name COPYING.xml -delete
|
|
$(RM) $(CURDIR)/debian/tmp/usr/share/qgis/doc/LICENSE
|
|
$(RM) $(CURDIR)/debian/tmp/usr/share/qgis/python/plugins/db_manager/LICENSE
|
|
|
|
# Man pages are installed by dh_installman
|
|
$(RM) $(CURDIR)/debian/tmp/usr/man/man1/qgis.1
|
|
$(RM) $(CURDIR)/debian/tmp/usr/man/man1/qbrowser.1
|
|
|
|
dh_install --autodest --list-missing
|
|
|
|
override_dh_installchangelogs:
|
|
dh_installchangelogs ChangeLog
|
|
|
|
override_dh_installman:
|
|
dh_installman -pqgis qgis.1 qbrowser.1
|
|
|
|
override_dh_installmime:
|
|
dh_installmime -pqgis
|
|
|
|
override_dh_python2:
|
|
dh_python2 --no-guessing-versions
|
|
dh_sip -ppython-qgis
|
|
|
|
override_dh_compress:
|
|
dh_compress --exclude=pdf
|
|
|
|
override_dh_makeshlibs:
|
|
dh_makeshlibs -Xqgis-plugin-grass -Xlibqgis-customwidgets -- -c0 -v$(QGIS_VERSION)
|
|
|
|
override_dh_shlibdeps:
|
|
dh_shlibdeps -l/usr/lib/$(GRASS)/lib
|