packages feed

alms-0.6.1: src/Makefile

## The Cabalized Makefile in the parent directory is the
## preferred way to build, but sometimes this is convenient.

GHC      = ghc
GHCI     = ghci
EXE      = alms
EXAMPLES = ../examples
SRC      = $(HS_SRC) $(HSBOOT_SRC)
HS_SRC   = *.hs \
           Alt/*.hs \
           AST/*.hs \
           Basis/*.hs \
           Basis/Channel/*.hs \
           Data/*.hs \
           Message/*.hs \
           Meta/*.hs \
           Statics/*.hs \
           Syntax/*.hs \
           Type/*.hs \
           Util/*.hs
HSBOOT_SRC  = AST/*.hs-boot Statics/*.hs-boot

HCOPTS  = -W -Wall -O0 $(EDITING) $(PARSEC) $(HIOPTS)
HIOPTS  = $(NOWARN) $(UNICODE) $(LANGUAGE)
EDITING = -DUSE_READLINE=System.Console.Editline.Readline
PARSEC  = -DPARSEC_VERSION=3
NOWARN  = -fno-warn-unused-do-bind -fno-warn-orphans
UNICODE = -DUNICODE
LANGUAGE= `sed 's/^/-X/' extensions.txt`

PROFILING = -prof -auto-all -osuf p_o -rtsopts

$(EXE) $(EXE)-%: $(SRC)
	$(GHC) -o $@ --make Main.hs $(HCOPTS)

$(EXE)_p: $(EXE)
	$(GHC) -o $@ --make Main.hs $(HCOPTS) $(PROFILING)

%.hi: $(HS_SRC) $(HSBOOT_SRC)
	$(GHC) --make `echo "$*" | sed 's@\.@/@g'`.hs $(HCOPTS)

%.i:
	$(GHCI) \*`echo "$*" | sed 's@\.@/@g'` $(HIOPTS)

$(EXE)-%:     GHC     = ghc-$*
$(EXE)-6.%:   PARSEC  = -DPARSEC_VERSION=2
$(EXE)-6.%:   HCOPTS += -F -pgmF ../ghc6-quasis.sh

not-compiled:
	@find . -name \*.hs | sed 's@^\./@@' | while read hs; do \
		hi=`echo $$hs | sed 's/hs$$/hi/'`; \
		test -f $$hi || echo $$hs; \
	done

clean:
	$(RM) $(HS_SRC:.hs=.hi) $(HS_SRC:.hs=.o)
	$(RM) $(HSBOOT_SRC:.hs-boot=.hi-boot) $(HSBOOT_SRC:.hs-boot=.o-boot)
	$(RM) $(HS_SRC:.hs=.p_o) $(HSBOOT_SRC:.hs-boot=.p_o-boot) *.prof
	$(RM) $(EXE) $(EXE)-6.*

wc.%:
	find .. -name \*."$*" | xargs wc -l | sed 's/$$/ lines/'
	@find .. -name \*."$*" | wc -l | sed 's/$$/ total .$* files/'

test tests: $(EXE)
	@$(EXAMPLES)/run-tests.sh ./$(EXE) $(EXAMPLES)

examples: $(EXE)
	@for i in $(EXAMPLES)/ex*.alms; do \
	  echo "$$i"; \
	  head -1 "$$i"; \
	  ./$(EXE) "$$i"; \
	  echo; \
	done
	@for i in $(EXAMPLES)/*.in; do \
	  out="`echo $$i | sed 's/\.in$$/.out/'`"; \
	  src="`echo $$i | sed 's/-[[:digit:]]*\.in$$/.alms/'`"; \
	  echo "$$i"; \
	  ./$(EXE) "$$src" < "$$i"; \
	done