We shouldn't be hard-coding user preferences into the cabal file that
everyone uses. Instead, GHC should support a variable like CFLAGS that
lets users and developers specify what warnings and optimizations they
would like to use. Instead, we have to fake it: I've standardized the
Gentoo HCFLAGS variable within the makefile, so that a few warnings
will be appended to the (exported) environment variable but otherwise
no flags will be forced by the cabal file.
This should work for me when I'm developing, because the warnings will
be appended to the HCFLAGS="-O2" that I have set in my environment. It
will work on Gentoo, because HCFLAGS are already passed to the cabal
build system in Gentoo. It will work(ish) everywhere else, because
nothing will get passed to the cabal build system, and that's okay.
OptionalConfiguration
Report
OptionalConfiguration
Report
- ghc-options:
- -Wall
- -fwarn-hi-shadowing
- -fwarn-missing-signatures
- -fwarn-name-shadowing
- -fwarn-orphans
- -fwarn-type-defaults
- -fwarn-tabs
- -fwarn-incomplete-record-updates
- -fwarn-monomorphism-restriction
- -fwarn-unused-do-bind
- -rtsopts
- -threaded
- -optc-O3
- -optc-march=native
-
test-suite testsuite
type: exitcode-stdio-1.0
test-suite testsuite
type: exitcode-stdio-1.0
tasty >= 0.8,
tasty-hunit >= 0.8
tasty >= 0.8,
tasty-hunit >= 0.8
- -- It's not entirely clear to me why I have to reproduce all of this.
- ghc-options:
- -Wall
- -fwarn-hi-shadowing
- -fwarn-missing-signatures
- -fwarn-name-shadowing
- -fwarn-orphans
- -fwarn-type-defaults
- -fwarn-tabs
- -fwarn-incomplete-record-updates
- -fwarn-monomorphism-restriction
- -fwarn-unused-do-bind
- -O2
doctest >= 0.9,
filemanip >= 0.3.6
doctest >= 0.9,
filemanip >= 0.3.6
- -- It's not entirely clear to me why I have to reproduce all of this.
- ghc-options:
- -Wall
- -fwarn-hi-shadowing
- -fwarn-missing-signatures
- -fwarn-name-shadowing
- -fwarn-orphans
- -fwarn-type-defaults
- -fwarn-tabs
- -fwarn-incomplete-record-updates
- -fwarn-monomorphism-restriction
- -fwarn-unused-do-bind
- -rtsopts
- -threaded
- -optc-O3
- -optc-march=native
BIN = dist/build/$(PN)/$(PN)
SRCS = $(shell find src/ -type f -name '*.hs')
BIN = dist/build/$(PN)/$(PN)
SRCS = $(shell find src/ -type f -name '*.hs')
+HCFLAGS += -Weverything \
+ -Wno-implicit-prelude \
+ -Wno-safe \
+ -Wno-unsafe \
+ -Wno-all-missed-specialisations \
+ -rtsopts \
+ -threaded
+
+
.PHONY : dist hlint
$(BIN): $(PN).cabal $(SRCS)
runghc Setup.hs configure --user
.PHONY : dist hlint
$(BIN): $(PN).cabal $(SRCS)
runghc Setup.hs configure --user
+ runghc Setup.hs build --ghc-options="${HCFLAGS}"
doc: $(PN).cabal $(SRCS)
runghc Setup.hs hscolour --all
doc: $(PN).cabal $(SRCS)
runghc Setup.hs hscolour --all
$(TESTSUITE_BIN): $(PN).cabal $(SRCS) $(TEST_SRCS)
runghc Setup.hs configure --user --enable-tests --prefix=/
$(TESTSUITE_BIN): $(PN).cabal $(SRCS) $(TEST_SRCS)
runghc Setup.hs configure --user --enable-tests --prefix=/
+ runghc Setup.hs build --ghc-options="${HCFLAGS}"
$(DOCTESTS_BIN): $(PN).cabal $(SRCS) $(TEST_SRCS)
runghc Setup.hs configure --user --enable-tests
$(DOCTESTS_BIN): $(PN).cabal $(SRCS) $(TEST_SRCS)
runghc Setup.hs configure --user --enable-tests
+ runghc Setup.hs build --ghc-options="${HCFLAGS}"
check: $(BIN) $(TESTSUITE_BIN) $(DOCTESTS_BIN)
runghc Setup.hs test
check: $(BIN) $(TESTSUITE_BIN) $(DOCTESTS_BIN)
runghc Setup.hs test