## # Apple wrapper Makefile for cyrus imap server # Copyright (c) 2003 by Apple Computer, Inc. ## # Although it is a GNU-like project, it does not come with a Makefile, # and the configure script requires user interaction. This Makefile just provides # the targets required by Apple's build system, and creates a config file # config.php by modifying the default config file config_default.php # # This Makefile tries to conform to hier(7) by moving config, data, attachments # to appropriate places in the file system, and makes symlinks where necessary. PROJECT_NAME=cyrus_imap PROJECT_VERSION=2.1.13 PROJECT_DIR=$(PROJECT_NAME)-$(PROJECT_VERSION) PROJECT_ARCHIVE=$(PROJECT_DIR).tar.gz PATCH_NAME=patch PATCH_VERSION=1.1 PATCH_DIR=$(PATCH_NAME)-$(PATCH_VERSION) PATCH_ARCHIVE=$(PATCH_DIR).tar.gz EXTRAS_NAME=extras EXTRAS_VERSION=1.0 EXTRAS_DIR=$(EXTRAS_NAME)-$(EXTRAS_VERSION) EXTRAS_ARCHIVE=$(EXTRAS_DIR).tar.gz EXPORT_TOOL_NAME=amsmailtool EXPORT_TOOL_VERSION=1.0 EXPORT_TOOL_DIR=$(EXPORT_TOOL_NAME)-$(EXPORT_TOOL_VERSION) EXPORT_TOOL_ARCHIVE=$(EXPORT_TOOL_DIR).tar.gz DLLIB_NAME=dlcompat DLLIB_VERSION=20010505 DLLIB_DIR=$(DLLIB_NAME)-$(DLLIB_VERSION) DLLIB_ARCHIVE=$(DLLIB_DIR).tar.gz SILENT=@ ECHO=echo CP=cp RM=rm MV=mv RANLIB=ranlib DSTROOT=/ ETCDIR=/private/etc SHAREDIR=/usr/share/man TOOLSDIR=/usr/bin/cyrus/tools SASCRIPTS= cyrus SASCRIPTSDIR=/System/Library/ServerSetup/SetupExtras SETUPEXTRASDIR=SetupExtras GNUTAR=gnutar PROJECT_FILES=Makefile $(PATCH_ARCHIVE) $(DB_ARCHIVE) $(EXTRAS_ARCHIVE) $(DLLIB_ARCHIVE) $(EXPORT_TOOL_ARCHIVE) CYRUS_TOOLS= dohash mkimap mupdate-loadgen.pl not-mkdep rehash \ translatesieve undohash upgradesieve # Configuration values we customize # CYRUS_CONFIG = \ --host=powerpc-apple \ --with-dbdir=/usr/local/BerkeleyDB \ --with-sasl=/usr \ --with-openssl=/usr \ --with-auth=krb \ --enable-murder \ --with-pidfile=/var/run/cyrus-master.pid \ --with-cyrus-prefix=$(DSTROOT)/usr/bin/cyrus \ --prefix=$(DSTROOT)/usr/bin/cyrus \ --exec-prefix=$(DSTROOT)/usr/bin/cyrus # These includes provide the proper paths to system utilities # include $(MAKEFILEPATH)/pb_makefiles/platform.make include $(MAKEFILEPATH)/pb_makefiles/commands-$(OS).make # Set up our variables # GNUTAR=gnutar # Build rules default:: do_untar configure do_build default:: do_untar configure do_build install:: configure do_build do_install do_clean installlocal:: configure do_build do_install clean:: do_clean configure:: do_untar do_build_db do_patch do_configure installhdrs:: do_installhdrs installsrc:: do_installsrc # Custom configuration: # do_untar: $(SILENT) $(ECHO) "Untarring $(PROJECT_DIR)..." $(SILENT) if [ ! -e $(PROJECT_DIR)/README ]; then\ $(GNUTAR) -xzf $(PROJECT_ARCHIVE);\ fi $(SILENT) $(ECHO) "Untarring $(PATCH_DIR)..." $(SILENT) if [ ! -e $(PATCH_DIR)/README.PATCH ]; then\ $(GNUTAR) -xzf $(PATCH_ARCHIVE);\ fi $(SILENT) $(ECHO) "Untarring $(EXTRAS_DIR)..." $(SILENT) if [ ! -e $(EXTRAS_DIR)/README ]; then\ $(GNUTAR) -xzf $(EXTRAS_ARCHIVE);\ fi $(SILENT) $(ECHO) "Untarring $(DLLIB_DIR)..." $(SILENT) if [ ! -e $(DLLIB_DIR)/README ]; then\ $(GNUTAR) -xzf $(DLLIB_ARCHIVE);\ fi $(SILENT) $(ECHO) "Untarring $(EXPORT_TOOL_DIR)..." $(SILENT) if [ ! -e $(EXPORT_TOOL_DIR)/README ]; then\ $(GNUTAR) -xzf $(EXPORT_TOOL_ARCHIVE);\ fi $(SILENT) $(ECHO) "Untarring complete." do_patch: $(SILENT) $(ECHO) "Applying $(PATCH_DIR) to source $(PROJECT_NAME)..." $(SILENT) ($(CD) "$(SRCROOT)/$(PATCH_DIR)" && $(CP) -r * "$(SRCROOT)/$(PROJECT_DIR)") $(SILENT) $(ECHO) "Applying $(PATCH_NAME) patch complete." do_configure: $(SILENT) $(ECHO) "Configuring $(PROJECT_NAME)..." # $(SILENT) ($(CD) "$(SRCROOT)/$(EXTRAS_DIR)/lib" && $(CP) -r /usr/lib/sasl2 .) $(SILENT) ($(CD) "$(SRCROOT)/$(PROJECT_DIR)" && ./configure $(CYRUS_CONFIG)) $(SILENT) $(ECHO) "Configuring $(PROJECT_NAME) complete." do_install: $(DSTROOT) $(DSTROOT)$(ETCDIR) $(DSTROOT)$(TOOLSDIR) $(DSTROOT)$(SHAREDIR) $(DSTROOT)$(SASCRIPTSDIR) $(SILENT) $(ECHO) "Installing $(PROJECT_NAME)..." $(SILENT) ($(CD) "$(SRCROOT)/$(PROJECT_DIR)" && make install) for file in $(CYRUS_TOOLS); \ do \ $(CD) "$(SRCROOT)/$(PROJECT_DIR)/tools" && $(CP) $$file $(DSTROOT)$(TOOLSDIR) || exit 1; \ done $(SILENT) ($(CD) "$(SRCROOT)/$(PROJECT_DIR)/etc" && $(CP) cyrus.conf.default $(DSTROOT)$(ETCDIR)) $(SILENT) ($(CD) "$(SRCROOT)/$(PROJECT_DIR)/etc" && $(CP) imapd.conf.default $(DSTROOT)$(ETCDIR)) $(SILENT) ($(MV) "$(DSTROOT)/usr/bin/cyrus/man/man8/master.8" "$(DSTROOT)/usr/bin/cyrus/man/man8/cyrus-master.8" ) $(SILENT) ($(CD) "$(DSTROOT)/usr/bin/cyrus/man" && $(CP) -r * "$(DSTROOT)/$(SHAREDIR)/" ) $(SILENT) ($(RM) -r "$(DSTROOT)/usr/bin/cyrus/include" ) $(SILENT) ($(RM) -r "$(DSTROOT)/usr/bin/cyrus/man" ) $(SILENT) ($(RM) -r "$(DSTROOT)/usr/bin/cyrus/lib" ) $(SILENT) if [ -e "$(DSTROOT)/usr/bin/cyrus/Library" ]; then\ $(RM) -r "$(DSTROOT)/usr/bin/cyrus/Library";\ fi $(SILENT) if [ -e "$(DSTROOT)/usr/bin/cyrus/System" ]; then\ $(RM) -r "$(DSTROOT)/usr/bin/cyrus/System";\ fi $(SILENT) if [ -e "$(DSTROOT)/usr/bin/cyrususr" ]; then\ $(MV) "$(DSTROOT)/usr/bin/cyrususr" "$(DSTROOT)/usr/bin/cyrus/";\ fi $(SILENT) ($(CD) "$(SRCROOT)/$(EXPORT_TOOL_DIR)" && /usr/bin/pbxbuild install DSTROOT="$(DSTROOT)") $(SILENT) ($(CD) "$(SRCROOT)/$(PROJECT_DIR)/$(SETUPEXTRASDIR)" && $(CP) cyrus $(DSTROOT)$(SASCRIPTSDIR)) for file in $(SASCRIPTS); \ do \ $(CD) "$(SRCROOT)/$(PROJECT_DIR)/$(SETUPEXTRASDIR)" && $(CP) $$file $(DSTROOT)$(SASCRIPTSDIR) || exit 1; \ done $(SILENT) $(ECHO) "Install $(PROJECT_NAME) complete." do_build_db: $(SILENT) $(ECHO) "Building $(DLLIB_DIR)...." $(SILENT) ($(CD) "$(SRCROOT)/$(DLLIB_DIR)" && make install prefix="$(SRCROOT)/$(EXTRAS_DIR)") $(SILENT) ($(CD) "$(SRCROOT)/$(EXTRAS_DIR)/lib" && $(RANLIB) libdl.a) $(SILENT) ($(CD) "$(SRCROOT)/$(EXTRAS_DIR)/lib" && $(RM) libdl.dylib) $(SILENT) $(ECHO) "Building $(DLLIB_DIR) Complete." do_build: $(DSTROOT) $(DSTROOT)$(ETCDIR) $(DSTROOT)$(TOOLSDIR) $(DSTROOT)$(SHAREDIR) $(SILENT) $(ECHO) "Building $(PROJECT_NAME)...." $(SILENT) $(ECHO) "Building $(PROJECT_DIR)...." $(SILENT) ($(CD) "$(SRCROOT)/$(PROJECT_DIR)" && make) $(SILENT) $(ECHO) "Building $(PROJECT_DIR) Complete." $(SILENT) $(ECHO) "Building $(EXPORT_TOOL_DIR)...." $(SILENT) ($(CD) "$(SRCROOT)/$(EXPORT_TOOL_DIR)" && /usr/bin/pbxbuild DSTROOT="$(DSTROOT)") $(SILENT) $(ECHO) "Building $(EXPORT_TOOL_DIR) Complete." $(SILENT) $(ECHO) "Build complete." do_installhdrs: $(SILENT) $(ECHO) "No headers to install" do_installsrc: $(SILENT) $(ECHO) "Installing $(PROJECT_NAME) sources in $(SRCROOT)..." $(SILENT) -$(RM) -rf $(SRCROOT) $(SILENT) $(MKDIRS) $(SRCROOT) $(SILENT) $(CP) $(PROJECT_FILES) $(SRCROOT) $(SILENT) $(CP) $(PROJECT_ARCHIVE) $(SRCROOT) do_clean: $(SILENT) $(ECHO) "Cleaning $(PROJECT_NAME)..." $(SILENT) -$(RM) -rf $(PROJECT_DIR) $(SILENT) -$(RM) -rf $(PATCH_DIR) $(SILENT) -$(RM) -rf $(EXTRAS_DIR) $(SILENT) -$(RM) -rf $(DLLIB_DIR) $(SILENT) -$(RM) -rf $(EXPORT_TOOL_DIR) $(SILENT) -$(RM) -rf $(DSTROOT)/usr/bin/cyrus/Prefix/lib/perl5 $(SILENT) $(ECHO) "Cleaning complete." $(DSTROOT): $(SILENT) $(MKDIRS) $@ $(DSTROOT)$(ETCDIR): $(SILENT) $(MKDIRS) $@ $(DSTROOT)$(TOOLSDIR): $(SILENT) $(MKDIRS) $@ $(DSTROOT)$(SHAREDIR): $(SILENT) $(MKDIRS) $@ $(DSTROOT)$(SASCRIPTSDIR): $(SILENT) $(MKDIRS) $@