# BEGIN COPYRIGHT BLOCK
# Copyright (C) 2001 Sun Microsystems, Inc.  Used by permission.
# Copyright (C) 2005 Red Hat, Inc.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program 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 General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
#

# END COPYRIGHT BLOCK
#
# Makefile to Create packages for NT-based specific product
#
# By Whom		Date		History			
# Glen Beasley		  97/09/28	Initial setup
#
BUILD_ROOT=../..
MODULE=baseNT

include $(BUILD_ROOT)/nsconfig.mk
include $(BUILD_ROOT)/components.mk

RELTOP=$(BUILD_SHIP)/$(PLATFORM_DEST)
ROOTBINDIR=$(BUILD_ROOT)/built/package/$(PLATFORM_DEST)
BINDIR=$(ROOTBINDIR)/bin/setup/base
ABSBINDIR=$(BUILD_ROOT)/built/package/$(PLATFORM_DEST)
SRC_ADMSERV=$(ADMSERV_OBJDIR)

NOSTDCLEAN=true
NOSTDSTRIP=true
NOSTDCOMPILE=true

#------------------------------------------------------------------
# Define the Directory layout structure for base zip file
#-----------------------------------------------------------------
LAYOUTDIR=$(OBJDIR)/layout

BASEZ=$(LAYOUTDIR)/basez
BASESYSZ=$(LAYOUTDIR)/basesysz
CLIENTZ=$(LAYOUTDIR)/clientz

SRC_UNINST=$(BUILD_ROOT)/built/$(PLATFORM_DEST)-common
LDAPDLL_SRC=$(NSCP_COMPDIR)/ldapsdk/$(NSOBJDIR_NAME)/lib
LDAPTOOL_SRC=$(NSCP_COMPDIR)/ldapsdk/$(NSOBJDIR_NAME)/tools
PKCSTOOL_SRC=$(NSCP_DISTDIR)/bin

LDAPDLL_DEST=$(BASESYSZ)
LDAPTOOL_DEST=$(BASEZ)/shared/bin
PKCSTOOL_DEST=$(BASEZ)/shared/bin

ADMINUTIL=$(NSCP_COMPDIR)/adminutil/$(NSOBJDIR_NAME)

LIBNSPR_DEST=$(BASESYSZ)

LIBICU_DEST=$(BASESYSZ)
LIBICU_TOOLDEST=$(BASEZ)/shared/bin

JRE_ROOT = $(NSCP_COMPDIR)/jre/$(NSOBJDIR_NAME)
JRE_DEST=$(LAYOUTDIR)/jrez

# java security package
JSS_ROOT = $(NSCP_COMPDIR)/jss/$(NSOBJDIR_NAME)/lib
JSS_LOCALEDEST=$(CLIENTZ)/lib/jss
#JSS will want to find NSS and NSPR in the path.
JSS_DEPSDEST = $(CLIENTZ)/bin/base/jre/bin

CLASS_SRC=$(CLASS_DEST)
CLIENTZ_DEST=$(CLIENTZ)
CLIENTZ_DEST_JAVA=$(CLIENTZ)/java
CLIENTZ_DEST_CONSOLE_HELP=$(CLIENTZ)/manual/en/console/help


all: cleanBase $(BASEZ) $(CLIENTZ) $(JRE_DEST) $(ROOTBINDIR) $(BINDIR) $(OBJDEST) \
     $(LIBLDAP) do-insbase  \
     ldapjdk $(LIBNSPR) \
     pkgbase pkgClient

do-insbase: $(BINDIR)/base.inf

$(BASEZ):
	-mkdir -p $(BASEZ)

$(CLIENTZ):
	-mkdir -p $(CLIENTZ)

$(JRE_DEST):
	-mkdir -p $(JRE_DEST)

$(BASESYSZ):
	-mkdir -p $(BASESYSZ)


$(ROOTBINDIR):
	-mkdir -p $(ROOTBINDIR)

$(BINDIR):
	-mkdir -p $(BINDIR)

$(OBJDEST):
	-mkdir -p $(OBJDEST)

$(OBJDEST)/insbase.dll: $(DEPLIBS) $(OBJS)
	$(LINK) /MAP /DLL $(LINK_FLAGS) $(EXTRA_LIBS) $(DEPLIBS) $(OBJS)

$(BINDIR)/insbase.dll: $(OBJDEST)/insbase.dll
	cp $< $@

$(BINDIR)/base.inf: base.inf

ifeq ($(ARCH), WINNT)
	$(PERL) fixPI.pl SETUP_BASE ../../include/version.h ../../$(NSPLATFORM_DIR)/buildnum.dat $(BUILD_SECURITY) base.inf $(BINDIR)/base.inf
endif


#--------------------------------------------------------------------------
# Package the base
# blow the base all away first so that we will take time to build
# but always be getting the updated binaries from share builds.
#--------------------------------------------------------------------------

