# Makefile for FitSpec # # Copyright: (c) 2015-2020 Rudy Matela # License: 3-Clause BSD (see the file LICENSE) # Maintainer: Rudy Matela # # 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"