Commit | Line | Data |
---|---|---|
1479465f GJ |
1 | #!/usr/bin/make -f |
2 | # debian/rules for the dpkg suite. | |
3 | # Copyright © 2004 Scott James Remnant <scott@netsplit.com> | |
4 | # Copyright © 2006-2012 Guillem Jover <guillem@debian.org> | |
5 | ||
6 | WFLAGS := -Wall -Wextra -Wno-unused-parameter -Wno-missing-field-initializers | |
7 | ||
8 | # XXX: Stack Protector Strong is only available in gcc >= 4.9 | |
9 | cc_version = $(shell $(CC) -dumpversion 2>/dev/null) | |
10 | cc_version_lt = $(shell dpkg --compare-versions "$(cc_version)" lt-nl "$(1)" && echo yes) | |
11 | hardening_old = $(if $(call cc_version_lt,4.9),-stackprotectorstrong) | |
12 | ||
13 | # Use the in-tree dpkg-buildflags | |
14 | dpkg_buildflags = \ | |
15 | DEB_BUILD_MAINT_OPTIONS="hardening=+all,$(hardening_old)" \ | |
16 | DEB_CFLAGS_MAINT_APPEND="$(WFLAGS)" \ | |
17 | DEB_CXXFLAGS_MAINT_APPEND="$(WFLAGS)" \ | |
18 | $(CURDIR)/run-script scripts/dpkg-buildflags.pl | |
19 | ||
20 | DEB_BUILD_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE) | |
21 | DEB_HOST_GNU_TYPE ?= $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE) | |
22 | DEB_HOST_ARCH_OS ?= $(shell dpkg-architecture -qDEB_HOST_ARCH_OS) | |
23 | DEB_HOST_MULTIARCH ?= $(shell dpkg-architecture -qDEB_HOST_MULTIARCH) | |
24 | ||
25 | # Support cross-compiling. | |
26 | ifeq ($(DEB_BUILD_GNU_TYPE), $(DEB_HOST_GNU_TYPE)) | |
27 | confflags += --build=$(DEB_HOST_GNU_TYPE) | |
28 | else | |
29 | confflags += --build=$(DEB_BUILD_GNU_TYPE) --host=$(DEB_HOST_GNU_TYPE) | |
30 | endif | |
31 | ||
32 | # Do not enable everything on all platforms. | |
33 | ifeq ($(DEB_HOST_ARCH_OS),linux) | |
34 | confflags += --with-libselinux | |
35 | endif | |
36 | ifeq (,$(filter maintainer-build,$(DEB_BUILD_OPTIONS))) | |
37 | confflags += --disable-silent-rules | |
38 | endif | |
39 | ||
40 | # Enable parallel test suite | |
41 | NUMJOBS = 1 | |
42 | ifneq (,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) | |
43 | NUMJOBS = $(patsubst parallel=%,%,$(filter parallel=%,$(DEB_BUILD_OPTIONS))) | |
44 | MAKEFLAGS += -j$(NUMJOBS) | |
45 | endif | |
46 | ||
47 | D := $(CURDIR)/debian/tmp | |
48 | ||
49 | # Create configure script if necessary, automake handles rebuilding it. | |
50 | configure: | |
51 | dh_testdir | |
52 | ||
53 | autoreconf -v -i | |
54 | ||
55 | # Configure the build tree | |
56 | build-tree/config.status: configure | |
57 | dh_testdir | |
58 | ||
59 | install -d build-tree | |
60 | cd build-tree && ../configure $(confflags) \ | |
61 | $(shell $(dpkg_buildflags) --export=configure) \ | |
62 | --prefix=/usr \ | |
63 | --mandir=\$${datadir}/man \ | |
64 | --infodir=\$${datadir}/info \ | |
65 | --sysconfdir=/etc \ | |
66 | --sbindir=/sbin \ | |
67 | --localstatedir=/var \ | |
68 | --libexecdir=\$${exec_prefix}/lib \ | |
69 | --with-devlibdir=\$${prefix}/lib/$(DEB_HOST_MULTIARCH) \ | |
70 | --without-libmd \ | |
71 | --with-libz \ | |
72 | --with-liblzma \ | |
73 | --with-libbz2 | |
74 | ||
75 | # Build the package in build-tree | |
76 | build-indep build-arch build: build-tree/config.status | |
77 | dh_testdir | |
78 | ||
79 | cd build-tree && $(MAKE) | |
80 | ||
81 | # Run the test suites | |
82 | check: build | |
83 | dh_testdir | |
84 | ||
85 | ifeq (,$(filter nocheck,$(DEB_BUILD_OPTIONS))) | |
86 | cd build-tree && $(MAKE) VERBOSE=1 TESTSUITEFLAGS=--verbose \ | |
87 | TEST_PARALLEL=$(NUMJOBS) check | |
88 | endif | |
89 | ||
90 | # Install the package underneath debian/tmp | |
91 | install: check | |
92 | dh_testdir | |
93 | dh_testroot | |
94 | dh_prep | |
95 | dh_installdirs | |
96 | ||
97 | cd build-tree && $(MAKE) DESTDIR=$(D) install | |
98 | ||
99 | define dpkg-installmanl10n | |
100 | for f in `sed -e 's:\*:*/*:' debian/$(1).manpages`; do \ | |
101 | test -e $$f && \ | |
102 | install -D $$f `echo $$f | sed -e 's:^debian/tmp:debian/$(1):'`; \ | |
103 | done | |
104 | endef | |
105 | ||
106 | # Put together the dpkg and dselect packages | |
107 | binary-arch: install | |
108 | dh_testdir -a | |
109 | dh_testroot -a | |
110 | dh_install -a | |
111 | dh_installcron -a | |
112 | dh_installlogrotate -a | |
113 | dh_installchangelogs -a ChangeLog* | |
114 | dh_installdocs -a | |
115 | $(call dpkg-installmanl10n,dpkg) | |
116 | $(call dpkg-installmanl10n,dselect) | |
117 | dh_installman -a | |
118 | dh_link -a | |
119 | dh_lintian -a | |
120 | dh_strip -a | |
121 | dh_compress -a | |
122 | dh_fixperms -a | |
123 | dh_installdeb -a | |
124 | dh_shlibdeps -a | |
125 | dh_gencontrol -a | |
126 | dh_md5sums -a | |
127 | dh_builddeb -a | |
128 | ||
129 | # Put together the dpkg-dev package | |
130 | binary-indep: install | |
131 | dh_testdir -i | |
132 | dh_testroot -i | |
133 | dh_install -i | |
134 | dh_installcron -i | |
135 | dh_installchangelogs -i ChangeLog* | |
136 | dh_installdocs -i | |
137 | $(call dpkg-installmanl10n,dpkg-dev) | |
138 | dh_installman -i | |
139 | dh_link -i | |
140 | dh_lintian -i | |
141 | # The perl modules should not depend on a specific interpreter. | |
142 | dh_perl -i -Nlibdpkg-perl | |
143 | dh_compress -i | |
144 | dh_fixperms -i | |
145 | dh_installdeb -i | |
146 | dh_gencontrol -i | |
147 | dh_md5sums -i | |
148 | dh_builddeb -i | |
149 | ||
150 | binary: binary-arch binary-indep | |
151 | ||
152 | ||
153 | # Clean up the mess we made | |
154 | clean: | |
155 | dh_testdir | |
156 | ||
157 | [ ! -f Makefile ] || $(MAKE) distclean | |
158 | rm -rf build-tree | |
159 | dh_clean | |
160 | ||
161 | ||
162 | .PHONY: build check install binary-arch binary-indep binary clean |