1SUMMARY = "Lightweight, easy to configure DNS forwarder and DHCP server"
2HOMEPAGE = "http://www.thekelleys.org.uk/dnsmasq/doc.html"
3SECTION = "net"
4# GPLv3 was added in version 2.41 as license option
5LICENSE = "GPL-2.0-only | GPL-3.0-only"
6LIC_FILES_CHKSUM = "file://COPYING;md5=b234ee4d69f5fce4486a80fdaf4a4263 \
7                    file://COPYING-v3;md5=d32239bcb673463ab874e80d47fae504 \
8                    "
9
10DEPENDS += "gettext-native"
11
12#at least versions 2.69 and prior are moved to the archive folder on the server
13SRC_URI = "http://www.thekelleys.org.uk/dnsmasq/${@['archive/', ''][float(d.getVar('PV').split('.')[1]) > 69]}dnsmasq-${PV}.tar.gz \
14           file://init \
15           file://dnsmasq.conf \
16           file://dnsmasq-resolvconf.service \
17           file://dnsmasq-noresolvconf.service \
18           file://dnsmasq-resolved.conf \
19"
20SRC_URI[sha256sum] = "8f6666b542403b5ee7ccce66ea73a4a51cf19dd49392aaccd37231a2c51b303b"
21
22inherit pkgconfig update-rc.d systemd
23
24INITSCRIPT_NAME = "dnsmasq"
25INITSCRIPT_PARAMS = "defaults"
26
27# dnsmasq defaults
28PACKAGECONFIG ?= "auth dhcp dhcp6 dumpfile inotify ipset loop script tftp"
29
30PACKAGECONFIG[auth] = "-DHAVE_AUTH,-DNO_AUTH"
31PACKAGECONFIG[broken-rtc] = "-DHAVE_BROKEN_RTC,"
32PACKAGECONFIG[conntrack] = "-DHAVE_CONNTRACK,,libnetfilter-conntrack"
33PACKAGECONFIG[dbus] = "-DHAVE_DBUS,,dbus"
34PACKAGECONFIG[dhcp] = "-DHAVE_DHCP,-DNO_DHCP"
35PACKAGECONFIG[dhcp6] = "-DHAVE_DHCP6,-DNO_DHCP6"
36PACKAGECONFIG[dnssec] = "-DHAVE_DNSSEC,,nettle"
37PACKAGECONFIG[dumpfile] = "-DHAVE_DUMPFILE,-DNO_DUMPFILE"
38PACKAGECONFIG[idn] = "-DHAVE_LIBIDN,,libidn,,,idn2"
39PACKAGECONFIG[idn2] = "-DHAVE_LIBIDN2,,libidn2,,,idn"
40PACKAGECONFIG[inotify] = "-DHAVE_INOTIFY,-DNO_INOTIFY"
41PACKAGECONFIG[ipset] = "-DHAVE_IPSET,-DNO_IPSET"
42PACKAGECONFIG[loop] = "-DHAVE_LOOP,-DNO_LOOP"
43PACKAGECONFIG[lua] = "-DHAVE_LUASCRIPT -DHAVE_SCRIPT,,lua"
44PACKAGECONFIG[nftset] = "-DHAVE_NFTSET,,nftables"
45PACKAGECONFIG[no-gmp] = "-DNO_GMP,"
46PACKAGECONFIG[no-id] = "-DNO_ID,"
47PACKAGECONFIG[resolvconf] = ",,,resolvconf"
48PACKAGECONFIG[script] = "-DHAVE_SCRIPT,-DNO_SCRIPT"
49PACKAGECONFIG[tftp] = "-DHAVE_TFTP,-DNO_TFTP"
50PACKAGECONFIG[ubus] = "-DHAVE_UBUS,,ubus"
51
52DNSMASQ_LEASEFILE ?= "${localstatedir}/lib/misc/dnsmasq.leases"
53DNSMASQ_CONFFILE ?= "${sysconfdir}/dnsmasq.conf"
54DNSMASQ_RESOLVFILE ?= "${sysconfdir}/resolv.conf"
55
56COPTS = "${PACKAGECONFIG_CONFARGS} \
57         -DLEASEFILE=\"${DNSMASQ_LEASEFILE}\" \
58         -DCONFFILE=\"${DNSMASQ_CONFFILE}\" \
59         -DRESOLVFILE=\"${DNSMASQ_RESOLVFILE}\" \
60         -DLOCALEDIR=\"${localedir}\""
61
62EXTRA_OEMAKE = "\
63    'COPTS=${COPTS}' \
64    'CFLAGS=${CFLAGS}' \
65    'LDFLAGS=${LDFLAGS}' \
66"
67
68SRC_URI += "${@bb.utils.contains('PACKAGECONFIG', 'resolvconf', 'file://dnsmasq.resolvconf file://99_dnsmasq file://dnsmasq-resolvconf-helper', '', d)}"
69
70do_compile () {
71    oe_runmake all-i18n
72    if ${@bb.utils.contains_any('PACKAGECONFIG', ['dhcp', 'dhcp6'], 'true', 'false', d)}; then
73        # build dhcp_release
74        oe_runmake -C ${S}/contrib/lease-tools
75    fi
76}
77
78do_install () {
79    oe_runmake "PREFIX=${D}${prefix}" \
80               "BINDIR=${D}${bindir}" \
81               "MANDIR=${D}${mandir}" \
82               install-i18n
83    install -d ${D}${sysconfdir}/ ${D}${sysconfdir}/init.d ${D}${sysconfdir}/dnsmasq.d
84    install -m 644 ${WORKDIR}/dnsmasq.conf ${D}${sysconfdir}/
85    install -m 755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/dnsmasq
86
87    install -d ${D}${systemd_unitdir}/system
88
89    if [ "${@bb.utils.filter('PACKAGECONFIG', 'resolvconf', d)}" ]; then
90        install -m 0644 ${WORKDIR}/dnsmasq-resolvconf.service ${D}${systemd_unitdir}/system/dnsmasq.service
91    else
92        install -m 0644 ${WORKDIR}/dnsmasq-noresolvconf.service ${D}${systemd_unitdir}/system/dnsmasq.service
93    fi
94
95    if [ "${@bb.utils.filter('DISTRO_FEATURES', 'systemd', d)}" ]; then
96        install -d ${D}${sysconfdir}/systemd/resolved.conf.d/
97        install -m 0644 ${WORKDIR}/dnsmasq-resolved.conf ${D}${sysconfdir}/systemd/resolved.conf.d/
98    fi
99
100    if [ "${@bb.utils.filter('PACKAGECONFIG', 'dhcp', d)}" ]; then
101        install -m 0755 ${S}/contrib/lease-tools/dhcp_release ${D}${bindir}
102        install -m 0755 ${S}/contrib/lease-tools/dhcp_lease_time ${D}${bindir}
103    fi
104
105    if [ "${@bb.utils.filter('PACKAGECONFIG', 'dhcp6', d)}" ]; then
106        install -m 0755 ${S}/contrib/lease-tools/dhcp_release6 ${D}${bindir}
107    fi
108
109    if [ "${@bb.utils.filter('PACKAGECONFIG', 'dbus', d)}" ]; then
110        install -d ${D}${sysconfdir}/dbus-1/system.d
111        install -m 644 dbus/dnsmasq.conf ${D}${sysconfdir}/dbus-1/system.d/
112    fi
113
114    if [ "${@bb.utils.filter('PACKAGECONFIG', 'resolvconf', d)}" ]; then
115        install -d ${D}${sysconfdir}/resolvconf/update.d/
116        install -m 0755 ${WORKDIR}/dnsmasq.resolvconf ${D}${sysconfdir}/resolvconf/update.d/dnsmasq
117
118        install -d ${D}${sysconfdir}/default/volatiles
119        install -m 0644 ${WORKDIR}/99_dnsmasq ${D}${sysconfdir}/default/volatiles
120        install -m 0755 ${WORKDIR}/dnsmasq-resolvconf-helper ${D}${bindir}
121    fi
122}
123
124CONFFILES:${PN} = "${sysconfdir}/dnsmasq.conf"
125
126RPROVIDES:${PN} += "${PN}-systemd"
127RREPLACES:${PN} += "${PN}-systemd"
128RCONFLICTS:${PN} += "${PN}-systemd"
129SYSTEMD_SERVICE:${PN} = "dnsmasq.service"
130