# 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
# --------------------------------------------------------------------------
#
#   Name: Administration Server Packaging Makefile
#   Platform: gmake
#   ......................................................................
#   Notes:
#   * SRC_ defs are UNIX style relative directories
#   * To add a new .Z file to the distribution:
#     1) add it to the all: rule
#     2) create a SRC_ definition for it
#     3) cp other files into it
#     4) copy it to $(BINDIR)
#     5) change /ns/newinst/httpd/uninst/nt/unhttp.c to uninstall it
#
#
# --------------------------------------------------------------------------

BUILD_ROOT=../../../..
include $(BUILD_ROOT)/nsconfig.mk
include $(BUILD_ROOT)/components.mk
# !!! These need to go into nsdefs.mk or nsconfig.mk eventually !!!

NSSETUP_BIN=$(SETUPUTIL_BIN)
NSSETUP_LIBPATH=$(SETUPUTIL_LIBPATH)
NSSETUP_INCLUDE=$(SETUPUTIL_INCLUDE)

OBJDEST=$(ADMSERV_OBJDIR)/insadm
RELTOP=$(BUILD_SHIP)/$(PLATFORM_DEST)
ROOTBINDIR=$(BUILD_ROOT)/built/package/$(PLATFORM_DEST)/bin
ADMINDIR=$(ADMSERV_OBJDIR)
LAYOUTDIR=$(ADMINDIR)/layout
CLASS_DIR=$(BUILD_ROOT)/built/java/admin

BINSETUPDIR=$(ROOTBINDIR)/setup
BINDIR=$(ROOTBINDIR)/setup/admin
ADMINZDIR=$(LAYOUTDIR)/adminz
ADMDLLSZDIR=$(LAYOUTDIR)/admdllsz
STARTCONZDIR=$(LAYOUTDIR)/consolez
CLIENTZDIR=$(CLASS_DIR)/com
JAVA_MISC=$(BUILD_ROOT)/built/package/java
ADMIN_JARS=$(BUILD_ROOT)/built/package/java/admin
SRC_LDIF=$(ADMINDIR)/ldif
SRC_CONFIG=$(ADMINDIR)/config

SCRIPT_DEST=$(ADMINZDIR)/shared/bin
CERTMAP_DEST=$(ADMINZDIR)/shared/config

ADMINUTIL=$(NSCP_COMPDIR)/adminutil/$(NSOBJDIR_NAME)/lib
LDAPSDK=$(NSCP_COMPDIR)/ldapsdk/$(NSOBJDIR_NAME)/lib

OBJFILES= \
	insadm.o \
	config.o \
	insadm.res


OBJS=$(addprefix $(OBJDEST)/, $(OBJFILES))
DEPLIBS += $(NSSETUP_LIBPATH)/nssetup32.lib $(addprefix $(LDAPSDK_LIBPATH)/, $(LDAPOBJNAME))

NOSTDCLEAN=true
NOSTDSTRIP=true
NOSTDCOMPILE=true

#------------------------------------------------------------------
# Define the Directory layout structure for each zip file
#-----------------------------------------------------------------
include config.mk

all:  $(LAYOUTDIR) $(ROOTBINDIR) $(BINDIR) $(OBJDEST) \
	pkgConsole \
	pkgAdminZ \
	do-insadm \
	$(BINDIR)/tasks.ldif \
	$(BINDIR)/global.ldif \
	$(BINDIR)/admin.inf \
	$(BINDIR)/ns-common-schema.conf \
	pkgSBC

pkgSBC:
ifneq ($(ARCH), WINNT)
	cd $(BINSETUPDIR); find . -type f -exec chmod go-w {} \;
endif
ifdef BUILD_SHIP
	-mkdir $(RELTOP)
	cd $(BINSETUPDIR); tar cvf $(RELTOP)/admserv.tar *
	-rm $(RELTOP)/admserv.tar.gz
	cd $(RELTOP); gzip -f admserv.tar
endif

do-insadm: $(BINDIR) $(BINSETUPDIR)/setup.exe $(BINDIR)/insadm.dll

MCC_INCLUDE = /I$(NSSETUP_INCLUDE) /I$(LDAPSDK_INCLUDE) /I../../../include

MODULE_CFLAGS=-DENCRYPT_PASSWORDS -DUSE_ADMSERV -DMCC_ADMSERV

CPP_FLAGS += $(DLL_FLAGS)
CPP_FLAGS += $(MODULE_CFLAGS)

SETUPDIR=.

