Not completely successful, because some of the build machinery underneath
is still somewhat noisy. Oh, well.
all::
clean::; rm -f $(CLEANFILES)
all::
clean::; rm -f $(CLEANFILES)
+###--------------------------------------------------------------------------
+### Silent rules stuff.
+
+## Default verbosity setting.
+V = 0
+
+## Infrastructure.
+v_echo = $(call v_echo_$V,$1)
+v_echo_1 =
+v_echo_0 = @printf " %-6s %s\n" "$1" "$@";
+V_HIDE = $(V_HIDE_$V)
+V_HIDE_0 = @
+
###--------------------------------------------------------------------------
### Testing.
###--------------------------------------------------------------------------
### Testing.
CFLAGS = -O2 -g -pedantic -Wall
CLEANFILES += *.o
.SUFFIXES: .c
CFLAGS = -O2 -g -pedantic -Wall
CLEANFILES += *.o
.SUFFIXES: .c
-.c.o:; $(CC) -c $(CFLAGS) -o $@ $<
+.c.o:; $(call v_echo,CC)$(CC) -c $(CFLAGS) -o $@ $<
LANGS += c
SOURCES += c-fringe.c
c-fringe: c-fringe.o
LANGS += c
SOURCES += c-fringe.c
c-fringe: c-fringe.o
+ $(call v_echo,CCLD)$(CC) -o $@ $^
###--------------------------------------------------------------------------
### Haskell.
###--------------------------------------------------------------------------
### Haskell.
HFLAGS = -O2
CLEANFILES += *.hi *.hc
.SUFFIXES: .hs
HFLAGS = -O2
CLEANFILES += *.hi *.hc
.SUFFIXES: .hs
-.hs.o:; $(HC) -c $(HFLAGS) -o $@ $<
+.hs.o:; $(call v_echo,HC)$(HC) -c $(HFLAGS) -o $@ $<
LANGS += haskell
SOURCES += haskell-fringe.hs
haskell-fringe: haskell-fringe.o
LANGS += haskell
SOURCES += haskell-fringe.hs
haskell-fringe: haskell-fringe.o
+ $(call v_echo,HCLD)$(HC) -o $@ $^
###--------------------------------------------------------------------------
### Icon.
###--------------------------------------------------------------------------
### Icon.
LANGS += icon
SOURCES += icon-fringe.icn
icon-fringe: icon-fringe.icn
LANGS += icon
SOURCES += icon-fringe.icn
icon-fringe: icon-fringe.icn
+ $(call v_echo,ICONT)$(ICONT) -o $@ $^
###--------------------------------------------------------------------------
### Common Lisp.
###--------------------------------------------------------------------------
### Common Lisp.
CLEANFILES += *.core *.fasl
.SUFFIXES: .lisp .fasl
CLEANFILES += *.core *.fasl
.SUFFIXES: .lisp .fasl
-.lisp.fasl:; sbcl --eval '(quit :unix-status (if (compile-file "$<") 0 1))'
+.lisp.fasl:
+ $(call v_echo,CL)sbcl --eval \
+ '(quit :unix-status (if (compile-file "$<") 0 1))'
LANGS += cl
SOURCES += cl-fringe.lisp
cl-fringe: cl-fringe.fasl
LANGS += cl
SOURCES += cl-fringe.lisp
cl-fringe: cl-fringe.fasl
- cp $< $@.new && chmod +x $@.new && mv $@.new $@
-## cl-launch -o $@ -f `pwd`/$^ +I -r launch -d $@.core
+ $(call v_echo,CP)cp $< $@.new && chmod +x $@.new && mv $@.new $@
+## $(call v_echo,CL)cl-launch -o $@ -f `pwd`/$^ +I -r launch -d $@.core
###--------------------------------------------------------------------------
### F#.
###--------------------------------------------------------------------------
### F#.
FSC = fsc
CLEANFILES += *.exe
.SUFFIXES: .fs .exe
FSC = fsc
CLEANFILES += *.exe
.SUFFIXES: .fs .exe
+.fs.exe:; $(call v_echo,FSC)$(FSC) -o $@ $<
LANGS += f\#
SOURCES += f\#-fringe.fs
f\#-fringe: f\#-fringe.exe
LANGS += f\#
SOURCES += f\#-fringe.fs
f\#-fringe: f\#-fringe.exe
+ $(call v_echo,CP)chmod +x $< && cp $< $@
###--------------------------------------------------------------------------
### Scheme.
###--------------------------------------------------------------------------
### Scheme.
SCMC = csc
SCMFLAGS = -c -O2
.SUFFIXES: .scm
SCMC = csc
SCMFLAGS = -c -O2
.SUFFIXES: .scm
-.scm.o:; $(SCMC) $(SCMFLAGS) -o $@ $<
+.scm.o:; $(call v_echo,SCMC)$(SCMC) $(SCMFLAGS) -o $@ $<
LANGS += scheme
SOURCES += scheme-fringe.scm
scheme-fringe: scheme-fringe.o
LANGS += scheme
SOURCES += scheme-fringe.scm
scheme-fringe: scheme-fringe.o
+ $(call v_echo,SCMLD)$(SCMC) -o $@ $^
###--------------------------------------------------------------------------
### Go.
###--------------------------------------------------------------------------
### Go.
GOLINK = $(GOOBJ)l
CLEANFILES += *.$(GOOBJ)
.SUFFIXES: .$(GOOBJ) .go
GOLINK = $(GOOBJ)l
CLEANFILES += *.$(GOOBJ)
.SUFFIXES: .$(GOOBJ) .go
-.go.$(GOOBJ):; $(GOC) $(GOFLAGS) $<
+.go.$(GOOBJ):; $(call v_echo,GOC)$(GOC) $(GOFLAGS) $<
LANGS += go
SOURCES += go-fringe.go
go-fringe: go-fringe.$(GOOBJ)
LANGS += go
SOURCES += go-fringe.go
go-fringe: go-fringe.$(GOOBJ)
+ $(call v_echo,GOLD)$(GOLINK) -o $@ $^
###--------------------------------------------------------------------------
### Smalltalk.
###--------------------------------------------------------------------------
### Smalltalk.
TARGETS += smalltalk-fringe.im
SOURCES += smalltalk-fringe.st
smalltalk-fringe.im: smalltalk-fringe.st
TARGETS += smalltalk-fringe.im
SOURCES += smalltalk-fringe.st
smalltalk-fringe.im: smalltalk-fringe.st
- echo "ObjectMemory snapshot: '$@.new'" | gst $^ -
- mv $@.new $@
+ $(call v_echo,GSTIM)echo "ObjectMemory snapshot: '$@.new'" | gst $^ -
+ $(V_HIDE)mv $@.new $@
+ $(call v_echo,GENSH){ echo '#! /bin/sh'; \
echo '"exec" "gst" "-I" "$@.im" "-f" "$$0" "$$@"'; \
echo 'ObjectMemory quit: (Node main: Smalltalk arguments)'; \
} >$@.new
echo '"exec" "gst" "-I" "$@.im" "-f" "$$0" "$$@"'; \
echo 'ObjectMemory quit: (Node main: Smalltalk arguments)'; \
} >$@.new
- chmod +x $@.new
- mv $@.new $@
+ $(V_HIDE)chmod +x $@.new && mv $@.new $@
###----- That's all, folks --------------------------------------------------
###----- That's all, folks --------------------------------------------------