blob: 9ab31acd221da73b0c38b307386123e58f8ae57b (
plain)
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
|
ACLOCAL_AMFLAGS = -I m4
BIN = @BIN@
SRCLIB = @SRCLIB@
INCLUDE = @INCLUDE@
SITELISP = @SITELISP@
VERSION = @VERSION@
MLTONARGS = @MLTONARGS@
LIB_UR = $(SRCLIB)/ur
LIB_C = $(SRCLIB)/c
LIB_JS = $(SRCLIB)/js
all-local: smlnj mlton
SUBDIRS = src/c
.PHONY: smlnj mlton package reauto test
smlnj: src/urweb.cm xml/entities.sml
mlton: bin/urweb
clean-local:
rm -f bin/urweb src/urweb.mlton.* \
src/urweb.cm src/urweb.mlb xml/parse xml/entities.sml
rm -rf .cm src/.cm
src/urweb.cm: src/prefix.cm src/sources
cat $^ | sed -e 's/$$(SRC)\///g' > $@
src/urweb.mlb: src/prefix.mlb src/sources src/suffix.mlb
sed -e 's/^\(.*\).grm$$/$$(BUILD)\/\1.mlton.grm.sig:\1.mlton.grm.sml/' -e 'y/:/\n/' \
-e 's/^\(.*\).lex$$/$$(BUILD)\/\1.mlton.lex.sml/' \
$^ > $@
src/urweb.mlton.lex: src/urweb.lex
cp $< $@
src/urweb.mlton.grm: src/urweb.grm
cp $< $@
src/urweb.mlton.lex.sml: src/urweb.mlton.lex
mllex $<
src/urweb.mlton.grm.sig src/urweb.mlton.grm.sml: src/urweb.mlton.grm
mlyacc $<
MLTON = mlton
#ifdef DEBUG
# MLTON += -const 'Exn.keepHistory true'
#endif
#ifdef PROFILE
# MLTON += -profile $(PROFILE)
#endif
bin/urweb: src/compiler.mlb xml/entities.sml \
src/urweb.mlb $(srcdir)/src/*.sig $(srcdir)/src/*.sml src/config.sml \
src/urweb.mlton.lex.sml \
src/urweb.mlton.grm.sig src/urweb.mlton.grm.sml
mkdir -p bin
$(MLTON) $(MLTONARGS) -mlb-path-var 'SRC $(abs_srcdir)/src' -mlb-path-var 'BUILD $(abs_builddir)/src' -output $@ $<
xml/entities.sml: xml/parse xml/xhtml-lat1.ent xml/xhtml-special.ent xml/xhtml-symbol.ent
$^ > $@
xml/parse: xml/parse.sml
mkdir -p xml
$(MLTON) $(MLTONARGS) -output $@ $<
install-exec-emacs:
if USE_EMACS
mkdir -p $(DESTDIR)$(SITELISP)
cp $(srcdir)/src/elisp/*.el $(DESTDIR)$(SITELISP)/
endif
install-exec-local-main:
mkdir -p $(DESTDIR)$(BIN)
install bin/urweb $(DESTDIR)$(BIN)/
mkdir -p $(DESTDIR)$(LIB_UR)
cp $(srcdir)/lib/ur/*.urs $(DESTDIR)$(LIB_UR)/
cp $(srcdir)/lib/ur/*.ur $(DESTDIR)$(LIB_UR)/
mkdir -p $(DESTDIR)$(LIB_JS)
cp $(srcdir)/lib/js/*.js $(DESTDIR)$(LIB_JS)/
mkdir -p $(DESTDIR)$(INCLUDE)
cp $(srcdir)/include/urweb/*.h $(DESTDIR)$(INCLUDE)/
install-exec-local: install-exec-local-main install-exec-emacs
-ldconfig
uninstall-emacs:
if USE_EMACS
rm -f $(DESTDIR)$(SITELISP)/urweb-compat.el $(DESTDIR)$(SITELISP)/urweb-mode.el $(DESTDIR)$(SITELISP)/urweb-move.el \
$(DESTDIR)$(SITELISP)/urweb-defs.el $(DESTDIR)$(SITELISP)/urweb-mode-startup.el $(DESTDIR)$(SITELISP)/urweb-util.el
endif
uninstall-local-main:
rm -f $(DESTDIR)$(BIN)/urweb $(DESTDIR)$(LIB_UR)/basis.urs $(DESTDIR)$(LIB_UR)/char.urs $(DESTDIR)$(LIB_UR)/datetime.urs \
$(DESTDIR)$(LIB_UR)/listPair.urs $(DESTDIR)$(LIB_UR)/list.urs $(DESTDIR)$(LIB_UR)/monad.urs \
$(DESTDIR)$(LIB_UR)/option.urs $(DESTDIR)$(LIB_UR)/string.urs $(DESTDIR)$(LIB_UR)/top.urs $(DESTDIR)$(LIB_UR)/char.ur \
$(DESTDIR)$(LIB_UR)/datetime.ur $(DESTDIR)$(LIB_UR)/listPair.ur $(DESTDIR)$(LIB_UR)/list.ur $(DESTDIR)$(LIB_UR)/monad.ur \
$(DESTDIR)$(LIB_UR)/option.ur $(DESTDIR)$(LIB_UR)/string.ur $(DESTDIR)$(LIB_UR)/top.ur $(DESTDIR)$(LIB_JS)/urweb.js \
$(DESTDIR)$(INCLUDE)/config.h $(DESTDIR)$(INCLUDE)/queue.h $(DESTDIR)$(INCLUDE)/request.h $(DESTDIR)$(INCLUDE)/types.h \
$(DESTDIR)$(INCLUDE)/urweb.h $(DESTDIR)$(INCLUDE)/types_cpp.h $(DESTDIR)$(INCLUDE)/urweb_cpp.h
uninstall-local: uninstall-local-main uninstall-emacs
EXTRA_DIST = demo doc lib/js lib/ur xml \
src/coq src/*.sig src/*.sml src/*.mlb src/config.sml.in src/elisp src/*.cm src/sources src/*.grm src/*.lex \
CHANGELOG LICENSE urweb.ebuild include/urweb/*.h bin
TESTDB = /tmp/urweb.db
TESTPID = /tmp/urweb.pid
test:
bin/urweb -boot -noEmacs -dbms sqlite -db $(TESTDB) -demo /Demo demo
rm -f $(TESTDB)
sqlite3 $(TESTDB) < demo/demo.sql
demo/demo.exe & echo $$! > $(TESTPID)
sleep 1
(curl -s 'http://localhost:8080/Demo/Hello/main' | diff tests/hello.html -) || (kill `cat $(TESTPID)`; echo "Test 'Hello' failed"; /bin/false)
(curl -s 'http://localhost:8080/Demo/Crud1/create?A=1&B=2&C=3&D=4' | diff tests/crud1.html -) || (kill `cat $(TESTPID)`; echo "Test 'Crud1' failed"; /bin/false)
kill `cat $(TESTPID)`
echo Tests succeeded.
|