summaryrefslogtreecommitdiff
path: root/Makefile
blob: 8e65ea0803bbf06b54c51fbb4938431c5538e8f1 (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
BIN      := /usr/local/bin
LIB      := /usr/local/lib/urweb
INCLUDE  := /usr/local/include/urweb
SITELISP := /usr/local/share/emacs/site-lisp/urweb-mode

LIB_UR   := $(LIB)/ur
LIB_C    := $(LIB)/c

all: smlnj mlton c

.PHONY: all smlnj mlton c clean install

smlnj: src/urweb.cm
mlton: bin/urweb
c: clib/urweb.o clib/driver.o

clean:
	rm -f src/*.mlton.grm.* src/*.mlton.lex.* \
		src/urweb.cm src/urweb.mlb \
		clib/*.o
	rm -rf .cm src/.cm

clib/urweb.o: src/c/urweb.c
	gcc -O3 -I include -c src/c/urweb.c -o clib/urweb.o

clib/driver.o: src/c/driver.c
	gcc -O3 -I include -c src/c/driver.c -o clib/driver.o

src/urweb.cm: src/prefix.cm src/sources
	cat src/prefix.cm src/sources \
	>src/urweb.cm

src/urweb.mlb: src/prefix.mlb src/sources src/suffix.mlb
	cat src/prefix.mlb src/sources src/suffix.mlb \
	| sed 's/^\(.*\).grm$$/\1.mlton.grm.sig\n\1.mlton.grm.sml/' \
	| sed 's/^\(.*\).lex$$/\1.mlton.lex.sml/' \
	>src/urweb.mlb

%.mlton.lex: %.lex
	cp $< $@
%.mlton.grm: %.grm
	cp $< $@

%.mlton.lex.sml: %.mlton.lex
	mllex $<

%.mlton.grm.sig %.mlton.grm.sml: %.mlton.grm
	mlyacc $<

MLTON := mlton

ifdef DEBUG
	MLTON += -const 'Exn.keepHistory true'
endif

bin/urweb: src/urweb.mlb src/*.sig src/*.sml \
		src/urweb.mlton.lex.sml \
		src/urweb.mlton.grm.sig src/urweb.mlton.grm.sml
	$(MLTON) -output $@ src/urweb.mlb

install:
	cp bin/urweb $(BIN)/
	mkdir -p $(LIB_UR)
	cp lib/*.urs $(LIB_UR)/
	cp lib/*.ur $(LIB_UR)/
	mkdir -p $(LIB_C)
	cp clib/*.o $(LIB_C)/
	mkdir -p $(INCLUDE)
	cp include/*.h $(INCLUDE)/
	mkdir -p $(SITELISP)
	cp src/elisp/*.el $(SITELISP)/