1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
|
include ../Makefile.config
## Use local files
## (tests do not require global installation of Eliom)
export OCAMLPATH := ${SRC}/src/files:${OCAMLPATH}
export PATH := ${SRC}/src/tools:${PATH}
export ELIOM_DATA_DIR := ${SRC}/src/files
ifeq "${DEBUG}" "YES"
DEBUG_OPTION := -g
else
DEBUG_OPTION :=
endif
#BINPREFIX=../src/tools/
BINPREFIX=
ELIOMC := ${BINPREFIX}eliomc ${DEBUG_OPTION} -package deriving.syntax.std
ELIOMOPT := ${BINPREFIX}eliomopt ${DEBUG_OPTION} -package deriving.syntax.std
ELIOMDEPS := ${BINPREFIX}eliomdep -server -package deriving.syntax.std
ELIOMDEPC := ${BINPREFIX}eliomdep -client -package deriving.syntax.std
JS_OF_ELIOM := ${BINPREFIX}js_of_eliom ${DEBUG_OPTION} -package deriving.syntax.std
ifeq "${NATDYNLINK}" "YES"
all: byte opt
else
all: byte
endif
#### Main site : eliom_testsuite ####
SERVER_PACKAGE :=
CLIENT_PACKAGE :=
SERVER_FILES := eliom_testsuite_base.eliom \
eliom_testsuite1.ml \
eliom_testsuite2.ml \
eliom_testsuite3.eliom \
eliom_testsuite4.eliom \
eliom_testsuite5.eliom \
eliom_testsuite.ml \
atom_example.ml \
CLIENT_FILES := eliom_testsuite_base.eliom \
eliom_testsuite3.eliom \
eliom_testsuite4.eliom \
eliom_testsuite5.eliom
OTHER_FILES := eliom_testsuite_global.eliom eliom_testsuite_site.eliom
STATICDIR := ../local/var/www/tests
TYPE_DIR =
DISTILLERY_FILES := $(addprefix $(STATICDIR)/distillery/basic/,test.cma test.cmxa test.js)
byte:: _server/eliom_testsuite_global.cmo _server/eliom_testsuite_site.cmo eliom_testsuite.cma ${STATICDIR}/eliom_testsuite.js distillery-basic-byte
opt:: _server/eliom_testsuite_global.cmxs _server/eliom_testsuite_site.cmxs eliom_testsuite.cmxs ${STATICDIR}/eliom_testsuite.js distillery-basic-opt
#### Distillery ####
.PHONY: distillery-basic-byte distillery-basic-opt
distillery/basic:
mkdir -p $@
eliom-distillery -name distillery_basic -target-directory $@
echo 'PREFIX=$(CURDIR)/../local/' >> $@/Makefile.options
echo 'STATICDIR=var/www/distillery-basic/static' >> $@/Makefile.options
echo 'ELIOMSTATICDIR=var/www/distillery-basic/eliomstatic' >> $@/Makefile.options
echo 'LIBDIR=var/www/distillery-basic/lib' >> $@/Makefile.options
echo 'WWWUSER=' >> $@/Makefile.options
echo 'WWWGROUP=' >> $@/Makefile.options
make -C $@ byte install.static
distillery-basic-byte: | distillery/basic
make -C distillery/basic byte install.lib.byte
distillery-basic-opt: | distillery/basic
make -C distillery/basic opt install.lib.opt
#### Server side #######
SERVER_INC := ${addprefix -package ,${SERVER_PACKAGE}}
SERVER_OBJS := $(patsubst %.eliom,_server/%.cmo, \
$(patsubst %.ml,_server/%.cmo,${SERVER_FILES}))
eliom_testsuite.cma: ${SERVER_OBJS}
${ELIOMC} -a -o $@ $^
eliom_testsuite.cmxa: ${SERVER_OBJS:.cmo=.cmx}
${ELIOMOPT} -a -o $@ $^
${or ${TYPE_DIR},_server}/%.type_mli: %.eliom
${ELIOMC} -infer ${SERVER_INC} -o $@ $<
_server/%.cmi: %.mli
${ELIOMC} -c ${SERVER_INC} $<
_server/%.cmo: %.ml
${ELIOMC} -c ${SERVER_INC} $<
_server/%.cmo: %.eliom _server/%.type_mli
${ELIOMC} -c ${addprefix -type-dir ,${TYPE_DIR}} ${SERVER_INC} $<
_server/%.cmx: %.ml
${ELIOMOPT} -c ${SERVER_INC} $<
_server/%.cmx: %.eliom
${ELIOMOPT} -c ${addprefix -type-dir ,${TYPE_DIR}} ${SERVER_INC} $<
%.cmxs: %.cmxa
$(ELIOMOPT) -shared -linkall -o $@ $<
%.cmxs: %.cmx
$(ELIOMOPT) -shared -linkall -o $@ $<
##### Client side ####
CLIENT_LIBS := ${addprefix -package ,${CLIENT_PACKAGE}}
CLIENT_INC := ${addprefix -package ,${CLIENT_PACKAGE}}
CLIENT_OBJS := $(patsubst %.eliom,_client/%.cmo, \
$(patsubst %.ml,_client/%.cmo,${CLIENT_FILES}))
${STATICDIR}/eliom_testsuite.js: ${CLIENT_OBJS}
${JS_OF_ELIOM} -o $@ -jsopt -pretty -jsopt -noinline ${CLIENT_LIBS} $^
_client/%.cmi: %.mli
${JS_OF_ELIOM} -c ${CLIENT_INC} $<
_client/%.cmo: %.eliom
${JS_OF_ELIOM} -c ${addprefix -type-dir ,${TYPE_DIR}} ${CLIENT_INC} $<
_client/%.cmo: %.ml
${JS_OF_ELIOM} -c ${CLIENT_INC} $<
####### Aux site: miniwiki #######
byte:: miniwiki.byte
opt:: miniwiki.opt
miniwiki.byte:
$(MAKE) --no-print-directory -C miniwiki byte
miniwiki.opt:
$(MAKE) --no-print-directory -C miniwiki opt
############
## Clean up
clean: clean.local
${MAKE} -C miniwiki clean
clean.local:
-rm -f *.cm[ioax] *.cmxa *.cmxs *.o *.a *.annot
-rm -f ${or ${TYPE_DIR},_server}/*.type_mli
-rm -f ${STATICDIR}/eliom_testsuite.js
-rm -rf _client/* _server/*
-rm -rf distillery
distclean: clean.local
-rm -f *~ \#* .\#* .depend
${MAKE} -C miniwiki distclean
## Dependencies
depend: .depend
.depend:
${MAKE} -C miniwiki depend
$(ELIOMDEPS) ${SERVER_INC} ${addprefix -type-dir ,${TYPE_DIR}} ${SERVER_FILES} ${OTHER_FILES} | sed s%_server//%/% > .depend
$(ELIOMDEPC) ${CLIENT_INC} ${addprefix -type-dir ,${TYPE_DIR}} ${CLIENT_FILES} $(OTHER_FILES) >> .depend
include .depend
## TODO
# %.wiki: %.ml
# cat $< | sed '1,/(\*wiki\*/d' | sed '/%<||2>%/,$$ d' | /bin/sh ./tutomake.sh > $@
|