1 include $(TOPDIR
)/rules.mk
7 PKG_SOURCE
:=$(PKG_NAME
)-$(PKG_VERSION
).
tar.xz
8 PKG_SOURCE_URL
:=https
://ftp.exim.org
/pub
/exim
/exim4
/
9 PKG_HASH
:=93ac0755c317e1fdbbea8ccb70a868876bdf3148692891c72ad0fe816767033d
10 PKG_MAINTAINER
:=Daniel Golle
<daniel@makrotopia.org
>
12 PKG_LICENSE
:=GPL-2.0
-or-later
13 PKG_LICENSE_FILES
:=LICENSE NOTICE
14 PKG_CPE_ID
:=cpe
:/a
:exim
:exim
19 CONFIG_PACKAGE_exim-gnutls \
20 CONFIG_EXIM_GNUTLS_DANE \
21 CONFIG_PACKAGE_exim-openssl \
22 CONFIG_PACKAGE_exim-ldap \
23 CONFIG_PACKAGE_exim-lookup-mysql \
24 CONFIG_PACKAGE_exim-lookup-pgsql \
25 CONFIG_PACKAGE_exim-lookup-redis \
26 CONFIG_PACKAGE_exim-lookup-sqlite
30 include $(INCLUDE_DIR
)/package.mk
31 include $(INCLUDE_DIR
)/host-build.mk
32 include $(INCLUDE_DIR
)/nls.mk
38 json
%+PACKAGE_exim-lookup-json
:jansson \
39 mysql
%+PACKAGE_exim-lookup-mysql
:libmariadb \
41 pgsql
%+PACKAGE_exim-lookup-pgsql
:libpq \
42 redis
%+PACKAGE_exim-lookup-redis
:libhiredis \
43 sqlite
%+PACKAGE_exim-lookup-sqlite
:libsqlite3
45 define Package
/exim
/Default
48 DEPENDS
:=+libdb47
+libpcre2
$(ICONV_DEPENDS
) +BUILD_NLS
:libidn2
+BUILD_NLS
:libidn
49 TITLE
:=Exim message transfer agent
50 URL
:=http
://www.exim.org
/
51 USERID
:=exim
=42:exim
=42
55 $(call Package
/exim
/Default
)
57 CONFLICTS
:=exim-openssl exim-gnutls exim-ldap
60 define Package
/exim-gnutls
61 $(call Package
/exim
/Default
)
64 DEPENDS
+=+PACKAGE_exim-gnutls
:libgnutls
+EXIM_GNUTLS_DANE
:libgnutls-dane
66 CONFLICTS
:=exim-openssl exim-ldap
68 define Package
/exim-openssl
69 $(call Package
/exim
/Default
)
72 DEPENDS
+=+PACKAGE_exim-openssl
:libopenssl
77 define Package
/exim-ldap
78 $(call Package
/exim
/Default
)
79 TITLE
+=(with OpenSSL and OpenLDAP
)
81 DEPENDS
+=+PACKAGE_exim-ldap
:libopenssl
+PACKAGE_exim-ldap
:libsasl2
+PACKAGE_exim-ldap
:libopenldap
85 define Package
/exim
/Default
/description
86 Exim is a message transfer agent
(MTA
) developed at the University of
87 Cambridge for use on Unix systems connected to the Internet.
90 define Package
/exim
/description
91 $(call Package
/exim
/Default
/description
)
93 This package provides Exim without TLS support.
96 define Package
/exim-gnutls
/description
97 $(call Package
/exim
/Default
/description
)
99 This package provides Exim built with GnuTLS.
102 define Package
/exim-gnutls
/config
103 config EXIM_GNUTLS_DANE
104 bool
"exim-gnutls DANE support"
105 depends on PACKAGE_exim-gnutls
108 Build exim-gnutls against libgnutls-dane for DANE support.
109 libgnutls-dane depends on libunbound which depends on libopenssl.
112 define Package
/exim-openssl
/description
113 $(call Package
/exim
/Default
/description
)
115 This package provides Exim built with OpenSSL.
118 define Package
/exim-ldap
/description
119 $(call Package
/exim
/Default
/description
)
121 This package provides Exim built with OpenSSL
, OpenLDAP and Cyrus SASL.
125 define Package
/exim-lookup-
$(subst _
,-,$(firstword $(subst %, ,$(1))))
128 TITLE
:=Exim lookup module
$(firstword $(subst %, ,$(1)))
129 URL
:=http
://www.exim.org
/
130 DEPENDS
:=exim
$(wordlist
2,$(words $(subst %, ,$(1))),$(subst %, ,$(1)))
134 $(foreach file
,$(LOOKUPS
),$(eval
$(call LookupGen
,$(file
))))
136 define Package
/exim
/conffiles
140 HOST_CFLAGS
+= -std
=c99
141 TARGET_CFLAGS
+= $(FPIC
) -DNO_IP_OPTIONS
-D_FILE_OFFSET_BITS
=64
143 MAKE_VARS
+= build
=Linux-
$$(ARCH
)
144 MAKE_FLAGS
+= AR
="$$(TARGET_AR) r"
145 HOST_MAKE_VARS
+= build
=Linux-
$$(ARCH
)
147 define Build
/Configure
148 $(CP
) $(PKG_BUILD_DIR
)/src
/EDITME
$(PKG_BUILD_DIR
)/Local
/Makefile
149 echo
"PID_FILE_PATH=/var/run/exim.pid" >> $(PKG_BUILD_DIR
)/Local
/Makefile
150 echo
"BIN_DIRECTORY=/usr/sbin" >> $(PKG_BUILD_DIR
)/Local
/Makefile
151 $(SED
) 's%CONFIGURE_FILE=/usr/exim/configure%CONFIGURE_FILE=/etc/exim/exim.conf%' $(PKG_BUILD_DIR
)/Local
/Makefile
152 $(SED
) 's%# EXIM_GROUP=.*%EXIM_GROUP=42%' $(PKG_BUILD_DIR
)/Local
/Makefile
153 $(SED
) 's%# EXIM_USER=.*%EXIM_USER=42%' $(PKG_BUILD_DIR
)/Local
/Makefile
154 $(SED
) 's%# INCLUDE=.*%INCLUDE=-I$(STAGING_DIR)/usr/include -I$(STAGING_DIR)/usr/include%' $(PKG_BUILD_DIR
)/Local
/Makefile
155 $(SED
) 's%# HAVE_IPV6=YES%HAVE_IPV6=YES%' $(PKG_BUILD_DIR
)/Local
/Makefile
156 $(SED
) 's%# WITH_CONTENT_SCAN=yes%WITH_CONTENT_SCAN=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
157 $(SED
) 's%# SUPPORT_MAILDIR=yes%SUPPORT_MAILDIR=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
158 $(SED
) 's%# SUPPORT_MAILSTORE=yes%SUPPORT_MAILSTORE=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
159 $(SED
) 's%# SUPPORT_MBX=yes%SUPPORT_MBX=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
160 # enable lookup modules
161 $(SED
) 's%# LOOKUP_DSEARCH=yes%LOOKUP_DSEARCH=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
162 $(SED
) 's%# TRANSPORT_LMTP=yes%TRANSPORT_LMTP=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
163 ifdef CONFIG_PACKAGE_exim-lookup-dbmdb
164 $(SED
) 's%LOOKUP_DBM=yes%LOOKUP_DBM=2%' $(PKG_BUILD_DIR
)/Local
/Makefile
166 $(SED
) 's%LOOKUP_DBM=yes%# LOOKUP_DBM=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
168 ifdef CONFIG_PACKAGE_exim-lookup-dnsdb
169 $(SED
) 's%LOOKUP_DNSDB=yes%LOOKUP_DNSDB=2%' $(PKG_BUILD_DIR
)/Local
/Makefile
171 $(SED
) 's%LOOKUP_DNSDB=yes%# LOOKUP_DNSDB=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
173 ifdef CONFIG_PACKAGE_exim-lookup-passwd
174 $(SED
) 's%# LOOKUP_PASSWD=yes%LOOKUP_PASSWD=2%' $(PKG_BUILD_DIR
)/Local
/Makefile
176 ifdef CONFIG_PACKAGE_exim-lookup-cdb
177 $(SED
) 's%# LOOKUP_CDB=yes%LOOKUP_CDB=2%' $(PKG_BUILD_DIR
)/Local
/Makefile
179 ifdef CONFIG_PACKAGE_exim-lookup-json
180 $(SED
) 's%# LOOKUP_JSON=yes%LOOKUP_JSON=2\
181 \nLOOKUP_JSON_INCLUDE=-I$(STAGING_DIR)/usr/include\
182 \nLOOKUP_JSON_LIBS=-Wl,--no-as-needed -ljansson%' $(PKG_BUILD_DIR
)/Local
/Makefile
184 ifdef CONFIG_PACKAGE_exim-lookup-pgsql
185 $(SED
) 's%# LOOKUP_PGSQL=yes%LOOKUP_PGSQL=2\
186 \nLOOKUP_PGSQL_LIBS=-Wl,--no-as-needed -lpq%' $(PKG_BUILD_DIR
)/Local
/Makefile
188 ifdef CONFIG_PACKAGE_exim-lookup-sqlite
189 $(SED
) 's%# LOOKUP_SQLITE=yes%LOOKUP_SQLITE=2\
190 \nLOOKUP_SQLITE_LIBS=-Wl,--no-as-needed -lsqlite3%' $(PKG_BUILD_DIR
)/Local
/Makefile
192 ifdef CONFIG_PACKAGE_exim-lookup-mysql
193 $(SED
) 's%# LOOKUP_MYSQL=yes%LOOKUP_MYSQL=2\
194 \nLOOKUP_MYSQL_INCLUDE=-I$(STAGING_DIR)/usr/include/mysql\
195 \nLOOKUP_MYSQL_LIBS=-Wl,--no-as-needed -lmysqlclient%' $(PKG_BUILD_DIR
)/Local
/Makefile
197 ifdef CONFIG_PACKAGE_exim-lookup-redis
198 $(SED
) 's%# LOOKUP_REDIS=yes%LOOKUP_REDIS=2\
199 \nLOOKUP_REDIS_INCLUDE=-I$(STAGING_DIR)/usr/include/hiredis\
200 \nLOOKUP_REDIS_LIBS=-Wl,--no-as-needed -lhiredis%' $(PKG_BUILD_DIR
)/Local
/Makefile
203 ifeq ($(CONFIG_BUILD_NLS
),y
)
204 $(SED
) 's%# HAVE_ICONV=yes%HAVE_ICONV=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
205 $(SED
) 's%# CFLAGS=-O -I/usr/local/include%CFLAGS=$(TARGET_CFLAGS) $(ICONV_CPPFLAGS)%' $(PKG_BUILD_DIR
)/Local
/Makefile
206 $(SED
) 's%# EXTRALIBS_EXIM=-L/usr/local/lib -liconv%EXTRALIBS_EXIM=-export-dynamic -rdynamic $(ICONV_LDFLAGS) -liconv -ldl%' $(PKG_BUILD_DIR
)/Local
/Makefile
207 $(SED
) 's%# SUPPORT_I18N_2008=yes%SUPPORT_I18N_2008=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
208 $(SED
) 's%# LDFLAGS += -lidn -lidn2%LDFLAGS += -lidn -lidn2%' $(PKG_BUILD_DIR
)/Local
/Makefile
210 $(SED
) 's%# HAVE_ICONV=yes%HAVE_ICONV=no%' $(PKG_BUILD_DIR
)/Local
/Makefile
213 $(SED
) 's%# AUTH_CRAM_MD5=yes%AUTH_CRAM_MD5=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
214 $(SED
) 's%# AUTH_DOVECOT=yes%AUTH_DOVECOT=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
215 $(SED
) 's%# AUTH_EXTERNAL=yes%AUTH_EXTERNAL=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
216 $(SED
) 's%# AUTH_PLAINTEXT=yes%AUTH_PLAINTEXT=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
217 $(SED
) 's%# AUTH_SPA=yes%AUTH_SPA=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
219 ifeq ($(BUILD_VARIANT
),gnutls
)
220 $(SED
) 's%# USE_GNUTLS=yes%USE_GNUTLS=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
221 $(SED
) 's%# TLS_INCLUDE=-I/usr/local/.*%TLS_INCLUDE=-I$(STAGING_DIR)/usr/include%' $(PKG_BUILD_DIR
)/Local
/Makefile
222 ifeq ($(CONFIG_EXIM_GNUTLS_DANE
),y
)
223 $(SED
) 's%# TLS_LIBS=-lgnutls -lgnutls-dane%TLS_LIBS=-L$(STAGING_DIR)/usr/lib -lgnutls -lgnutls-dane%' $(PKG_BUILD_DIR
)/Local
/Makefile
225 $(SED
) 's%SUPPORT_DANE=yes%# SUPPORT_DANE=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
226 $(SED
) 's%# TLS_LIBS=-lgnutls -lgnutls-dane%TLS_LIBS=-L$(STAGING_DIR)/usr/lib -lgnutls%' $(PKG_BUILD_DIR
)/Local
/Makefile
228 $(SED
) 's%# AUTH_TLS=yes%AUTH_TLS=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
230 ifneq ($(filter ldap openssl
, $(BUILD_VARIANT
)),)
231 $(SED
) 's%# USE_OPENSSL=yes%USE_OPENSSL=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
232 $(SED
) 's%# TLS_INCLUDE=-I/usr/local/.*%TLS_INCLUDE=-I$(STAGING_DIR)/usr/include%' $(PKG_BUILD_DIR
)/Local
/Makefile
233 $(SED
) 's%# TLS_LIBS=-lssl -lcrypto%TLS_LIBS=-L$(STAGING_DIR)/usr/lib -lssl -lcrypto%' $(PKG_BUILD_DIR
)/Local
/Makefile
234 $(SED
) 's%# AUTH_TLS=yes%AUTH_TLS=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
236 ifeq ($(BUILD_VARIANT
),ldap
)
237 $(SED
) 's%# LOOKUP_LDAP=yes%LOOKUP_LDAP=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
238 $(SED
) 's%# LDAP_LIB_TYPE=OPENLDAP2%LDAP_LIB_TYPE=OPENLDAP2%' $(PKG_BUILD_DIR
)/Local
/Makefile
239 echo
"LOOKUP_LIBS+=-lldap -llber" >> $(PKG_BUILD_DIR
)/Local
/Makefile
240 $(SED
) 's%# AUTH_CYRUS_SASL=yes%AUTH_CYRUS_SASL=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
241 $(SED
) 's%# AUTH_LIBS=-lsasl2%AUTH_LIBS=-lsasl2%' $(PKG_BUILD_DIR
)/Local
/Makefile
243 ifeq ($(BUILD_VARIANT
),nossl
)
244 $(SED
) 's%# DISABLE_TLS=yes%DISABLE_TLS=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
245 $(SED
) 's%SUPPORT_DANE=yes%# SUPPORT_DANE=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
247 $(SED
) 's%# CFLAGS_DYNAMIC=-shared -rdynamic -fPIC%CFLAGS_DYNAMIC=-shared -rdynamic $(FPIC)%' $(PKG_BUILD_DIR
)/Local
/Makefile
248 $(SED
) 's%# LOOKUP_MODULE_DIR=/usr/lib/exim/lookups/%LOOKUP_MODULE_DIR=/usr/lib/exim/lookups/%' $(PKG_BUILD_DIR
)/Local
/Makefile
249 $(SED
) 's%#DLOPEN_LOCAL_SCAN=yes%DLOPEN_LOCAL_SCAN=yes%' $(PKG_BUILD_DIR
)/Local
/Makefile
250 $(call Build
/Compile
/Default
,makefile
)
251 $(CP
) $(PKG_BUILD_DIR
)/OS
/os.h-Linux
$(PKG_BUILD_DIR
)/build-Linux-
$(ARCH
)/os.h
252 # overwrite types for cross-compile
253 # (is all the below true for glibc as well?)
254 echo
'#include <inttypes.h>' >> $(PKG_BUILD_DIR
)/build-Linux-
$(ARCH
)/os.h
255 echo
'#define ip_options ip_opts' >> $(PKG_BUILD_DIR
)/build-Linux-
$(ARCH
)/os.h
256 echo
'#undef OFF_T_FMT' >> $(PKG_BUILD_DIR
)/build-Linux-
$(ARCH
)/os.h
257 echo
'#define OFF_T_FMT "%" PRId64' >> $(PKG_BUILD_DIR
)/build-Linux-
$(ARCH
)/os.h
258 echo
'#undef LONGLONG_T' >> $(PKG_BUILD_DIR
)/build-Linux-
$(ARCH
)/os.h
259 echo
'#define LONGLONG_T int64_t' >> $(PKG_BUILD_DIR
)/build-Linux-
$(ARCH
)/os.h
260 echo
'#ifndef NS_MAXMSG' >> $(PKG_BUILD_DIR
)/build-Linux-
$(ARCH
)/os.h
261 echo
'#define NS_MAXMSG 65535' >> $(PKG_BUILD_DIR
)/build-Linux-
$(ARCH
)/os.h
262 echo
'#endif' >> $(PKG_BUILD_DIR
)/build-Linux-
$(ARCH
)/os.h
263 $(HOST_MAKE_VARS
) $(MAKE
) $(HOST_MAKE_FLAGS
) $(HOST_MAKE_VARS
) -C
$(PKG_BUILD_DIR
)/build-Linux-
$(ARCH
) macro_predef
266 define Package
/exim
/conffiles
270 Package
/exim-gnutls
/conffiles
= $(Package
/exim
/conffiles
)
271 Package
/exim-openssl
/conffiles
= $(Package
/exim
/conffiles
)
272 Package
/exim-ldap
/conffiles
= $(Package
/exim
/conffiles
)
274 define Package
/exim
/install
275 $(INSTALL_DIR
) $(1)/usr
/sbin
276 $(INSTALL_BIN
) $(PKG_BUILD_DIR
)/build-Linux-
$(ARCH
)/exim
$(1)/usr
/sbin
277 $(INSTALL_DIR
) $(1)/etc
/exim
278 $(INSTALL_DATA
) $(PKG_BUILD_DIR
)/src
/configure.default
$(1)/etc
/exim
/exim.conf
279 $(INSTALL_DIR
) $(1)/etc
/init.d
280 $(INSTALL_BIN
) .
/files
/exim.init
$(1)/etc
/init.d
/exim
281 $(INSTALL_DIR
) $(1)/usr
/lib
/exim
/lookups
284 Package
/exim-gnutls
/install = $(Package
/exim
/install)
285 Package
/exim-openssl
/install = $(Package
/exim
/install)
286 Package
/exim-ldap
/install = $(Package
/exim
/install)
289 define Package
/exim-lookup-
$(subst _
,-,$(firstword $(subst %, ,$(1))))/install
290 $(INSTALL_DIR
) $$(1)/usr
/lib
/exim
/lookups
292 $(PKG_BUILD_DIR
)/build-Linux-
$(ARCH
)/lookups
/$(firstword $(subst %, ,$(1))).so \
293 $$(1)/usr
/lib
/exim
/lookups
297 $(foreach file
,$(LOOKUPS
),$(eval
$(call LookupInstall
,$(file
))))
299 $(eval
$(call BuildPackage
,exim
))
300 $(eval
$(call BuildPackage
,exim-gnutls
))
301 $(eval
$(call BuildPackage
,exim-openssl
))
302 $(eval
$(call BuildPackage
,exim-ldap
))
303 $(foreach file
,$(LOOKUPS
),$(eval
$(call BuildPackage
,exim-lookup-
$(subst _
,-,$(firstword $(subst %, ,$(file
)))))))