#---------------------------------------------------------------
# Project         : Network Appliance Administration Tool
# Module          : naat-frontend-www
# File            : Makefile
# Author          : Philippe Libat
# $Id: Makefile,v 1.34 2003/05/21 11:01:31 florin Exp $
#---------------------------------------------------------------
# If no version is given, make the rpm in the local CVS tree 
# with version and release taken from VERSION and RELEASE files
# If version is given, export from the CVS tree

ifdef VERSION
	EXPORT_CVS=1
endif

ifndef VERSION
	VERSION := $(shell cat VERSION)
endif
ifndef RELEASE
	RELEASE := $(shell cat RELEASE)
endif
ifndef LANGUAGE
	LANGUAGE = en
endif

#VERSION=0.3
NAME = naat-frontend-www
DIST = $(NAME)-$(VERSION)
RPMBUILD := $(shell rpm --eval '%_topdir')
XSLT = xsl/*.xsl
SCRIPT = *.sh
DOCS = examples/ doc/ spec/$(NAME).spec $(XSLT) $(SCRIPT) p*-po *builder VERSION RELEASE
ENGINE = engine/
INDEX = php/fw2/
COMMON = php/common/
NAVBAR = navbar
FILES = modules/ npo/ compiler/ $(ENGINE) images/ $(INDEX) SOURCES/dot-htaccess jar/ modules-help/ SOURCES/monitoring.htaccess $(COMMON)
DISTFILES = Makefile $(FILES) $(DOCS)


# Variables for NAAT
ROOT = "`pwd`"
#ROOT = "."
MODULES = modules
EXT_MODULES = ext_modules
MODULES_HELP = modules-help/en
DEST = naat
HTTPD_DEST = $(DESTDIR)/var/www-naat/html/
HTTPD_INDEX = $(HTTPD_DEST)/$(LANGUAGE)
HTTPD_NAAT = $(HTTPD_INDEX)/secure
HTTPD_MODULE = $(HTTPD_NAAT)
#HTTPD_MODULE = $(HTTPD_NAAT)/$(LANGUAGE)
#HTTPD_NAAT = $(HTTPD_DEST)/admin
NAATUSER = httpd-naat
NAATGROUP = admin
PO_DIR = npo
PO_DIR_UPDATE = $(PO_DIR).update
LANGS = en
ONLINE_HELP = help

# if we use 'doc' or 'online_help' as a tag, make won't do anything when the directory exists
all: init naatc all_modules index help_page

init:
	@if [ ! -e $(MODULES)/help-pages ]; then \
		ln -s ../$(MODULES_HELP) $(MODULES)/help-pages; \
	fi;

pre-trad:
	@echo "Prepare Translation";
	for i in $(LANGS); do echo "Create $(PO_DIR)/$${i}:";\
		./pre-po $(ROOT)/$(MODULES) $(ROOT)/$(PO_DIR)/$${i}; \
	done;

update-trad:
	@echo "Update Translation";
	@for i in $(LANGS); do \
	echo "Create update directory: $(PO_DIR_UPDATE)/$${i}"; \
		./pre-po $(ROOT)/$(MODULES) $(ROOT)/$(PO_DIR_UPDATE)/$${i}; \
	echo "Merge update $(PO_DIR_UPDATE)/$${i} with $(PO_DIR)/$${i} in: $(PO_DIR).new/$${i}"; \
		./update-po $(ROOT)/$(PO_DIR_UPDATE)/$${i} $(PO_DIR)/$${i} $(PO_DIR).new/$${i} ; \
	done;

post-trad:
	@echo "Process Translation";
	@for i in $(LANGS); do echo "Process $(PO_DIR)/$${i}:";\
		./post-po $(ROOT)/$(MODULES) $(ROOT)/$(PO_DIR)/$${i}; \
	done;

naatc:
	@echo "Compiling  naatc";
	(cd compiler/c ; $(MAKE) )

all_modules: xml_modules

xml_modules: init
		@echo "Building  $(MODULES)"
	./naatbuilder $(ROOT)/$(MODULES) $(ROOT)/$(DEST)

Ext_modules:
	@echo "Building  $(EXT_MODULES)";
	( cd $(EXT_MODULES); make DESTDIR=$(ROOT)/$(DEST) )

index: 
	@echo "Building  global_index";
#	@echo 	./index_builder $(ROOT)/$(MODULES) $(ROOT)/$(DEST)/"NAVBAR" address "'engine.php'"
	-mkdir -p  $(ROOT)/$(DEST)/$(NAVBAR)
	./index_builder $(ROOT)/$(MODULES) $(ROOT)/$(DEST)/$(NAVBAR)/"navbar-1" address "'engine.php'"

help_page:
	@echo "Building documentation"
	./doc_builder $(ROOT)/$(MODULES) $(ROOT)/$(ONLINE_HELP)

install_all: install_common install_modules

install_common:
	@echo "Install common";
	mkdir -p $(HTTPD_NAAT)
	cp -Rf $(COMMON)/* $(HTTPD_DEST)
	cp -Rf $(INDEX)/* $(HTTPD_INDEX)
	@if [ -f $(HTTPD_NAAT)/firstpage-$(LANGUAGE).php ] ; then \
	mv -f  $(HTTPD_NAAT)/firstpage-$(LANGUAGE).php $(HTTPD_NAAT)/firstpage.php ; \
	fi ;
	cp -Rf $(ENGINE)/* $(HTTPD_NAAT)
	cp -Rf images/ $(HTTPD_NAAT)
	mkdir -p  $(HTTPD_DEST)/../sessions
	mkdir -p  $(HTTPD_DEST)/../trial
	mkdir -p  $(HTTPD_DEST)/genfiles/modules
#	mkdir -p  $(HTTPD_NAAT)/genimages
	mkdir -p  $(HTTPD_NAAT)/modules/monitoring
	cp  SOURCES/monitoring.htaccess $(HTTPD_NAAT)/modules/monitoring/.htaccess

install_modules:
	@echo "Install all modules";
	mkdir -p $(HTTPD_MODULE)/help
# for modules pages
	cp -Rf $(DEST)/* $(HTTPD_MODULE)
# 	for help pages
	cp -Rf $(ONLINE_HELP)/* $(HTTPD_MODULE)/help
# for embedded applications (applets)
	mkdir -p  $(HTTPD_NAAT)/jar/jta20
	- cp -Rf jar/*.jar $(HTTPD_NAAT)/jar
	- cp -Rf jar/*.class $(HTTPD_NAAT)/jar
	- cp -Rf jar/jta20/* $(HTTPD_NAAT)/jar/jta20

install: install_all
	@echo "checking permissions";
	chown -R $(NAATUSER).$(NAATGROUP) $(HTTPD_DEST)
	chmod -R 750 $(HTTPD_DEST)/*
	chmod 750 $(HTTPD_NAAT)/sessions
#	chmod 750 $(HTTPD_NAAT)/genimages
	chmod 750 $(HTTPD_NAAT)/modules/monitoring

install_speed:
	@echo "Install all modules";
	mkdir -p $(HTTPD_DEST)
	cp -Rf $(COMMON)/* $(HTTPD_DEST)
	cp -Rf $(INDEX)/* $(HTTPD_DEST)


clean:
	@echo "Cleaning  $(DEST)";
	(cd compiler/c ; $(MAKE) clean)
	rm -rf $(DEST)
	rm -f {naatc,all}
	rm -rf tmp/ xsl/tmp/ $(ONLINE_HELP) *.log
	rm -rf $(NAME)-$(VERSION) $(NAME)-$(VERSION).tar*
#	rm -rf $(HTTPD_NAAT)/*

dis:
	@echo "Building archive $(NAME)-$(VERSION)"
	rm -rf $(NAME)-$(VERSION) $(NAME)-$(VERSION).tar*
	$(MAKE) clean
	mkdir $(NAME)-$(VERSION)

	@if [ ! -z $(EXPORT_CVS) ]; then \
		tag=`echo $(VERSION)| sed y/./_/`; \
		echo "Archive from CVS version:  $$tag"; \
		cvs -Q export -d $(NAME)-$(VERSION) -r $$tag firewall2/frontend; \
	else echo "Archive from $(NAME)-$(VERSION)"; \
		tar --exclude=CVS --exclude=*~ --exclude=.cvs* --exclude=$(NAME)-$(VERSION) -cf - $(DISTFILES)| (cd $(NAME)-$(VERSION) ; tar xf -); \
	fi; \

	tar cf $(NAME)-$(VERSION).tar $(NAME)-$(VERSION)
	bzip2 -9vf $(NAME)-$(VERSION).tar
	rm -rf $(NAME)-$(VERSION)

rpm: init dis
	@echo "Building rpm $(NAME)-$(VERSION):";
	cp -f $(NAME)-$(VERSION).tar.bz2 $(RPMBUILD)/SOURCES;
	sed -e 's/_VERSION_/$(VERSION)/; s/_RELEASE_/$(RELEASE)/' spec/$(NAME).spec.proto > $(RPMBUILD)/SPECS/$(NAME).spec;
	@echo "Specfile updated with version and release numbers";
	# first build is full and src
	rpm -ba --clean --rmsource $(RPMBUILD)/SPECS/$(NAME).spec;
	#mkdir -p $(RPMBUILD)/RPMS/noarch/full $(RPMBUILD)/RPMS/noarch/vpnserver $(RPMBUILD)/RPMS/noarch/vpnclient
	#mv $(RPMBUILD)/RPMS/noarch/$(NAME)*$(VERSION)-$(RELEASE)* $(RPMBUILD)/RPMS/noarch/full
	# second build: vpnclient
	#rpm --rebuild --with vpnclient $(RPMBUILD)/SRPMS/$(NAME)-$(VERSION)-$(RELEASE).src.rpm
	#mv $(RPMBUILD)/RPMS/noarch/$(NAME)*$(VERSION)-$(RELEASE)* $(RPMBUILD)/RPMS/noarch/vpnclient
	# third build: vpnserver
	#rpm --rebuild --with vpnserver $(RPMBUILD)/SRPMS/$(NAME)-$(VERSION)-$(RELEASE).src.rpm
	#mv $(RPMBUILD)/RPMS/noarch/$(NAME)*$(VERSION)-$(RELEASE)* $(RPMBUILD)/RPMS/noarch/vpnserver
	# fourth build: novpn
	#rpm --rebuild --with novpn $(RPMBUILD)/SRPMS/$(NAME)-$(VERSION)-$(RELEASE).src.rpm

help-status:
	@for i in $(LANGS) ;  do \
			echo -n "verifying modules-help/$${i} ..." ; \
			./help2npo modules modules-help/$${i} npo.update/ > help.$${i}.log ; \
			echo "result in help.$${i}.log"  ; \
	done


%.naat: naatc
	@echo directory:$(@D), file:$(@F)
	@echo "Building  $(MODULES)/$(@F)"
	./naatbuilder $(ROOT)/$(MODULES)/$(@F) $(ROOT)/$(DEST)
	mkdir -p  $(ONLINE_HELP)
	./doc_builder $(ROOT)/$(MODULES)/$(@F) $(ROOT)/$(ONLINE_HELP)
	echo "please make index and make install now!"
