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