Makefile   [plain text]


#
# xbs-compatible wrapper Makefile for SpamAssassin
#

PROJECT=SpamAssassin

SHELL := /bin/sh

# Sane defaults, which are typically overridden on the command line.
SRCROOT=
OBJROOT=$(SRCROOT)
SYMROOT=$(OBJROOT)
DSTROOT=/usr/local
RC_ARCHS=
CFLAGS=-Os $(RC_CFLAGS)

# Configuration values we customize
#
SPAM_TAR_GZ=Mail-SpamAssassin-3.2.1.tar.gz

SPAM_BUILD_DIR=/spamassassin/Mail-SpamAssassin-3.2.1

PRIV_DIR=/private
USR_DIR=/usr
PERL_VER=`perl -V:version | sed -n -e "s/[^0-9.]*\([0-9.]*\).*/\1/p"`
PERL_DIR=/System/Library/Perl
PERL_EXTRA_DIR=/System/Library/Perl/Extras/Extras
PERL_EXTRA_VER_DIR=/System/Library/Perl/Extras/$(PERL_VER)

SETUPEXTRASDIR=SetupExtras
SASCRIPTSDIR=/System/Library/ServerSetup/SetupExtras
SA_BIN_DIR=/private/etc/mail/spamassassin
USR=/usr
USR_LIB=/usr/lib
USR_LOCAL=/usr/local
USR_OS_VERSION=$(USR_LOCAL)/OpenSourceVersions
USR_OS_LICENSE=$(USR_LOCAL)/OpenSourceLicenses

STRIP=/usr/bin/strip
GNUTAR=/usr/bin/gnutar
CHOWN=/usr/sbin/chown

# These includes provide the proper paths to system utilities
#

include $(MAKEFILEPATH)/pb_makefiles/platform.make
include $(MAKEFILEPATH)/pb_makefiles/commands-$(OS).make

default:: make_sa

install :: make_sa_install

installhdrs :
	$(SILENT) $(ECHO) "No headers to install"

installsrc :
	[ ! -d $(SRCROOT)/$(PROJECT) ] && mkdir -p $(SRCROOT)/$(PROJECT)
	tar cf - . | (cd $(SRCROOT) ; tar xfp -)
	find $(SRCROOT) -type d -name CVS -print0 | xargs -0 rm -rf

make_sa :
	$(SILENT) $(ECHO) "----------- Make Spam Assassin -----------"
	$(SILENT) ($(CD) "$(SRCROOT)/SpamAssassin" && perl Makefile.PL PREFIX=/ DESTDIR=$(DSTROOT))
	$(SILENT) ($(CD) "$(SRCROOT)/SpamAssassin" && make CFLAGS="$(CFLAGS))

make_sa_install :
	$(SILENT) $(ECHO) "--------- Make Install Spam Assassin ---------"

	# Create install directories
	install -d -m 0755 "$(DSTROOT)$(PRIV_DIR)"
	install -d -m 0755 "$(DSTROOT)$(USR_DIR)"
	install -d -m 0755 "$(DSTROOT)$(PERL_EXTRA_VER_DIR)"
	install -d -m 0755 "$(DSTROOT)$(USR_OS_VERSION)"
	install -d -m 0755 "$(DSTROOT)$(USR_OS_LICENSE)"
	install -d -m 755 $(DSTROOT)/System/Library/LaunchDaemons

	# Build SpamAssassin
	$(SILENT) ($(CD) "$(SRCROOT)/SpamAssassin" && perl Makefile.PL PREFIX=/ DESTDIR=$(DSTROOT))
	$(SILENT) ($(CD) "$(SRCROOT)/SpamAssassin" && make CFLAGS="$(CFLAGS)")
	$(SILENT) ($(CD) "$(SRCROOT)/SpamAssassin" && make CFLAGS="$(CFLAGS)" install)

	# Copy files to OS X hierarchy
	
	$(SILENT) ($(MV) "$(DSTROOT)/etc" $(DSTROOT)$(PRIV_DIR))
	$(SILENT) ($(MV) "$(DSTROOT)/share" $(DSTROOT)$(USR_DIR))
	$(SILENT) ($(MV) "$(DSTROOT)/lib/perl5/site_perl/Mail" $(DSTROOT)$(PERL_EXTRA_VER_DIR)/)
	$(SILENT) ($(MV) "$(DSTROOT)/lib/perl5/site_perl/spamassassin-run.pod" $(DSTROOT)$(PERL_EXTRA_VER_DIR)/Mail/)
	$(SILENT) ($(RM) -r "$(DSTROOT)/lib")
	install -m 0644 "$(SRCROOT)/SpamAssassin.SetupExtras/local.cf" "$(DSTROOT)$(SA_BIN_DIR)/local.cf"
	install -m 0755 "$(SRCROOT)/SpamAssassin.SetupExtras/learn_junk_mail" "$(DSTROOT)$(SA_BIN_DIR)/learn_junk_mail"

	# Clean up build directories
	$(SILENT) ($(CD) "$(SRCROOT)/SpamAssassin" && make clean)
	$(SILENT) ($(CD) "$(SRCROOT)" && $(RM) ./SpamAssassin/Makefile.old)

	# Install Open Souce files
	install -m 0444 $(SRCROOT)/SpamAssassin.OpenSourceInfo/SpamAssassin.plist $(DSTROOT)/usr/local/OpenSourceVersions
	install -m 0444 $(SRCROOT)/SpamAssassin.OpenSourceInfo/SpamAssassin.txt $(DSTROOT)/usr/local/OpenSourceLicenses
	install -m 0644 $(SRCROOT)/SpamAssassin.LaunchDaemons/com.apple.learnjunkmail.plist \
			$(DSTROOT)/System/Library/LaunchDaemons/com.apple.learnjunkmail.plist
	install -m 0644 $(SRCROOT)/SpamAssassin.LaunchDaemons/com.apple.updatesa.plist \
			$(DSTROOT)/System/Library/LaunchDaemons/com.apple.updatesa.plist
	install -d -m 755 $(DSTROOT)/System/Library/ServerSetup/MigrationExtras
	install -m 0644 $(SRCROOT)/SpamAssassin.SetupExtras/upgrade_learn_sa \
			$(DSTROOT)/System/Library/ServerSetup/MigrationExtras/upgrade_learn_sa

	$(SILENT) $(ECHO) "--------- Building Spam Assassin complete ---------"

.PHONY: clean installhdrs installsrc build install