blob: 91435a6d8d199a676992ecedead92f66979f7808 [file] [log] [blame]
Simon Kelleyc72daea2012-01-05 21:33:27 +00001#!/usr/bin/make -f
2# debian/rules file - for dnsmasq.
Simon Kelley30e4a942018-02-16 19:56:56 +00003# Copyright 2001-2018 by Simon Kelley
Simon Kelleyc72daea2012-01-05 21:33:27 +00004# Based on the sample in the debian hello package which carries the following:
5# Copyright 1994,1995 by Ian Jackson.
6# I hereby give you perpetual unlimited permission to copy,
7# modify and relicense this file, provided that you do not remove
8# my name from the file itself. (I assert my moral right of
9# paternity under the Copyright, Designs and Patents Act 1988.)
10# This file may have to be extensively modified
11
12package=dnsmasq-base
13
Simon Kelleya24c31e2017-04-16 22:45:53 +010014dpkg_buildflags := DEB_BUILD_MAINT_OPTIONS="hardening=+all,+pie,+bindnow" dpkg-buildflags
Simon Ruderich91f4a5e2014-05-20 20:27:31 +010015
16CFLAGS = $(shell $(dpkg_buildflags) --get CFLAGS)
17CFLAGS += $(shell $(dpkg_buildflags) --get CPPFLAGS)
Simon Kelley97c83bb2012-05-28 18:21:59 +010018CFLAGS += -Wall -W
19
Simon Ruderich91f4a5e2014-05-20 20:27:31 +010020LDFLAGS = $(shell $(dpkg_buildflags) --get LDFLAGS)
Simon Kelleyc72daea2012-01-05 21:33:27 +000021
Simon Kelley8f6213c2014-01-28 11:16:49 +000022DEB_COPTS = $(COPTS)
Simon Kelley97c83bb2012-05-28 18:21:59 +010023
Simon Kelleyc72daea2012-01-05 21:33:27 +000024TARGET = install-i18n
25
Simon Kelley6ac3bc02014-10-03 08:48:11 +010026DEB_HOST_ARCH_OS := $(shell dpkg-architecture -qDEB_HOST_ARCH_OS)
Simon Kelleyc6af3a32016-08-31 22:38:48 +010027DEB_HOST_GNU_TYPE := $(shell dpkg-architecture -qDEB_HOST_GNU_TYPE)
28DEB_BUILD_GNU_TYPE := $(shell dpkg-architecture -qDEB_BUILD_GNU_TYPE)
Simon Kelley24e92072015-06-04 22:32:43 +010029BUILD_DATE := $(shell dpkg-parsechangelog --show-field Date)
Simon Kelleyc72daea2012-01-05 21:33:27 +000030
Simon Kelleyc6af3a32016-08-31 22:38:48 +010031ifeq ($(origin CC),default)
32 CC = $(DEB_HOST_GNU_TYPE)-gcc
33endif
34
35# Support non-cross-builds on systems without gnu-triplet-binaries for pkg-config.
36ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE))
37 PKG_CONFIG=pkg-config
38else
39 PKG_CONFIG=$(DEB_HOST_GNU_TYPE)-pkg-config
40endif
41
Simon Kelley02ed24d2013-09-09 18:06:45 +010042# Force package version based on git tags.
43ifneq (,$(filter gitversion,$(DEB_BUILD_OPTIONS)))
Simon Kelley1d1c7952013-10-02 14:52:23 +010044 PACKAGE_VERSION = $(shell bld/get-version `pwd` | sed 's/test/~&/; s/[a-z]/~&/; s/-/./g; s/$$/-1/; s/^/-v/';)
Simon Kelley02ed24d2013-09-09 18:06:45 +010045endif
46
Simon Kelley62779782012-02-10 21:19:25 +000047ifeq (,$(filter nodbus,$(DEB_BUILD_OPTIONS)))
Simon Kelley8f6213c2014-01-28 11:16:49 +000048 DEB_COPTS += -DHAVE_DBUS
Simon Kelleyc72daea2012-01-05 21:33:27 +000049endif
50
Simon Kelley43cdf1c2017-05-21 22:12:44 +010051ifeq (,$(filter noidn, $(DEB_BUILD_OPTIONS)))
52 DEB_COPTS += -DHAVE_IDN
53endif
54
Simon Kelley62779782012-02-10 21:19:25 +000055ifeq (,$(filter noconntrack,$(DEB_BUILD_OPTIONS)))
Simon Kelley6ac3bc02014-10-03 08:48:11 +010056ifeq ($(DEB_HOST_ARCH_OS),linux)
Simon Kelley8f6213c2014-01-28 11:16:49 +000057 DEB_COPTS += -DHAVE_CONNTRACK
Simon Kelleyc72daea2012-01-05 21:33:27 +000058endif
59endif
60
Simon Kelley3ddad242013-03-21 17:56:06 +000061ifneq (,$(filter noipset,$(DEB_BUILD_OPTIONS)))
Simon Kelley8f6213c2014-01-28 11:16:49 +000062 DEB_COPTS += -DNO_IPSET
Simon Kelley3b323bd2013-02-22 21:55:29 +000063endif
64
Simon Kelley96c38792012-02-16 20:07:17 +000065ifneq (,$(filter nodhcp6,$(DEB_BUILD_OPTIONS)))
Simon Kelley8f6213c2014-01-28 11:16:49 +000066 DEB_COPTS += -DNO_DHCP6
Simon Kelley127ea402012-02-11 22:14:52 +000067endif
68
Simon Kelley62779782012-02-10 21:19:25 +000069ifneq (,$(filter noipv6,$(DEB_BUILD_OPTIONS)))
Simon Kelley8f6213c2014-01-28 11:16:49 +000070 DEB_COPTS += -DNO_IPV6
Simon Kelleyc72daea2012-01-05 21:33:27 +000071endif
72
Simon Kelley62779782012-02-10 21:19:25 +000073ifneq (,$(filter notftp,$(DEB_BUILD_OPTIONS)))
Simon Kelley8f6213c2014-01-28 11:16:49 +000074 DEB_COPTS += -DNO_TFTP
Simon Kelleyc72daea2012-01-05 21:33:27 +000075endif
76
Simon Kelley62779782012-02-10 21:19:25 +000077ifneq (,$(filter nodhcp,$(DEB_BUILD_OPTIONS)))
Simon Kelley8f6213c2014-01-28 11:16:49 +000078 DEB_COPTS += -DNO_DHCP
Simon Kelleyc72daea2012-01-05 21:33:27 +000079endif
80
Simon Kelley62779782012-02-10 21:19:25 +000081ifneq (,$(filter noscript,$(DEB_BUILD_OPTIONS)))
Simon Kelley8f6213c2014-01-28 11:16:49 +000082 DEB_COPTS += -DNO_SCRIPT
Simon Kelleyc72daea2012-01-05 21:33:27 +000083endif
84
Simon Kelley62779782012-02-10 21:19:25 +000085ifneq (,$(filter nortc,$(DEB_BUILD_OPTIONS)))
Simon Kelley8f6213c2014-01-28 11:16:49 +000086 DEB_COPTS += -DHAVE_BROKEN_RTC
Simon Kelleyc72daea2012-01-05 21:33:27 +000087endif
88
Simon Kelley62779782012-02-10 21:19:25 +000089ifneq (,$(filter noi18n,$(DEB_BUILD_OPTIONS)))
Simon Kelleyc72daea2012-01-05 21:33:27 +000090 TARGET = install
Simon Kelleyc72daea2012-01-05 21:33:27 +000091endif
92
Simon Kelley62779782012-02-10 21:19:25 +000093ifneq (,$(filter uselua,$(DEB_BUILD_OPTIONS)))
Simon Kelley8f6213c2014-01-28 11:16:49 +000094 DEB_COPTS += -DHAVE_LUASCRIPT
Simon Kelley62779782012-02-10 21:19:25 +000095endif
96
Simon Kelley160f6502014-02-04 16:49:41 +000097ifeq (,$(filter nodnssec,$(DEB_BUILD_OPTIONS)))
Simon Kelley8f6213c2014-01-28 11:16:49 +000098 DEB_COPTS += -DHAVE_DNSSEC
Simon Kelley00ec6932014-01-28 11:08:57 +000099endif
100
Simon Kelley6ac3bc02014-10-03 08:48:11 +0100101ifneq ($(DEB_HOST_ARCH_OS),linux)
102 # For strlcpy in FreeBSD
103 LDFLAGS += -lbsd
104endif
105
Simon Kelley30e4a942018-02-16 19:56:56 +0000106define build_tree
107 rm -rf $1
Simon Kelleyc72daea2012-01-05 21:33:27 +0000108 install -m 755 \
Simon Kelley30e4a942018-02-16 19:56:56 +0000109 -d $1/DEBIAN \
110 -d $1/etc/dbus-1/system.d \
111 -d $1/usr/share/doc/$(package) \
112 -d $1/usr/share/doc/$(package)/examples \
113 -d $1/usr/share/$(package) \
114 -d $1/var/lib/misc
Simon Kelleyc72daea2012-01-05 21:33:27 +0000115
Simon Kelley30e4a942018-02-16 19:56:56 +0000116endef
117
118define add_docs
Simon Kelley933878f2014-09-09 14:28:01 +0100119# Need to remove paypal links in Debian Package for policy reasons.
Simon Kelley30e4a942018-02-16 19:56:56 +0000120 sed -e /\<H2\>Donations/Q -e /icon.png/d doc.html -e /favicon.ico/d >$1/usr/share/doc/$(package)/doc.html
121 echo "</BODY>" >>$1/usr/share/doc/$(package)/doc.html
122 install -m 644 setup.html $1/usr/share/doc/$(package)/.
123 install -m 644 dnsmasq.conf.example $1/usr/share/doc/$(package)/examples/.
124 install -m 644 FAQ $1/usr/share/doc/$(package)/.
125 gzip -9n $1/usr/share/doc/$(package)/FAQ
126 install -m 644 CHANGELOG $1/usr/share/doc/$(package)/changelog
127 gzip -9n $1/usr/share/doc/$(package)/changelog
128 install -m 644 CHANGELOG.archive $1/usr/share/doc/$(package)/changelog.archive
129 gzip -9n $1/usr/share/doc/$(package)/changelog.archive
130 install -m 644 dbus/DBus-interface $1/usr/share/doc/$(package)/.
131 gzip -9n $1/usr/share/doc/$(package)/DBus-interface
132 gzip -9n $1/usr/share/man/man8/dnsmasq.8
133 for f in $1/usr/share/man/*; do \
Simon Kelleyc72daea2012-01-05 21:33:27 +0000134 if [ -f $$f/man8/dnsmasq.8 ]; then \
Chris Lambb467a452015-02-09 11:52:30 +0000135 gzip -9n $$f/man8/dnsmasq.8 ; \
Simon Kelleyc72daea2012-01-05 21:33:27 +0000136 fi \
137 done
Simon Kelley30e4a942018-02-16 19:56:56 +0000138endef
139
140define add_files
141 install -m 644 trust-anchors.conf $1/usr/share/$(package)/.
142 install -m 644 debian/dnsmasq-base.conffiles $1/DEBIAN/conffiles
143 install -m 755 debian/dnsmasq-base.postinst $1/DEBIAN/postinst
144 install -m 755 debian/dnsmasq-base.postrm $1/DEBIAN/postrm
145 install -m 644 debian/changelog $1/usr/share/doc/$(package)/changelog.Debian
146 gzip -9n $1/usr/share/doc/$(package)/changelog.Debian
147 install -m 644 debian/readme $1/usr/share/doc/$(package)/README.Debian
148 install -m 644 debian/copyright $1/usr/share/doc/$(package)/copyright
149 install -m 644 debian/dbus.conf $1/etc/dbus-1/system.d/dnsmasq.conf
150endef
151
152clean:
153 $(checkdir)
154 make BUILDDIR=debian/build/no-lua clean
155 make BUILDDIR=debian/build/lua clean
156 make -C contrib/lease-tools clean
157 rm -rf debian/build debian/trees debian/*~ debian/files debian/substvars debian/utils-substvars
158
159binary-indep: checkroot
160 $(checkdir)
161 rm -rf debian/trees/daemon
162 install -m 755 \
163 -d debian/trees/daemon/DEBIAN \
164 -d debian/trees/daemon/usr/share/doc \
165 -d debian/trees/daemon/etc/init.d \
166 -d debian/trees/daemon/etc/dnsmasq.d \
167 -d debian/trees/daemon/etc/resolvconf/update.d \
168 -d debian/trees/daemon/usr/lib/resolvconf/dpkg-event.d \
169 -d debian/trees/daemon/usr/share/dnsmasq \
170 -d debian/trees/daemon/etc/default \
171 -d debian/trees/daemon/lib/systemd/system \
172 -d debian/trees/daemon/etc/insserv.conf.d
173 install -m 644 debian/conffiles debian/trees/daemon/DEBIAN
174 install -m 755 debian/postinst debian/postrm debian/prerm debian/trees/daemon/DEBIAN
175 install -m 755 debian/init debian/trees/daemon/etc/init.d/dnsmasq
176 install -m 755 debian/resolvconf debian/trees/daemon/etc/resolvconf/update.d/dnsmasq
177 install -m 755 debian/resolvconf-package debian/trees/daemon/usr/lib/resolvconf/dpkg-event.d/dnsmasq
178 install -m 644 debian/installed-marker debian/trees/daemon/usr/share/dnsmasq
179 install -m 644 debian/default debian/trees/daemon/etc/default/dnsmasq
180 install -m 644 dnsmasq.conf.example debian/trees/daemon/etc/dnsmasq.conf
181 install -m 644 debian/readme.dnsmasq.d debian/trees/daemon/etc/dnsmasq.d/README
182 install -m 644 debian/systemd.service debian/trees/daemon/lib/systemd/system/dnsmasq.service
183 install -m 644 debian/insserv debian/trees/daemon/etc/insserv.conf.d/dnsmasq
184 ln -s $(package) debian/trees/daemon/usr/share/doc/dnsmasq
185 cd debian/trees/daemon && find . -type f ! -regex '.*DEBIAN/.*' -printf '%P\0' | LC_ALL=C sort -z | xargs -r0 md5sum > DEBIAN/md5sums
186 dpkg-gencontrol $(PACKAGE_VERSION) -T -pdnsmasq -Pdebian/trees/daemon
187 find debian/trees/daemon -depth -newermt '$(BUILD_DATE)' -print0 | xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
188 chown -R root.root debian/trees/daemon
189 chmod -R g-ws debian/trees/daemon
190 dpkg --build debian/trees/daemon ..
191
192binary-arch: checkroot
193 $(call build_tree,debian/trees/base)
194 make $(TARGET) BUILDDIR=debian/build/no-lua PREFIX=/usr DESTDIR=`pwd`/debian/trees/base CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" COPTS="$(DEB_COPTS)" CC=$(CC) PKG_CONFIG=$(PKG_CONFIG)
195ifeq (,$(findstring nodocs,$(DEB_BUILD_OPTIONS)))
196 $(call add_docs,debian/trees/base)
197else
198 rm -rf debian/trees/base/usr/share/man
Simon Kelleyc72daea2012-01-05 21:33:27 +0000199endif
Simon Kelley30e4a942018-02-16 19:56:56 +0000200 $(call add_files,debian/trees/base)
201ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
202 $(DEB_HOST_GNU_TYPE)-strip -R .note -R .comment debian/trees/base/usr/sbin/dnsmasq
203endif
204 cd debian/trees/base && find . -type f ! -regex '.*DEBIAN/.*' -printf '%P\0' | LC_ALL=C sort -z | xargs -r0 md5sum > DEBIAN/md5sums
205 dpkg-shlibdeps --warnings=1 debian/trees/base/usr/sbin/dnsmasq
206 dpkg-gencontrol $(PACKAGE_VERSION) -pdnsmasq-base -Pdebian/trees/base
207 find debian/trees/base -depth -newermt '$(BUILD_DATE)' -print0 | xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
208 chown -R root.root debian/trees/base
209 chmod -R g-ws debian/trees/base
210 dpkg --build debian/trees/base ..
211
212 $(call build_tree,debian/trees/lua-base)
213 make $(TARGET) BUILDDIR=debian/build/lua PREFIX=/usr DESTDIR=`pwd`/debian/trees/lua-base CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" COPTS="-DHAVE_LUASCRIPT $(DEB_COPTS)" CC=$(CC) PKG_CONFIG=$(PKG_CONFIG)
214ifeq (,$(findstring nodocs,$(DEB_BUILD_OPTIONS)))
215 $(call add_docs,debian/trees/lua-base)
216else
217 rm -rf debian/trees/lua-base/usr/share/man
218endif
219 $(call add_files,debian/trees/lua-base)
220ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
221 $(DEB_HOST_GNU_TYPE)-strip -R .note -R .comment debian/trees/lua-base/usr/sbin/dnsmasq
222endif
223 cd debian/trees/lua-base && find . -type f ! -regex '.*DEBIAN/.*' -printf '%P\0' | LC_ALL=C sort -z | xargs -r0 md5sum > DEBIAN/md5sums
224 dpkg-shlibdeps --warnings=1 debian/trees/lua-base/usr/sbin/dnsmasq
225 dpkg-gencontrol $(PACKAGE_VERSION) -pdnsmasq-base-lua -Pdebian/trees/lua-base
226 find debian/trees/lua-base -depth -newermt '$(BUILD_DATE)' -print0 | xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
227 chown -R root.root debian/trees/lua-base
228 chmod -R g-ws debian/trees/lua-base
229 dpkg --build debian/trees/lua-base ..
230
Simon Kelleyc72daea2012-01-05 21:33:27 +0000231
Simon Kelley6ac3bc02014-10-03 08:48:11 +0100232ifeq ($(DEB_HOST_ARCH_OS),linux)
Simon Kelley30e4a942018-02-16 19:56:56 +0000233 rm -rf debian/trees/utils
234 install -m 755 -d debian/trees/utils/DEBIAN \
235 -d debian/trees/utils/usr/bin \
236 -d debian/trees/utils/usr/share/doc/dnsmasq-utils
237ifeq (,$(findstring nodocs,$(DEB_BUILD_OPTIONS)))
238 install -m 755 -d debian/trees/utils/usr/share/man/man1
239endif
240 make -C contrib/lease-tools PREFIX=/usr DESTDIR=`pwd`/debian/trees/utils CFLAGS="$(CFLAGS)" LDFLAGS="$(LDFLAGS)" COPTS="$(DEB_COPTS)" CC=$(CC) PKG_CONFIG=$(PKG_CONFIG)
241 install -m 755 contrib/lease-tools/dhcp_release debian/trees/utils/usr/bin/dhcp_release
242 install -m 755 contrib/lease-tools/dhcp_release6 debian/trees/utils/usr/bin/dhcp_release6
243 install -m 755 contrib/lease-tools/dhcp_lease_time debian/trees/utils/usr/bin/dhcp_lease_time
244ifeq (,$(findstring nodocs,$(DEB_BUILD_OPTIONS)))
245 install -m 644 contrib/lease-tools/dhcp_release.1 debian/trees/utils/usr/share/man/man1/dhcp_release.1
246 gzip -9n debian/trees/utils/usr/share/man/man1/dhcp_release.1
247 install -m 644 contrib/lease-tools/dhcp_release6.1 debian/trees/utils/usr/share/man/man1/dhcp_release6.1
248 gzip -9n debian/trees/utils/usr/share/man/man1/dhcp_release6.1
249 install -m 644 contrib/lease-tools/dhcp_lease_time.1 debian/trees/utils/usr/share/man/man1/dhcp_lease_time.1
250 gzip -9n debian/trees/utils/usr/share/man/man1/dhcp_lease_time.1
251endif
252 install -m 644 debian/copyright debian/trees/utils/usr/share/doc/dnsmasq-utils/copyright
253 install -m 644 debian/changelog debian/trees/utils/usr/share/doc/dnsmasq-utils/changelog.Debian
254 gzip -9n debian/trees/utils/usr/share/doc/dnsmasq-utils/changelog.Debian
Simon Kelleyc72daea2012-01-05 21:33:27 +0000255ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTIONS)))
Simon Kelley30e4a942018-02-16 19:56:56 +0000256 $(DEB_HOST_GNU_TYPE)-strip -R .note -R .comment debian/trees/utils/usr/bin/dhcp_release
257 $(DEB_HOST_GNU_TYPE)-strip -R .note -R .comment debian/trees/utils/usr/bin/dhcp_release6
258 $(DEB_HOST_GNU_TYPE)-strip -R .note -R .comment debian/trees/utils/usr/bin/dhcp_lease_time
Simon Kelleyc72daea2012-01-05 21:33:27 +0000259endif
Simon Kelley30e4a942018-02-16 19:56:56 +0000260 cd debian/trees/utils && find . -type f ! -regex '.*DEBIAN/.*' -printf '%P\0' | LC_ALL=C sort -z | xargs -r0 md5sum > DEBIAN/md5sums
261 dpkg-shlibdeps -Tdebian/utils-substvars debian/trees/utils/usr/bin/dhcp_release debian/trees/utils/usr/bin/dhcp_release6 debian/trees/utils/usr/bin/dhcp_lease_time
262 dpkg-gencontrol $(PACKAGE_VERSION) -Tdebian/utils-substvars -pdnsmasq-utils -Pdebian/trees/utils
263 find debian/trees/utils -depth -newermt '$(BUILD_DATE)' -print0 | xargs -0r touch --no-dereference --date='$(BUILD_DATE)'
264 chown -R root.root debian/trees/utils
265 chmod -R g-ws debian/trees/utils
266 dpkg --build debian/trees/utils ..
Simon Kelleyc72daea2012-01-05 21:33:27 +0000267endif
268
269define checkdir
270 test -f Makefile -a -f debian/rules
271endef
272
273# Below here is fairly generic really
274
275binary: binary-arch binary-indep
Simon Kelley760169f2012-03-09 14:27:49 +0000276
Simon Kelleyc72daea2012-01-05 21:33:27 +0000277build:
Simon Kelley760169f2012-03-09 14:27:49 +0000278build-arch:
279build-indep:
Simon Kelleyc72daea2012-01-05 21:33:27 +0000280
281checkroot:
282 test root = "`whoami`"
283
284.PHONY: binary binary-arch binary-indep clean checkroot
285
286