
HANDLER=websmcphandler

include $(AWARE_HOME)/config/Makefile.config

ifdef CONFIG_SQLITE

# depends on: wwwhandler , model (sqlite)
CFLAGS += \
	-I../../net/wwwhandler \
	-I../model 

EXTERNAL_LIBS=\
	$(LIBDIR)/libmodel.so.$(AW_VERSION) \
	$(LIBDIR)/libwwwhandler.so.$(AW_VERSION)

INTERNAL_HEADERS=\
	./pagelayout.h \
	./pages.h \
	./session.h \
	./smcp_command.h 

EXTRA_DEPS =\
	$(INTERNAL_HEADERS)

EXTRA_OBJS=\
	admin.o \
	alerts.o \
	auth.o \
	common.o \
	home.o \
	nodes.o \
	pagelayout.o \
	session.o \
	tools.o

EXTRA_ALL_TARGETS=\
	$(EXTRA_OBJS) \
	dox

EXTRA_INSTALL_TARGETS=\
	wwwfiles

# tar file of static web pages needed for app
WWWFILESTGZ=wwwsmcpfiles.tgz
CFLAGS += -DWWWFILESTGZ=\"$(WWWFILESTGZ)\"

include $(AWARE_HOME)/src/handlers/Makefile.handler


####### support ####### 

# these are the static files needed by websmcp
wwwfiles::
	tar  czf $(LIBDIR)/$(WWWFILESTGZ) --exclude SCCS www

# this processes html help into doxygen files
RMFILES += dox/*.dox
dox::
	@ # make doxygen files, fixup image references
	@ if test ! -d dox ; then mkdir -p dox ; fi
	@ for f in www/html/help/*.html ; \
	do \
		bname=`basename $$f .html`; \
		doxfile=dox/$$bname.dox ; \
		echo "/*! \page uiPagedoc-$$bname $$bname " > $$doxfile ; \
		cat $$f | sed 's~<img.*src=../../image/~\\image html ~g' | sed 's/gif>/gif /g' | sed 's/png>/png /g' >> $$doxfile ; \
		echo '*/' >> $$doxfile ; \
	done ;


# utility to convert html fragment files into .h files
RMFILES += frag2h
frag2h : frag2h.c
	$(CC) -Wall frag2h.c -o frag2h

# tidy before ci because we generate many files
bkci: clean
	bk citool

####### core ####### 

discover.o : discover.c $(INTERNAL_HEADERS) $(HEADERS)

netmon.o : netmon.c $(INTERNAL_HEADERS) $(HEADERS)

pagelayout.o : pagelayout.c pagelayout_defaults.h $(INTERNAL_HEADERS) $(HEADERS)

session.o : session.c $(INTERNAL_HEADERS) $(HEADERS)

####### pages ####### 

# common included html
RMFILES += common.h frags/common/*~
COMMON_FRAGS=\
	frags/common/header \
	frags/common/footer 
common.h: frag2h $(COMMON_FRAGS)
	(for f in $(COMMON_FRAGS); do  ./frag2h $$f ; done ) > common.h
common.o : common.c common.h $(INTERNAL_HEADERS) $(HEADERS)

# authorization/authentication pages
RMFILES += auth.h frags/auth/*~
AUTH_FRAGS=\
	frags/auth/login_top \
	frags/auth/login_bottom 
auth.h: frag2h $(AUTH_FRAGS)
	(for f in $(AUTH_FRAGS); do  ./frag2h $$f ; done ) > auth.h
auth.o : auth.c auth.h $(INTERNAL_HEADERS) $(HEADERS)

# home page
RMFILES += home.h frags/home/*~
HOME_FRAGS=\
	frags/home/home_top 
home.h: frag2h $(HOME_FRAGS)
	(for f in $(HOME_FRAGS); do  ./frag2h $$f ; done ) > home.h
home.o : home.c home.h $(INTERNAL_HEADERS) $(HEADERS)

# nodes page
RMFILES += nodes.h frags/nodes/*~
NODES_FRAGS=\
	frags/nodes/applynodegrptopFMT \
	frags/nodes/applynodegrpFMT \
	frags/nodes/editnodegrptopFMT \
	frags/nodes/editnodegrpFMT \
	frags/nodes/newgroupFMT \
	frags/nodes/editnodetopFMT \
	frags/nodes/editnodeFMT \
	frags/nodes/editnodebottomFMT \
	frags/nodes/newnodeFMT \
	frags/nodes/editinterfacetopFMT \
	frags/nodes/editinterfaceFMT \
	frags/nodes/editservicetopFMT \
	frags/nodes/editserviceFMT \
	frags/nodes/newsubnetFMT \
	frags/nodes/discovermodesFMT 
nodes.h: frag2h $(NODES_FRAGS)
	(for f in $(NODES_FRAGS); do  ./frag2h $$f ; done ) > nodes.h
NODES_SUBPAGES=\
	nodegrp_edit.c \
	node_edit.c \
	interface_edit.c \
	service_edit.c
nodes.o : nodes.h nodes.c $(NODES_SUBPAGES) $(INTERNAL_HEADERS) $(HEADERS)

# alerts page
alerts.o : alerts.c $(INTERNAL_HEADERS) $(HEADERS)

# tools page
RMFILES += tools.h frags/tools/*~
TOOLS_FRAGS=\
	frags/tools/tools_main
tools.h: frag2h $(TOOLS_FRAGS)
	(for f in $(TOOLS_FRAGS); do  ./frag2h $$f ; done ) > tools.h
tools.o : tools.c tools.h $(INTERNAL_HEADERS) $(HEADERS)

# user admin pages
RMFILES += admin.h frags/admin/*~
ADMIN_FRAGS = \
	frags/admin/editusertopFMT \
	frags/admin/edituserFMT \
	frags/admin/newuserFMT \
	frags/admin/editgrouptopFMT \
	frags/admin/editgroupFMT \
	frags/admin/newgroupFMT
admin.h: frag2h $(ADMIN_FRAGS)
	(for f in $(ADMIN_FRAGS); do  ./frag2h $$f ; done ) > admin.h
admin.o : admin.c admin.h $(INTERNAL_HEADERS) $(HEADERS)

else

all: msg

install: msg
	cp $(HANDLER).h  $(INCLUDEDIR)

clean: msg
	$(RM) $(RMFILES) $(APPS)

msg::
	@echo "$(HANDLER) not configured because sqlite not configured"

endif

