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

##############################################################
# Master makefile to build NSPR, NSS and JSS                 #
##############################################################

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

PLATFORM = $(shell cd $(MOZILLA_DIR)/nss && $(MAKE) platform $(MAKEFLAGS))
PLATFORM_OS := $(shell uname -s)
ifeq (MINGW32_NT,$(findstring MINGW32_NT,$(PLATFORM_OS)))
# We are using MSYS on WINNT
PLATFORM_OS := WINNT
endif

# Targets definition
NSPR_MDIST       = $(MOZILLA_ABS)
NSPR_Build       = build_nspr BUILD_NUMBER=$(NSPR_BUILD_NUMBER) MDIST=$(NSPR_MDIST) BUILD_SUN_PKG=1

NSPR_Rel         = release BUILD_NUMBER=$(NSPR_BUILD_NUMBER) MDIST=$(NSPR_MDIST)
NSPR_Pkg         = package BUILD_NUMBER=$(NSPR_BUILD_NUMBER) MDIST=$(NSPR_MDIST)
NSPR_Test        = BUILD_NUMBER=$(NSPR_BUILD_NUMBER) MDIST=$(NSPR_MDIST)

NSS_Build        = all BUILD_SUN_PKG=1

NSS_Release      = USE_SHIPS=1 release
NSS_Pkg          = USE_SHIPS=1 package

JSS_Build_Core   = all
JSS_Build        = libs
JSS_Export       = private_export export
JSS_Java         = buildJava
JSS_Sign         = sign_jss MDIST=$(NSPR_MDIST)
JSS_Pkg          = package USE_SHIPS=1

# Directory definitions
NSPR_DIR := $(MOZILLA_DIR)/nspr
NSS_DIR  := $(MOZILLA_DIR)/nss
JSS_DIR  := $(MOZILLA_DIR)/jss
JSS_CORE_DIR  := $(MOZILLA_DIR)/jss/coreconf

SUN_DIR_PKG  := $(MOZILLA_DIR)/mozilla/pkgdefs
SUN_DIR_PATCH := $(MOZILLA_DIR)/mozilla/patchdefs

NSPR_DIR_PKG = $(NSPR_DIR)/$(PLATFORM)
NSS_DIR_PKG  := $(NSS_DIR)
JSS_DIR_PKG  := $(JSS_DIR)

ifeq ($(PLATFORM_OS),HP-UX)
NSPR_DIR_PKG := $(SUN_DIR_PKG)/hpux/nspr
NSS_DIR_PKG  := $(SUN_DIR_PKG)/hpux/nss
JSS_DIR_PKG  := $(SUN_DIR_PKG)/hpux/jss
else # HP-UX
ifeq ($(PLATFORM_OS),WINNT)
NSPR_DIR_PKG := $(SUN_DIR_PKG)/win/nspr
NSS_DIR_PKG  := $(SUN_DIR_PKG)/win/nss
JSS_DIR_PKG  := $(SUN_DIR_PKG)/win/jss
else # WINNT
ifeq ($(PLATFORM_OS),SunOS)
NSPR_DIR_PKG := $(SUN_DIR_PKG)/solaris/nspr
NSS_DIR_PKG  := $(SUN_DIR_PKG)/solaris/nss
JSS_DIR_PKG  := $(SUN_DIR_PKG)/solaris/jss
else # Linux
ifeq ($(PLATFORM_OS),Linux)
NSPR_DIR_PKG := $(SUN_DIR_PKG)/linux/nspr
NSS_DIR_PKG  := $(SUN_DIR_PKG)/linux/nss
JSS_DIR_PKG  := $(SUN_DIR_PKG)/linux/jss
endif # Linux
endif # SunOS
endif # WINNT
endif # HP-UX

# Switch environment for 32 / 64 bit on Windows
ifeq ($(PLATFORM_OS),WINNT)
ifdef USE_64
# Set 64 bit environment for LIB and PATH
ifdef LIB64
LIB := $(LIB64)
export LIB
endif
ifdef PATH64
PATH := $(PATH64)
export PATH
endif
else # ifdef USE_64
# set 32 bit environment for LIB and PATH
ifdef LIB32
LIB := $(LIB32)
export LIB
endif
ifdef PATH32
PATH := $(PATH32)
export PATH
endif
endif # ifdef USE_64
endif # ifeq ($(PLATFORM_OS),WINNT)

