xref: /OK3568_Linux_fs/buildroot/package/exim/exim.mk (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun################################################################################
2*4882a593Smuzhiyun#
3*4882a593Smuzhiyun# exim
4*4882a593Smuzhiyun#
5*4882a593Smuzhiyun################################################################################
6*4882a593Smuzhiyun
7*4882a593SmuzhiyunEXIM_VERSION = 4.95
8*4882a593SmuzhiyunEXIM_SOURCE = exim-$(EXIM_VERSION).tar.xz
9*4882a593SmuzhiyunEXIM_SITE = https://ftp.exim.org/pub/exim/exim4
10*4882a593SmuzhiyunEXIM_LICENSE = GPL-2.0+
11*4882a593SmuzhiyunEXIM_LICENSE_FILES = LICENCE
12*4882a593SmuzhiyunEXIM_CPE_ID_VENDOR = exim
13*4882a593SmuzhiyunEXIM_SELINUX_MODULES = exim mta
14*4882a593SmuzhiyunEXIM_DEPENDENCIES = host-berkeleydb host-pcre pcre berkeleydb host-pkgconf
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun# Modify a variable value. It must already exist in the file, either
17*4882a593Smuzhiyun# commented or not.
18*4882a593Smuzhiyundefine exim-config-change # variable-name, variable-value
19*4882a593Smuzhiyun	$(SED) 's,^[#[:space:]]*$1[[:space:]]*=.*$$,$1=$2,' \
20*4882a593Smuzhiyun		$(@D)/Local/Makefile
21*4882a593Smuzhiyunendef
22*4882a593Smuzhiyun
23*4882a593Smuzhiyun# Comment-out a variable. Has no effect if it does not exits.
24*4882a593Smuzhiyundefine exim-config-unset # variable-name
25*4882a593Smuzhiyun	$(SED) 's,^\([[:space:]]*$1[[:space:]]*=.*$$\),# \1,' \
26*4882a593Smuzhiyun		$(@D)/Local/Makefile
27*4882a593Smuzhiyunendef
28*4882a593Smuzhiyun
29*4882a593Smuzhiyun# Add a variable definition. It must not already exist in the file,
30*4882a593Smuzhiyun# otherwise it would be defined twice with potentially different values.
31*4882a593Smuzhiyundefine exim-config-add # variable-name, variable-value
32*4882a593Smuzhiyun	echo "$1=$2" >>$(@D)/Local/Makefile
33*4882a593Smuzhiyunendef
34*4882a593Smuzhiyun
35*4882a593Smuzhiyundefine EXIM_USE_CUSTOM_CONFIG_FILE
36*4882a593Smuzhiyun	$(INSTALL) -m 0644 $(BR2_PACKAGE_EXIM_CUSTOM_CONFIG_FILE) \
37*4882a593Smuzhiyun		$(@D)/Local/Makefile
38*4882a593Smuzhiyunendef
39*4882a593Smuzhiyun
40*4882a593Smuzhiyundefine EXIM_USE_DEFAULT_CONFIG_FILE
41*4882a593Smuzhiyun	$(INSTALL) -m 0644 $(@D)/src/EDITME $(@D)/Local/Makefile
42*4882a593Smuzhiyun	$(call exim-config-change,BIN_DIRECTORY,/usr/sbin)
43*4882a593Smuzhiyun	$(call exim-config-change,CONFIGURE_FILE,/etc/exim/configure)
44*4882a593Smuzhiyun	$(call exim-config-change,LOG_FILE_PATH,/var/log/exim/exim_%slog)
45*4882a593Smuzhiyun	$(call exim-config-change,PID_FILE_PATH,/var/run/exim/exim.pid)
46*4882a593Smuzhiyun	$(call exim-config-change,EXIM_USER,ref:exim)
47*4882a593Smuzhiyun	$(call exim-config-change,EXIM_GROUP,mail)
48*4882a593Smuzhiyun	$(call exim-config-change,TRANSPORT_LMTP,yes)
49*4882a593Smuzhiyun	$(call exim-config-change,PCRE_LIBS,-lpcre)
50*4882a593Smuzhiyun	$(call exim-config-change,PCRE_CONFIG,no)
51*4882a593Smuzhiyun	$(call exim-config-change,HAVE_ICONV,no)
52*4882a593Smuzhiyun	$(call exim-config-unset,EXIM_MONITOR)
53*4882a593Smuzhiyun	$(call exim-config-change,AUTH_PLAINTEXT,yes)
54*4882a593Smuzhiyun	$(call exim-config-change,AUTH_CRAM_MD5,yes)
55*4882a593Smuzhiyun	$(call exim-config-unset,SUPPORT_DANE)
56*4882a593Smuzhiyunendef
57*4882a593Smuzhiyun
58*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_DOVECOT),y)
59*4882a593SmuzhiyunEXIM_DEPENDENCIES += dovecot
60*4882a593Smuzhiyundefine EXIM_USE_DEFAULT_CONFIG_FILE_DOVECOT
61*4882a593Smuzhiyun	$(call exim-config-change,AUTH_DOVECOT,yes)
62*4882a593Smuzhiyunendef
63*4882a593Smuzhiyunendif
64*4882a593Smuzhiyun
65*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_CLAMAV),y)
66*4882a593SmuzhiyunEXIM_DEPENDENCIES += clamav
67*4882a593Smuzhiyundefine EXIM_USE_DEFAULT_CONFIG_FILE_CLAMAV
68*4882a593Smuzhiyun	$(call exim-config-change,WITH_CONTENT_SCAN,yes)
69*4882a593Smuzhiyunendef
70*4882a593Smuzhiyunendif
71*4882a593Smuzhiyun
72*4882a593Smuzhiyunifeq ($(BR2_PACKAGE_OPENSSL),y)
73*4882a593SmuzhiyunEXIM_DEPENDENCIES += host-openssl openssl
74*4882a593Smuzhiyundefine EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL
75*4882a593Smuzhiyun	$(call exim-config-change,USE_OPENSSL,yes)
76*4882a593Smuzhiyun	$(call exim-config-change,USE_OPENSSL_PC,openssl)
77*4882a593Smuzhiyunendef
78*4882a593Smuzhiyunelse
79*4882a593Smuzhiyundefine EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL
80*4882a593Smuzhiyun	$(call exim-config-change,DISABLE_TLS,yes)
81*4882a593Smuzhiyunendef
82*4882a593Smuzhiyunendif
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun# musl does not provide struct ip_options nor struct ip_opts (but it is
85*4882a593Smuzhiyun# available with both glibc and uClibc)
86*4882a593Smuzhiyunifeq ($(BR2_TOOLCHAIN_USES_MUSL),y)
87*4882a593Smuzhiyundefine EXIM_FIX_IP_OPTIONS_FOR_MUSL
88*4882a593Smuzhiyun	$(SED) 's/#define GLIBC_IP_OPTIONS/#define DARWIN_IP_OPTIONS/' \
89*4882a593Smuzhiyun		$(@D)/OS/os.h-Linux
90*4882a593Smuzhiyunendef
91*4882a593Smuzhiyunendif
92*4882a593Smuzhiyun
93*4882a593Smuzhiyundefine EXIM_CONFIGURE_TOOLCHAIN
94*4882a593Smuzhiyun	$(call exim-config-add,CC,$(TARGET_CC))
95*4882a593Smuzhiyun	$(call exim-config-add,CFLAGS,$(TARGET_CFLAGS))
96*4882a593Smuzhiyun	$(call exim-config-add,AR,$(TARGET_AR) cq)
97*4882a593Smuzhiyun	$(call exim-config-add,RANLIB,$(TARGET_RANLIB))
98*4882a593Smuzhiyun	$(call exim-config-add,HOSTCC,$(HOSTCC))
99*4882a593Smuzhiyun	$(call exim-config-add,HOSTCFLAGS,$(HOSTCFLAGS))
100*4882a593Smuzhiyun	$(EXIM_FIX_IP_OPTIONS_FOR_MUSL)
101*4882a593Smuzhiyunendef
102*4882a593Smuzhiyun
103*4882a593Smuzhiyunifneq ($(call qstrip,$(BR2_PACKAGE_EXIM_CUSTOM_CONFIG_FILE)),)
104*4882a593Smuzhiyundefine EXIM_CONFIGURE_CMDS
105*4882a593Smuzhiyun	$(EXIM_USE_CUSTOM_CONFIG_FILE)
106*4882a593Smuzhiyun	$(EXIM_CONFIGURE_TOOLCHAIN)
107*4882a593Smuzhiyunendef
108*4882a593Smuzhiyunelse # CUSTOM_CONFIG
109*4882a593Smuzhiyundefine EXIM_CONFIGURE_CMDS
110*4882a593Smuzhiyun	$(EXIM_USE_DEFAULT_CONFIG_FILE)
111*4882a593Smuzhiyun	$(EXIM_USE_DEFAULT_CONFIG_FILE_DOVECOT)
112*4882a593Smuzhiyun	$(EXIM_USE_DEFAULT_CONFIG_FILE_CLAMAV)
113*4882a593Smuzhiyun	$(EXIM_USE_DEFAULT_CONFIG_FILE_OPENSSL)
114*4882a593Smuzhiyun	$(EXIM_CONFIGURE_TOOLCHAIN)
115*4882a593Smuzhiyunendef
116*4882a593Smuzhiyunendif # CUSTOM_CONFIG
117*4882a593Smuzhiyun
118*4882a593Smuzhiyun# exim needs a bit of love to build statically
119*4882a593Smuzhiyunifeq ($(BR2_STATIC_LIBS),y)
120*4882a593SmuzhiyunEXIM_STATIC_FLAGS = LFLAGS="-pthread --static"
121*4882a593Smuzhiyunendif
122*4882a593Smuzhiyun
123*4882a593Smuzhiyun# We need the host version of macro_predef during the build, before
124*4882a593Smuzhiyun# building it we need to prepare the makefile.
125*4882a593Smuzhiyundefine EXIM_BUILD_CMDS
126*4882a593Smuzhiyun	$(TARGET_MAKE_ENV) build=br $(MAKE) -C $(@D) makefile
127*4882a593Smuzhiyun	$(HOST_MAKE_ENV) $(MAKE) -C $(@D)/build-br macro_predef \
128*4882a593Smuzhiyun		CC="$(HOSTCC)" \
129*4882a593Smuzhiyun		LNCC="$(HOSTCC)" \
130*4882a593Smuzhiyun		CFLAGS="-std=c99 $(HOST_CFLAGS)" \
131*4882a593Smuzhiyun		LFLAGS="-fPIC $(HOST_LDFLAGS)"
132*4882a593Smuzhiyun	$(TARGET_MAKE_ENV) build=br $(MAKE) -C $(@D) $(EXIM_STATIC_FLAGS) \
133*4882a593Smuzhiyun		CFLAGS="-std=c99 $(TARGET_CFLAGS)"
134*4882a593Smuzhiyunendef
135*4882a593Smuzhiyun
136*4882a593Smuzhiyun# Need to replicate the LFLAGS in install, as exim still wants to build
137*4882a593Smuzhiyun# something when installing...
138*4882a593Smuzhiyundefine EXIM_INSTALL_TARGET_CMDS
139*4882a593Smuzhiyun	DESTDIR=$(TARGET_DIR) INSTALL_ARG="-no_chown -no_symlink" build=br \
140*4882a593Smuzhiyun	  $(MAKE) -C $(@D) $(EXIM_STATIC_FLAGS) \
141*4882a593Smuzhiyun		CFLAGS="-std=c99 $(TARGET_CFLAGS)" \
142*4882a593Smuzhiyun		install
143*4882a593Smuzhiyun	chmod u+s $(TARGET_DIR)/usr/sbin/exim
144*4882a593Smuzhiyunendef
145*4882a593Smuzhiyun
146*4882a593Smuzhiyundefine EXIM_USERS
147*4882a593Smuzhiyun	exim 88 mail 8 * - - - exim
148*4882a593Smuzhiyunendef
149*4882a593Smuzhiyun
150*4882a593Smuzhiyundefine EXIM_INSTALL_INIT_SYSV
151*4882a593Smuzhiyun	$(INSTALL) -D -m 755 package/exim/S86exim \
152*4882a593Smuzhiyun		$(TARGET_DIR)/etc/init.d/S86exim
153*4882a593Smuzhiyunendef
154*4882a593Smuzhiyun
155*4882a593Smuzhiyundefine EXIM_INSTALL_INIT_SYSTEMD
156*4882a593Smuzhiyun	$(INSTALL) -D -m 644 package/exim/exim.service \
157*4882a593Smuzhiyun		$(TARGET_DIR)/usr/lib/systemd/system/exim.service
158*4882a593Smuzhiyunendef
159*4882a593Smuzhiyun
160*4882a593Smuzhiyun$(eval $(generic-package))
161