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

###################################################################
# Makefile to create packages for NSS on Windows                  #
###################################################################

MOZILLA_DIR = ../../../..
MOZILLA_ABS := $(shell cd $(MOZILLA_DIR);pwd)
CORE_DEPTH = $(MOZILLA_DIR)/nss

include $(CORE_DEPTH)/coreconf/config.mk

VERSION := $(shell grep NSS_VERSION $(MOZILLA_DIR)/dist/public/nss/nss.h \
		| head -1 \
		| sed -e 's/[^"]*"//' -e 's/".*//' -e 's/ .*//' \
		| cut -d. -f1-3)
DATESTAMP := $(shell date +"%Y%m%d")

# source directories
ifdef WINDOWS_BUILD
BASE_OBJ = $(WINDOWS_BUILD)
else
BASE_OBJ = $(MOZILLA_ABS)/dist/$(OBJDIR)
endif
NSS_LIB_DIR = $(BASE_OBJ)/lib
NSS_BIN_DIR = $(BASE_OBJ)/bin
NSS_INC_DIR = $(BASE_OBJ)/../public/nss

# destination directory
BUILD_DIR = ../$(OBJDIR)
PKG_DIR = $(BASE_OBJ)/pkgarchive
LDIR = layout_

# List of packages to build
PKG_NSS = nss
PKG_NSSD = nssd
PKG_NSSU = nssu
PKG_LIST = $(PKG_NSS) $(PKG_NSSD) $(PKG_NSSU)
ZIP_LIST = $(addsuffix .zip,$(PKG_LIST))
PKG_LAYOUT = $(addsuffix .layout,$(PKG_LIST))

# Targets
package: $(BUILD_DIR) $(PKG_DIR) $(ZIP_LIST)
	@echo "Zip file done for $(PKG_LIST)"
	
# Create zip file
%.zip: %.layout
	rm -f $(PKG_DIR)/$@
	cd $(BUILD_DIR)/$(LDIR)$* && \
		find $* -type f | \
		sed "s|\./||g" \
		> filelist.txt
	echo "$(VERSION)-$(DATESTAMP)-1" > $(BUILD_DIR)/$(LDIR)$*/version
	cd $(BUILD_DIR)/$(LDIR)$* && zip -r $(PKG_DIR)/$@ *

# nss
nss.layout:
	rm -rf $(BUILD_DIR)/$(LDIR)$(PKG_NSS)
	mkdir -p $(BUILD_DIR)/$(LDIR)$(PKG_NSS)/$(PKG_NSS)/lib
	cp \
	    $(NSS_LIB_DIR)/freebl3.dll \
	    $(NSS_LIB_DIR)/freebl3.chk \
	    $(NSS_LIB_DIR)/nss3.dll \
	    $(NSS_LIB_DIR)/nssckbi.dll \
	    $(NSS_LIB_DIR)/nssdbm3.dll \
	    $(NSS_LIB_DIR)/nssdbm3.chk \
	    $(NSS_LIB_DIR)/nssutil3.dll \
	    $(NSS_LIB_DIR)/smime3.dll \
	    $(NSS_LIB_DIR)/softokn3.dll \
	    $(NSS_LIB_DIR)/softokn3.chk \
	    $(NSS_LIB_DIR)/sqlite3.dll \
	    $(NSS_LIB_DIR)/ssl3.dll \
	  $(BUILD_DIR)/$(LDIR)$(PKG_NSS)/$(PKG_NSS)/lib
	
# nssu
nssu.layout:
	rm -rf $(BUILD_DIR)/$(LDIR)$(PKG_NSSU)
	mkdir -p $(BUILD_DIR)/$(LDIR)$(PKG_NSSU)/$(PKG_NSSU)/bin
	cp \
	    $(NSS_BIN_DIR)/addbuiltin.exe \
	    $(NSS_BIN_DIR)/certutil.exe \
	    $(NSS_BIN_DIR)/cmsutil.exe \
	    $(NSS_BIN_DIR)/crlutil.exe \
	    $(NSS_BIN_DIR)/modutil.exe \
	    $(NSS_BIN_DIR)/pk12util.exe \
	    $(NSS_BIN_DIR)/signtool.exe \
	    $(NSS_BIN_DIR)/signver.exe \
	    $(NSS_BIN_DIR)/ssltap.exe \
	  $(BUILD_DIR)/$(LDIR)$(PKG_NSSU)/$(PKG_NSSU)/bin