cleanBase:
	-rm -fr  $(BASEZ)
	-rm -fr  $(BASESYSZ)
	-rm -fr  $(CLIENTZ)
	-rm -fr  $(JRE_DEST)
	-rm -f $(BINDIR)/base.z
	-rm -f $(BINDIR)/basesys.z
	-rm -f $(BINDIR)/client.z
	-rm -f $(BINDIR)/jre.z


pkgbase:
# Copy LDAP SDK from the components dir, and modutil from dist dir
	-mkdir -p $(CLIENTZ_DEST_JAVA)
	-mkdir -p $(LDAPDLL_DEST)
	-mkdir -p $(LDAPTOOL_DEST)
	-mkdir -p $(CLIENTZ_DEST_CONSOLE_HELP)
	cp $(LDAPDLL_SRC)/*.dll $(LDAPDLL_DEST)
	cp $(PACKAGE_NSPR_DLLS) $(LIBNSPR_DEST)
        #Need NSPR3 for jss21
	cp $(PACKAGE_SECURITY_DLLS) $(LIBNSPR_DEST)
	cp $(LDAPTOOL_SRC)/ldapcompare.exe $(LDAPTOOL_DEST)
	cp $(LDAPTOOL_SRC)/ldapdelete.exe $(LDAPTOOL_DEST)
	cp $(LDAPTOOL_SRC)/ldapmodify.exe $(LDAPTOOL_DEST)
	cp $(LDAPTOOL_SRC)/ldapsearch.exe $(LDAPTOOL_DEST)
	cp $(PKCSTOOL_SRC)/modutil.exe $(PKCSTOOL_DEST)
	-cp -r $(SRC_ADMSERV)/manual/console/* $(CLIENTZ_DEST_CONSOLE_HELP)

# Copy nssckbi.dll to the alias directory
	-mkdir -p $(BASEZ)/alias
	cp $(SECURITY_LIBPATH)/$(SECURITY_SECMODDB_RUNTIME_LIBNAME).dll $(BASEZ)/alias

# Copy Libadminutil
	-mkdir -p $(BASEZ)/lib/property
	cp $(ADMINUTIL)/lib/property/*.res $(BASEZ)/lib/property
	cp $(ADMINUTIL)/lib/*.dll $(BASESYSZ)

# Copy LIB ICU
	-mkdir -p $(LIBICU_DEST)
	cp $(PACKAGE_ICU_DLLS) $(LIBICU_DEST)
	cp $(ICU_BIN)/uconv.exe $(LIBICU_TOOLDEST)

#zip the base
	cd $(BASEZ) ; $(ZIP) -r base.z '*'
	cd $(BASESYSZ) ; $(ZIP) -r basesys.z '*'
	cp $(BASEZ)/base.z $(BINDIR)/base.z
	cp $(BASESYSZ)/basesys.z $(BINDIR)/basesys.z



pkgClient:
#create empty java/jars directory so remote class loading don't choke
#also create a dummy file in here otherwise zip -r would not pick up
#the jars directory!!
	-mkdir -p $(CLIENTZ_DEST_JAVA)/jars
	-touch $(CLIENTZ_DEST_JAVA)/jars/jars.lst
# startconsole.exe
	cp $(SRC_ADMSERV)/startconsole.exe $(CLIENTZ_DEST)

# Copy JSS.DLL
	-mkdir -p $(JSS_LOCALEDEST)
	cp $(JSS_ROOT)/jss3.dll $(JSS_LOCALEDEST)

# Copy JSS' dependencies: NSS and NSPR
	-mkdir -p $(JSS_DEPSDEST)
	cp $(SECURITY_LIBPATH)/$(PACKAGE_SECURITY_DLLS) $(JSS_DEPSDEST)
	cp $(NSPR_LIBPATH)/$(PACKAGE_NSPR_DLLS) $(JSS_DEPSDEST)

# Copy over jre.inf
	cp $(SRC_ADMSERV)/jre.inf $(CLIENTZ_DEST_JAVA)

#copy Java Management Console
	cp -r $(CLASS_DEST)/* $(CLIENTZ_DEST_JAVA) 

	cd $(CLIENTZ) ; $(ZIP) -r client.z '*'
	cp $(CLIENTZ)/client.z $(BINDIR)/client.z

# Copy JRE Runtime
#	-mkdir -p $(JRE_DEST)/bin
#	sh $(BUILD_ROOT)/nsftp.sh $(JRE_SRC) $(JRE_DEST) jre.z $(ADM_COMP_HOST)
	cp $(JRE_ROOT)/jre.z $(BINDIR)/jre.z

pkgSBC:
ifdef BUILD_SHIP
	-mkdir $(RELTOP)
	cd $(ROOTBINDIR)/bin/setup; tar cvf $(RELTOP)/base.tar *
	-rm $(RELTOP)/base.tar.gz
	cd $(RELTOP); gzip -f base.tar
endif	