#------------------------------------------------------------------------
# Do not duplicate DLLs from win system32 directory in bin/https/bin.
# Filter-out shared DLLs installed in system32 from bin/https/bin. 
# richm - Not Anymore - we need to duplicate the DLLs so we can avoid
# having DLLs in system32 altogether - we should have no DLLs in system32
# anymore - this necessarily means we will have duplicate DLLs
#------------------------------------------------------------------------
#NES_EXCLUDE_DLLS=$(addsuffix .dll, $(LDAPDLL_NAME) $(SECURITYDLL_NAME) $(ARLIBDLL_NAME) $(NSPRDLL_NAME))
NES_ALL_DLLS=$(shell cd $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/bin; ls *.dll)
#NES_DLLS=$(filter-out $(NES_EXCLUDE_DLLS),$(NES_ALL_DLLS))
NES_DLLS=$(NES_ALL_DLLS)

#--------------------------------------------------------------------------
# SRC_ definitions are pointers to built modules
#--------------------------------------------------------------------------

SRC_LDAPCOMPONENTS=$(LDAPSDK_LIBPATH)

SRC_UNINST=$(COMMON_OBJDIR)
SRC_PLUGINS_SNMP=$(BUILD_ROOT)/lib/libsnmp
SRC_ADMSERV=$(ADMSERV_OBJDIR)
SRC_BIN_ADMSERV_BIN=$(SRC_ADMSERV)/cgi
SRC_BIN_ADMSERV_BIN_BIN=$(SRC_BIN_ADMSERV_BIN)/bin
SRC_BIN_ADMSERV_BIN_BIN_PROP=$(SRC_BIN_ADMSERV_BIN)/bin/property
SRC_BIN_ADMSERV_BIN_HTML=$(SRC_BIN_ADMSERV_BIN)/html
SRC_BIN_ADMSERV_BIN_HTML_MANUAL=$(SRC_ADMSERV)/manual
SRC_BIN_ADMSERV_BIN_ICONS=$(SRC_BIN_ADMSERV_BIN)/icons40
SRC_BIN_ADMSERV_BIN_CFGSTUFF=$(SRC_BIN_ADMSERV_BIN)/cfgstuff
SRC_BIN_ADMSERV_USER=$(SRC_ADMSERV)/user-forms
SRC_BIN_ADMSERV_USER_BIN=$(SRC_BIN_ADMSERV_USER)/bin
SRC_BIN_ADMSERV_USER_HTML=$(SRC_BIN_ADMSERV_USER)/html
SRC_BIN_ADMSERV_USER_GIFS=$(SRC_BIN_ADMSERV_USER)/gifs

pkgConsole:
	cd $(BUILD_ROOT)/admserv/console; $(MAKE) BUILD_MODULE=HTTP_ADMIN package $(MFLAGS)


$(LAYOUTDIR):
	-mkdir -p $(LAYOUTDIR)

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


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

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


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


