####################
# author: hkchao
####################

.SUFFIXES :	.java .class
SHELL = /bin/sh
PROJECT		= myproject

################
#conditionals
################
DEBUG		= false



#because for some fucked up reason we need '\' for delete
PKG_DEL_ROOT        = com\xuma\xtg\geaccess

PKG_ROOT        = com/xuma/xtg/geaccess
SRC_FILES	= ../src/$(PKG_ROOT)


###########################
# define all pkg names here
########################### 
CATALOG_PKG		= catalog
DATABASE_PKG		= database
DEBUG_PKG		= debug
LOGIN_PKG		= login
PAGESECURITY_PKG	= pagesecurity
PROFILE_PKG		= profile
UTIL_PKG		= util
VARSITE_PKG		= varsite


###########################################
# add path to the class files for a new pkg
###########################################
VPATH_CLASS_FILES	= $(PKG_ROOT)/$(CATALOG_PKG); $(PKG_ROOT)/$(DATABASE_PKG); $(PKG_ROOT)/$(DEBUG_PKG); \
			$(PKG_ROOT)/$(LOGIN_PKG); $(PKG_ROOT)/$(PAGESECURITY_PKG); $(PKG_ROOT)/$(PROFILE_PKG); \
			$(PKG_ROOT)/$(UTIL_PKG); $(PKG_ROOT)/$(VARSITE_PKG)
			
############################################
# add path to the src files for a new pkg
############################################
VPATH_SRC_FILES		= $(SRC_FILES)/$(CATALOG_PKG); $(SRC_FILES)/$(DATABASE_PKG); $(SRC_FILES)/$(DEBUG_PKG); \
			$(SRC_FILES)/$(LOGIN_PKG); $(SRC_FILES)/$(PAGESECURITY_PKG); $(SRC_FILES)/$(PROFILE_PKG); \
			$(SRC_FILES)/$(UTIL_PKG); $(SRC_FILES)/$(VARSITE_PKG)

###### all 3 lines here work on win32, but none of them work on solaris #############
#vpath %.class	$(VPATH_CLASS_FILES)
#vpath %.java	$(VPATH_SRC_FILES)
VPATH           =$(VPATH_CLASS_FILES);$(VPATH_SRC_FILES)

ALL_SRC         = *.java

OS		= win

CC		= javac
JAR		= jar

JARFLAGS	= cfm
VJARFLAGS	= tf
MANIFEST_FILE	= manifest

ifeq ($(DEBUG),false)
OPTIMIZE	= -O -g:none
DEBUG_DEF	=
else
OPTIMIZE	=
DEBUG_DEF	= -g
endif

DEL_CMD		= del /Q
ECHO_CMD	= @echo

OUTPUT_DIR_NAME = classes
OUTPUT_DIR	= ../$(OUTPUT_DIR_NAME)

JFLAGS		= $(OPTIMIZE) $(DEBUG_DEF) -deprecation -d $(OUTPUT_DIR)

CATALOG_CLASS_FILES	= EndCustomer.class GEAccessCustomer.class Product.class ProductFilterArray.class VarCustomer.class XumaProductMedia.class
DATABASE_CLASS_FILES	= ConnectionPoolInfo.class
DEBUG_CLASS_FILES	= DebugOut.class
LOGIN_CLASS_FILES	= RegForm.class TermsConditionsHandler.class
PAGESECURITY_CLASS_FILES	= PageSecurityBean.class VarResolverBean.class
PROFILE_CLASS_FILES	= PersonExtension.class GEAccessPerson.class GEAccessPersonManager.class Customer.class CustomerType.class LightPerson.class
UTIL_CLASS_FILES	= VarResolverServlet.class
VARSITE_CLASS_FILES	= VarSite.class

CLASS_FILES	= $(CATALOG_CLASS_FILES) $(DATABASE_CLASS_FILES) $(DEBUG_CLASS_FILES) $(LOGIN_CLASS_FILES) $(PAGESECURITY_CLASS_FILES) \
			$(PROFILE_CLASS_FILES) $(UTIL_CLASS_FILES) $(VARSITE_CLASS_FILES)
                        
PKGS		=

#
# the whole fuckin' project (ex. gnumake -r)
#
$(PROJECT):	$(CLASS_FILES)
	$(ECHO_CMD) ---------- Building $@ ----------
	

#
# individual pkg rules (ex. gnumake -r profile)
#
$(CATALOG_PKG) :	$(CATALOG_CLASS_FILES)
	$(ECHO_CMD) ---------- Building $@ pkg ----------
	
$(DATABASE_PKG) :	$(DATABASE_CLASS_FILES)
	$(ECHO_CMD) ---------- Building $@ pkg ----------
	
$(DEBUG_PKG) :		$(DEBUG_CLASS_FILES)
	$(ECHO_CMD) ---------- Building $@ pkg ----------
	
$(LOGIN_PKG) :		$(LOGIN_CLASS_FILES)
	$(ECHO_CMD) ---------- Building $@ pkg ----------
	
$(PAGESECURITY_PKG) :	$(PAGESECURITY_CLASS_FILES)
	$(ECHO_CMD) ---------- Building $@ pkg ----------
	
$(PROFILE_PKG) :	$(PROFILE_CLASS_FILES)
	$(ECHO_CMD) ---------- Building $@ pkg ----------
	
$(UTIL_PKG) :		$(UTIL_CLASS_FILES)
	$(ECHO_CMD) ---------- Building $@ pkg ----------
	
$(VARSITE_PKG) :	$(VARSITE_CLASS_FILES)
	$(ECHO_CMD) ---------- Building $@ pkg ----------

#
# clean the project (ex. gnumake clean)
#
clean:	
	$(ECHO_CMD) ---------- Cleaning ----------
	$(DEL_CMD) $(PKG_DEL_ROOT)\$(PAGESECURITY_PKG)\*.class
	$(DEL_CMD) $(PKG_DEL_ROOT)\$(CATALOG_PKG)\*.class
	$(DEL_CMD) $(PKG_DEL_ROOT)\$(DATABASE_PKG)\*.class
	$(DEL_CMD) $(PKG_DEL_ROOT)\$(DEBUG_PKG)\*.class
	$(DEL_CMD) $(PKG_DEL_ROOT)\$(LOGIN_PKG)\*.class
	$(DEL_CMD) $(PKG_DEL_ROOT)\$(PROFILE_PKG)\*.class
	$(DEL_CMD) $(PKG_DEL_ROOT)\$(UTIL_PKG)\*.class
	$(DEL_CMD) $(PKG_DEL_ROOT)\$(VARSITE_PKG)\*.class

#
#------ implicit rules -----
#
.java.class :	
	$(ECHO_CMD) ---------- Compiling $@ ----------
	$(CC) $(JFLAGS) $(<D)/$(ALL_SRC)
