From 31fe23ca831165da495cf4b99139f2e544b0dacd Mon Sep 17 00:00:00 2001 From: Michael Orlitzky Date: Sat, 1 Feb 2020 23:18:04 -0500 Subject: [PATCH] makefile: move ghc-options from the cabal file into the makefile. 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 | 45 --------------------------------------------- makefile | 15 ++++++++++++--- 2 files changed, 12 insertions(+), 48 deletions(-) diff --git a/mailbox-count.cabal b/mailbox-count.cabal index 615d8aa..74bf685 100644 --- a/mailbox-count.cabal +++ b/mailbox-count.cabal @@ -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 diff --git a/makefile b/makefile index 6a99594..420039b 100644 --- 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 -- 2.43.2