$(BINSETUPDIR)/setup.exe: $(SETUPSDK)
	-mkdir -p $(BINSETUPDIR)/svrcore
	cp $(NSSETUP_BIN)/*.* $(BINSETUPDIR)
	cp bkgrnd.bmp $(BINSETUPDIR)
	cp ../common/setup.inf $(BINSETUPDIR)
	cp ../common/README.txt $(BINSETUPDIR)
	cp ../common/LICENSE.txt $(BINSETUPDIR)
	cp $(NSSETUP_BIN)/svrcore/*.* $(BINSETUPDIR)/svrcore

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

$(BINDIR)/admin.inf: admin.inf
ifeq ($(ARCH), WINNT)
	$(PERL) fixPI.pl $(BUILD_MODULE) ../../../include/version.h ../../../$(NSPLATFORM_DIR)/buildnum.dat $(BUILD_SECURITY) admin.inf $(PRODUCT) $@ $(BUILD_BOMB) "bin/admin/ns-admin,bin/admin/ns-admin.so"
endif


$(BINDIR)/tasks.ldif:	$(SRC_LDIF)/tasks.ldif
	cp $< $@

$(BINDIR)/global.ldif:	$(SRC_LDIF)/global.ldif
	cp $< $@

$(BINDIR)/ns-common-schema.conf:	$(SRC_CONFIG)/ns-common-schema.conf
	cp $< $@

pkgAdminZ:
	-rm $(ADMINZDIR)
	mkdir -p $(ADMINZDIR)
	mkdir -p $(ADMINZDIR)/setup/admin
	mkdir -p $(ADMINZDIR)/admin-serv/config
	mkdir -p $(ADMINZDIR)/bin/admin/property
	mkdir -p $(ADMINZDIR)/bin/admin/admin/bin
	mkdir -p $(ADMINZDIR)/bin/admin/admin/bin/property
	mkdir -p $(ADMINZDIR)/bin/admin/admin/icons
	mkdir -p $(ADMINZDIR)/bin/admin/admin/html
	mkdir -p $(ADMINZDIR)/bin/https/bin
	mkdir -p $(ADMINZDIR)/bin/https/jar
	mkdir -p $(ADMINZDIR)/bin/https/httpadmin/bin
	mkdir -p $(ADMINZDIR)/userdb
	mkdir -p $(ADMINZDIR)/lib
	mkdir -p $(ADMINZDIR)/lib/property
	mkdir -p $(ADMINZDIR)/install
	mkdir -p $(ADMINZDIR)/manual/help
	mkdir -p $(ADMINZDIR)/plugins/snmp
	mkdir -p $(ADMINZDIR)/java/html/en
	mkdir -p $(ADMINZDIR)/java/jars
	mkdir -p $(ADMINZDIR)/dist
	mkdir -p $(ADMINZDIR)/clients
	mkdir -p $(ADMINZDIR)/shared
	mkdir -p $(ADMINZDIR)/shared/bin
	mkdir -p $(ADMINZDIR)/shared/config
	cp ../common/README.txt $(ADMINZDIR)

	cp $(SRC_BIN_ADMSERV_BIN_BIN)/download.exe $(ADMINZDIR)/dist
# download.exe needs nspr
	cp $(PACKAGE_NSPR_DLLS) $(ADMINZDIR)/dist
	cp $(SRC_BIN_ADMSERV_BIN_BIN)/*.exe $(ADMINZDIR)/bin/admin/admin/bin
	-rm $(ADMINZDIR)/bin/admin/admin/bin/download.exe
	cp $(SRC_BIN_ADMSERV_BIN_BIN)/*.pm $(ADMINZDIR)/bin/admin/admin/bin
	cp $(SRC_BIN_ADMSERV_BIN_BIN_PROP)/*.res $(ADMINZDIR)/bin/admin/admin/bin/property
# need copies of the DLLs in the admin/bin directory now - remove dependence
# on DLLs in winnt\system32
	cp $(PACKAGE_NSPR_DLLS) $(ADMINZDIR)/bin/admin/admin/bin
	cp $(PACKAGE_SECURITY_DLLS) $(ADMINZDIR)/bin/admin/admin/bin
	cp $(PACKAGE_ICU_DLLS) $(ADMINZDIR)/bin/admin/admin/bin
	cp $(ADMINUTIL)/*.dll $(ADMINZDIR)/bin/admin/admin/bin
	cp $(ADMINUTIL)/property/*.res $(ADMINZDIR)/bin/admin/admin/bin/property
	cp $(LDAPSDK)/*.dll $(ADMINZDIR)/bin/admin/admin/bin

	cp $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/bin/ns-httpd.exe $(ADMINZDIR)/bin/https/bin
	cp $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/bin/httpd.exe $(ADMINZDIR)/bin/https/bin
	$(foreach dll,$(NES_DLLS),cp $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/bin/$(dll) $(ADMINZDIR)/bin/https/bin;)

	cp $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/httpadmin/bin/shutdown.exe $(ADMINZDIR)/bin/https/httpadmin/bin

	cp $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/jar/NSServletLayer.jar $(ADMINZDIR)/bin/https/jar
	cp $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/jar/NSJavaUtil.jar $(ADMINZDIR)/bin/https/jar
	cp $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/jar/NSJavaMiscUtil.jar $(ADMINZDIR)/bin/https/jar
	cp $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/jar/servlet*.jar $(ADMINZDIR)/bin/https/jar
	cp $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/jar/jaxp.jar $(ADMINZDIR)/bin/https/jar
	cp $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/jar/crimson.jar $(ADMINZDIR)/bin/https/jar
	cp $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/jar/xalan.jar $(ADMINZDIR)/bin/https/jar
	cp $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/jar/jakarta-naming.jar $(ADMINZDIR)/bin/https/jar
	cp $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/jar/jspengine.jar $(ADMINZDIR)/bin/https/jar

#	cp $(NSCP_COMPDIR)/nescore/$(NSOBJDIR_NAME)/bin/https/res/*.properties $(ADMINZDIR)/admin-serv/config
#	cp $(BUILD_ROOT)/admserv/newinst/common/config/jvm12.conf $(ADMINZDIR)/admin-serv/config
	cp $(BUILD_ROOT)/admserv/newinst/common/config/contexts.properties $(ADMINZDIR)/admin-serv/config
	cp $(BUILD_ROOT)/admserv/newinst/common/config/rules.properties.default $(ADMINZDIR)/admin-serv/config
	cp $(BUILD_ROOT)/admserv/newinst/common/config/servlets.properties.default $(ADMINZDIR)/admin-serv/config
	cp $(BUILD_ROOT)/admserv/newinst/common/config/server.xml $(ADMINZDIR)/admin-serv/config
	cp $(BUILD_ROOT)/admserv/newinst/common/config/server.dtd $(ADMINZDIR)/admin-serv/config
	cp $(BUILD_ROOT)/admserv/newinst/common/config/mime.types $(ADMINZDIR)/admin-serv/config
#	cp $(BUILD_ROOT)/admserv/newinst/common/config/exempturis.conf $(ADMINZDIR)/admin-serv/config
	cp $(BUILD_ROOT)/admserv/newinst/common/config/not_installed.html $(ADMINZDIR)/clients

	cp $(SRC_ADMSERV)/plugins/AdmservPlugin.dll $(ADMINZDIR)/bin/https/bin
# also need a copy of the ICU dlls for AdmservPlugin
	cp $(PACKAGE_ICU_DLLS) $(ADMINZDIR)/bin/https/bin
# also need a copy of libadminutil for AdmservPlugin
	cp $(ADMINUTIL)/*.dll $(ADMINZDIR)/bin/https/bin
	-mkdir $(ADMINZDIR)/bin/https/bin/property
	cp $(ADMINUTIL)/property/*.res $(ADMINZDIR)/bin/https/bin/property

	cp $(JAVA_MISC)/*.* $(ADMINZDIR)/java/html
	cp $(JAVA_MISC)/*.html $(ADMINZDIR)/java/html/en
	cp $(SRC_ADMSERV)/admconfig.exe $(ADMINZDIR)/bin/admin
	cp $(SRC_BIN_ADMSERV_BIN_HTML)/*.* $(ADMINZDIR)/bin/admin/admin/html

# DOCS
	cd $(ADMINZDIR)/manual ; $(UNZIP) $(ADMDOC_ABSPATH)/$(ADMDOC_ADMONLINEHELP)
                                                                                
	cp $(SRC_BIN_ADMSERV_BIN_HTML_MANUAL)/help/*.* $(ADMINZDIR)/manual/help

	cp $(PACKAGE_NSPR_DLLS) $(ADMINZDIR)/manual/help
	cp $(SRC_BIN_ADMSERV_BIN_ICONS)/*.gif $(ADMINZDIR)/bin/admin/admin/icons
	-cp $(SRC_BIN_ADMSERV_BIN_ICONS)/*.jpg $(ADMINZDIR)/bin/admin/admin/icons
	cp $(SRC_LDIF)/tasks.ldif $(ADMINZDIR)/setup/admin	
	cp $(SRC_LDIF)/global.ldif $(ADMINZDIR)/setup/admin	
	cp $(SRC_CONFIG)/ns-common-schema.conf $(ADMINZDIR)/setup/admin
	cp $(SETUPDIR)/*.conf $(ADMINZDIR)/admin-serv/config
	cp $(SRC_PLUGINS_SNMP)/netscape-main.mib $(ADMINZDIR)/plugins/snmp

# admin_ip.pl (see bug#357241)
	cp $(SRC_ADMSERV)/cgi/cfgstuff/admin_ip.pl $(SCRIPT_DEST)

# Copy certmap.conf
	cp $(BUILD_ROOT)/lib/ldaputil/certmap.conf $(CERTMAP_DEST)
# Same file in <server root>/userdb for new core ES engine
	cp $(BUILD_ROOT)/lib/ldaputil/certmap.conf $(ADMINZDIR)/userdb

	cd $(ADMINZDIR) ; $(ZIP) -r admin.z '*'
	cp $(ADMINZDIR)/admin.z $(BINDIR)/admin.z
	-rm $(ADMINZDIR)/admin.z

	-rm $(ADMDLLSZDIR)
	-rm $(STARTCONZDIR)/console.z
	mkdir -p $(STARTCONZDIR)/java/jars
	mkdir -p $(STARTCONZDIR)/bin/base
	cp $(ADMIN_JARS)/admserv$(ADM_SUF).jar $(STARTCONZDIR)/java/jars
	cp $(ADMIN_JARS)/admserv$(ADM_SUF)_en.jar $(STARTCONZDIR)/java/jars
	cp $(SRC_ADMSERV)/viewurl.exe $(STARTCONZDIR)/bin/base
	cp $(SRC_ADMSERV)/jre.inf $(STARTCONZDIR)/java
	cd $(STARTCONZDIR) ; $(ZIP) -r console.z '*'
	cp $(STARTCONZDIR)/console.z $(BINDIR)/console.z
	-rm $(STARTCONZDIR)/console.z


makefiles:
clean:
depend:
