#
# Copyright (C) 2017 Val Kulkov <val.kulkov@gmail.com>
#
# This is free software, licensed under the GNU General Public License v3.
#

include $(TOPDIR)/rules.mk

PKG_NAME:=sendmail
PKG_VERSION:=8.15.2
PKG_RELEASE:=3

PKG_SOURCE:=$(PKG_NAME).$(PKG_VERSION).tar.gz
PKG_SOURCE_URL:=http://artfiles.org/sendmail.org/pub/sendmail/ \
ftp://ftp.cs.berkeley.edu/ucb/sendmail/ \
http://www.netgull.com/sendmail/
PKG_HASH:=24f94b5fd76705f15897a78932a5f2439a32b1a2fdc35769bb1a5f5d9b4db439
PKG_MAINTAINER:=Val Kulkov <val.kulkov@gmail.com>

PKG_LICENSE:=Sendmail
PKG_LICENSE_FILES:=LICENSE

PKG_INSTALL:=1
PKG_BUILD_DEPENDS:=openssl

include $(INCLUDE_DIR)/package.mk

TARGET_OS:=OpenWrt
SITECONFIG:=site.$(TARGET_OS).m4

#
# Uncomment the following sections that are currently commented out
# to enable building and packaging Sendmail executables and default
# configuration files into the "sendmail" package.
#
# Note that in this edition of the "sendmail" package:
#   1. No init script is provided to start the Sendmail daemon.
#   2. The initial configuration files in /etc/mail are likely inadequate
#      for running the Sendmail daemon on your LEDE/OpenWrt device.
#   3. You may have to "opkg install m4" to build Sendmail configuration files
#      from customized mc files on your LEDE/OpenWrt device using m4, or
#      alternatively you may use a Linux computer to build configuration
#      files from customized mc files.
#   4. Compiling and building the "sendmail" package will likely fail at
#      the packaging stage if you have already selected and built the "ssmtp"
#      package. "ssmtp" installs /usr/sbin/sendmail in the form of a symlink
#      to /usr/sbin/ssmtp. Where /usr/sbin/sendmail is already present,
#      copying the sendmail executable into /usr/sbin/sendmail results in
#      an error:
#        cp: not writing through dangling symlink
#        ...
#        lede/source/include/toplevel.mk:206: recipe for target 'package/feeds/packages/libmilter/compile' failed
#
# ANYONE WHO IS READING THIS MAKEFILE AND WHO HAS THE KNOWLEDGE AND DESIRE
# TO COMPLETE PORTING OF SENDMAIL TO LEDE/OPENWRT PLATFORM IS ENCOURAGED
# TO DO SO AND TAKE OVER THE MAINTAINERSHIP OF THIS PACKAGE FROM VAL KULKOV.
#
#define Package/sendmail
#  SECTION:=mail
#  CATEGORY:=Mail
#  DEPENDS:=+libopenssl
#  TITLE:=A general purpose internetwork mail routing facility
#  URL:=http://sendmail.org/
#endef
#
#define Package/sendmail/description
#   Sendmail is a general purpose internetwork email routing facility that
#   supports many kinds of mail-transfer and delivery methods, including
#   the Simple Mail Transfer Protocol (SMTP) used for email transport over
#   the Internet.
#endef
#
#define Package/sendmail/conffiles
#/etc/mail/helpfile
#/etc/mail/sendmail.cf
#/etc/mail/submit.cf
#/etc/mail/statistics
#endef

define Package/libmilter-sendmail
  SECTION:=libs
  CATEGORY:=Libraries
  DEPENDS:=+libpthread
  TITLE:=The sendmail Mail Filter API (Milter) library
  URL:=http://sendmail.org/
endef

define Package/libmilter-sendmail/description
  The sendmail Mail Filter API (Milter) is designed to allow third-party
programs access to mail messages as they are being processed in order to
filter meta-information and content.
endef

TARGET_CFLAGS += $(FPIC)

define Build/Prepare
	$(Build/Prepare/Default)
	$(CP) files/lm_getver.c $(PKG_BUILD_DIR)/libmilter/
	$(CP) files/$(SITECONFIG) $(PKG_BUILD_DIR)/devtools/Site/
	$(CP) files/$(TARGET_OS) $(PKG_BUILD_DIR)/devtools/OS/
	$(CP) files/sharedlibrary.m4 $(PKG_BUILD_DIR)/devtools/M4/UNIX/
	$(CP) $(PKG_BUILD_DIR)/cf/cf/generic-linux.mc $(PKG_BUILD_DIR)/cf/cf/sendmail.mc
	$(SED) 's@TARGET_CC@$(TARGET_CC)@g' $(PKG_BUILD_DIR)/devtools/Site/$(SITECONFIG)
	$(SED) 's@TARGET_CFLAGS@$(TARGET_CFLAGS)@g' $(PKG_BUILD_DIR)/devtools/Site/$(SITECONFIG)
	$(SED) 's@STAGING_DIR@$(STAGING_DIR)@g' $(PKG_BUILD_DIR)/devtools/OS/$(TARGET_OS)
endef

define Build/Compile
	$(call Build/Compile/Default,)
	$(MAKE_VARS) $(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR)/libmilter $(MAKE_FLAGS) all
	$(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/libmilter $(MAKE_FLAGS) DESTDIR="$(PKG_INSTALL_DIR)" install
	$(MAKE_VARS) $(MAKE) -C $(PKG_BUILD_DIR)/cf/cf $(MAKE_FLAGS) DESTDIR="$(PKG_INSTALL_DIR)" install-cf
endef

define Build/InstallDev
	$(INSTALL_DIR) $(1)/usr/include/libmilter $(1)/usr/lib
	$(CP) $(PKG_INSTALL_DIR)/usr/include/libmilter/* $(1)/usr/include/libmilter/
	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libmilter.so* $(1)/usr/lib/
endef

define Package/libmilter-sendmail/install
	$(INSTALL_DIR) $(1)/usr/lib
	$(CP) $(PKG_INSTALL_DIR)/usr/lib/libmilter.so* $(1)/usr/lib/
endef

#define Package/sendmail/install
#	$(INSTALL_DIR) $(1)/etc/mail $(1)/usr/bin $(1)/usr/sbin
#	$(INSTALL_CONF) $(PKG_INSTALL_DIR)/etc/mail/* $(1)/etc/mail/
#	$(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
#	$(CP) $(PKG_INSTALL_DIR)/usr/sbin/* $(1)/usr/sbin/
#endef

$(eval $(call BuildPackage,libmilter-sendmail))
#$(eval $(call BuildPackage,sendmail))