GHC_FLAGS=-cpp -DEXTERNAL_PACKAGE -i.. -O2 -package QuickCheck-1.2.0.1 -fsimpl-tick-factor=100000
#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 ::
echo main | ghci $(GHC_FLAGS) Properties/ListVsSpec.hs
echo main | ghci $(GHC_FLAGS) Properties/ListVsBase.hs
stream ::
echo main | ghci $(GHC_FLAGS) Properties/StreamListVsSpec.hs
echo main | ghci $(GHC_FLAGS) Properties/StreamListVsBase.hs
echo main | ghci $(GHC_FLAGS) Properties/StreamVsSpecStream.hs
internal ::
echo main | ghci $(GHC_FLAGS) Properties/Internal.hs
strictness ::
echo main | ghci $(GHC_FLAGS) Strictness/ListVsSpec.hs
echo main | ghci $(GHC_FLAGS) Strictness/ListVsBase.hs
echo main | ghci $(GHC_FLAGS) Strictness/BaseVsSpec.hs
echo main | ghci $(GHC_FLAGS) Strictness/StreamListVsList.hs
list-compiled ::
ghc $(GHC_FLAGS) --make -fno-enable-rewrite-rules -o lp Properties/ListVsSpec.hs
ghc $(GHC_FLAGS) --make -fno-enable-rewrite-rules -o lp2 Properties/ListVsBase.hs
./lp
./lp2
stream-compiled ::
ghc $(GHC_FLAGS) --make -fno-enable-rewrite-rules -o sp Properties/StreamListVsSpec.hs
ghc $(GHC_FLAGS) --make -fno-enable-rewrite-rules -o sp2 Properties/StreamListVsBase.hs
ghc $(GHC_FLAGS) --make -fno-enable-rewrite-rules -o sp3 Properties/StreamVsSpecStream.hs
./sp
./sp2
./sp3
internal-compiled ::
ghc $(GHC_FLAGS) --make -fno-enable-rewrite-rules -o ip Properties/Internal.hs
./ip
strictness-compiled ::
ghc $(GHC_FLAGS) --make -fno-enable-rewrite-rules -o strp Strictness/ListVsSpec.hs
ghc $(GHC_FLAGS) --make -fno-enable-rewrite-rules -o strp2 Strictness/ListVsBase.hs
ghc $(GHC_FLAGS) --make -fno-enable-rewrite-rules -o strp3 Strictness/BaseVsSpec.hs
ghc $(GHC_FLAGS) --make -fno-enable-rewrite-rules -o strp4 Strictness/StreamListVsList.hs
./strp
./strp2
./strp3
./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