fitspec-0.4.8: Makefile
# Makefile for FitSpec
#
# Copyright: (c) 2015-2020 Rudy Matela
# License: 3-Clause BSD (see the file LICENSE)
# Maintainer: Rudy Matela <rudy@matela.com.br>
#
# This is faster than Cabal:
#
# Time Scratch Already compiled
# Makefile 14s 0s
# Cabal 90s 1s
#
# Cabal tries to "sandbox" the build of every benchmark program
# rebuilding everything for each of those.
# Misc variables
GHCIMPORTDIRS = src:bench
GHCFLAGS = -O2 $(shell grep -q "Arch Linux" /etc/lsb-release && echo -dynamic)
CABALOPTS=
HADDOCKFLAGS = --no-print-missing-docs
BENCHS = \
bench/avltrees \
bench/bools \
bench/digraphs \
bench/heaps \
bench/id \
bench/list \
bench/mergeheaps \
bench/pretty \
bench/sets \
bench/setsofsets \
bench/sieve \
bench/sorting \
bench/spring
EXTRA_BENCHS = $(BENCHS) \
bench/haskell-src \
bench/haskell-src-exts
EGS = \
eg/sorting \
eg/negation
EXTRA_EGS = $(EGS) \
eg/alga
TESTS = \
test/derive \
test/mutate \
test/showmutable \
test/utils
HADDOCKFLAGS = $(shell grep -q "Arch Linux" /etc/lsb-release && echo --optghc=-dynamic)
LIB_DEPS = base template-haskell leancheck cmdargs
all: mk/toplibs
benchs: $(BENCHS) all
egs: $(EGS) all
ghci: Test/FitSpec.ghci
test: all benchs egs $(TESTS)
./test/mutate
./test/showmutable
./test/derive
./test/utils
test-with-extra-deps: all $(EXTRA_BENCHS) $(EXTRA_EGS) $(TESTS)
./test/mutate
./test/showmutable
./test/derive
./test/utils
legacy-test:
make clean && make test -j8 GHC=ghc-8.2 GHCFLAGS="-Werror -dynamic"
make clean && make test -j8 GHC=ghc-8.0 GHCFLAGS="-Werror -dynamic"
make clean && make test -j8 GHC=ghc-7.10 GHCFLAGS="-Werror -dynamic"
make clean && make test -j8 GHC=ghc-7.8 GHCFLAGS="-Werror -dynamic"
make clean && make test -j8
test-via-cabal:
cabal configure --enable-tests --enable-benchmarks --ghc-options="-dynamic -Werror" $(CABALOPTS) && cabal build && cabal test
test-sdist:
./test/sdist
prepare-test-via-cabal:
rm -rf .cabal-sandbox cabal.sandbox.config
cabal sandbox init
cabal install --only-dependencies --enable-documentation
cabal configure --enable-tests --enable-benchmarks
legacy-test-via-cabal:
cabal-ghc-8.2 configure --enable-tests --enable-benchmarks --ghc-option=-dynamic && cabal-ghc-8.2 build && cabal-ghc-8.2 test
cabal-ghc-8.0 configure --enable-tests --enable-benchmarks --ghc-option=-dynamic && cabal-ghc-8.0 build && cabal-ghc-8.0 test
cabal-ghc-7.10 configure --enable-tests --enable-benchmarks --ghc-option=-dynamic && cabal-ghc-7.10 build && cabal-ghc-7.10 test
cabal-ghc-7.8 configure --enable-tests --enable-benchmarks --ghc-option=-dynamic && cabal-ghc-7.8 build && cabal-ghc-7.8 test
cabal clean
prepare-legacy-test-via-cabal:
rm -rf .cabal-sandbox cabal.sandbox.config
cabal sandbox init
cabal install --only-dependencies --enable-tests --enable-benchmarks --enable-documentation
cabal-ghc-8.2 install --only-dependencies --enable-tests --enable-benchmarks
cabal-ghc-8.0 install --only-dependencies --enable-tests --enable-benchmarks
cabal-ghc-7.10 install --only-dependencies --enable-tests --enable-benchmarks
cabal-ghc-7.8 install --only-dependencies --enable-tests --enable-benchmarks
clean: clean-hi-o clean-haddock
rm -f $(TESTS) $(BENCHS) $(EGS) {eg,bench}/*.{hi,o,dyn_hi,dyn_o}
# Debug: just list all source files compiled normally
list-hs:
$(LISTHS)
list-libs:
$(LISTLIBS)
hlint:
hlint \
--ignore "Use import/export shortcut" \
--ignore "Use first" \
--ignore "Use second" \
--ignore "Use ***" \
FitSpec.hs FitSpec bench tests
mk/toplibs: src/Test/FitSpec.o bench/Set.o
touch mk/toplibs
bench/avltrees: bench/AVLTree.o
bench/heaps: bench/Heap.o
bench/digraphs: bench/Digraph.o
include mk/haskell.mk
# NOTE:
#
# To run make depend, you may need to pass -package now to expose a package:
#
# make depend GHCFLAGS="-package haskell-src-exts"