Makefile   [plain text]


# xbs-compatible wrapper Makefile for Clam AV
#

PROJECT=clamav

SHELL := /bin/sh

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

# Configuration values we customize
#

PROJECT_NAME=clamav
OS_VER=0.93.3
CLAMAV_TAR_GZ=clamav-$(OS_VER).tar.gz

CLAMAV_BUILD_DIR=/clamav/clamav-$(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

LAUNCHDDIR=/System/Library/LaunchDaemons

TEMP_DIR=/Temp_Dir

BINARY_DIR=clamav.Bin
CONFIG_DIR=clamav.Conf
OS_SRC_DIR=clamav.OpenSourceInfo
LD_SRC_DIR=clamav.LaunchDaemons

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
SETUP_EXTRAS_DST_DIR=/System/Library/ServerSetup/SetupExtras
MIGRATION_EXTRAS_DST_DIR=/System/Library/ServerSetup/MigrationExtras

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

# Clam Antivirus config
#

CLAMAV_CONFIG= \
	--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 \
	--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

# These includes provide the proper paths to system utilities
#

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

default:: make_clamav

install :: make_clamav_install

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 [ -e "$(SRCROOT)/$(BINARY_DIR)/$(CLAMAV_TAR_GZ)" ]; then\
		$(SILENT) ($(CD) "$(SRCROOT)/$(PROJECT)" && $(GNUTAR) -xzpf "$(SRCROOT)/$(BINARY_DIR)/$(CLAMAV_TAR_GZ)") ; \
	fi
	$(SILENT) ($(CD) "$(SRCROOT)$(CLAMAV_BUILD_DIR)" && ./configure $(CLAMAV_CONFIG))
	$(SILENT) ($(CD) "$(SRCROOT)$(CLAMAV_BUILD_DIR)" && make CFLAGS="$(CFLAGS)")

make_clamav_install :
	# Unstuff archive
	$(SILENT) $(ECHO) "------------ Make Install Clam AV ------------"
	$(SILENT) if [ -e "$(SRCROOT)/$(BINARY_DIR)/$(CLAMAV_TAR_GZ)" ]; then\
		$(SILENT) ($(CD) "$(SRCROOT)/$(PROJECT)" && $(GNUTAR) -xzpf "$(SRCROOT)/$(BINARY_DIR)/$(CLAMAV_TAR_GZ)") ; \
	fi


	# Configure and make Clam AV
	$(SILENT) ($(CD) "$(SRCROOT)$(CLAMAV_BUILD_DIR)" && ./configure $(CLAMAV_CONFIG))
	$(SILENT) ($(CD) "$(SRCROOT)$(CLAMAV_BUILD_DIR)" && make "DESTDIR=$(SRCROOT)/$(TEMP_DIR)" CFLAGS="$(CFLAGS)" install)

	# Create install directories
	install -d -m 0755 "$(DSTROOT)$(ETC_DIR)"
	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)$(SETUP_EXTRAS_DST_DIR)"
	install -d -m 0755 "$(DSTROOT)$(MIGRATION_EXTRAS_DST_DIR)"

	# Install defautl config files
	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"

	# Install & strip binaries
	install -d -m 0755 "$(DSTROOT)$(USR_BIN)"
	#install -m 0755 -s "$(SRCROOT)$(TEMP_DIR)$(USR_BIN)/clamav-config" "$(DSTROOT)$(USR_BIN)/clamav-config"
	install -m 0755 -s "$(SRCROOT)$(TEMP_DIR)$(USR_BIN)/clamdscan" "$(DSTROOT)$(USR_BIN)/clamdscan"
	install -m 0755 -s "$(SRCROOT)$(TEMP_DIR)$(USR_BIN)/clamscan" "$(DSTROOT)$(USR_BIN)/clamscan"
	install -m 0755 -s "$(SRCROOT)$(TEMP_DIR)$(USR_BIN)/freshclam" "$(DSTROOT)$(USR_BIN)/freshclam"
	install -m 0755 -s "$(SRCROOT)$(TEMP_DIR)$(USR_BIN)/sigtool" "$(DSTROOT)$(USR_BIN)/sigtool"

	install -d -m 0755 "$(DSTROOT)$(USR_SBIN)"
	install -m 0755 -s "$(SRCROOT)$(TEMP_DIR)$(USR_SBIN)/clamd" "$(DSTROOT)$(USR_SBIN)/clamd"

	# Install man pages
	install -d -m 0755 "$(DSTROOT)$(SHARE_1_DIR)"
	install -m 0444 "$(SRCROOT)$(TEMP_DIR)$(SHARE_1_DIR)/clamdscan.1" "$(DSTROOT)$(SHARE_1_DIR)/clamdscan.1"
	install -m 0444 "$(SRCROOT)$(TEMP_DIR)$(SHARE_1_DIR)/clamscan.1" "$(DSTROOT)$(SHARE_1_DIR)/clamscan.1"
	install -m 0444 "$(SRCROOT)$(TEMP_DIR)$(SHARE_1_DIR)/freshclam.1" "$(DSTROOT)$(SHARE_1_DIR)/freshclam.1"
	install -m 0444 "$(SRCROOT)$(TEMP_DIR)$(SHARE_1_DIR)/sigtool.1" "$(DSTROOT)$(SHARE_1_DIR)/sigtool.1"
	#install -m 0444 "$(SRCROOT)/$(CONFIG_DIR)/clamav-config.1" "$(DSTROOT)$(SHARE_1_DIR)/clamav-config.1"

	install -d -m 0755 "$(DSTROOT)$(SHARE_5_DIR)"
	install -m 0444 "$(SRCROOT)$(TEMP_DIR)$(SHARE_5_DIR)/clamd.conf.5" "$(DSTROOT)$(SHARE_5_DIR)/clamd.conf.5"
	install -m 0444 "$(SRCROOT)$(TEMP_DIR)$(SHARE_5_DIR)/freshclam.conf.5" "$(DSTROOT)$(SHARE_5_DIR)/freshclam.conf.5"

	install -d -m 0755 "$(DSTROOT)$(SHARE_8_DIR)"
	#install -m 0444 "$(SRCROOT)$(TEMP_DIR)$(SHARE_8_DIR)/clamav-milter.8" "$(DSTROOT)$(SHARE_8_DIR)/clamav-milter.8"
	install -m 0444 "$(SRCROOT)$(TEMP_DIR)$(SHARE_8_DIR)/clamd.8" "$(DSTROOT)$(SHARE_8_DIR)/clamd.8"

	# Install default clam databases
	install -d -m 0755 "$(DSTROOT)$(VAR_CLAM)"
	install -m 644 "$(SRCROOT)$(TEMP_DIR)$(VAR_CLAM)/daily.cvd" "$(DSTROOT)$(VAR_CLAM)/daily.cvd"
	install -m 644 "$(SRCROOT)$(TEMP_DIR)$(VAR_CLAM)/main.cvd" "$(DSTROOT)$(VAR_CLAM)/main.cvd"
	chown -R 82 "$(DSTROOT)$(VAR_CLAM)"

	# Install Setup Extras
	install -m 0555 "$(SRCROOT)/$(SETUP_EXTRAS_SRC_DIR)/clamav" "$(DSTROOT)$(SETUP_EXTRAS_DST_DIR)/clamav"
	install -m 0555 "$(SRCROOT)/$(SETUP_EXTRAS_SRC_DIR)/clamav" "$(DSTROOT)$(MIGRATION_EXTRAS_DST_DIR)/clamav"
	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 Open Source plist & License files
	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"

	# Set ownership of installed directories & files
	$(SILENT) ($(CHOWN) -R root:wheel "$(DSTROOT)")
	#$(SILENT) ($(CHOWN) -R clamav:clamav "$(DSTROOT)$(ETC_DIR)")
	$(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 "$(SRCROOT)/$(TEMP_DIR)")
	$(SILENT) ($(RM) -rf "$(SRCROOT)/$(CLAMAV_BUILD_DIR)")

	$(SILENT) $(ECHO) "---- Building Clam AV complete."

.PHONY: installhdrs installsrc build install