# Optimization flags causes troubles on my gcc, how on yours ? 
# ( it says : internal compiler error, submit bug report ... (:- )
# try to uncomment one of follows anyway:):

include Makefile.in

CC=g++

#CFLAGS1= -w -O3
#CFLAGS1= -w -O
CFLAGS1= -pipe -w 
CPPFLAGS= -fno-implicit-templates
#-DNO_DEBUG
#-fdefault-inline

# under e.g. SCO you may want to use the following:
#LIBS= -lsocket
LIBS=


#################################################################
#                         definitions                           #
#################################################################

# comment out the following if compiling without nacctd support
ANR_OBJ= anreader.o

# this would be where package will be installed 
# redefine them if you would not like to rely upon Makefile.in by Configure
# ROOT_DIR=.
# BIN_DIR=.
# LIB_DIR=.
# LOG_DIR=.

#config file 
# CONF_FILE=$(LIB_DIR)/admind.cnf

#log file
# LOG_FILE=$(LOG_DIR)/admind.log

#where wtmp file can be found. default= /etc/wtmp
#WTMP_PATH=$(ROOT_DIR)/wtmp
#WTMP_PATH=$(ROOT_DIR)
WTMP_PATH=_PATH_WTMP
#WTMP_PATH=\"./wtmp\"
#NET_ACCT_PATH=\"./net-acct\"

APARSER_PATH=$(BIN_DIR)/aparser
AWREADER_PATH=$(BIN_DIR)/awreader

#debugging level (0-5), 
# 0 - completely dumb; 1 (recommended) - only fatal errors 
# 2 - show parse hints and stuff..
# 3-5 - for developers 
DEBUG_LEVEL=4

#CDEFS1= -DCONF_FILE=\"$(CONF_FILE)\" -DLOG_FILE=\"$(LOG_FILE)\" -DDEBUG_LEVEL=$(DEBUG_LEVEL) 
CDEFS21= -DWTMP_PATH=$(WTMP_PATH) 
CDEFS22 = -DAPARSER_PATH=\"$(APARSER_PATH)\" -DAWREADER_PATH=\"$(AWREADER_PATH)\"

# for debugging
# CDEFS2= -DDO_NOT_FORK -DLOG_TO_SCREEN -DCHECK_LOGOUT_PID

####################################################################
#                 do not edit below this line!                     #
####################################################################
# CDEFS= $(CDEFS1) $(CDEFS11) $(CDEFS12) $(CDEFS2)
CFLAGS= $(CFLAGS1) $(CDEFS_IN) $(CDEFS21) $(CDEFS22)

H_SOURCE= template.h handshake.h common.h parse.h custom.h memdata.h utmpdata.h \
aparser.h admind.h awreader.h
HTML_SOURCE=MainForm.html UsTraffStart.html UsTraffEnd.html UsTimeStart.html \
  UsSchedStart.html UsSchedEnd.html UsTraffStatHead.html UsStatTail.html \
  UsAllStat.html UsOverallStatHead.html
CPP_SOURCE= parse.cpp custom.cpp memdata.cpp utmpdata.cpp aparser.cpp common.cpp \
  cgi_main.cpp awreader.cpp alchecker.cpp
C_SOURCE=util.c MainForm.c post-query.c
ADM_OBJ= common.o memdata.o utmpdata.o admind.o
PARS_OBJ= parse.o custom.o memdata.o common.o aparser.o
WREAD_OBJ= parse.o common.o memdata.o utmpdata.o awreader.o $(ANR_OBJ)
CGI_MAIN_OBJ= memdata.o utmpdata.o cgi_main.o util.o post-query.o MainForm.o \
UsTraffStart.o UsTraffEnd.o UsTimeStart.o UsSchedStart.o UsSchedEnd.o \
UsTraffStatHead.o UsStatTail.o UsAllStat.o UsOverallStatHead.o
LCHECK_OBJ= common.o alchecker.o

PROGS= alchecker aparser admind awreader cgi_main


.SUFFIXES: .html .h .c .cpp .o

.html.c:$(HTML_SOURCE)
	@echo '[1;32mgenerating $*.html ----> $*.c[1;0m'
	make-form-data.sh $* $*.html > $*.c

.c.o: $(H_SOURCE)
	@echo -e compiling "\033[1;34m"$<"\033[1;0m"
	$(CC) $(CFLAGS) -c $<

.cpp.o: $(H_SOURCE)
	@echo -e compiling "\033[1;34m"$<"\033[1;0m"
	$(CC) $(CPPFLAGS) $(CFLAGS) -c $<  

all: $(PROGS)

admind: $(ADM_OBJ)
	@echo -e linking "\033[1;33m"admind"\033[1;0m"
	$(CC) $(CFLAGS) -o admind $(ADM_OBJ) $(LIBS)

alchecker: $(LCHECK_OBJ)
	@echo -e "linking [1;33malchecker[1;0m"
	$(CC) $(CFLAGS) -o alchecker $(LCHECK_OBJ) $(LIBS)

aparser: $(PARS_OBJ)
	@echo "linking [1;33maparser[1;0m"
	$(CC) $(CFLAGS) -o aparser $(PARS_OBJ) $(LIBS)

awreader: $(WREAD_OBJ)
	@echo "linking [1;33mawreader[1;0m"
	$(CC) $(CFLAGS) -o awreader $(WREAD_OBJ) $(LIBS)

cgi_main: $(CGI_MAIN_OBJ)
	@echo "linking [1;33mcgi_main[1;0m"
	$(CC) $(CFLAGS) -o cgi_main $(CGI_MAIN_OBJ) $(LIBS)

install:
	if [ ! -d $(ROOT_DIR) ]; then mkdir $(ROOT_DIR); fi
	if [ ! -d $(BIN_DIR) ]; then mkdir $(BIN_DIR); fi
	if [ ! -d $(LIB_DIR) ]; then mkdir $(LIB_DIR); fi
	if [ ! -d $(LOG_DIR) ]; then mkdir $(LOG_DIR); fi
	for i in $(PROGS); do mv $$i $(BIN_DIR)/$$i; done

cleanobj:
	@echo -e "\033[1;41m"removing objects ..."\033[1;0m"
	rm -f *o

clean: cleanobj
	rm -f $(PROGS)
	rm -f Makefile.in

