blob: 8d56d25a4c497d2eef35376ac668022bfebe6120 [file] [log] [blame]
#!/usr/bin/make -f
# debian/rules for the dpkg suite.
# Copyright © 2004 Scott James Remnant <scott@netsplit.com>
WFLAGS := -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers
# Use the in-tree dpkg-buildflags
dpkg_buildflags = DEB_CFLAGS_MAINT_APPEND="$(WFLAGS)" DEB_CXXFLAGS_MAINT_APPEND="$(WFLAGS)" PERL5LIB=$(CURDIR)/scripts DPKG_DATADIR=$(CURDIR) perl $(CURDIR)/scripts/dpkg-buildflags.pl
# 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)
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)
endif
# Don't enable everything on all platforms
DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
ifeq ($(DEB_HOST_ARCH_OS),linux)
confflags += --with-selinux
endif
ifeq (,$(filter maintainer-build,$(DEB_BUILD_OPTIONS)))
confflags += --disable-silent-rules
endif
# Create configure script if necessary, automake handles rebuilding it.
configure:
dh_testdir
autoreconf -v -i
# Configure the build tree
build-tree/config.status: configure
dh_testdir
install -d build-tree
cd build-tree && ../configure $(confflags) \
$(shell $(dpkg_buildflags) --export=configure) \
--prefix=/usr \
--mandir=\$${datadir}/man \
--infodir=\$${datadir}/info \
--sysconfdir=/etc \
--localstatedir=/var \
--with-zlib \
--with-bz2
# Build the package in build-tree
build-indep build-arch build: build-tree/config.status
dh_testdir
cd build-tree && $(MAKE)
# Run the test suites
check: build
dh_testdir
ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS)))
cd build-tree && $(MAKE) check
endif
# Install the package underneath debian/tmp
install: check
dh_testdir
dh_testroot
dh_prep
dh_installdirs
cd build-tree && $(MAKE) DESTDIR="$(CURDIR)/debian/tmp" install
ifeq (yes,$(shell dpkg-vendor --derives-from Ubuntu && echo yes))
# Ubuntu's «i386» architecture is built for i686 (the Debian default
# is i486).
sed -ri 's/^(i386[[:space:]]+)[^[:space:]]+/\1i686/' \
$(CURDIR)/debian/tmp/usr/share/dpkg/cputable
endif
# Put together the dpkg and dselect packages
binary-arch: install
dh_testdir -a
dh_testroot -a
dh_install --sourcedir=debian/tmp -a
dh_installcron -a
dh_installlogrotate -a
install -d debian/dpkg/sbin
mv debian/dpkg/usr/sbin/start-stop-daemon debian/dpkg/sbin
dh_installchangelogs -a ChangeLog*
dh_installdocs -a
dh_link -a
dh_lintian -a
dh_strip -a
dh_compress -a
dh_fixperms -a
dh_installdeb -a
dh_shlibdeps -a
dh_gencontrol -a
dh_md5sums -a
dh_builddeb -a
# Put together the dpkg-dev package
binary-indep: install
dh_testdir -i
dh_testroot -i
dh_install --sourcedir=debian/tmp -i
dh_installcron -i
dh_installchangelogs -i ChangeLog*
dh_installdocs -i
dh_link -i
dh_lintian -i
dh_strip -i
dh_compress -i
dh_fixperms -i
dh_installdeb -i
dh_gencontrol -i
dh_md5sums -i
dh_builddeb -i
binary: binary-arch binary-indep
# Clean up the mess we made
clean:
dh_testdir
[ ! -f Makefile ] || $(MAKE) distclean
rm -rf build-tree
dh_clean
.PHONY: build check install binary-arch binary-indep binary clean