#
# BEGIN COPYRIGHT BLOCK
# Copyright (C) 2001 Sun Microsystems, Inc.  Used by permission.
# Copyright (C) 2005 Red Hat, Inc.
# All rights reserved.
# 
# This library is free software; you can redistribute it and/or
# modify it under the terms of the GNU Lesser General Public
# License as published by the Free Software Foundation version
# 2.1 of the License.
#  
# This library is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# Lesser General Public License for more details.
#  
# You should have received a copy of the GNU Lesser General Public
# License along with this library; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
# END COPYRIGHT BLOCK
#
#
# Makefile to Create packages for UNIX-based specific product
#
# By Whom		Date		History			
# Adrian Chan		96/06/13	Initial setup
#

BUILD_ROOT=..

NOSTDCLEAN=true

override BUILD_MODULE=SetupSDK
override MODULE=SetupSDK

include $(BUILD_ROOT)/nsdefs.mk
ifneq ($(ARCH), WINNT)
include $(BUILD_ROOT)/nsconfig.mk
endif

PKGDIR_NAME=$(PLATFORM_DEST)
PKGTOP=$(ABS_ROOT)/built/package/$(PKGDIR_NAME)
ifdef BUILD_INTL
PKGDIR_NAME+=-intl
PKGTOP=$(ABS_ROOT)/built/package/$(PKGDIR_NAME)
endif
PKGDIR=$(PKGTOP)
SVRCORE_DIR=$(PKGDIR)/bin/svrcore
SVRCORE_UNZIPPED_DIR=$(SVRCORE_DIR)/unzipped

TESTPKG_TOP=$(PKGDIR)/test
TEST_DIR=$(TESTPKG_TOP)/setuptest
TEST_UNZIPPED_DIR=$(TEST_DIR)/unzipped

ifndef INSTDIR
    MMDD := $(shell date +%m.%d)
    INSTDIR := $(ABS_ROOT)/../$(MMDD)
    PKGINSTDIR := $(ABS_ROOT)/../$(MMDD)/$(PKGDIR_NAME)
endif
ABS_INSTDIR := $(shell if test \! -f $(INSTDIR); then mkdir $(INSTDIR); fi; cd $(INSTDIR); pwd)
ABS_PKGINSTDIR := $(shell if test \! -f $(PKGINSTDIR); then mkdir $(PKGINSTDIR); fi; cd $(PKGINSTDIR); pwd)

# set the values of the macros used by rpmbuild
# name and version of RPM - must correspond to the spec file - these get branded
    RPM_BASE_NAME=fedora
    RPM_VERSION=1.0
    RPM_FILE_BASE=$(RPM_BASE_NAME)-setuputil-devel-$(RPM_VERSION)
    RPM_ARCH = $(shell uname -i)
# root dir for RPM built and temp files
    ABS_TOPDIR = $(ABS_INSTDIR)
    RPM_TOPDIR = --define "_topdir $(ABS_TOPDIR)"
# location of source tarball
    RPM_SOURCEDIR = --define "_sourcedir $(ABS_TOPDIR)"
# location of staging area built into RPM
    RPM_BUILDDIR = --define "_builddir $(ABS_PKGINSTDIR)"
# location of final RPM file
    RPM_RPMDIR = --define "_rpmdir $(ABS_TOPDIR)"
# location of source RPM
    RPM_SRPMDIR = --define "_srcrpmdir $(ABS_TOPDIR)"
ifneq ($(BUILD_DEBUG), optimize)
    RPM_FLAVOR = dbg
else
    RPM_FLAVOR = opt
endif

CHMOD=chmod
CPIO=cpio -pdum$(VERBOSE)
MV=mv
MKDIR=mkdir -p
ifeq ($(BUILD_DEBUG), optimize)
ifeq ($(ARCH), IRIX)
STRIP=strip -x
else
STRIP=strip
endif
else
STRIP=true
endif
ZIPF = zip -0rq

LWCP = cp      # cp -r behave different on HP

all:
	cd lib; $(MAKE) $(NSDEFS) $(MFLAGS)
ifneq ($(ARCH), WINNT)
	cd unix; $(MAKE) $(NSDEFS) $(MFLAGS)
endif

package: prepackage pkgSBC pkgRPM

cleanSSL:
	rm -rf $(ABS_ROOT)/built/java/admin/crysec

prepackage:  cleanSSL
ifeq ($(ARCH), WINNT)
# Staging setup program
	cp -p scripts/unzip_wrapper.pl $(PKGTOP)/setup/bin
	cp -p inf/setup.inf $(PKGTOP)/setup/bin
	cp -p inf/silent.inf $(PKGTOP)/setup/bin
