X-Git-Url: http://gitweb.michael.orlitzky.com/?p=hath.git;a=blobdiff_plain;f=makefile;h=3091caaf41b4d8b3f9b7cd990ffde55e10ead3ee;hp=b2265f8b28c3351ab088bceea2b6c3a1204c251c;hb=HEAD;hpb=3c4efe66ab7cb5f528c5a711976ca7c8e56213cf diff --git a/makefile b/makefile index b2265f8..d1e16e4 100644 --- a/makefile +++ b/makefile @@ -1,20 +1,62 @@ -BIN=hath +PN = hath +BIN = dist/build/$(PN)/$(PN) +SRCS = $(shell find src/ -type f -name '*.hs') -.PHONY : test +# Append these warnings to the HCFLAGS environment variable that gets +# passed as options to GHC. We want to see the warnings while developing +# but don't want them hard-coded in the cabal file for end users. +HCFLAGS += -Weverything \ + -Wno-implicit-prelude \ + -Wno-safe \ + -Wno-unsafe \ + -Wno-all-missed-specialisations \ + -Wno-prepositive-qualified-module \ + -Wno-missing-safe-haskell-mode \ + -Wno-missing-deriving-strategies \ + -Wno-missing-kind-signatures \ + -rtsopts \ + -threaded -all: $(BIN) +.PHONY : dist hlint -$(BIN): src/*.hs - ghc -O2 -Wall --make -o bin/${BIN} src/*.hs +$(BIN): $(PN).cabal $(SRCS) + runghc Setup.hs configure --user + runghc Setup.hs build --ghc-options="${HCFLAGS}" -profile: src/*.hs - ghc -O2 -Wall -prof -auto-all --make -o bin/$(BIN) src/*.hs +doc: $(PN).cabal $(SRCS) + runghc Setup.hs haddock --all \ + --hyperlink-source \ + --haddock-options="--ignore-all-exports" + + +# +# Tests +# +TESTSUITE_BIN = dist/build/testsuite/testsuite +TEST_SRCS := $(shell find test/ -type f -name '*.hs') + +$(TESTSUITE_BIN): $(PN).cabal $(SRCS) $(TEST_SRCS) + runghc Setup.hs configure --user --enable-tests --prefix=/ + runghc Setup.hs build --ghc-options="${HCFLAGS}" + + +check: $(BIN) $(TESTSUITE_BIN) + runghc Setup.hs test + + +# +# Misc +# clean: - rm -f bin/$(BIN) - rm -f src/*.hi - rm -f src/*.o - rm -f *.prof + runghc Setup.hs clean + +dist: + runghc Setup.hs configure + TAR_OPTIONS="--format=ustar" runghc Setup.hs sdist -test: - runghc -i"src" test/TestSuite.hs +hlint: + hlint --ignore="Use camelCase" \ + --ignore="Redundant bracket" \ + --color \ + src