include ../../Config.mk

webpagesdir     = /lib/webpages
oem_webpagesdir = /webpages/

UPDIR  = $(FW_TOPDIR)/liberic_webs/webpages/_unprocessed
PDIR   = $(FW_TOPDIR)/liberic_webs/webpages/_processed
BUTTONDIR = $(FW_TOPDIR)/translation/rc1buttons
BUTTONSTRINGS	= $(BUTTONDIR)/pp_buttons.txt
TRANSLATION = webpages.pot
# setting language to Java allows to concatenate strings with '+'
XGTFLAGS = --keyword=_ --keyword=N_ --keyword=T_ --keyword=Q_ --keyword=A_ --keyword=AQ_ --language=Java
TRANSSRCS = $(UPDIR)/*.asp.in
TRANSSRCS += $(UPDIR)/*.inc
TRANSSRCS += $(UPDIR)/*.def
TRANSSRCS += $(FW_TOPDIR)/liberic_webs/webpages/source/*.inc
SUBMENUSRCS = menu_*.asp.in
HELP_ANCHOR_DEFS_FILE = $(UPDIR)/__help_anchor_defs__.tmp
HELP_ANCHORS_USED_FILE = $(UPDIR)/__help_anchors_used__.tmp
MENU_DEFS_FILE = $(UPDIR)/__menu_defs__.tmp
MENU_PLACEHOLDER = <!-- __menu_placeholder__ -->

include $(PP_BUILD_SYS_DIR)/Top.mk

ifeq ($(PP_PRODUCT), pdu)
WEBS_FILEPP_FLAGS += -imacros $(FW_TOPDIR)/bmc/libpp_bmccore/src/include/pp/bmc/bmc_dev_oem_pp_rpc_isens_nr.h \
                     -imacros $(OEMDIR)/webpages/rpc_macros.inc
endif

prepare-local::
	rm -f oem
	ln -s $(OEMDIR)/webpages oem

# clean _unprocessed and _processed
	rm -rf $(UPDIR) $(PDIR)
	mkdir $(UPDIR) $(PDIR)
# collect all stuff in _unprocessed and _processed
	make -C oem collect

all-local::
# clean _unprocessed and _processed
	rm -f oem
	ln -s $(OEMDIR)/webpages oem

# clean _unprocessed and _processed
	rm -rf $(UPDIR) $(PDIR)
	mkdir $(UPDIR) $(PDIR)
# collect all stuff in _unprocessed and _processed
	make -C oem collect

ifeq ($(PP_FEAT_RARITAN_DESIGN), 1)
	mkdir $(PDIR)/images
	mv $(PDIR)/*.gif $(PDIR)/images/
else
# generate the menu (-m) and push button (-b) images (if applicable for this OEM)
	cd $(UPDIR); \
	[ -x images/gen_images.pl ] && { \
	cd images; \
	./gen_images.pl -b -i gen_images_funcs.scm.inc -f buttons.def -d $(PDIR)/; \
	} || :
endif

# process the pages
	echo "" > $(UPDIR)/acl.tmp
	cd $(UPDIR) && \
        fv_vec_idx_deli=`grep fv_vec_idx_deli\ = $(FW_TOPDIR)/liberic_webs/src/eric_forms.c | sed "s/.*'\(.*\)'.*/\1/"` && \
        um_individual_group_prefix=`grep um_individual_group_prefix\ = $(FW_TOPDIR)/libpp_um/src/um_group.c | sed "s/.*'\(.*\)'.*/\1/"` && \
	for page in `cat __pages__`; do \
	    echo Processing Page: $$page; \
	    filepp -m bigfunc.pm -m bigdef.pm -m format.pm -m for.pm -m gen_menu.pm -m pp_funcs.pm $(WEBS_FILEPP_FLAGS) \
		-I$(FW_TOPDIR)/liberic_webs/webpages/source \
		-I$(UPDIR) \
		-imacros $(FW_TOPDIR)/include/pp/features.h \
		-imacros $(UPDIR)/macros.inc \
		-imacros $(UPDIR)/common_macros.inc \
		-imacros $(FW_TOPDIR)/liberic_webs/src/templates.h \
		-imacros $(FW_TOPDIR)/liberic_webs/src/eric_form_vars.h \
		-imacros $(FW_TOPDIR)/liberic_webs/src/eric_forms_str.h \
                "-D__FV_VEC_IDX_DELI__=$$fv_vec_idx_deli" \
                "-D__UM_INDIVIDUAL_GROUP_PERFIX__=$$um_individual_group_prefix"\
		"-D__BASE_FILE__=$$page" \
		"-D__HELP_ANCHOR_DEFS_FILE__=$(HELP_ANCHOR_DEFS_FILE)" \
		"-D__HELP_ANCHORS_USED_FILE__=$(HELP_ANCHORS_USED_FILE)" \
		"-D__MENU_DEFS_FILE__=$(MENU_DEFS_FILE)" \
		"-D__MENU_PLACEHOLDER__=$(MENU_PLACEHOLDER)" \
		$$page \
		| unexpand \
		  > $(PDIR)/$${page%%.in}; \
	done

