diff options
author | Thomas Miedema <thomasmiedema@gmail.com> | 2015-04-02 11:41:47 +0200 |
---|---|---|
committer | Thomas Miedema <thomasmiedema@gmail.com> | 2015-04-02 11:41:51 +0200 |
commit | 4c1e1c870e294990a44d8d6837742fb0d00f5456 (patch) | |
tree | c673444cd16216de6cc70654beb5b6f49fd21094 /mk | |
parent | 9b66a7f3d04ed93972e7daa1c6307c8d68ac3720 (diff) | |
download | haskell-4c1e1c870e294990a44d8d6837742fb0d00f5456.tar.gz |
Disable same warnings for normal builds as for validate (#10223)
The default validate settings currently disable some warnings in the
libraries. This patch moves those settings to a new file called
`mk/warnings.mk`, and applies them also to normal builds.
Through uncommenting a line in build.mk, developers can now build with
-Werror.
-Werror is not the default, because:
* We can not guarantee that the build is warning free on platforms we
don't run regularly run validate (as part of continuous integration
systems), and we still want the build to go through on those
platforms.
* quoting rwbarton on irc > "I think -Werror by default has come up in
the past and the argument was that it is too annoying when you are
doing nontrivial development"
Reviewed By: austin
Differential Revision: https://phabricator.haskell.org/D785
Diffstat (limited to 'mk')
-rw-r--r-- | mk/build.mk.sample | 3 | ||||
-rw-r--r-- | mk/validate-settings.mk | 118 | ||||
-rw-r--r-- | mk/warnings.mk | 118 |
3 files changed, 121 insertions, 118 deletions
diff --git a/mk/build.mk.sample b/mk/build.mk.sample index 7befbc46d0..1e95bdd1a7 100644 --- a/mk/build.mk.sample +++ b/mk/build.mk.sample @@ -57,6 +57,9 @@ # Please use V = 1 when reporting GHC bugs. V = 1 +# Should all enabled warnings (see mk/warnings.mk) be turned into errors? +#WERROR=-Werror + # After stage 1 and the libraries have been built, you can uncomment this line: #stage=2 diff --git a/mk/validate-settings.mk b/mk/validate-settings.mk index 44222d0f36..cfc72343b0 100644 --- a/mk/validate-settings.mk +++ b/mk/validate-settings.mk @@ -2,43 +2,8 @@ # override these. See also mk/custom-settings.mk. WERROR = -Werror -SRC_CC_WARNING_OPTS = -SRC_HC_WARNING_OPTS = - HADDOCK_DOCS = YES -##################### -# Warnings - -ifneq "$(GccIsClang)" "YES" - -# Debian doesn't turn -Werror=unused-but-set-variable on by default, so -# we turn it on explicitly for consistency with other users -ifeq "$(GccLT46)" "NO" -# Never set the flag on Windows as the host gcc may be too old. -ifneq "$(HostOS_CPP)" "mingw32" -SRC_CC_WARNING_OPTS += -Werror=unused-but-set-variable -endif -# gcc 4.6 gives 3 warning for giveCapabilityToTask not being inlined -SRC_CC_WARNING_OPTS += -Wno-error=inline -endif - -else - -# Don't warn about unknown GCC pragmas when using clang -SRC_CC_WARNING_OPTS += -Wno-unknown-pragmas - -endif - -SRC_CC_OPTS += $(WERROR) -Wall -SRC_HC_OPTS += $(WERROR) -Wall - -GhcStage1HcOpts += -fwarn-tabs -GhcStage2HcOpts += -fwarn-tabs - -utils/hpc_dist-install_EXTRA_HC_OPTS += -fwarn-tabs - -##################### SRC_HC_OPTS += -H64m -O0 GhcStage1HcOpts += -O @@ -84,86 +49,3 @@ endif ifeq "$(ValidateSpeed)" "SLOW" GhcStage2HcOpts += -DDEBUG endif - -###################################################################### -# Disable some warnings in packages we use - -# Cabal doesn't promise to be warning-free -utils/ghc-cabal_dist_EXTRA_HC_OPTS += -w -libraries/Cabal/Cabal_dist-boot_EXTRA_HC_OPTS += -w -libraries/Cabal/Cabal_dist-install_EXTRA_HC_OPTS += -w - -# Turn off import warnings for bad unused imports -libraries/containers_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports -libraries/bytestring_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports -utils/haddock_dist_EXTRA_HC_OPTS += -fno-warn-unused-imports -libraries/vector_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports - -# haddock's attoparsec uses deprecated `inlinePerformIO` -utils/haddock_dist_EXTRA_HC_OPTS += -fno-warn-deprecations - -# containers uses bitSize at the moment -libraries/containers_dist-install_EXTRA_HC_OPTS += -fno-warn-deprecations -libraries/containers_dist-install_EXTRA_HC_OPTS += -fno-warn-redundant-constraints - -# On Windows, there are also some unused import warnings -ifeq "$(HostOS_CPP)" "mingw32" -libraries/time_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports -fno-warn-identities -endif - -# haskeline has warnings about deprecated use of block/unblock -libraries/haskeline_dist-install_EXTRA_HC_OPTS += -fno-warn-deprecations -libraries/haskeline_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports -libraries/haskeline_dist-install_EXTRA_HC_OPTS += -fno-warn-redundant-constraints - -# binary upstream has some warnings, so don't use -Werror for it -libraries/binary_dist-boot_EXTRA_HC_OPTS += -Wwarn -libraries/binary_dist-install_EXTRA_HC_OPTS += -Wwarn - -# temporarily turn off unused-imports warnings for pretty -libraries/pretty_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports - -# primitive has a warning about deprecated use of GHC.IOBase -libraries/primitive_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports - -# temporarily turn off unused-imports warnings for terminfo -libraries/terminfo_dist-boot_EXTRA_HC_OPTS += -fno-warn-unused-imports -libraries/terminfo_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports - -# vector has some unused match warnings -libraries/vector_dist-install_EXTRA_HC_OPTS += -Wwarn - -# temporarily turn off unused-imports warnings for xhtml -libraries/xhtml_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports - -libraries/dph/dph-base_dist-install_EXTRA_HC_OPTS += -Wwarn -libraries/dph/dph-prim-interface_dist-install_EXTRA_HC_OPTS += -Wwarn -libraries/dph/dph-prim-seq_dist-install_EXTRA_HC_OPTS += -Wwarn -libraries/dph/dph-prim-par_dist-install_EXTRA_HC_OPTS += -Wwarn -libraries/dph/dph-lifted-common-install_EXTRA_HC_OPTS += -Wwarn - -# transformers has unused function parameters warnings -libraries/transformers_dist-boot_EXTRA_HC_OPTS += -fno-warn-unused-matches -fno-warn-unused-imports -libraries/transformers_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-matches -fno-warn-unused-imports -libraries/transformers_dist-install_EXTRA_HC_OPTS += -fno-warn-redundant-constraints - -# Turn of trustworthy-safe warning -libraries/base_dist-install_EXTRA_HC_OPTS += -fno-warn-trustworthy-safe -libraries/ghc-prim_dist-install_EXTRA_HC_OPTS += -fno-warn-trustworthy-safe -libraries/Win32_dist-install_EXTRA_HC_OPTS += -fno-warn-trustworthy-safe - -# Temporarely disable inline rule shadowing warning -libraries/template-haskell_dist-install_EXTRA_HC_OPTS += -fno-warn-inline-rule-shadowing - -# We need -fno-warn-deprecated-flags to avoid failure with -Werror -GhcLibHcOpts += -fno-warn-deprecated-flags -GhcBootLibHcOpts += -fno-warn-deprecated-flags - -# The warning suppression flag below is a temporary kludge. While working with -# modules that contain tabs, please de-tab them so this flag can be eventually -# removed. See -# http://ghc.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#TabsvsSpaces -# for details -# -GhcLibHcOpts += -fno-warn-tabs -GhcBootLibHcOpts += -fno-warn-tabs diff --git a/mk/warnings.mk b/mk/warnings.mk new file mode 100644 index 0000000000..30e13ba6b8 --- /dev/null +++ b/mk/warnings.mk @@ -0,0 +1,118 @@ +SRC_CC_WARNING_OPTS = +SRC_HC_WARNING_OPTS = + + +##################### +# Warnings + +ifneq "$(GccIsClang)" "YES" + +# Debian doesn't turn -Werror=unused-but-set-variable on by default, so +# we turn it on explicitly for consistency with other users +ifeq "$(GccLT46)" "NO" +# Never set the flag on Windows as the host gcc may be too old. +ifneq "$(HostOS_CPP)" "mingw32" +SRC_CC_WARNING_OPTS += -Werror=unused-but-set-variable +endif +# gcc 4.6 gives 3 warning for giveCapabilityToTask not being inlined +SRC_CC_WARNING_OPTS += -Wno-error=inline +endif + +else + +# Don't warn about unknown GCC pragmas when using clang +SRC_CC_WARNING_OPTS += -Wno-unknown-pragmas + +endif + +SRC_CC_OPTS += -Wall +SRC_HC_OPTS += -Wall + +GhcStage1HcOpts += -fwarn-tabs +GhcStage2HcOpts += -fwarn-tabs + +utils/hpc_dist-install_EXTRA_HC_OPTS += -fwarn-tabs + + +###################################################################### +# Disable some warnings in packages we use + +# Cabal doesn't promise to be warning-free +utils/ghc-cabal_dist_EXTRA_HC_OPTS += -w +libraries/Cabal/Cabal_dist-boot_EXTRA_HC_OPTS += -w +libraries/Cabal/Cabal_dist-install_EXTRA_HC_OPTS += -w + +# Turn off import warnings for bad unused imports +libraries/containers_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports +libraries/bytestring_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports +utils/haddock_dist_EXTRA_HC_OPTS += -fno-warn-unused-imports +libraries/vector_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports + +# haddock's attoparsec uses deprecated `inlinePerformIO` +utils/haddock_dist_EXTRA_HC_OPTS += -fno-warn-deprecations + +# containers uses bitSize at the moment +libraries/containers_dist-install_EXTRA_HC_OPTS += -fno-warn-deprecations +libraries/containers_dist-install_EXTRA_HC_OPTS += -fno-warn-redundant-constraints + +# On Windows, there are also some unused import warnings +ifeq "$(HostOS_CPP)" "mingw32" +libraries/time_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports -fno-warn-identities +endif + +# haskeline has warnings about deprecated use of block/unblock +libraries/haskeline_dist-install_EXTRA_HC_OPTS += -fno-warn-deprecations +libraries/haskeline_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports +libraries/haskeline_dist-install_EXTRA_HC_OPTS += -fno-warn-redundant-constraints + +# binary upstream has some warnings, so don't use -Werror for it +libraries/binary_dist-boot_EXTRA_HC_OPTS += -Wwarn +libraries/binary_dist-install_EXTRA_HC_OPTS += -Wwarn + +# temporarily turn off unused-imports warnings for pretty +libraries/pretty_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports + +# primitive has a warning about deprecated use of GHC.IOBase +libraries/primitive_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports + +# temporarily turn off unused-imports warnings for terminfo +libraries/terminfo_dist-boot_EXTRA_HC_OPTS += -fno-warn-unused-imports +libraries/terminfo_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports + +# vector has some unused match warnings +libraries/vector_dist-install_EXTRA_HC_OPTS += -Wwarn + +# temporarily turn off unused-imports warnings for xhtml +libraries/xhtml_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-imports + +libraries/dph/dph-base_dist-install_EXTRA_HC_OPTS += -Wwarn +libraries/dph/dph-prim-interface_dist-install_EXTRA_HC_OPTS += -Wwarn +libraries/dph/dph-prim-seq_dist-install_EXTRA_HC_OPTS += -Wwarn +libraries/dph/dph-prim-par_dist-install_EXTRA_HC_OPTS += -Wwarn +libraries/dph/dph-lifted-common-install_EXTRA_HC_OPTS += -Wwarn + +# transformers has unused function parameters warnings +libraries/transformers_dist-boot_EXTRA_HC_OPTS += -fno-warn-unused-matches -fno-warn-unused-imports +libraries/transformers_dist-install_EXTRA_HC_OPTS += -fno-warn-unused-matches -fno-warn-unused-imports +libraries/transformers_dist-install_EXTRA_HC_OPTS += -fno-warn-redundant-constraints + +# Turn of trustworthy-safe warning +libraries/base_dist-install_EXTRA_HC_OPTS += -fno-warn-trustworthy-safe +libraries/ghc-prim_dist-install_EXTRA_HC_OPTS += -fno-warn-trustworthy-safe +libraries/Win32_dist-install_EXTRA_HC_OPTS += -fno-warn-trustworthy-safe + +# Temporarely disable inline rule shadowing warning +libraries/template-haskell_dist-install_EXTRA_HC_OPTS += -fno-warn-inline-rule-shadowing + +# We need -fno-warn-deprecated-flags to avoid failure with -Werror +GhcLibExtraHcOpts += -fno-warn-deprecated-flags +GhcBootLibExtraHcOpts += -fno-warn-deprecated-flags + +# The warning suppression flag below is a temporary kludge. While working with +# modules that contain tabs, please de-tab them so this flag can be eventually +# removed. See +# http://ghc.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#TabsvsSpaces +# for details +# +GhcLibExtraHcOpts += -fno-warn-tabs +GhcBootLibExtraHcOpts += -fno-warn-tabs |