THIRDPARTY_ROOT := $(shell pwd)
P4_ROOT ?= $(shell cd $(THIRDPARTY_ROOT)/..; pwd)

BUILD_PLATFORM ?= $(shell sh $(P4_ROOT)/ZimbraBuild/rpmconf/Build/get_plat_tag.sh)

MAKE := make
ECHO := /bin/echo
MAKEARGS ?= -j2

ifeq ($(BUILD_PLATFORM), )
	BUILD_PLATFORM := "UNKNOWN"
endif

ZIMBRA_HOME ?= /opt/zimbra
LDAP_VERSION ?= 2.3.41.7z

BDB_VERSION ?= 4.2.52.6
BDB_LIB_DIR ?= $(ZIMBRA_HOME)/sleepycat-$(BDB_VERSION)/lib

BDB_ROOT ?= $(P4_ROOT)/ThirdParty/sleepycat

CYRUS_VERSION ?= 2.1.22.3z
CYRUS_LIB_DIR ?= $(ZIMBRA_HOME)/cyrus-sasl-$(CYRUS_VERSION)/lib

ASPELL_VERSION ?= aspell-0.60.6
CLAMAV_VERSION ?= 0.93

MYSQL_VERSION_STRING ?= 5.0.51a
MYSQL_VERSION ?= standard-$(MYSQL_VERSION_STRING)-pc-linux-gnu-i686
MYSQL_CLIENT_VERSION ?= standard-$(MYSQL_VERSION_STRING)-clientlibs

ifeq ($(BUILD_PLATFORM), MACOSX)
    MYSQL_VERSION := standard-$(MYSQL_VERSION_STRING)-apple-darwin8.2.0-powerpc
	MYSQL_CLIENT_VERSION := standard-$(MYSQL_VERSION_STRING)-apple-darwin8.2.0-powerpc
endif

ifeq (MACOSXx86,$(findstring MACOSXx86,$(BUILD_PLATFORM)))
	MYSQL_VERSION := standard-$(MYSQL_VERSION_STRING)-apple-darwin8.2.0-i686
	MYSQL_CLIENT_VERSION := standard-$(MYSQL_VERSION_STRING)-apple-darwin8.2.0-i686
endif

MYSQL_VERSION ?= standard-$(MYSQL_VERSION_STRING)-pc-linux-gnu-i686
MYSQL_CLIENT_VERSION ?= standard-$(MYSQL_VERSION_STRING)-clientlibs

OPENSSL_VERSION ?= 0.9.8g
OPENSSL_LIB_DIR ?= $(ZIMBRA_HOME)/openssl-$(OPENSSL_VERSION)/lib

OPENSSH_VERSION	?= 4.7p1

HEIMDAL_VERSION ?= 1.0.2
HEIMDAL_LIB_DIR ?= $(ZIMBRA_HOME)/heimdal-$(HEIMDAL_VERSION)/lib

HTTPD_VERSION ?= 2.2.8

POSTFIX_VERSION ?= 2.4.7.5z

DIRS := openssl \
	mysql \
	sleepycat \
	libxml2 \
	heimdal \
	curl \
	cyrus-sasl \
	openldap \
	aspell \
	clamav \
	apache-httpd \
	php \
	pcre \
	expat \
	popt \
	PostFix \
	dspam \
	rrdtool \
	snmp

LOGFILE := /tmp/ThirdParty.make.log

all: $(ZIMBRA_HOME) build 

$(ZIMBRA_HOME):
	mkdir -p $@

build:
	 @(for dir in $(DIRS); do \
		$(ECHO) -n "*** Building in $@dir "; \
		$(MAKE) -C $@dir >> $(LOGFILE) 2>&1; \
		if [ $@? -ne 0 ]; then  $(ECHO) "FAILED.";  else  $(ECHO) "SUCCEEDED.";  fi ; \
		if [ -x /sbin/ldconfig ]; then /sbin/ldconfig; fi ;\
	done)
	@($(ECHO) -n "*** Building in Perl "; $(MAKE) -C Perl ) 
	@($(MAKE) -C apache-httpd tar >> $(LOGFILE) 2>&1)

clean:
	for dir in $(DIRS); do \
		$(ECHO) "*** Building clean in $@dir"; \
		$(MAKE) -C $@dir clean; \
	done
	@($(ECHO) "*** Building clean in Perl"; $(MAKE) -C Perl clean )

allclean:
	for dir in $(DIRS); do \
		$(ECHO) "*** Building allclean in $@dir"; \
		$(MAKE) -C $@dir allclean; \
	done
	@($(ECHO) "*** Building allclean in Perl"; $(MAKE) -C Perl allclean )
	rm -f $(LOGFILE)
	rm -rf $(ZIMBRA_HOME)/conf
	rm -rf $(ZIMBRA_HOME)/log
	rm -rf $(ZIMBRA_HOME)/zimbramon

mysql: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

sleepycat: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

heimdal: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

curl: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

libxml2: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

openldap: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

openssl: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

cyrus-sasl: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

apache-httpd: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

php: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

aspell: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

clamav: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

dspam: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

rrdtool: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

snmp: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

memcached: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

nginx: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

tcmalloc: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

postfix: PostFix

PostFix: force
	(cd $@; $(MAKE) > $(LOGFILE).$@ 2>&1)

perl: Perl

Perl:
	(cd $@; $(MAKE) > $(LOGFILE),$@ 2>&1)

p4edit:
	for dir in $(DIRS); do \
		$(ECHO) "***  p4 editing in $@dir"; \
		$(MAKE) -C $@dir p4edit; \
	done
	@($(ECHO) -n "*** p4 editing in Perl "; $(MAKE) -C Perl p4edit ) 


force: ;
