summaryrefslogtreecommitdiff
path: root/mk/warnings.mk
diff options
context:
space:
mode:
authorThomas Miedema <thomasmiedema@gmail.com>2015-04-02 11:41:47 +0200
committerThomas Miedema <thomasmiedema@gmail.com>2015-04-02 11:41:51 +0200
commit4c1e1c870e294990a44d8d6837742fb0d00f5456 (patch)
treec673444cd16216de6cc70654beb5b6f49fd21094 /mk/warnings.mk
parent9b66a7f3d04ed93972e7daa1c6307c8d68ac3720 (diff)
downloadhaskell-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/warnings.mk')
-rw-r--r--mk/warnings.mk118
1 files changed, 118 insertions, 0 deletions
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