1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
|
# NOTE: `cabal` will take care to build the local `alex` executable and place it into $PATH for us to pick up
ALEX:=$(shell which alex)
# NOTE: This assumes that a working `ghc` is on $PATH; this may not necessarily be the same GHC used by `cabal` for building `alex`.
HC=ghc
HC_OPTS=-Wall -fno-warn-missing-signatures -fno-warn-unused-imports -fno-warn-tabs -Werror
.PRECIOUS: %.n.hs %.g.hs %.o %.exe %.bin
ifeq "$(TARGETPLATFORM)" "i386-unknown-mingw32"
HS_PROG_EXT = .exe
else
HS_PROG_EXT = .bin
endif
TESTS = \
basic_typeclass.x \
basic_typeclass_bytestring.x \
default_typeclass.x \
gscan_typeclass.x \
monad_typeclass.x \
monad_typeclass_bytestring.x \
monadUserState_typeclass.x \
monadUserState_typeclass_bytestring.x \
null.x \
posn_typeclass.x \
posn_typeclass_bytestring.x \
strict_typeclass.x \
simple.x \
tokens.x \
tokens_bytestring.x \
tokens_bytestring_unicode.x \
tokens_gscan.x \
tokens_monad_bytestring.x \
tokens_monadUserState_bytestring.x \
tokens_posn.x \
tokens_posn_bytestring.x \
tokens_scan_user.x \
tokens_strict_bytestring.x \
unicode.x
# NOTE: `cabal` will set the `alex_datadir` env-var accordingly before invoking the test-suite
#TEST_ALEX_OPTS = --template=../data/
TEST_ALEX_OPTS=
%.n.hs : %.x
$(ALEX) $(TEST_ALEX_OPTS) $< -o $@
%.g.hs : %.x
$(ALEX) $(TEST_ALEX_OPTS) -g $< -o $@
CLEAN_FILES += *.n.hs *.g.hs *.info *.hi *.o *.bin *.exe
ALL_TEST_HS = $(shell echo $(TESTS) | sed -e 's/\([^\. ]*\)\.\(l\)\{0,1\}x/\1.n.hs \1.g.hs/g')
ALL_TESTS = $(patsubst %.hs, %.run, $(ALL_TEST_HS))
%.run : %$(HS_PROG_EXT)
./$<
%$(HS_PROG_EXT) : %.hs
$(HC) $(HC_OPTS) -package array -package bytestring $($*_LD_OPTS) $< -o $@
all :: $(ALL_TESTS)
.PHONY: clean
clean:
rm -f $(CLEAN_FILES)
# NOTE: The `../dist` path belows don't aren't accurate anymore for recent cabals
interact:
ghci -cpp -i../src -i../dist/build/autogen -i../dist/build/alex/alex-tmp Main -fbreak-on-exception
# -args='--template=.. simple.x -o simple.n.hs'
# :set args --template=.. simple.x -o simple.n.hs
|