1 ### Makefile for same-fringe implementations.
3 ###--------------------------------------------------------------------------
4 ### Notes about organization.
6 ### Most projects have lots of stuff in just a few languages, so it makes
7 ### sense to put the language configuration in one place. This one's
8 ### different. Its entire purpose is to demonstrate lots of different
11 ### So, at the top we declare the main targets; then each language has its
12 ### configuration and build rules.
17 TARGETS
= $(patsubst %,%-fringe
,$(LANGS
))
18 CLEANFILES
= $(TARGETS
)
21 clean::; rm -f
$(CLEANFILES
)
23 ###--------------------------------------------------------------------------
24 ### Silent rules stuff.
26 ## Default verbosity setting.
30 v_echo
= $(call v_echo_
$V,$1)
32 v_echo_0
= @printf
" %-6s %s\n" "$1" "$@";
36 ###--------------------------------------------------------------------------
42 for lang in
$(LANGS
); do \
43 echo
>&3 "*** $$lang"; \
44 printf
"Test $$lang..."; \
45 time
=`command time -o/dev/stdout -f "%U user; %S system; %E" \
46 ./test ./$${lang}-fringe 2>&3`; \
47 if
[ $$?
-eq
0 ]; then \
48 win
=$$(expr
$$win + 1); \
49 printf
" ok ($$time)\n"; \
51 lose
=$$(expr
$$lose + 1); \
55 if
[ $$lose -eq
0 ]; then \
56 echo
"All $$win test(s) OK"; \
58 echo
"FAILED $$lose test(s)!"; \
62 ###--------------------------------------------------------------------------
66 wc
-l
$(SOURCES
) |
sort -n
68 ###--------------------------------------------------------------------------
72 CFLAGS
= -O2
-g
-pedantic
-Wall
75 .c.o
:; $(call v_echo
,CC
)$(CC
) -c
$(CFLAGS
) -o
$@
$<
80 $(call v_echo
,CCLD
)$(CC
) -o
$@
$^
82 ###--------------------------------------------------------------------------
87 CLEANFILES
+= *.hi
*.hc
89 .hs.o
:; $(call v_echo
,HC
)$(HC
) -c
$(HFLAGS
) -o
$@
$<
92 SOURCES
+= haskell-fringe.hs
93 haskell-fringe
: haskell-fringe.o
94 $(call v_echo
,HCLD
)$(HC
) -o
$@
$^
96 ###--------------------------------------------------------------------------
103 SOURCES
+= icon-fringe.icn
104 icon-fringe
: icon-fringe.icn
105 $(call v_echo
,ICONT
)$(ICONT
) $(IFLAGS
) -o
$@
$^
107 ###--------------------------------------------------------------------------
110 CLEANFILES
+= *.core
*.fasl
112 SBCL_BUILD
= .
/sbcl-build
114 .SUFFIXES
: .lisp .fasl
116 $(call v_echo
,CL
)$(SBCL_BUILD
) build
$<
119 SOURCES
+= cl-fringe.lisp
120 cl-fringe
: cl-fringe.fasl
121 $(call v_echo
,CLLD
)$(SBCL_BUILD
) link
$@
$^
123 ###--------------------------------------------------------------------------
130 .fs.exe
:; $(call v_echo
,FSC
)$(FSC
) --nologo
$(FSCFLAGS
) -o
$@
$<
133 SOURCES
+= f\
#-fringe.fs
134 f\
#-fringe: f\#-fringe.exe
135 $(call v_echo
,CP
)chmod
+x
$< && cp
$< $@
137 ###--------------------------------------------------------------------------
143 .scm.o
:; $(call v_echo
,SCMC
)$(SCMC
) $(SCMFLAGS
) -o
$@
$<
146 SOURCES
+= scheme-fringe.scm
147 scheme-fringe
: scheme-fringe.o
148 $(call v_echo
,SCMLD
)$(SCMC
) -o
$@
$^
150 ###--------------------------------------------------------------------------
155 SOURCES
+= go-fringe.go
156 go-fringe
: go-fringe.go
157 $(call v_echo
,GO
)$(GOBUILD
) -o
$@
$^
159 ###--------------------------------------------------------------------------
163 TARGETS
+= smalltalk-fringe.im
164 SOURCES
+= smalltalk-fringe.st
165 smalltalk-fringe.im
: smalltalk-fringe.st
166 $(call v_echo
,GSTIM
)echo
"ObjectMemory snapshot: '$@.new'" | gst
$^
-
167 $(V_HIDE
)mv
$@.new
$@
169 $(call v_echo
,GENSH
){ echo
'#! /bin/sh'; \
170 echo
'"exec" "gst" "-I" "$@.im" "-f" "$$0" "$$@"'; \
171 echo
'ObjectMemory quit: (Node main: Smalltalk arguments)'; \
173 $(V_HIDE
)chmod
+x
$@.new
&& mv
$@.new
$@
175 ###--------------------------------------------------------------------------
179 TARGETS
+= forth-fringe
180 SOURCES
+= forth-fringe.fth
181 forth-fringe
: forth-fringe.fth
182 $(call v_echo
,FORTHI
)gforthmi
$@
$<
184 ###--------------------------------------------------------------------------
188 CLEANFILES
+= *.beam erl_crash.dump
189 .SUFFIXES
: .erl .beam
190 .erl.beam
:; $(call v_echo
,ERLC
)$(ERLC
) $(ERLCFLAGS
) $<
193 TARGETS
+= erlang-fringe.beam
194 SOURCES
+= erlang-fringe.erl
196 $(call v_echo
,GENSH
){ echo
'#! /bin/sh'; \
197 echo
'exec erl -pa . -noshell -run erlang-fringe main -extra "$$@"'; \
199 $(V_HIDE
)chmod
+x
$@.new
&& mv
$@.new
$@
201 ###--------------------------------------------------------------------------
204 ALGOL68
= /usr
/local
/bin
/a68g
207 TARGETS
+= algol68-fringe
208 SOURCES
+= algol68-fringe.a68
210 algol68-fringe
: algol68-fringe.a68
211 $(call v_echo
,GENSH
){ echo
'#! $(ALGOL68) --script'; \
214 $(V_HIDE
)chmod
+x
$@.new
&& mv
$@.new
$@
216 ###--------------------------------------------------------------------------
220 CLEANFILES
+= dylan-
*.c
*.mak
223 TARGETS
+= dylan-fringe
224 SOURCES
+= dylan-fringe.dylan dylan-fringe-exports.dylan
225 SOURCES
+= dylan-fringe.lid
227 dylan-fringe
: dylan-fringe.lid dylan-fringe.dylan dylan-fringe-exports.dylan
228 $(call v_echo
,D2C
)d2c
-g
$<
230 ###----- That's all, folks --------------------------------------------------