PROJECT=clamav
SHELL := /bin/sh
SRCROOT=
OBJROOT=$(SRCROOT)
SYMROOT=$(OBJROOT)
DSTROOT=/usr/local
RC_ARCHS=
CFLAGS=-O0 $(RC_CFLAGS)
PROJECT_NAME=clamav
OS_VER=0.96.5
CLAMAV_TAR_GZ=clamav-$(OS_VER).tar.gz
CLAMAV_PATCH_DIFFS=clamav-$(OS_VER).diff
MODULES=Crypt-OpenSSL-RSA-0.26 Mail-DKIM-0.38
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
PERL_EXTRA_VER_DIR=$(PERL_EXTRA_DIR)/$(PERL_VER)
BUILD_DIR=$(OBJROOT)/build
CLAMAV_BUILD_DIR=/$(BUILD_DIR)/$(PROJECT_NAME)-$(OS_VER)
ETC_DIR=/private/etc
VAR_CLAM=/private/var/clamav
CLAM_SHARE_DIR=/private/var/clamav/share
CLAM_STATE_DIR=/private/var/clamav/state
LIB_TOOL=$(CLAMAV_BUILD_DIR)/libtool
LAUNCHDDIR=/System/Library/LaunchDaemons
BINARY_DIR=clamav.Bin
CONFIG_DIR=clamav.Conf
OS_SRC_DIR=clamav.OpenSourceInfo
LD_SRC_DIR=clamav.LaunchDaemons
UPDATE_DIR=clamav.Update
USR=/usr
USR_BIN=/usr/bin
USR_SBIN=/usr/sbin
SHARE_1_DIR=/usr/share/man/man1
SHARE_5_DIR=/usr/share/man/man5
SHARE_8_DIR=/usr/share/man/man8
USR_LOCAL=/usr/local
USR_OS_VERSION=$(USR_LOCAL)/OpenSourceVersions
USR_OS_LICENSE=$(USR_LOCAL)/OpenSourceLicenses
SETUP_EXTRAS_SRC_DIR=clamav.SetupExtras
COMMON_EXTRAS_DST_DIR=/System/Library/ServerSetup/CommonExtras
STRIP=/usr/bin/strip
GNUTAR=/usr/bin/gnutar
CHOWN=/usr/sbin/chown
PATCH=/usr/bin/patch
PERL_CONFIG = \
PREFIX=/ \
INSTALLPRIVLIB=/System/Library/Perl/$(PERL_VER) \
INSTALLSITELIB=/System/Library/Perl/Extras/$(PERL_VER) \
INSTALLMAN1DIR=/usr/share/man/man1 \
INSTALLMAN3DIR=/usr/share/man/man3
CLAMAV_CONFIG_SHARED= \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--libexecdir=/usr/libexec \
--datadir=/usr/share/clamav \
--sysconfdir=/private/etc \
--sharedstatedir=/private/var/clamav/share \
--localstatedir=/private/var/clamav/state \
--disable-dependency-tracking \
--libdir=/usr/lib/clamav \
--includedir=/usr/share/clamav/include \
--oldincludedir=/usr/share/clamav/include \
--infodir=/usr/share/clamav/info \
--mandir=/usr/share/man \
--with-dbdir=/private/var/clamav \
--with-user=_clamav \
--with-group=_clamav \
--with-gnu-ld
CLAMAV_CONFIG_STATIC= \
--prefix=/ \
--exec-prefix=/usr \
--bindir=/usr/bin \
--sbindir=/usr/sbin \
--libexecdir=/usr/libexec \
--datadir=/usr/share/clamav \
--sysconfdir=/private/etc \
--sharedstatedir=/private/var/clamav/share \
--localstatedir=/private/var/clamav/state \
--disable-dependency-tracking \
--libdir=/usr/lib/clamav \
--includedir=/usr/share/clamav/include \
--oldincludedir=/usr/share/clamav/include \
--infodir=/usr/share/clamav/info \
--mandir=/usr/share/man \
--with-dbdir=/private/var/clamav \
--disable-shared \
--with-user=_clamav \
--with-group=_clamav \
--with-gnu-ld \
--enable-static
include $(MAKEFILEPATH)/pb_makefiles/platform.make
include $(MAKEFILEPATH)/pb_makefiles/commands-$(OS).make
default:: make_clamav
install :: make_clamav_install
clean :
$(SILENT) ($(CD) "$(SRCROOT)/$(UPDATE_DIR)" && /usr/bin/xcodebuild clean)
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_clamav :
$(SILENT) $(ECHO) "------------ Make Clam AV ------------"
$(SILENT) if [ ! -d "$(BUILD_DIR)" ]; then \
$(SILENT) (mkdir "$(BUILD_DIR)"); \
fi
$(SILENT) if [ -e "$(SRCROOT)/$(BINARY_DIR)/$(CLAMAV_TAR_GZ)" ]; then \
$(SILENT) ($(CD) "$(BUILD_DIR)" && $(GNUTAR) -xzpf "$(SRCROOT)/$(BINARY_DIR)/$(CLAMAV_TAR_GZ)") ; \
fi
$(SILENT) if [ -e "$(SRCROOT)/$(BINARY_DIR)/$(CLAMAV_PATCH_DIFFS)" ]; then \
$(SILENT) ($(CD) "$(CLAMAV_BUILD_DIR)" && $(PATCH) -p1 < "$(SRCROOT)/$(BINARY_DIR)/$(CLAMAV_PATCH_DIFFS)") ; \
fi
$(SILENT) ($(CD) "$(CLAMAV_BUILD_DIR)" && ./configure $(CLAMAV_CONFIG))
$(SILENT) ($(CD) "$(CLAMAV_BUILD_DIR)" && make CFLAGS="$(CFLAGS)")
$(SILENT) ($(CD) "$(SRCROOT)/$(UPDATE_DIR)" && /usr/bin/xcodebuild)
$(SILENT) ($(CD) "$(SRCROOT)/$(UPDATE_DIR)" && /usr/bin/xcodebuild clean)
make_clamav_install :
$(SILENT) $(ECHO) "------------ Make Install Perl Modules ------------"
$(SILENT) $(ECHO) "Perl Version: $(PERL_VER)"
$(SILENT) if [ ! -d "$(BUILD_DIR)" ]; then \
$(SILENT) (mkdir "$(BUILD_DIR)"); \
fi
for perl_mod in $(MODULES); \
do \
$(CD) "$(OBJROOT)/build" && $(GNUTAR) -xzpf "$(SRCROOT)/$(BINARY_DIR)/$$perl_mod.tar.gz"; \
$(CD) "$(OBJROOT)/build/$$perl_mod" && perl Makefile.PL $(PERL_CONFIG) && \
make DESTDIR=$(DSTROOT) CFLAGS="$(RC_CFLAGS)" OTHERLDFLAGS="$(RC_CFLAGS)" install; \
done
$(SILENT) if [ -d "$(DSTROOT)/share" ]; then \
$(SILENT) ($(MV) "$(DSTROOT)/share" "$(DSTROOT)/usr/"); \
fi
$(SILENT) if [ -d "$(DSTROOT)$(PERL_DIR)/$(PERL_VER)" ]; then \
$(SILENT) ($(RM) -r "$(DSTROOT)$(PERL_DIR)/$(PERL_VER)"); \
fi
$(SILENT) $(ECHO) "------------ Make Install Perl Modules Done ------------"
$(SILENT) $(ECHO) "------------ Make Install Clam AV ------------"
$(SILENT) if [ -e "$(SRCROOT)/$(BINARY_DIR)/$(CLAMAV_TAR_GZ)" ]; then\
$(SILENT) ($(CD) "$(BUILD_DIR)" && $(GNUTAR) -xzpf "$(SRCROOT)/$(BINARY_DIR)/$(CLAMAV_TAR_GZ)") ; \
fi
$(SILENT) if [ -e "$(SRCROOT)/$(BINARY_DIR)/$(CLAMAV_PATCH_DIFFS)" ]; then\
$(SILENT) ($(CD) "$(CLAMAV_BUILD_DIR)" && $(PATCH) -p1 < "$(SRCROOT)/$(BINARY_DIR)/$(CLAMAV_PATCH_DIFFS)") ; \
fi
$(SILENT) ($(CD) "$(SRCROOT)/$(UPDATE_DIR)" && /usr/bin/xcodebuild install DSTROOT="$(DSTROOT)")
$(SILENT) ($(CD) "$(SRCROOT)/$(UPDATE_DIR)" && /usr/bin/xcodebuild clean)
$(SILENT) ($(CD) "$(CLAMAV_BUILD_DIR)" && ./configure $(CLAMAV_CONFIG_SHARED))
if grep -qs 'LTCFLAGS=\"-g -O2\"' $(CLAMAV_BUILD_DIR)/libtool ; then \
mv $(LIB_TOOL) $(LIB_TOOL).bak ; \
sed -e 's/LTCFLAGS=\"-g -O2\"/LTCFLAGS=\"$(CFLAGS)"/g' $(LIB_TOOL).bak > $(LIB_TOOL) ; \
fi
$(SILENT) ($(CD) "$(CLAMAV_BUILD_DIR)" && make CFLAGS="$(CFLAGS)" CPPFLAGS="$(CFLAGS)")
$(SILENT) ($(CD) "$(CLAMAV_BUILD_DIR)" && make "DESTDIR=$(OBJROOT)/build/temp" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CFLAGS)" install)
# next build
$(SILENT) ($(CD) $(CLAMAV_BUILD_DIR) && make distclean)
$(SILENT) ($(CD) "$(CLAMAV_BUILD_DIR)" && ./configure $(CLAMAV_CONFIG_STATIC))
if grep -qs 'LTCFLAGS=\"-g -O2\"' $(CLAMAV_BUILD_DIR)/libtool ; then \
mv $(LIB_TOOL) $(LIB_TOOL).bak ; \
sed -e 's/LTCFLAGS=\"-g -O2\"/LTCFLAGS=\"$(CFLAGS)"/g' $(LIB_TOOL).bak > $(LIB_TOOL) ; \
fi
$(SILENT) ($(CD) "$(CLAMAV_BUILD_DIR)" && make CFLAGS="$(CFLAGS)" CPPFLAGS="$(CFLAGS)")
$(SILENT) ($(CD) "$(CLAMAV_BUILD_DIR)" && make "DESTDIR=$(DSTROOT)" CFLAGS="$(CFLAGS)" CPPFLAGS="$(CFLAGS)" install)
install -m 0755 "$(DSTROOT)/System/Library/ServerSetup/MigrationExtras/UpgradeClamAV" \
"$(DSTROOT)/System/Library/ServerSetup/MigrationExtras/66_clamav_migrator"
$(SILENT) ($(RM) -rf "$(DSTROOT)/System/Library/ServerSetup/MigrationExtras/UpgradeClamAV")
$(SILENT) ($(RM) -rf $(DSTROOT)/usr/lib/clamav)
install -d -m 0755 "$(DSTROOT)/usr/lib/clamav"
install -m 0755 $(OBJROOT)/build/temp/usr/lib/clamav/libclamunrar.6.dylib $(DSTROOT)/usr/lib/clamav/libclamunrar.6.dylib
install -m 0755 $(OBJROOT)/build/temp/usr/lib/clamav/libclamunrar_iface.6.so $(DSTROOT)/usr/lib/clamav/libclamunrar_iface.6.so
$(SILENT) ($(CD) $(DSTROOT)/usr/lib/clamav/ && ln -s libclamunrar_iface.6.so libclamunrar_iface.so)
install -d -m 0755 "$(DSTROOT)$(CLAM_SHARE_DIR)"
install -d -m 0755 "$(DSTROOT)$(CLAM_STATE_DIR)"
install -d -m 0755 "$(DSTROOT)$(LAUNCHDDIR)"
install -d -m 0755 "$(DSTROOT)$(USR_OS_VERSION)"
install -d -m 0755 "$(DSTROOT)$(USR_OS_LICENSE)"
install -d -m 0755 "$(DSTROOT)$(COMMON_EXTRAS_DST_DIR)"
install -m 0644 "$(SRCROOT)/$(CONFIG_DIR)/clamd.conf" "$(DSTROOT)$(ETC_DIR)/clamd.conf"
install -m 0644 "$(SRCROOT)/$(CONFIG_DIR)/clamd.conf" "$(DSTROOT)$(ETC_DIR)/clamd.conf.default"
install -m 0644 "$(SRCROOT)/$(CONFIG_DIR)/freshclam.conf" "$(DSTROOT)$(ETC_DIR)/freshclam.conf"
install -m 0644 "$(SRCROOT)/$(CONFIG_DIR)/freshclam.conf" "$(DSTROOT)$(ETC_DIR)/freshclam.conf.default"
$(SILENT) $(STRIP) -S "$(DSTROOT)/System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level/auto/Crypt/OpenSSL/RSA/RSA.bundle"
$(SILENT) $(RM) "$(DSTROOT)/System/Library/Perl/Extras/5.10.0/darwin-thread-multi-2level/auto/Crypt/OpenSSL/RSA/RSA.bs"
chmod 644 "$(DSTROOT)$(VAR_CLAM)/daily.cvd"
chmod 644 "$(DSTROOT)$(VAR_CLAM)/main.cvd"
chown -R 82 "$(DSTROOT)$(VAR_CLAM)"
chmod 755 "$(DSTROOT)$(VAR_CLAM)"
chmod 444 "$(DSTROOT)$(SHARE_1_DIR)/"*
chmod 444 "$(DSTROOT)$(SHARE_5_DIR)/"*
chmod 444 "$(DSTROOT)$(SHARE_8_DIR)/"*
install -m 0755 "$(SRCROOT)/$(SETUP_EXTRAS_SRC_DIR)/clamav" "$(DSTROOT)$(COMMON_EXTRAS_DST_DIR)/SetupClamAV.sh"
install -m 0644 "$(SRCROOT)/$(LD_SRC_DIR)/org.clamav.clamd.plist" "$(DSTROOT)/$(LAUNCHDDIR)/org.clamav.clamd.plist"
install -m 0644 "$(SRCROOT)/$(LD_SRC_DIR)/org.clamav.freshclam.plist" "$(DSTROOT)/$(LAUNCHDDIR)/org.clamav.freshclam.plist"
install -m 444 "$(SRCROOT)/$(OS_SRC_DIR)/clamav.plist" "$(DSTROOT)/$(USR_OS_VERSION)/clamav.plist"
install -m 444 "$(SRCROOT)/$(OS_SRC_DIR)/clamav.txt" "$(DSTROOT)/$(USR_OS_LICENSE)/clamav.txt"
$(SILENT) ($(CHOWN) -R root:wheel "$(DSTROOT)")
$(SILENT) ($(CHOWN) -R clamav:clamav "$(DSTROOT)$(VAR_CLAM)")
$(SILENT) ($(CHOWN) -R root:wheel "$(DSTROOT)/usr/share/man")
$(SILENT) ($(CHOWN) -R root:wheel "$(DSTROOT)/usr/bin")
$(SILENT) ($(RM) -rf "$(DSTROOT)/usr/share/clamav")
$(SILENT) $(ECHO) "---- Building Clam AV complete."
.PHONY: installhdrs installsrc build install