# Make targets
test:
	@echo "Platform=$(PLATFORM)"
	@echo "Platform_OS=$(PLATFORM_OS)"
	@echo "MakeFlags=$(MAKEFLAGS)"
	@echo "PATH=$(PATH)"
	@echo "LIB=$(LIB)"
	
nspr:
	@echo "NSPR BUILD BEGINS"
	@echo "MAKEFLAGS: $(MAKEFLAGS)"
	@echo "======================= NSPR_Build ====================="
	cd $(NSS_DIR) && $(MAKE) $(NSPR_Build)
	@echo "======================= NSPR_Rel ====================="
	cd $(NSPR_DIR)/$(PLATFORM) && $(MAKE) $(NSPR_Rel)
	@echo "======================= NSPR_Test ====================="
	cd $(NSPR_DIR)/$(PLATFORM)/pr/tests && $(MAKE) $(NSPR_Test)
	@echo "NSPR BUILD ENDS"

nspr_pkg:
ifdef BUILD_OPT
	@echo "NSPR_PKG BUILD BEGINS"
	@echo "MAKEFLAGS: $(MAKEFLAGS)"
	@echo "======================= NSPR_Pkg ====================="
	cd $(NSPR_DIR_PKG) && $(MAKE) $(NSPR_Pkg)
	@echo "NSPR_PKG BUILD ENDS"
else
	@echo "no NSPR_PKG for debug build"
endif
	
nss:
	@echo "NSS BUILD BEGINS"
	@echo "MAKEFLAGS: $(MAKEFLAGS)"
	@echo "======================= NSS_Build ====================="
	cd $(NSS_DIR) && $(MAKE) $(NSS_Build)
	@echo "NSS BUILD ENDS"
	
nss_pkg:
ifdef BUILD_OPT
	@echo "NSS_PKG BUILD BEGINS"
	@echo "MAKEFLAGS: $(MAKEFLAGS)"
	@echo "======================= NSS_Pkg ====================="
	cd $(NSS_DIR_PKG) && $(MAKE) $(NSS_Pkg)
	@echo "NSS_PKG BUILD ENDS"
else
	@echo "no NSS_PKG for debug build"
endif
	
jss:
	@echo "JSS BUILD BEGINS"
	@echo "MAKEFLAGS: $(MAKEFLAGS)"
	@echo "======================= JSS_Build_Core ====================="
	cd $(JSS_CORE_DIR) && $(MAKE) $(JSS_Build_Core)
	@echo "======================= JSS_Export ====================="
	cd $(JSS_DIR) && $(MAKE) $(JSS_Export)
	@echo "======================= JSS_Build ====================="
	cd $(JSS_DIR) && $(MAKE) $(JSS_Build)
	@echo "JSS BUILD ENDS"
	
jss_java:
	@echo "JSS_JAVA BUILD BEGINS"
	@echo "MAKEFLAGS: $(MAKEFLAGS)"
	@echo "======================= JSS_Java ====================="
	cd $(JSS_DIR) && $(MAKE) $(JSS_Java)
	@echo "JSS_JAVA BUILD ENDS"
	
jss_sign:
	@echo "JSS_SIGN BUILD BEGINS"
	@echo "MAKEFLAGS: $(MAKEFLAGS)"
	@echo "======================= JSS_Sign ====================="
	cd $(SUN_DIR_PATCH) && $(MAKE) $(JSS_Sign)
	@echo "JSS_SIGN BUILD ENDS"
	
jss_pkg:
ifdef BUILD_OPT
	@echo "JSS_PKG BUILD BEGINS"
	@echo "MAKEFLAGS: $(MAKEFLAGS)"
	@echo "======================= JSS_Pkg ====================="
	cd $(JSS_DIR_PKG) && $(MAKE) $(JSS_Pkg)
	@echo "JSS_PKG BUILD ENDS"
else
	@echo "no JSS_PKG for debug build"
endif

patches:
ifdef BUILD_OPT
	@echo "PATCHES BUILD BEGINS"
	@echo "MAKEFLAGS: $(MAKEFLAGS)"
	@echo "======================= Patches ====================="
	cd $(SUN_DIR_PATCH) && $(MAKE) $(PATCH_TARGET)
	@echo "PATCHES BUILD ENDS"
else
	@echo "no PATCHES for debug build"
endif
