#
# 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 for AdminServer
#

BUILD_ROOT=.

include nsconfig.mk
include components.mk

PACKAGEDEPS = start_time

ifndef NOJAVA
PACKAGEDEPS += ldapjdk nmcjdk jsssdk jsslib
endif

PACKAGEDEPS += pkgBase pkgAdmin pkgMcc end_time

all: buildAndPkgAdmin

buildAndPkgAdmin: buildOxygen pkgOxygen

help:
	@echo
	@echo The following are build targets that you can choose from:
	@echo
	@echo "   $(MAKE) buildAndPkgAdmin (the default if no targets are given)"
	@echo "   $(MAKE) buildAdmin"
	@echo "   $(MAKE) buildOxygen"
	@echo "   $(MAKE) buildConsole"
	@echo "   $(MAKE) pkgAdmin"
	@echo "   $(MAKE) pkgOxygen"
	@echo "   $(MAKE) pkgConsole"
	@echo "   $(MAKE) pkgL10NOxygen"
	@echo "   $(MAKE) docConsole"
	@echo "   $(MAKE) acceptAdmin"
	@echo ""
	@echo Use $(MAKE) NOJAVA=1 to skip building/packaging any Java (console or command line) code

pumpkin:
	$(PERL) pumpkin.pl $(PUMPKIN_AGE) pumpkin.dat

start_time:
	@echo  " Starting SBCX IMPORT  "
	@date

end_time:
	@date
	@echo  " Ending SBCX IMPORT  "

acceptAdmin:
	cd $(BUILD_ROOT)/admserv; gmake -f pkgadmin.mk Acceptance $(MFLAGS)

buildnum:
	if test ! -d $(NSPLATFORM_DIR); then mkdir $(NSPLATFORM_DIR); fi;
	$(PERL5) buildnum.pl -p $(NSPLATFORM_DIR)

nsCommon: start_time $(LIBNSPR) $(LIBSECURITY) $(LIBDBM) $(LIBLDAP) $(LIBADMINUTIL) $(LIBICU) $(SETUPUTIL) $(ADMDOC) end_time

#
# Notice that BUILD_MODULE is not supplied directly on this target.
# It either inherits from the calling target or from the default in
# nsdefs.mk.  Therefore if you need to perform 'gmake httpdlib', be sure
# that BUILD_MODULE is set to whatever target release that you need.
#
httpdLib:
	@echo
	@echo
	@echo
	@echo ==== Starting Server LIBS for: $(BUILD_MODULE) ==========
	@echo
	cd lib/base; 		$(MAKE) BUILD_MODULE=$(BUILD_MODULE) $(MFLAGS)
	cd lib/ldaputil;	$(MAKE) BUILD_MODULE=$(BUILD_MODULE) $(MFLAGS)
	cd lib/libadmin; 	$(MAKE) BUILD_MODULE=$(BUILD_MODULE)  $(MFLAGS)
	cd lib/libsi18n; 	$(MAKE) BUILD_MODULE=$(BUILD_MODULE)  $(MFLAGS)

pkgBase:        setupBase
	@echo
	@echo ============== Finished - Base Package ================

pkgAdmin:	setupAdmin
	@echo
	@echo ============== Finished - Admin Server Package =====================

buildOxygen: buildnum buildAdmin

$(RELTOOLS):
ifdef INTERNAL_BUILD
	cd $(BUILD_ROOT)/..; cvs co RelToolsLite
endif

brandAdmin: $(RELTOOLS)
	@echo ==== Branding Administration Server ==========
	$(PERL5) $(RELTOOLS)/brandver.pl -i branding/rh/brandver.dat
	@echo ==== Finished Branding Administration Server ==========

versionAdmin: $(RELTOOLS)
	@echo ==== Versioning Administration Server ==========
	$(PERL5) $(RELTOOLS)/brandver.pl -i branding/fedora/brandver.dat
	@echo ==== Finished Versioning Administration Server ==========

normalizeAdmin: $(RELTOOLS)
	@echo ==== Normalizing Administration Server ==========
	$(RELTOOLS)/brandver.pl -i branding/fedora/normalize.dat
	@echo ==== Finished Normalizing Administration Server ==========

