Makefile revision 4954
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering#
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# CDDL HEADER START
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering#
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# The contents of this file are subject to the terms of the
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# Common Development and Distribution License (the "License").
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# You may not use this file except in compliance with the License.
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering#
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# or http://www.opensolaris.org/os/licensing.
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# See the License for the specific language governing permissions
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# and limitations under the License.
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering#
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# When distributing Covered Code, include this CDDL HEADER in each
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# file and include the License file at usr/src/OPENSOLARIS.LICENSE.
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# If applicable, add the following below this CDDL HEADER, with the
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# fields enclosed by brackets "[]" replaced with your own identifying
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# information: Portions Copyright [yyyy] [name of copyright owner]
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering#
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# CDDL HEADER END
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering#
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# Copyright (c) 2012, 2015, Oracle and/or its affiliates. All rights reserved.
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering#
d4205751d4643c272059a3728045929dd0e5e800Lennart Poetteringinclude ../../make-rules/shared-macros.mk
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_NAME= sendmail
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_VERSION= 8.15.2
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_SRC= $(COMPONENT_NAME)-$(COMPONENT_VERSION)
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_PROJECT_URL= ftp://ftp.sendmail.org/pub/sendmail/
844ec79b3c2f246114ea316ebe1f36044bdb688eZbigniew Jędrzejewski-SzmekCOMPONENT_ARCHIVE= $(COMPONENT_NAME).$(COMPONENT_VERSION).tar.gz
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_ARCHIVE_HASH= \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering sha256:24f94b5fd76705f15897a78932a5f2439a32b1a2fdc35769bb1a5f5d9b4db439
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_ARCHIVE_URL= $(COMPONENT_PROJECT_URL)$(COMPONENT_ARCHIVE)
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_SIG_URL= $(COMPONENT_ARCHIVE_URL).sig
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_BUGDB= utility/sendmail
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringTPNO= 23958
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
18cd5fe99f70a55a2d6f2303d6ee0624942695b1Zbigniew Jędrzejewski-Szmekinclude $(WS_MAKE_RULES)/prep.mk
d4205751d4643c272059a3728045929dd0e5e800Lennart Poetteringinclude $(WS_MAKE_RULES)/justmake.mk
d4205751d4643c272059a3728045929dd0e5e800Lennart Poetteringinclude $(WS_MAKE_RULES)/ips.mk
d4205751d4643c272059a3728045929dd0e5e800Lennart Poetteringinclude $(WS_MAKE_RULES)/lint-libraries.mk
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
844ec79b3c2f246114ea316ebe1f36044bdb688eZbigniew Jędrzejewski-Szmek# Although we build 32_and_64, everything except libmilter just wants 64,
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# which is why the macros just below only have values for 64. libmilter
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# is dealt with further below.
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringPKG_PROTO_DIRS += $(BUILD_DIR_64)
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringPKG_PROTO_DIRS += $(BUILD_DIR_64)/obj.SunOS.$(OS_VERSION).$(ARCH)
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringPKG_PROTO_DIRS += $(COMPONENT_DIR)/files
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringPKG_PROTO_DIRS += $(COMPONENT_DIR)/files/man
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# Userland default includes -mt which links with libthread which we don't need.
d4205751d4643c272059a3728045929dd0e5e800Lennart Poetteringstudio_MT =
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# We set ARCH to match sendmail's configure-like script: on x86, it simply
83f6936a018b08880670838756e0f4e9ea98b4a7Lennart Poettering# uses 'uname -m', but on sparc it shortens "sun4*" into "sun4".
83f6936a018b08880670838756e0f4e9ea98b4a7Lennart PoetteringARCH := $(shell uname -m)
83f6936a018b08880670838756e0f4e9ea98b4a7Lennart Poetteringifeq ($(findstring sun4,$(ARCH)),sun4)
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringARCH = sun4
d4205751d4643c272059a3728045929dd0e5e800Lennart Poetteringendif
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringFILE_DIR=$(COMPONENT_DIR)/files
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringM4_ARG=-D_NO_MAKEINFO_
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringSM_BUILD_SUB_DIR=obj.SunOS.$(OS_VERSION).$(ARCH)
83f6936a018b08880670838756e0f4e9ea98b4a7Lennart PoetteringSM_BUILD_DIR=$(@D)/$(SM_BUILD_SUB_DIR)
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# libmilter is built 32- and 64-bit, but its Makefile installs into a common
844ec79b3c2f246114ea316ebe1f36044bdb688eZbigniew Jędrzejewski-Szmek# location, so we use the macro below in its manifest to distinguish between
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# the different built objects.
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringPKG_MACROS += LIBMILTER_BUILD_DIR=$(SM_BUILD_SUB_DIR)
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCLEAN_PATHS += $(FILE_DIR)/aux/mailq
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# This appends "+Sun" to the version string, which we do for historical
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# reasons. If we did this via patch, then we would have to revise the patch
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# with every new release, since the version string changes every time.
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_PREP_ACTION = $(GSED) -i -e 's/\(Version\[\] = "8\.[^"]*\)/\1+Sun/' \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering $(COMPONENT_SRC)/sendmail/version.c
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# libmilter and sendmail must come before include, so appending to the default
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# value of LINT_FLAGS will not work; we must redefine it here.
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringSM_DEFS= -DSOLARIS=$(shell echo $(SOLARIS_VERSION) | \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering $(GSED) -e 's/\.//' -e 's/$$/00/')
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringSM_INCLUDES= -I$(SM_BUILD_DIR)/libmilter -I$(SOURCE_DIR)/sendmail \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering -I$(SOURCE_DIR)/include -I$(SOURCE_DIR) -I.
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringLINT_FLAGS = -nsvx $(SM_DEFS) $(SM_INCLUDES)
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCCOPTS = -erroff=E_STATEMENT_NOT_REACHED $(CC_BITS)
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_BUILD_ARGS += CC="$(CC)"
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_BUILD_ARGS += CCOPTS="$(CCOPTS)"
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_BUILD_ARGS += CCLINK="$(CC)"
844ec79b3c2f246114ea316ebe1f36044bdb688eZbigniew Jędrzejewski-SzmekCOMPONENT_BUILD_ARGS += CC_PIC="$(CC_PIC)"
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_BUILD_ARGS += LDOPTS="$(CC_BITS)"
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# mailq's Makefile doesn't grok the 32- and 64-bit build. We just want 64.
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# So we clean before we build, and the last build (64) wins, which is what
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# we want.
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_POST_BUILD_ACTION = cd $(FILE_DIR)/aux ; \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering $(GMAKE) BITS=$(BITS) clean build
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_POST_INSTALL_ACTION += cd $(FILE_DIR)/aux ; $(GMAKE) install ;
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_POST_INSTALL_ACTION += \
18cd5fe99f70a55a2d6f2303d6ee0624942695b1Zbigniew Jędrzejewski-Szmek $(CP) $(FILE_DIR)/cf/domain/solaris-generic.m4 $(@D)/cf/domain/ ;
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_POST_INSTALL_ACTION += \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering $(CP) $(FILE_DIR)/cf/cf/sendmail.mc $(@D)/cf/cf/ ;
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# Without the two $(CP)s below we would pick up the version of submit.cf
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# from under $(COMPONENT_SRC), which is not what we want because it contains
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# information (user, hostname, date, build path) from the upstream machine
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# where the distro was created. So we build our own version here, using
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# $(M4_ARG), which suppresses the inclusion of all that information.
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# Then we copy it to $(PROTO_DIR)/cf/cf instead of the more intuitive
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# $(PROTOETCDIR)/mail/cf/cf to match the transform in the manifest that
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# picks up everything under etc/mail/cf/ from cf/ instead.
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_POST_INSTALL_ACTION += \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering cd $(@D)/cf/cf ; \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering $(RM) submit.cf ; \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering m4 $(M4_ARG) ../m4/cf.m4 submit.mc > submit.cf ; \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering $(CP) submit.cf $(PROTOETCDIR)/mail ; \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering $(MKDIR) $(PROTO_DIR)/cf/cf ; \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering $(CP) submit.cf $(PROTO_DIR)/cf/cf ; \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering m4 $(M4_ARG) ../m4/cf.m4 sendmail.mc > sendmail.cf
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_TEST_ARGS += CC="$(CC)"
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_TEST_ARGS += CCOPTS="$(CCOPTS)"
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_TEST_ARGS += CCLINK="$(CC)"
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_TEST_ARGS += CC_PIC="$(CC_PIC)"
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_TEST_ARGS += LDOPTS="$(CC_BITS)"
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_TEST_ENV += PATH=/usr/gnu/bin:/usr/bin
18cd5fe99f70a55a2d6f2303d6ee0624942695b1Zbigniew Jędrzejewski-Szmek
83f6936a018b08880670838756e0f4e9ea98b4a7Lennart Poettering# The transforms below abstract out the 32- or 64-bit specific parts of
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# the results, so we can use a common "all" master file.
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringCOMPONENT_TEST_MASTER = $(COMPONENT_TEST_RESULTS_DIR)/results-all.master
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
18cd5fe99f70a55a2d6f2303d6ee0624942695b1Zbigniew Jędrzejewski-SzmekCOMPONENT_TEST_TRANSFORMS += \
18cd5fe99f70a55a2d6f2303d6ee0624942695b1Zbigniew Jędrzejewski-Szmek '-e "s|$(SM_BUILD_SUB_DIR)|\\$$(SM_BUILD_SUB_DIR)|g" ' \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering '-e "s|$(OS_VERSION)|\\$$(OS_VERSION)|g" ' \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering '-e "s|$(ARCH)|\\$$(ARCH)|g" ' \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering '-e "s|^$(CC).*$$|XXX_CC_XXX|g" ' \
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering '-e "/^XXX_CC_XXX\\$$/d" '
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringASLR_MODE = $(ASLR_ENABLE)
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
844ec79b3c2f246114ea316ebe1f36044bdb688eZbigniew Jędrzejewski-SzmekINSTALL_64=
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering# common targets
d4205751d4643c272059a3728045929dd0e5e800Lennart Poetteringbuild: $(BUILD_32_and_64)
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart Poetteringinstall: $(INSTALL_32_and_64)
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart Poetteringtest: $(TEST_32_and_64)
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart Poetteringsystem-test: $(SYSTEM_TESTS_NOT_IMPLEMENTED)
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringREQUIRED_PACKAGES += database/berkeleydb-5
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringREQUIRED_PACKAGES += library/libmilter
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringREQUIRED_PACKAGES += library/openldap
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringREQUIRED_PACKAGES += library/security/openssl
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringREQUIRED_PACKAGES += runtime/perl-512
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringREQUIRED_PACKAGES += shell/ksh93
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringREQUIRED_PACKAGES += system/core-os
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringREQUIRED_PACKAGES += system/library
d4205751d4643c272059a3728045929dd0e5e800Lennart PoetteringREQUIRED_PACKAGES += system/network
d4205751d4643c272059a3728045929dd0e5e800Lennart Poettering