#
# Copyright 2009 Sun Microsystems, Inc.  All Rights Reserved
# Patents Pending.  Use is subject to license terms.
#

#######################################################################
# Create IPS packages for Security                                    #
#######################################################################

# Parameters:
# TARGET_OS: Target OS to build the packages
#   value: [SunOS_sparc|SunOS_x86|Linux|Windows]
# SOURCE_BASE: Directory for source files
#   example: /share/builds/integration/security/SECURITY_3_12_3
# VERSION: version of the packages
#   example: 3.12,0-1.0
# NSS_VERSION, NSPR_VERSION, JSS_VERSION: version for NSS, NSPR, JSS
#   example: 3.12.3

# Project specific binaries location
ifeq ($(TARGET_OS), SunOS_sparc)
	OS_DIR32 := SunOS5.9_OPT.OBJ
	OS_DIR64 := SunOS5.9_64_OPT.OBJ
	ZIP_OS_NAME=-sunos-sparc
else
ifeq ($(TARGET_OS), SunOS_x86)
	OS_DIR32 := SunOS5.9_i86pc_OPT.OBJ
	OS_DIR64 := SunOS5.10_i86pc_64_OPT.OBJ
	ZIP_OS_NAME=-sunos-i386
else
ifeq ($(TARGET_OS), Linux)
	OS_DIR32 := Linux2.6_x86_glibc_PTH_OPT.OBJ
	OS_DIR64 := Linux2.6_x86_64_glibc_PTH_64_OPT.OBJ
	ZIP_OS_NAME=-linux-i386
else
ifeq ($(TARGET_OS), Windows)
	OS_DIR32 := WINNT5.2_OPT.OBJ
	OS_DIR64 := WINNT5.2_64_OPT.OBJ
	ZIP_OS_NAME=-windows-i386
else
ifeq ($(TARGET_OS), Darwin)
	OS_DIR32 := Darwin9.8.0_OPT.OBJ
	OS_DIR64 := Darwin9.8.0_64_OPT.OBJ
	ZIP_OS_NAME=-darwin-universal
endif # Darwin
endif # Windows
endif # Linux
endif # SunOS_x86
endif # SunOS_sparc

PKG_LIST = nss-libs nss-utils nss-dev

# Non project specific definitions
CURDIR_ABS = $(shell pwd)
OBJDIR = obj/$(TARGET_OS)
PKGDIR = pkg/$(TARGET_OS)
PKGDIR_ABS = $(CURDIR_ABS)/$(PKGDIR)
SRC32=$(SOURCE_BASE)/$(OS_DIR32)
SRC64=$(SOURCE_BASE)/$(OS_DIR64)
NSS_INC=$(SOURCE_BASE)/public/nss
NSPR_INC=$(SRC32)/include
NSS_SRC=$(SOURCE_BASE)
ZIP_SUF = -$(VERSION)$(ZIP_OS_NAME).zip
ZIP_LIST = $(addsuffix $(ZIP_SUF),$(PKG_LIST))
CREATE_PKG_TOOL=makepkgs.sh

test:
	@echo "TARGET_OS=$(TARGET_OS)"
	@echo "SOURCE_BASE=$(SOURCE_BASE)"
	@echo "OS_DIR32=$(OS_DIR32)"
	@echo "OS_DIR64=$(OS_DIR64)"
	@echo "OBJDIR=$(OBJDIR)"
	@echo "PKGDIR=$(PKGDIR)"
	@echo "PKGDIR_ABS=$(PKGDIR_ABS)"

$(OBJDIR) $(PKGDIR):
	mkdir -p $@
	
%$(ZIP_SUF):
	@echo "Creating package $@ ==========================="
	@echo "Package name=$*"
	@echo "Creating the manifest file $(OBJDIR)/$*.mn"
	@os_spec_tmpl="$*-$(TARGET_OS).tmpl";\
	if [ -f $$os_spec_tmpl ] ;\
	then \
	  tmpl_file=$$os_spec_tmpl ;\
	else \
	  tmpl_file=$*.tmpl ; \
	fi; \
	echo "from template $$tmpl_file"; \
	sed \
	  -e 's|@@VERSION@@|$(VERSION)|g' \
	  -e 's|@@NSPR_VERSION@@|$(NSPR_VERSION)|g' \
	  -e 's|@@NSS_VERSION@@|$(NSS_VERSION)|g' \
	  -e 's|@@JSS_VERSION@@|$(JSS_VERSION)|g' \
	  -e 's|@@SRC32@@|$(SRC32)|g' \
	  -e 's|@@SRC64@@|$(SRC64)|g' \
	  -e 's|@@NSS_INC@@|$(NSS_INC)|g' \
	  -e 's|@@NSPR_INC@@|$(NSPR_INC)|g' \
	  -e 's|@@NSS_SRC@@|$(NSS_SRC)|g' \
	$$tmpl_file > $(OBJDIR)/$*.mn
	@echo "Creating the package in $(OBJDIR)/repo_$*"
	if [ -d $(OBJDIR)/repo_$* ]; then rm -rf $(OBJDIR)/repo_$*; fi
	$(CREATE_PKG_TOOL) -d$(OBJDIR)/repo_$* --manifest-fmri=$*@$(VERSION) --manifest-file=$(OBJDIR)/$*.mn
	@echo "Creating the package zip file $(PKGDIR_ABS)/$@"
	cd $(OBJDIR)/repo_$* && zip -r $(PKGDIR_ABS)/$@ .
	
buildpkg: $(OBJDIR) $(PKGDIR) $(ZIP_LIST)

buildsrcpkg: $(OBJDIR) $(PKGDIR) nss-nspr-jss-src$(ZIP_SUF)

clean:
	rm -rf $(OBJDIR)
	rm -rf $(PKGDIR)

	