else # UNIXes
	rm -rf $(PKGDIR)
	$(MKDIR) $(PKGDIR)
# Staging libinstall
	$(MKDIR) $(PKGDIR)/include
	$(MKDIR) $(PKGDIR)/lib
	cp -p $(OBJDIR)/include/*.h $(PKGDIR)/include
	cp -p $(OBJDIR)/lib/libinstall.a  $(PKGDIR)/lib

# Staging setup program
	$(MKDIR) $(PKGDIR)/bin
	cp -p $(OBJDIR)/bin/setup $(PKGDIR)/bin
	cp -p scripts/unzip_wrapper.pl $(PKGTOP)/bin
	cp -p inf/setup.inf $(PKGDIR)/bin
	cp -p inf/silent.inf $(PKGDIR)/bin
	cp -p $(OBJDIR)/LICENSE.txt $(PKGDIR)/bin
	cp -p $(OBJDIR)/README.txt $(PKGDIR)/bin
# Create svrcore package
	$(MKDIR) $(SVRCORE_UNZIPPED_DIR)
	cp -p $(OBJDIR)/LICENSE.txt $(SVRCORE_UNZIPPED_DIR)
	cp -p $(OBJDIR)/bin/uninstall $(SVRCORE_UNZIPPED_DIR)

	cd $(SVRCORE_UNZIPPED_DIR) ; \
		$(IZIP) $(SVRCORE_DIR)/nssvrcore.zip * ;

	$(PERL5) fixPI.pl SETUP_BASE ../include/version.h ../$(BUILD_ARCH)/buildnum.dat $(BUILD_SECURITY) svrcore.inf $(SVRCORE_DIR)/svrcore.inf

ifeq ($(DEBUG), optimize)
	-$(STRIP) $(PKGDIR)/bin/*
endif
endif

pkgTest:
	rm -rf $(TEST_DIR)
	$(MKDIR) $(TEST_DIR)
	$(MKDIR) $(TEST_UNZIPPED_DIR)/setuptest
	cp -p $(OBJDIR)/test/obj/setup.inf $(TESTPKG_TOP)/setup.inf
	cp -p $(OBJDIR)/test/obj/readme.txt $(TEST_DIR)/readme.txt
	cp -p $(OBJDIR)/test/obj/setuptest.inf $(TEST_DIR)/setuptest.inf

	cp -p $(OBJDIR)/test/bin/* $(TEST_UNZIPPED_DIR)/setuptest
	cp -p $(OBJDIR)/test/obj/program.lst $(TEST_UNZIPPED_DIR)/setuptest

	cd $(TEST_UNZIPPED_DIR) ; $(IZIP) $(TEST_DIR)/setuptest.zip * ;

pkgSBC:
	-$(RM) -rf $(ABS_PKGINSTDIR)
	-$(MKDIR) $(ABS_PKGINSTDIR)
	cp -r $(PKGDIR)/* $(ABS_PKGINSTDIR)
	cd $(ABS_PKGINSTDIR); tar -cvf - * | gzip -c > setuputil.tar.gz
ifneq ($(ARCH), WINNT)
# create a source tar ball (ABS_INSTDIR is always new and clean)
	cd $(ABS_INSTDIR); ln -s $(ABS_ROOT) $(RPM_FILE_BASE); \
	tar cfh - --exclude \*/built --exclude \*/CVS $(RPM_FILE_BASE) --exclude \*/branding --exclude \*/RHEL* --exclude \*/SunOS* --exclude \*/HP* --exclude \*/Linux** | gzip > $(RPM_FILE_BASE).tar.gz; \
	$(RM) $(RPM_FILE_BASE)
endif

pkgRPM: pkgSBC
ifdef BUILD_RPM
# make a spec file (it's moved to OBJDIR)
	$(MAKE) -C $(ABS_ROOT) $(RPM_BASE_NAME)-setuputil.spec
	rpmbuild $(RPM_TOPDIR) $(RPM_SOURCEDIR) $(RPM_BUILDDIR) $(RPM_RPMDIR) $(RPM_SRPMDIR) --define "flavor $(RPM_FLAVOR)" --clean --nodeps -ba $(OBJDIR)/$(RPM_BASE_NAME)-setuputil.spec
endif # BUILD_RPM

clean:
	cd lib; $(MAKE) $(NSDEFS) clean $(MFLAGS)
	@echo
	cd unix; $(MAKE) $(NSDEFS) clean $(MFLAGS)
	@echo
	cd unix/lib; $(MAKE) $(NSDEFS) clean $(MFLAGS)