# nssd
nssd.layout:
	rm -rf $(BUILD_DIR)/$(LDIR)$(PKG_NSSD)
	mkdir -p $(BUILD_DIR)/$(LDIR)$(PKG_NSSD)/$(PKG_NSSD)/lib
	mkdir -p $(BUILD_DIR)/$(LDIR)$(PKG_NSSD)/$(PKG_NSSD)/include
	cp \
	    $(NSS_LIB_DIR)/nss3.lib \
	    $(NSS_LIB_DIR)/nssutil3.lib \
	    $(NSS_LIB_DIR)/smime3.lib \
	    $(NSS_LIB_DIR)/ssl3.lib \
	  $(BUILD_DIR)/$(LDIR)$(PKG_NSSD)/$(PKG_NSSD)/lib
	cp \
	    $(NSS_INC_DIR)/base64.h \
	    $(NSS_INC_DIR)/blapit.h \
	    $(NSS_INC_DIR)/cert.h \
	    $(NSS_INC_DIR)/certdb.h \
	    $(NSS_INC_DIR)/certt.h \
	    $(NSS_INC_DIR)/ciferfam.h \
	    $(NSS_INC_DIR)/cmmf.h \
	    $(NSS_INC_DIR)/cmmft.h \
	    $(NSS_INC_DIR)/cms.h \
	    $(NSS_INC_DIR)/cmsreclist.h \
	    $(NSS_INC_DIR)/cmst.h \
	    $(NSS_INC_DIR)/crmf.h \
	    $(NSS_INC_DIR)/crmft.h \
	    $(NSS_INC_DIR)/cryptohi.h \
	    $(NSS_INC_DIR)/cryptoht.h \
	    $(NSS_INC_DIR)/ecl-exp.h \
	    $(NSS_INC_DIR)/hasht.h \
	    $(NSS_INC_DIR)/jar-ds.h \
	    $(NSS_INC_DIR)/jar.h \
	    $(NSS_INC_DIR)/jarfile.h \
	    $(NSS_INC_DIR)/key.h \
	    $(NSS_INC_DIR)/keyhi.h \
	    $(NSS_INC_DIR)/keyt.h \
	    $(NSS_INC_DIR)/keythi.h \
	    $(NSS_INC_DIR)/nss.h \
	    $(NSS_INC_DIR)/nssb64.h \
	    $(NSS_INC_DIR)/nssb64t.h \
	    $(NSS_INC_DIR)/nssbase.h \
	    $(NSS_INC_DIR)/nssbaset.h \
	    $(NSS_INC_DIR)/nssckbi.h \
	    $(NSS_INC_DIR)/nssckepv.h \
	    $(NSS_INC_DIR)/nssckft.h \
	    $(NSS_INC_DIR)/nssckfw.h \
	    $(NSS_INC_DIR)/nssckfwc.h \
	    $(NSS_INC_DIR)/nssckfwt.h \
	    $(NSS_INC_DIR)/nssckg.h \
	    $(NSS_INC_DIR)/nssckmdt.h \
	    $(NSS_INC_DIR)/nssckt.h \
	    $(NSS_INC_DIR)/nssilckt.h \
	    $(NSS_INC_DIR)/nssilock.h \
	    $(NSS_INC_DIR)/nsslocks.h \
	    $(NSS_INC_DIR)/nssrwlk.h \
	    $(NSS_INC_DIR)/nssrwlkt.h \
	    $(NSS_INC_DIR)/ocsp.h \
	    $(NSS_INC_DIR)/ocspt.h \
	    $(NSS_INC_DIR)/p12.h \
	    $(NSS_INC_DIR)/p12plcy.h \
	    $(NSS_INC_DIR)/p12t.h \
	    $(NSS_INC_DIR)/pk11func.h \
	    $(NSS_INC_DIR)/pk11pqg.h \
	    $(NSS_INC_DIR)/pk11priv.h \
	    $(NSS_INC_DIR)/pk11pub.h \
	    $(NSS_INC_DIR)/pk11sdr.h \
	    $(NSS_INC_DIR)/pkcs11.h \
	    $(NSS_INC_DIR)/pkcs11f.h \
	    $(NSS_INC_DIR)/pkcs11n.h \
	    $(NSS_INC_DIR)/pkcs11p.h \
	    $(NSS_INC_DIR)/pkcs11t.h \
	    $(NSS_INC_DIR)/pkcs11u.h \
	    $(NSS_INC_DIR)/pkcs12.h \
	    $(NSS_INC_DIR)/pkcs12t.h \
	    $(NSS_INC_DIR)/pkcs7t.h \
	    $(NSS_INC_DIR)/portreg.h \
	    $(NSS_INC_DIR)/preenc.h \
	    $(NSS_INC_DIR)/secasn1.h \
	    $(NSS_INC_DIR)/secasn1t.h \
	    $(NSS_INC_DIR)/seccomon.h \
	    $(NSS_INC_DIR)/secder.h \
	    $(NSS_INC_DIR)/secdert.h \
	    $(NSS_INC_DIR)/secdig.h \
	    $(NSS_INC_DIR)/secdigt.h \
	    $(NSS_INC_DIR)/secerr.h \
	    $(NSS_INC_DIR)/sechash.h \
	    $(NSS_INC_DIR)/secitem.h \
	    $(NSS_INC_DIR)/secmime.h \
	    $(NSS_INC_DIR)/secmod.h \
	    $(NSS_INC_DIR)/secmodt.h \
	    $(NSS_INC_DIR)/secoid.h \
	    $(NSS_INC_DIR)/secoidt.h \
	    $(NSS_INC_DIR)/secpkcs5.h \
	    $(NSS_INC_DIR)/secpkcs7.h \
	    $(NSS_INC_DIR)/secport.h \
	    $(NSS_INC_DIR)/shsign.h \
	    $(NSS_INC_DIR)/smime.h \
	    $(NSS_INC_DIR)/ssl.h \
	    $(NSS_INC_DIR)/sslerr.h \
	    $(NSS_INC_DIR)/sslproto.h \
	    $(NSS_INC_DIR)/sslt.h \
	    $(NSS_INC_DIR)/utilrename.h \
            $(NSS_INC_DIR)/utilmodt.h \
            $(NSS_INC_DIR)/utilpars.h \
            $(NSS_INC_DIR)/utilparst.h \
	  $(BUILD_DIR)/$(LDIR)$(PKG_NSSD)/$(PKG_NSSD)/include

# mkdir targets
$(PKG_DIR) $(BUILD_DIR):
	mkdir -p $@

