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