.SUFFIXES: .o
LANGS =
+SOURCES =
TARGETS = $(patsubst %,%-fringe,$(LANGS))
CLEANFILES = $(TARGETS)
fi
###--------------------------------------------------------------------------
+### Reporting.
+
+report::
+ wc -l $(SOURCES) | sort -n
+
+###--------------------------------------------------------------------------
### C.
CC = gcc
.c.o:; $(CC) -c $(CFLAGS) -o $@ $<
LANGS += c
+SOURCES += c-fringe.c
c-fringe: c-fringe.o
$(CC) -o $@ $^
### Haskell.
HC = ghc
-HFLAGS = -O2 -XFlexibleInstances
+HFLAGS = -O2
CLEANFILES += *.hi *.hc
.SUFFIXES: .hs
.hs.o:; $(HC) -c $(HFLAGS) -o $@ $<
LANGS += haskell
+SOURCES += haskell-fringe.hs
haskell-fringe: haskell-fringe.o
$(HC) -o $@ $^
IFLAGS = -u -fa
LANGS += icon
+SOURCES += icon-fringe.icn
icon-fringe: icon-fringe.icn
$(ICONT) -o $@ $^
CLEANFILES += *.core
LANGS += cl
+SOURCES += cl-fringe.lisp
cl-fringe: cl-fringe.lisp
## cl-launch -R -o $@ -f `pwd`/$^ -- slow to start
cl-launch -o $@ -f `pwd`/$^ +I -r launch -d $@.core
.fs.exe:; fsc -o $@ $<
LANGS += f\#
+SOURCES += f\#-fringe.fs
f\#-fringe: f\#-fringe.exe
chmod +x $<
cp $< $@
SCMC = csc
SCMFLAGS = -c -O2
-.SUFFIXES: .scm .o
+.SUFFIXES: .scm
.scm.o:; $(SCMC) $(SCMFLAGS) -o $@ $<
LANGS += scheme
+SOURCES += scheme-fringe.scm
scheme-fringe: scheme-fringe.o
$(SCMC) -o $@ $^
###--------------------------------------------------------------------------
+### Go.
+
+GOOBJ = 8
+GOC = $(GOOBJ)g
+GOLINK = $(GOOBJ)l
+CLEANFILES += *.$(GOOBJ)
+.SUFFIXES: .$(GOOBJ) .go
+.go.$(GOOBJ):; $(GOC) $(GOFLAGS) $<
+
+LANGS += go
+SOURCES += go-fringe.go
+go-fringe: go-fringe.$(GOOBJ)
+ $(GOLINK) -o $@ $^
+
+###--------------------------------------------------------------------------
### Smalltalk.
LANGS += smalltalk
TARGETS += smalltalk-fringe.im
+SOURCES += smalltalk-fringe.st
smalltalk-fringe.im: smalltalk-fringe.st
echo "ObjectMemory snapshot: '$@.new'" | gst $^ -
mv $@.new $@