packages feed

stream-fusion-0.1: tests/Makefile

GHC_FLAGS=-cpp -DEXTERNAL_PACKAGE -i.. -O2 -fglasgow-exts -fbang-patterns
#GHC_FLAGS="-hide-package arrows-0.2"
GHC=ghc

# run everything!
all :: internal list stream strictness list-compiled stream-compiled internal-compiled strictness-compiled

# ---------------------------------------------------------------
# testing

list ::
	runghc  $(GHC_FLAGS) Properties/ListVsSpec.hs
	runghc  $(GHC_FLAGS) Properties/ListVsBase.hs
stream ::
	runghc  $(GHC_FLAGS) Properties/StreamListVsSpec.hs
	runghc  $(GHC_FLAGS) Properties/StreamListVsBase.hs
	runghc  $(GHC_FLAGS) Properties/StreamVsSpecStream.hs
internal ::
	runghc  $(GHC_FLAGS) Properties/Internal.hs
strictness ::
	runghc  $(GHC_FLAGS) Strictness/ListVsSpec.hs
	runghc  $(GHC_FLAGS) Strictness/ListVsBase.hs
	runghc  $(GHC_FLAGS) Strictness/BaseVsSpec.hs
	runghc  $(GHC_FLAGS) Strictness/StreamListVsList.hs

list-compiled ::
	ghc  $(GHC_FLAGS) --make -frules-off -o lp Properties/ListVsSpec.hs
	ghc  $(GHC_FLAGS) --make -frules-off -o lp2 Properties/ListVsBase.hs
	time ./lp
	time ./lp2
stream-compiled ::
	ghc  $(GHC_FLAGS) --make -frules-off -o sp Properties/StreamListVsSpec.hs
	ghc  $(GHC_FLAGS) --make -frules-off -o sp2 Properties/StreamListVsBase.hs
	ghc  $(GHC_FLAGS) --make -frules-off -o sp3 Properties/StreamVsSpecStream.hs
	time ./sp
	time ./sp2
	time ./sp3
internal-compiled ::
	ghc  $(GHC_FLAGS) --make -frules-off -o ip Properties/Internal.hs
	time ./ip
strictness-compiled ::
	ghc  $(GHC_FLAGS) --make -frules-off -o strp Strictness/ListVsSpec.hs
	ghc  $(GHC_FLAGS) --make -frules-off -o strp2 Strictness/ListVsBase.hs
	ghc  $(GHC_FLAGS) --make -frules-off -o strp3 Strictness/BaseVsSpec.hs
	ghc  $(GHC_FLAGS) --make -frules-off -o strp4 Strictness/StreamListVsList.hs
	time ./strp
	time ./strp2
	time ./strp3
	time ./strp4

# ---------------------------------------------------------------
# benchmarking

bench ::
	$(GHC) $(GHC_FLAGS) --make Bench/ListVsBase.hs -o bench
	$(GHC) $(GHC_FLAGS) --make Bench/StreamVsList.hs -o bench2
	./bench
	./bench2

fusetest :: compiled
	$(GHC) $(GHC_FLAGS) -c -no-recomp -ddump-simpl-stats \
		 FuseTest.hs

compiled :: ../Data/Stream.hs ../Data/List/Stream.hs \
	Bench/Utils.hs Properties/Utils.hs Strictness/Utils.hs \
	Spec/List.hs Spec/ListExts.hs Spec/PreludeList.hs \
	Properties/Monomorphic/Base.hs \
	Properties/Monomorphic/List.hs \
	Properties/Monomorphic/Spec.hs \
	Properties/Monomorphic/SpecStream.hs \
	Properties/Monomorphic/Stream.hs \
	Properties/Monomorphic/StreamList.hs \
	Strictness/Monomorphic/Base.hs \
	Strictness/Monomorphic/List.hs \
	Strictness/Monomorphic/Spec.hs \
	Strictness/Monomorphic/StreamList.hs
	$(GHC) $(GHC_FLAGS) --make $^

Bench/bigdata :
	cat Bench/data Bench/data Bench/data Bench/data Bench/data > Bench/bigdata

# ---------------------------------------------------------------
# cleaning

clean :
	rm -f *.hi *.o ../Data/*.o ../Data/*.hi ../Data/List/*.o ../Data/List/*.hi
	rm -f Spec/*.o Spec/*.hi Bench/*.o Bench/*.hi
	rm -f Properties/*.o Properties/*.hi Strictness/*.o Strictness/*.hi
	rm -f bench bench2 lp lp2 sp sp2 sp3 ip strp strp2 strp3