File debian.rules of Package xapian-core
#!/usr/bin/make -f
#
# Copyright (C) 2004,2005,2006 Lemur Consulting Ltd
# Copyright (C) 2006,2007,2008,2009,2010,2011,2012,2013 Olly Betts
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to
# deal in the Software without restriction, including without limitation the
# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
# sell copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
# IN THE SOFTWARE.
# Codename we're building packages for. For backported packages, put the
# codename (e.g. lenny or jaunty) in debian/codename. If that file doesn't
# exist, the default is sid.
# CODENAME := $(shell cat debian/codename 2>/dev/null||echo sid)
# The soversion number needs to match that generated by libtool. The following
# lines should read configure.ac to get the current interface number and
# subtract it from the interface age, to get the oldest interface number
# supported by the library. This should correspond to the soversion assigned
# to the library by libtool. (This isn't documented, and is system dependent,
# so we need to check it doesn't break with future versions of libtool.)
libxapian_soversion:=$(shell awk -F'[=:]' '($$1 == "LIBRARY_VERSION_INFO") {print $$2 - $$4}' configure.ac)
# For now, we don't support installation of development files for multiple
# versions concurrently. Incompatible ABI changes should be rare, so this
# seems reasonable.
libxapian_dev_soversion=
export DH_OPTIONS
export DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
export DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
export DEB_HOST_ARCH ?= $(shell dpkg-architecture -qDEB_HOST_ARCH)
confflags := --prefix=/usr --sysconfdir=/etc
ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE))
confflags += --build $(DEB_HOST_GNU_TYPE)
else
confflags += --build $(DEB_BUILD_GNU_TYPE) --host $(DEB_HOST_GNU_TYPE)
# Disable the testsuite when cross-compiling.
DEB_BUILD_OPTIONS += nocheck
endif
# For i386 and *-i386.
ifeq ($(patsubst %-i386,i386,$(DEB_HOST_ARCH)), i386)
XAPIAN_BUILD_SSE := 1
endif
CFLAGS := `dpkg-buildflags --get CFLAGS`
CXXFLAGS := `dpkg-buildflags --get CXXFLAGS`
LDFLAGS := `dpkg-buildflags --get LDFLAGS`
CPPFLAGS := `dpkg-buildflags --get CPPFLAGS`
# Fallback for suites which don't have dpkg-buildflags.
ifeq (,$(CFLAGS))
CFLAGS :=
CXXFLAGS := -g
ifeq (,$(filter noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O2
CXXFLAGS += -O2
endif
endif
# Handle other DEB_BUILD_OPTIONS. Note that dh_strip handles nostrip for us,
# and dpkg-buildflags handles noopt with newer dpkg.
ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS)))
MAKEFLAGS += -j$(NUMJOBS)
endif
ifneq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
MAKE_CHECK := :
else
MAKE_CHECK := $(MAKE) check VALGRIND=
endif
confflags += CFLAGS="$(CFLAGS)" CXXFLAGS="$(CXXFLAGS)" CPPFLAGS="$(CPPFLAGS)" LDFLAGS="$(LDFLAGS)"
# With GCC3 and later this won't make a huge difference, but it'll save
# a bit of time and diskspace while building.
confflags += --disable-dependency-tracking
maint: \
debian/control \
debian/libxapian$(libxapian_soversion).install \
debian/libxapian$(libxapian_dev_soversion)-dev.install
maintclean: clean
rm -f debian/control
rm -f debian/libxapian$(libxapian_soversion).install
rm -f debian/libxapian$(libxapian_dev_soversion)-dev.install
rm -rf debian/libxapian$(libxapian_soversion)
rm -rf debian/libxapian$(libxapian_dev_soversion)-dev
rm -rf debian/xapian-doc
rm -rf debian/xapian-tools
rm -rf debian/tmp debian/tmp-sse2
debian/control: debian/rules debian/control.in debian/compat
rm -f debian/control.tmp
sed -e 's/@LIBXAPIAN_SOVERSION@/$(libxapian_soversion)/g' \
-e 's/@LIBXAPIAN_DEV_SOVERSION@/$(libxapian_dev_soversion)/g' \
-e 's/@BUILD_DEPS@/debhelper (>= $(shell cat debian/compat)),/g' \
debian/control.in > debian/control.tmp
mv debian/control.tmp debian/control
debian/libxapian$(libxapian_soversion).install: debian/rules debian/libxapianVERSION.install
cp -f debian/libxapianVERSION.install debian/libxapian$(libxapian_soversion).install
debian/libxapian$(libxapian_dev_soversion)-dev.install: debian/rules debian/libxapianVERSION-dev.install
cp -f debian/libxapianVERSION-dev.install debian/libxapian$(libxapian_dev_soversion)-dev.install
configure: configure-stamp
configure-stamp: debian/control
dh_testdir
# Use the latest config.sub and config.guess from the autotools-dev
# package.
rm -f config.sub config.guess
ln -s /usr/share/misc/config.sub config.sub
ln -s /usr/share/misc/config.guess config.guess
aclocal -I m4
automake --add-missing
autoreconf -v
# Report kernel and compiler version so upstream PLATFORMS file can be
# updated from buildd logs.
-uname -a
-g++ --version
# Configure in a subdirectory, for neatness.
mkdir -p build
ifdef XAPIAN_BUILD_SSE
cd build && ../configure $(confflags) --disable-sse
mkdir -p build-sse2
cd build-sse2 && ../configure $(confflags) --disable-static
else
cd build && ../configure $(confflags)
endif
# Touch the stamp file, to avoid repeating the configure step.
touch $@
build: build-arch build-indep
build-arch: build-stamp
build-indep: build-stamp
build-stamp: configure-stamp
dh_testdir
$(MAKE) -C build
ifdef XAPIAN_BUILD_SSE
$(MAKE) -C build-sse2
$(MAKE_CHECK) -C build-sse2
else
$(MAKE_CHECK) -C build
endif
touch $@
install: DH_OPTIONS=
install: install-stamp
install-stamp: build-stamp \
debian/libxapian$(libxapian_soversion).install \
debian/libxapian$(libxapian_dev_soversion)-dev.install
dh_testdir
dh_testroot
dh_prep
dh_installdirs
# Install the files into debian/tmp
$(MAKE) -C build DESTDIR=$(CURDIR)/debian/tmp install
ifdef XAPIAN_BUILD_SSE
$(MAKE) -C build-sse2 DESTDIR=$(CURDIR)/debian/tmp-sse2 install
mkdir -p $(CURDIR)/debian/libxapian$(libxapian_soversion)/usr/lib/sse2
mv $(CURDIR)/debian/tmp-sse2/usr/lib/libxapian*.so.* $(CURDIR)/debian/libxapian$(libxapian_soversion)/usr/lib/sse2
rm -rf $(CURDIR)/debian/tmp-sse2
endif
# Empty dependency_libs to placate luddite release goal.
sed -i 's/^\(dependency_libs=\).*/\1/' $(CURDIR)/debian/tmp/usr/lib/libxapian.la
# Install the example source code
mkdir -p debian/tmp/usr/share/doc/xapian-examples/examples
cp examples/*.cc debian/tmp/usr/share/doc/xapian-examples/examples
ln -s ../../../../lib/xapian-examples/examples debian/tmp/usr/share/doc/xapian-examples/examples/built
# Fix up link to the internal sourcedocs to point to those on the
# Xapian website since we don't build and package them.
sed -i 's,sourcedoc/html/annotated.html,http://xapian.org/docs/&,' debian/tmp/usr/share/doc/xapian-core/internals.html
# Reads the *.install files to decide where to install everything
dh_install --sourcedir=debian/tmp --fail-missing
touch $@
binary: binary-arch binary-indep
binary-indep: DH_OPTIONS=-i
binary-indep: build-indep install
dh_testdir
dh_testroot
dh_installdocs
dh_installexamples
dh_installmenu
dh_installman
dh_installchangelogs ChangeLog
dh_compress
dh_fixperms
dh_installdeb
dh_gencontrol
dh_md5sums
dh_builddeb
binary-arch: DH_OPTIONS=-a
binary-arch: build-arch install
dh_testdir
dh_testroot
dh_installdocs
dh_installexamples
dh_installmenu
dh_installman
dh_installchangelogs ChangeLog
:
dh_strip --dbg-package=libxapian$(libxapian_soversion)-dbg
# Only keep debug symbols for the shared library.
rm -rf debian/libxapian$(libxapian_soversion)-dbg/usr/lib/debug/usr/lib/xapian-examples
rm -rf debian/libxapian$(libxapian_soversion)-dbg/usr/lib/debug/usr/bin
:
dh_link
dh_compress
dh_fixperms
dh_makeshlibs
dh_installdeb
dh_shlibdeps -L libxapian$(libxapian_soversion) -ldebian/libxapian$(libxapian_soversion)/usr/lib
dh_gencontrol
dh_md5sums
dh_builddeb
clean: debian/control
dh_testdir
dh_testroot
rm -rf build build-sse2
rm -f config.sub config.guess
dh_clean
.PHONY: maint maintclean configure build build-arch build-indep install binary binary-arch binary-indep clean