1################################################################################
2#
3# bind
4#
5################################################################################
6
7BIND_VERSION = 9.16.48
8BIND_SOURCE= bind-$(BIND_VERSION).tar.xz
9BIND_SITE = https://ftp.isc.org/isc/bind9/$(BIND_VERSION)
10# bind does not support parallel builds.
11BIND_MAKE = $(MAKE1)
12BIND_INSTALL_STAGING = YES
13BIND_LICENSE = MPL-2.0
14BIND_LICENSE_FILES = COPYRIGHT
15BIND_CPE_ID_VENDOR = isc
16BIND_SELINUX_MODULES = bind
17# Library CVE and not used by bind but used by ISC DHCP
18BIND_IGNORE_CVES += CVE-2019-6470
19BIND_TARGET_SERVER_SBIN = arpaname ddns-confgen dnssec-checkds dnssec-coverage
20BIND_TARGET_SERVER_SBIN += dnssec-importkey dnssec-keygen dnssec-revoke
21BIND_TARGET_SERVER_SBIN += dnssec-settime dnssec-verify genrandom
22BIND_TARGET_SERVER_SBIN += isc-hmac-fixup named-journalprint nsec3hash
23BIND_TARGET_SERVER_SBIN += lwresd named named-checkconf named-checkzone
24BIND_TARGET_SERVER_SBIN += named-compilezone rndc rndc-confgen dnssec-dsfromkey
25BIND_TARGET_SERVER_SBIN += dnssec-keyfromlabel dnssec-signzone tsig-keygen
26BIND_TARGET_TOOLS_BIN = dig host nslookup nsupdate
27BIND_CONF_ENV = \
28	BUILD_CC="$(TARGET_CC)" \
29	LIBS=`$(PKG_CONFIG_HOST_BINARY) --libs openssl`
30BIND_CONF_OPTS = \
31	--without-cmocka \
32	--without-lmdb \
33	--enable-epoll \
34	--disable-backtrace \
35	--with-openssl=$(STAGING_DIR)/usr
36
37BIND_DEPENDENCIES = host-pkgconf libuv openssl
38
39BIND_CFLAGS = $(TARGET_CFLAGS)
40
41ifeq ($(BR2_TOOLCHAIN_HAS_GCC_BUG_101737),y)
42BIND_CFLAGS += -O0
43endif
44
45BIND_CONF_OPTS += CFLAGS="$(BIND_CFLAGS)"
46
47ifeq ($(BR2_PACKAGE_ZLIB),y)
48BIND_CONF_OPTS += --with-zlib
49BIND_DEPENDENCIES += zlib
50else
51BIND_CONF_OPTS += --without-zlib
52endif
53
54ifeq ($(BR2_PACKAGE_JSON_C),y)
55BIND_CONF_OPTS += --with-json-c
56BIND_DEPENDENCIES += json-c
57else
58BIND_CONF_OPTS += --without-json-c
59endif
60
61ifeq ($(BR2_PACKAGE_LIBCAP),y)
62BIND_CONF_OPTS += --enable-linux-caps
63BIND_DEPENDENCIES += libcap
64else
65BIND_CONF_OPTS += --disable-linux-caps
66endif
67
68ifeq ($(BR2_PACKAGE_LIBIDN2),y)
69BIND_CONF_OPTS += --with-libidn2
70BIND_DEPENDENCIES += libidn2
71else
72BIND_CONF_OPTS += --without-libidn2
73endif
74
75ifeq ($(BR2_PACKAGE_LIBKRB5),y)
76BIND_CONF_OPTS += --with-gssapi=$(STAGING_DIR)/usr/bin/krb5-config
77BIND_DEPENDENCIES += libkrb5
78else
79BIND_CONF_OPTS += --with-gssapi=no
80endif
81
82ifeq ($(BR2_PACKAGE_LIBMAXMINDDB),y)
83BIND_CONF_OPTS += --enable-geoip --with-maxminddb
84BIND_DEPENDENCIES += libmaxminddb
85else
86BIND_CONF_OPTS += --disable-geoip
87endif
88
89ifeq ($(BR2_PACKAGE_LIBXML2),y)
90BIND_CONF_OPTS += --with-libxml2
91BIND_DEPENDENCIES += libxml2
92else
93BIND_CONF_OPTS += --with-libxml2=no
94endif
95
96# Used by dnssec-keymgr
97ifeq ($(BR2_PACKAGE_PYTHON_PLY),y)
98BIND_DEPENDENCIES += host-python-ply
99BIND_CONF_OPTS += --with-python=$(HOST_DIR)/bin/python
100else
101BIND_CONF_OPTS += --with-python=no
102endif
103
104ifeq ($(BR2_PACKAGE_READLINE),y)
105BIND_DEPENDENCIES += readline
106else
107BIND_CONF_OPTS += --with-readline=no
108endif
109
110ifeq ($(BR2_STATIC_LIBS),y)
111BIND_CONF_OPTS += \
112	--without-dlopen \
113	--without-libtool
114else
115BIND_CONF_OPTS += \
116	--with-dlopen \
117	--with-libtool
118endif
119
120define BIND_TARGET_REMOVE_SERVER
121	rm -rf $(addprefix $(TARGET_DIR)/usr/sbin/, $(BIND_TARGET_SERVER_SBIN))
122endef
123
124define BIND_TARGET_REMOVE_TOOLS
125	rm -rf $(addprefix $(TARGET_DIR)/usr/bin/, $(BIND_TARGET_TOOLS_BIN))
126endef
127
128ifeq ($(BR2_PACKAGE_BIND_SERVER),y)
129define BIND_INSTALL_INIT_SYSV
130	$(INSTALL) -m 0755 -D $(BIND_PKGDIR)/S81named \
131		$(TARGET_DIR)/etc/init.d/S81named
132endef
133define BIND_INSTALL_INIT_SYSTEMD
134	$(INSTALL) -D -m 644 $(BIND_PKGDIR)/named.service \
135		$(TARGET_DIR)/usr/lib/systemd/system/named.service
136endef
137else
138BIND_POST_INSTALL_TARGET_HOOKS += BIND_TARGET_REMOVE_SERVER
139endif
140
141ifeq ($(BR2_PACKAGE_BIND_TOOLS),)
142BIND_POST_INSTALL_TARGET_HOOKS += BIND_TARGET_REMOVE_TOOLS
143endif
144
145define BIND_USERS
146	named -1 named -1 * /etc/bind - - BIND daemon
147endef
148
149$(eval $(autotools-package))
150