]> gitweb.michael.orlitzky.com - mailbox-count.git/commitdiff
makefile: move ghc-options from the cabal file into the makefile.
authorMichael Orlitzky <michael@orlitzky.com>
Sun, 2 Feb 2020 04:18:04 +0000 (23:18 -0500)
committerMichael Orlitzky <michael@orlitzky.com>
Sun, 2 Feb 2020 04:18:04 +0000 (23:18 -0500)
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.

mailbox-count.cabal
makefile

index 615d8aa9fee26313b38913a989bed5db3e648e78..74bf6856bea132e299492bbc3560038b0bcc83c0 100644 (file)
@@ -177,22 +177,6 @@ executable mailbox-count
     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
@@ -212,19 +196,6 @@ test-suite testsuite
     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
 
 
 test-suite doctests
@@ -237,22 +208,6 @@ test-suite doctests
     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
 
 
 source-repository head
index 6a99594b9b3afb28aec8d8b378a2a2f6f5add8da..420039b64e75f02396647aa8f5d0846f5077d4df 100644 (file)
--- a/makefile
+++ b/makefile
@@ -2,11 +2,20 @@ PN            = mailbox-count
 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
-       runghc Setup.hs build
+       runghc Setup.hs build --ghc-options="${HCFLAGS}"
 
 doc: $(PN).cabal $(SRCS)
        runghc Setup.hs hscolour --all
@@ -24,12 +33,12 @@ 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
+       runghc Setup.hs build --ghc-options="${HCFLAGS}"
 
 
 $(DOCTESTS_BIN): $(PN).cabal $(SRCS) $(TEST_SRCS)
        runghc Setup.hs configure --user --enable-tests
-       runghc Setup.hs build
+       runghc Setup.hs build --ghc-options="${HCFLAGS}"
 
 check: $(BIN) $(TESTSUITE_BIN) $(DOCTESTS_BIN)
        runghc Setup.hs test