#
# Sigh, this is needed to override nsdefs.mk
buildAdmin:	$(RELTOOLS)
	$(MAKE) BUILD_MODULE=HTTP_ADMIN buildAdmin_r $(MFLAGS)

buildAdmin_r: pumpkin
ifeq ($(ARCH), WINNT)
	$(PERL5) ntversion.pl $(BUILD_ROOT) $(MAJOR_VERSION) $(MINOR_VERSION)
endif
	$(MAKE) nsCommon $(MFLAGS)
	$(MAKE) httpAdmin $(MFLAGS)

httpAdmin:
	@echo
	@echo
	@echo
	@echo ====== Starting Admin Server =============
	@echo
	$(MAKE) BUILD_MODULE=HTTP_ADMIN httpdLib $(MFLAGS)
	cd admserv;	$(MAKE) BUILD_MODULE=HTTP_ADMIN $(MFLAGS)

setupBase:
	@echo
	@echo
	@echo
	@echo === Starting Base Package ====
	@echo
ifeq ($(ARCH), WINNT)
	cd admserv/startconsole/nt; $(MAKE) $(MFLAGS) BUILD_MODULE=SETUP_ADMIN
	cd base/nt; $(MAKE) $(MFLAGS) BUILD_MODULE=SETUP_BASE
else
	cd base; $(MAKE) $(MFLAGS) BUILD_MODULE=SETUP_BASE
endif

setupAdmin:
ifeq ($(ARCH), WINNT)
	@echo
	@echo
	@echo
	@echo ==== Starting Admin Setup ==========
	@echo
	cd admserv/schema/ldif; $(MAKE) $(MFLAGS) BUILD_MODULE=SETUP_ADMIN
	cd admserv/newinst/insadm; $(MAKE) $(MFLAGS) BUILD_MODULE=SETUP_ADMIN
else
	cd admserv; $(MAKE) BUILD_MODULE=HTTP_ADMIN -f pkgadmin.mk $(MFLAGS)
endif

buildAdminSDK:
	@echo
	@echo ==== Building AdminSDK  ==========
	@echo
	@echo Admin SDK is no longer built here
	@echo
	@echo ============== Finished ============================

buildConsole: buildnum
	@echo
	@echo
	@echo
	@echo ==== Starting Console Build ==========
	@echo
	cd console; $(MAKE) $(MFLAGS) build
	@echo
	@echo ============== Finished ============================

docConsole:
	@echo
	@echo
	@echo
	@echo ==== Starting Console Package ==========
	@echo
	cd console; $(MAKE) $(MFLAGS) BUILD_MODULE=CONSOLE doc
	@echo
	@echo ============== Finished ============================

pkgConsole:
	@echo
	@echo
	@echo
	@echo ==== Starting Console Package ==========
	@echo
	cd console; $(MAKE) $(MFLAGS) package
	@echo
	@echo ============== Finished ============================

pkgWin9xConsole:
	@echo
	@echo
	@echo
	@echo ==== Starting Win9x Console Package ==========
	@echo
	$(MAKE) -f win9xMakefile $(MFLAGS) BUILD_MODULE=WIN9X_CONSOLE package
	@echo
	@echo ============== Finished ============================

pkgOxygen: $(PACKAGEDEPS)
	@echo
	@echo
	@echo
	@echo ==== Finished Oxygen Package ==========
	@echo

pkgMcc:
	@echo
	@echo
	@echo
	@echo === Packaging Mission Control Console Apps ======
	@echo
	cd mcc; $(MAKE) BUILD_MODULE=SETUP_MCC $(MFLAGS)
	@echo
	@echo
	@echo === Finished Mission Control Console Apps =======

importadminsdk: $(LIBADMINUTIL)
	@echo ==== Import Adminutil Package ==========
	@echo

pkgL10NOxygen:
	@echo
	@echo
	@echo
	@echo ==== Start L10N Resource Package ==========
	@echo
	cd i18npkg/apollo; $(MAKE) $(MFLAGS) 
	@echo
	@echo
	@echo === Finished L10N Resource Package =======

$(DIRVER_H):
ifeq ($(ARCH), WINNT)
	if test ! -d $(DIRVERDIR); then mkdir -p $(DIRVERDIR); fi;
	$(PERL) dirver.pl -v "$(SETUP_VERSION)" -o $@
endif