ifeq ($(PP_FEAT_ACL_LINK_CHECK), 1)
# grep every asp file for included templates
	cd $(PDIR) && \
	grep -r "tmplBeginEnd(\"begin\", \"" *.asp | sed "s/ *...tmplBeginEnd..begin\", \"//g" | sed "s/\".*;//g" | sed "s/:/|/g" | sort| uniq | grep -v targetlist > $(UPDIR)/acl.tmp
else
	echo "" > $(UPDIR)/acl.tmp
endif

ifeq ($(PP_FEAT_CONTEXT_HELP), 1)
	for f in $(HELP_ANCHOR_DEFS_FILE) $(HELP_ANCHORS_USED_FILE); do \
	    [ -e $$f ] || { echo "ERROR: file $$f is missing!"; exit 1; }; \
	    sort $$f | uniq > $$f.uniq; \
	done; \
	\
	diff -u $(HELP_ANCHORS_USED_FILE).uniq $(HELP_ANCHOR_DEFS_FILE).uniq || { \
	    echo "ERROR: mismatch between definitions and uses of help anchors!"; \
	    exit 1; \
	}
endif

#process the menus
ifneq ($(PP_FEAT_RARITAN_DESIGN), 1)
	cd $(UPDIR) && \
	for page in `cat $(MENU_DEFS_FILE)`; do \
	    echo Processing Menu for Page: $$page; \
	    perl -e "gen_peppercon_menu(\"menu.def\",\"$$page\")" -mgen_menu; \
	    filepp -m bigfunc.pm -m bigdef.pm -m format.pm -m for.pm -m gen_menu.pm -m pp_funcs.pm $(WEBS_FILEPP_FLAGS) \
		-I$(FW_TOPDIR)/liberic_webs/webpages/source \
		-I$(UPDIR) \
		-imacros $(FW_TOPDIR)/include/pp/features.h \
		-imacros $(UPDIR)/macros.inc \
		-imacros $(UPDIR)/common_macros.inc \
		-imacros $(FW_TOPDIR)/liberic_webs/src/templates.h \
		-imacros $(FW_TOPDIR)/liberic_webs/src/eric_form_vars.h \
		-imacros $(FW_TOPDIR)/liberic_webs/src/eric_forms_str.h \
                "-D__FV_VEC_IDX_DELI__=$$fv_vec_idx_deli" \
                "-D__UM_INDIVIDUAL_GROUP_PERFIX__=$$um_individual_group_prefix"\
		"-D__BASE_FILE__=$$page" \
		"-D__HELP_ANCHOR_DEFS_FILE__=$(HELP_ANCHOR_DEFS_FILE)" \
		"-D__HELP_ANCHORS_USED_FILE__=$(HELP_ANCHORS_USED_FILE)" \
		"-D__MENU_DEFS_FILE__=$(MENU_DEFS_FILE)" \
		"-D__MENU_PLACEHOLDER__=$(MENU_PLACEHOLDER)" \
		$$page.menu.tmp.in | unexpand > $$page.menu.tmp; \
	    perl -e "replace_menu(\"$(PDIR)/$$page\",\"$(UPDIR)/$$page.menu.tmp\", \"$(MENU_PLACEHOLDER)\")" -mgen_menu; \
	done
endif

ifeq ($(PP_FEAT_RARITAN_DESIGN), 1)
# process menu sites
	cd $(UPDIR) && for mpage in $(SUBMENUSRCS); do \
	    echo Processing MenuPage: $$mpage; \
	    filepp -m bigfunc.pm -m bigdef.pm -m format.pm -m for.pm -m gen_menu.pm -m pp_funcs.pm $(WEBS_FILEPP_FLAGS) \
		-I$(FW_TOPDIR)/liberic_webs/webpages/source \
		-I$(UPDIR) \
		-imacros $(FW_TOPDIR)/include/pp/features.h \
		-imacros $(UPDIR)/macros.inc \
		-imacros $(UPDIR)/common_macros.inc \
		-imacros $(FW_TOPDIR)/liberic_webs/src/templates.h \
		-imacros $(FW_TOPDIR)/liberic_webs/src/eric_form_vars.h \
		-imacros $(FW_TOPDIR)/liberic_webs/src/eric_forms_str.h \
		"-D__BASE_FILE__=$$mpage" \
		$$mpage \
		| unexpand \
		  > $(PDIR)/$${mpage%%.in}; \
	done
