1 .PHONY: all check clean default distclean help install release
4 .config.make: configure GNUmakefile
10 CFLAGS:=-std=c99 -O3 -finline-functions
12 #CFLAGS:=-pg -std=c99 -O0
13 #CFLAGS:=-std=c99 -O0 -g
16 include make/install.make
19 CPPFLAGS+=-DPREFIX='"$(PREFIX)"'
20 CPPFLAGS+=-DVERSION='"$(VERSION)"'
29 all: mes module/mes/read-0.mo
33 mes.o: mes.c mes.h mes.i mes.environment.i mes.symbols.i
34 mes.o: lib.c lib.h lib.i lib.environment.i
35 mes.o: math.c math.h math.i math.environment.i
36 mes.o: posix.c posix.h posix.i posix.environment.i
37 mes.o: reader.c reader.h reader.i reader.environment.i
40 rm -f mes *.o *.environment.i *.symbols.i *.environment.h *.cat a.out
42 rm -f cons-mes m main micro-mes mini-mes t tiny-mes
43 rm -f guile-cons-mes guile-m guile-main guile-micro-mes guile-mini-mes guile-t guile-tiny-mes
49 %.h %.i %.environment.i %.symbols.i: %.c build-aux/mes-snarf.scm
50 build-aux/mes-snarf.scm $<
52 check: all guile-check mes-check mescc-check
58 tests/quasiquote.test\
71 tests/let-syntax.test\
77 BASE-0:=module/mes/base-0.mes
78 MES-0:=guile/mes-0.scm
80 # use module/mes/read-0.mes rather than C-core reader
87 set -e; for i in $(TESTS); do ./$$i; done
91 scripts/nyacc-calc.mes
93 module/mes/read-0.mo: module/mes/read-0.mes mes
94 ./mes --dump < $< > $@
96 dump: module/mes/read-0.mo
100 guix environment --system=i686-linux --ad-hoc gcc-toolchain -- bash -c 'make mes CC=i686-unknown-linux-gnu-gcc LIBRARY_PATH=$${PATH%%/bin:*}/lib'
103 module/mes/read-0-32.mo: module/mes/mini-0.mes mes-32
104 MES_MINI=1 ./mes-32 --dump < $< > $@
106 module/mes/tiny-0-32.mo: module/mes/tiny-0.mes mes-32
107 MES_TINY=1 ./mes-32 --dump < $< > $@
110 set -e; for i in $(TESTS); do\
111 $(GUILE) -s <(cat $(MES-0) module/mes/test.mes $$i);\
120 guile/mescc.scm scaffold/t.c > a.out
124 %.h %.i %.environment.i %.symbols.i: scaffold/%.c build-aux/mes-snarf.scm
125 build-aux/mes-snarf.scm $<
127 mini-mes: mini-mes.h mini-mes.i mini-mes.environment.i mini-mes.symbols.i
128 mini-mes: mlibc.c mstart.c
129 mini-mes: GNUmakefile
130 mini-mes: module/mes/read-0-32.mo
131 mini-mes: scaffold/mini-mes.c
133 # gcc -nostdlib --std=gnu99 -m32 -g -o $@ '-DPREFIX=' '-DVERSION='"$(VERSION)"' $<
134 gcc -nostdlib -I. --std=gnu99 -m32 -g -I. -o $@ $(CPPFLAGS) $<
137 guile-mini-mes: mini-mes.h mini-mes.i mini-mes.environment.i mini-mes.symbols.i
138 guile-mini-mes: module/mes/read-0-32.mo
139 guile-mini-mes: scaffold/mini-mes.c
140 guile/mescc.scm $< > $@ || rm -f $@
143 cons-mes: module/mes/tiny-0-32.mo
144 cons-mes: scaffold/cons-mes.c GNUmakefile
146 gcc -nostdlib -I. --std=gnu99 -m32 -g -o $@ '-DVERSION="0.4"' $<
149 guile-cons-mes: module/mes/tiny-0-32.mo
150 guile-cons-mes: scaffold/cons-mes.c
151 guile/mescc.scm $< > $@ || rm -f $@
154 tiny-mes: module/mes/tiny-0-32.mo
155 tiny-mes: scaffold/tiny-mes.c GNUmakefile
157 gcc -nostdlib -I. --std=gnu99 -m32 -g -o $@ '-DVERSION="0.4"' $<
160 guile-tiny-mes: module/mes/tiny-0-32.mo
161 guile-tiny-mes: scaffold/tiny-mes.c
162 guile/mescc.scm $< > $@ || rm -f $@
165 m: scaffold/m.c GNUmakefile
167 gcc -nostdlib -I. --std=gnu99 -m32 -g -o $@ '-DVERSION="0.4"' $<
168 # gcc --std=gnu99 -g -o $@ '-DVERSION="0.4"' $<
171 guile-m: scaffold/m.c
172 guile/mescc.scm $< > $@ || rm -f $@
175 micro-mes: scaffold/micro-mes.c GNUmakefile
177 gcc -nostdlib -I. --std=gnu99 -m32 -o $@ '-DVERSION="0.4"' $<
180 guile-micro-mes: scaffold/micro-mes.c
181 guile/mescc.scm $< > $@ || rm -f $@
184 main: doc/examples/main.c GNUmakefile
186 gcc -nostdlib -I. --std=gnu99 -m32 -o $@ '-DVERSION="0.4"' $<
189 guile-main: doc/examples/main.c
190 guile/mescc.scm $< > $@ || rm -f $@
194 t: scaffold/t.c GNUmakefile
196 gcc -nostdlib -I. --std=gnu99 -m32 -g -o $@ '-DVERSION="0.4"' $<
199 guile-t: scaffold/t.c
200 guile/mescc.scm $< > $@ || rm -f $@
203 MAIN_C:=doc/examples/main.c
206 scripts/mescc.mes $(MAIN_C) > a.out
207 ./a.out; r=$$?; [ $$r = 42 ]
209 guile-mescc: $(MAIN_C)
211 guile/mescc.scm $(MAIN_C) > a.out
213 ./a.out; r=$$?; [ $$r = 42 ]
218 GUILE_GIT:=$(HOME)/src/guile-1.8
219 GUILE_COMMIT:=ba8a709
220 psyntax-import: module/mes/psyntax.ss module/mes/psyntax.pp
222 module/mes/psyntax.%: $(GUILE_GIT)/ice-9/psyntax.%
223 git --git-dir=$(GUILE_GIT)/.git --work-tree=$(GUILE_GIT) show $(GUILE_COMMIT):ice-9/$(@F > $@
235 Usage: make [OPTION]... [TARGET]...
238 all update everything
240 clean remove all generated stuff
241 dist create tarball in $(TARBALL)
242 distclean also clean configuration
243 mescc compile cc/main.c to a.out
244 install install in $$(PREFIX) [$(PREFIX)]
245 release make a release
246 update-hash update hash in guix.scm