X-Git-Url: https://git.distorted.org.uk/~mdw/fringe/blobdiff_plain/d888ccd559a84c180936e9adadae1f655f15356e..e62da1cffe38e72a832ea39c0e293f4db9848cf1:/Makefile diff --git a/Makefile b/Makefile index b79bf6a..7a4f553 100644 --- a/Makefile +++ b/Makefile @@ -21,6 +21,19 @@ 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. CLEANFILES += test.* @@ -59,62 +72,67 @@ CC = gcc 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 - $(CC) -o $@ $^ + $(call v_echo,CCLD)$(CC) -o $@ $^ ###-------------------------------------------------------------------------- ### Haskell. HC = ghc -HFLAGS = -O2 -XFlexibleInstances +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 - $(HC) -o $@ $^ + $(call v_echo,HCLD)$(HC) -o $@ $^ ###-------------------------------------------------------------------------- ### Icon. ICONT = icont -IFLAGS = -u -fa +IFLAGS = -u -s -fa LANGS += icon SOURCES += icon-fringe.icn icon-fringe: icon-fringe.icn - $(ICONT) -o $@ $^ + $(call v_echo,ICONT)$(ICONT) $(IFLAGS) -o $@ $^ ###-------------------------------------------------------------------------- ### Common Lisp. -CLEANFILES += *.core +CLEANFILES += *.core *.fasl + +.SUFFIXES: .lisp .fasl +.lisp.fasl: + $(call v_echo,CL)sbcl --noinform --eval \ + '(quit :unix-status (if (compile-file "$<" :verbose nil :print nil) 0 1))' 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 +cl-fringe: cl-fringe.fasl + $(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#. FSC = fsc +FSCFLAGS = CLEANFILES += *.exe .SUFFIXES: .fs .exe -.fs.exe:; fsc -o $@ $< +.fs.exe:; $(call v_echo,FSC)$(FSC) --nologo $(FSCFLAGS) -o $@ $< LANGS += f\# SOURCES += f\#-fringe.fs f\#-fringe: f\#-fringe.exe - chmod +x $< - cp $< $@ + $(call v_echo,CP)chmod +x $< && cp $< $@ ###-------------------------------------------------------------------------- ### Scheme. @@ -122,12 +140,12 @@ f\#-fringe: f\#-fringe.exe 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 - $(SCMC) -o $@ $^ + $(call v_echo,SCMLD)$(SCMC) -o $@ $^ ###-------------------------------------------------------------------------- ### Go. @@ -137,12 +155,12 @@ GOC = $(GOOBJ)g 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) - $(GOLINK) -o $@ $^ + $(call v_echo,GOLD)$(GOLINK) -o $@ $^ ###-------------------------------------------------------------------------- ### Smalltalk. @@ -151,15 +169,14 @@ LANGS += smalltalk 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 $@ smalltalk-fringe: - { echo '#! /bin/sh'; \ + $(call v_echo,GENSH){ echo '#! /bin/sh'; \ 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 --------------------------------------------------