else

ifneq ($(PP_OEM), belkin)
# extract button labels, but don't overwrite the belkin buttons !
	source/find_buttons.sh $(PDIR) > $(BUTTONSTRINGS)
endif
# move button templates
	mv $(PDIR)/button_info.mk $(BUTTONDIR)/

	mv $(PDIR)/button_left.gif $(BUTTONDIR)/
	mv $(PDIR)/button_middle.gif $(BUTTONDIR)/
	mv $(PDIR)/button_right.gif $(BUTTONDIR)/
endif

# check for old removed stuff
	@cd $(PDIR) && \
	files=`grep -l "\Wlink\s*([^)]*)" *.asp`;\
	  if [ -n "$$files" ]; then \
	      echo;\
	      echo "The following processed files contain the removed 'link' ASP call:";\
	      echo;\
	      echo "$$files";\
	      echo;\
	      echo "A typical sequence is <a href=\"<% write(link('file.asp')); %>\">.";\
	      echo "This can be rewritten as <a href=\"file.asp\">.";\
	      echo;\
	      exit 1;\
	  fi

install-local:: all-local
	$(INSTALL) -d $(DESTDIR)$(webpagesdir)
	$(INSTALL) -d $(DESTDIR)$(webpagesdir)/images 
	$(INSTALL) -d $(DESTDIR)$(webpagesdir)/pie
	$(INSTALL) -d $(OEM_TEMPLATEDIR)
	$(INSTALL) -d $(OEM_TEMPLATEDIR)$(oem_webpagesdir)
	$(INSTALL) -d $(OEM_TEMPLATEDIR)$(oem_webpagesdir)/images 
	$(INSTALL) -d $(OEM_TEMPLATEDIR)$(oem_webpagesdir)/pie
	for f in $(PDIR)/*; do \
	  if [ -e $$f -a ! -d $$f ]; then \
	    $(INSTALL) -m 644 $$f $(DESTDIR)$(webpagesdir); \
	    $(INSTALL) -m 644 $$f $(OEM_TEMPLATEDIR)$(oem_webpagesdir); \
	  fi; \
	done
	for f in $(PDIR)/images/*; do \
	  if [ -e $$f -a ! -d $$f ]; then \
	    $(INSTALL) -m 644 $$f $(DESTDIR)$(webpagesdir)/images; \
	    $(INSTALL) -m 644 $$f $(OEM_TEMPLATEDIR)$(oem_webpagesdir)/images; \
	  fi; \
	done
	for f in $(PDIR)/pie/*; do \
	  if [ -e $$f -a ! -d $$f ]; then \
	    $(INSTALL) -m 644 $$f $(DESTDIR)$(webpagesdir)/pie; \
	    $(INSTALL) -m 644 $$f $(OEM_TEMPLATEDIR)$(oem_webpagesdir)/images; \
	  fi; \
	done
	rm -f $(DESTDIR)$(webpagesdir)/MIB.txt
	ln -s ../snmp/mibs/LARA-MIB.txt $(DESTDIR)$(webpagesdir)/MIB.txt

# for backup when the oem breaks these pages
	cat $(DESTDIR)$(webpagesdir)/fwupdate.asp \
	  | sed -e 's/fwupdate.asp/fwupdate_bak.asp/' \
	  > $(DESTDIR)$(webpagesdir)/fwupdate_bak.asp 
	cat $(DESTDIR)$(webpagesdir)/oem.asp \
	  | sed -e 's/oem.asp/oem_bak.asp/' \
	  > $(DESTDIR)$(webpagesdir)/oem_bak.asp 

	rm -f $(DESTDIR)$(webpagesdir)/pie/rc.jar
	ln -s ../rc.jar $(DESTDIR)$(webpagesdir)/pie/rc.jar
	rm -f $(DESTDIR)$(webpagesdir)/pie/rcsoftkbd.jar
	ln -s ../rcsoftkbd.jar $(DESTDIR)$(webpagesdir)/pie/rcsoftkbd.jar

clean-local::
	rm -rf $(UPDIR) $(PDIR)
	rm -f oem $(BUTTONSTRINGS)
