# RUP - Version 0.01
# 
#
NAME = rupocaml
VERSION = 0.1

CAMLCV = ocamlc -i
CAMLC = ocamlc
CAMLCOPT = ocamlopt
CAMLDEP = ocamldep

FLAGS = 
RMF = rm -f
PRG_DEM = rupd
PRG_CLI = client_rup
PRG_CGI = rup_cgi

INTERF = parse_rupinfo.cmi 
OBJ = netstring_str.cmo netencoding.cmo neturl.cmo\
	netbuffer.cmo netstream.cmo mimestring.cmo \
	rup_op.cmo parse_rupinfo.cmo parse_ruppref.cmo bd_ruppref.cmo bd_rup_index.cmo
OBJX = netbuffer.cmo parse_ruppref.cmo rup_op.cmo 
BUILD = $(PRG_DEM) $(PRG_CLI) $(PRG_CGI) *.cm? 
PREREQ = 
DIST = $(NAME)-$(VERSION).tar.gz
CURDIR = $(PWD)
WEB_SERV_CGI = $(shell cat PRE_CONF | grep CGI | awk -F: '{ print $$2; }' | tr -d " ")

# Dependencies addition.
-include DEPEND
parse_rupinfo.cmo: parse_rupinfo.cmi

all: $(PRG_CLI) $(PRG_DEM) $(PRG_CGI) 
	(cd stat; make all)
	mv $(PRG_CGI) $(WEB_SERV_CGI)
	echo 'Id|Tproto|Action|Query|Latency|No_envoi|Decompt' > $(WEB_SERV_CGI)/rupbots.dat
	chmod a+rw $(WEB_SERV_CGI)/rupbots.dat
	echo 'Installing rup_cgi and rupbots.dat OK...' 

$(PRG_DEM): bd_rup_index.cmo rupd.ml
	$(CAMLCV) -custom -o $(PRG_DEM) str.cma $(OBJ) rupd.ml -cclib -lstr 

$(PRG_CGI): $(OBJ)
	$(CAMLCV) -custom -o $(PRG_CGI) str.cma unix.cma $(OBJ) \
	rup_cgi.ml -cclib -lunix

$(PRG_CLI): $(OBJ)
	$(CAMLCV) -custom -o $(PRG_CLI) str.cma unix.cma $(OBJ) \
	main_client.ml -cclib -lunix -cclib -lstr

bd_pref: bd_ruppref.ml
	$(CAMLCV) -custom -o bd_pref str.cma $(OBJX) bd_ruppref.ml -cclib -lstr

clean:
	$(RMF) $(BUILD) *~ FILES.SRC $(WEB_SERV_CGI)/rupbots.dat $(WEB_SERV_CGI)/rup_cgi
	(cd stat; make clean)

remake: clean all

dist: $(DIST)

$(DIST): FILES.SRC
	ln -s . $(NAME)-$(VERSION) 
	tar cvhf - `cat FILES.SRC` | gzip > $@
	$(RMF) $(NAME)-$(VERSION)
	$(RMF) FILES.SRC

FILES.SRC:
	find .  -follow					\
	-name CVS 				-prune	\
	-o -name '*.a' 				-prune	\
	-o -name '*.o' 				-prune	\
	-o -name '*.cmi' 			-prune	\
	-o -name '*.cmo'			-prune 	\
	-o -name '*.cma'			-prune 	\
	-o -name '*.cmxa'			-prune 	\
	-o -name '*.cmx'			-prune  \
	-o -name '*.tar*'			-prune  \
	-o -name '*.tmp*'			-prune  \
	-o -name '*.sig'			-prune  \
	-o -name '*.output'			-prune  \
        -o -name 'FILES.*'                      -prune  \
	-o -name '$(NAME)'                      -prune  \
        -o -name '$(NAME).opt'                  -prune  \
	-o -type f -print				\
	| sort | sed 	-e 's|^\./|$(NAME)-$(VERSION)/|'  > $@

dep:
	ocamldep *.ml* $(OBJ) | sed -e 's|\./||g' > DEPEND


# General dependencies rules.

.SUFFIXES: .cmo .cmi .cmx .ml .mli .c .o
.ml.cmo:
	$(CAMLC) -c $<
.mli.cmi:
	$(CAMLC) -c $<
.ml.cmx:
	ocamlopt -inline 40 -c $<
.c.o:
	$(CAMLC) -c -ccopt -Wall $<


