warnings.mk 6.43 KB
Newer Older
1 2 3 4 5 6 7 8 9 10
# See Note [Order of warning flags].
SRC_CC_OPTS     += -Wall $(WERROR)
SRC_HC_OPTS     += -Wall
# Don't add -Werror to SRC_HC_OPTS_STAGE0 (or SRC_HC_OPTS), because otherwise
# validate may unnecessarily fail when booting with an older compiler.
# It would be better to only exclude certain warnings from becoming errors
# (e.g. '-Werror -Wno-error=unused-imports -Wno-error=...'), but -Wno-error
# isn't supported yet (https://ghc.haskell.org/trac/ghc/wiki/Design/Warnings).
#
# See Note [Stage number in build variables] in mk/config.mk.in.
11 12
SRC_HC_OPTS_STAGE1 += $(WERROR)
SRC_HC_OPTS_STAGE2 += $(WERROR)
13

Gabor Greif's avatar
Gabor Greif committed
14 15
# Enable -Wcpp-undef for GHC components only, as we don't (currently) expect
# core libraries to build in this configuration (see #13636).
16 17 18
GhcRtsHcOpts    += -Wcpp-undef
GhcStage1HcOpts += -Wcpp-undef
GhcStage2HcOpts += -Wcpp-undef
19 20 21 22

ifneq "$(GccIsClang)" "YES"

# Debian doesn't turn -Werror=unused-but-set-variable on by default, so
23 24
# we turn it on explicitly for consistency with other users
ifeq "$(GccLT46)" "NO"
25 26 27 28
# 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
29
endif
30

31 32
# Suppress the warning about __sync_fetch_and_nand (#9678).
libraries/ghc-prim/cbits/atomic_CC_OPTS += -Wno-sync-nand
33 34 35
# gcc 4.6 gives 3 warnings for giveCapabilityToTask not being inlined
# gcc 4.4 gives 2 warnings for lockClosure not being inlined
SRC_CC_WARNING_OPTS += -Wno-error=inline
36

37 38 39 40 41 42 43
else

# Don't warn about unknown GCC pragmas when using clang
SRC_CC_WARNING_OPTS += -Wno-unknown-pragmas

endif

44 45
SRC_HC_WARNING_OPTS_STAGE1 += -Wnoncanonical-monad-instances
SRC_HC_WARNING_OPTS_STAGE2 += -Wnoncanonical-monad-instances
46 47 48 49 50


######################################################################
# Disable some warnings in packages we use

51 52 53 54 55
# NB: The GHC version used for bootstrapping may not support the
# `-W`-aliases for `-f(no-)warn` flags introduced in GHC 8.0, so in
# some cases (watch out for make-variables with a name containing
# "boot") we need to pass the legacy `-f(no-)warn`-flags instead.

56
# Libraries that have dubious RULES
57
libraries/bytestring_dist-install_EXTRA_HC_OPTS += -Wno-inline-rule-shadowing
58

59
# Turn off import warnings for bad unused imports
60 61
utils/haddock_dist_EXTRA_HC_OPTS += -Wno-unused-imports
libraries/vector_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
62
libraries/directory_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
63 64

# haddock's attoparsec uses deprecated `inlinePerformIO`
65
utils/haddock_dist_EXTRA_HC_OPTS += -Wno-deprecations
66 67
# binary too
libraries/binary_dist-install_EXTRA_HC_OPTS += -Wno-deprecations
68

69
# On Windows, there are/were some unused import warnings
70
ifeq "$(HostOS_CPP)" "mingw32"
71
libraries/time_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports -Wno-identities
72 73
endif

Tamar Christina's avatar
Tamar Christina committed
74 75 76 77 78
# On Windows, the pattern for CallConv is already exaustive. Ignore the warning
ifeq "$(HostOS_CPP)" "mingw32"
libraries/ghci_dist-install_EXTRA_HC_OPTS += -Wno-overlapping-patterns
endif

79
# haskeline has warnings about deprecated use of block/unblock
80 81 82
libraries/haskeline_dist-install_EXTRA_HC_OPTS += -Wno-deprecations
libraries/haskeline_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
libraries/haskeline_dist-install_EXTRA_HC_OPTS += -Wno-redundant-constraints
83
libraries/haskeline_dist-install_EXTRA_HC_OPTS += -Wno-simplifiable-class-constraints
84 85 86


# temporarily turn off unused-imports warnings for pretty
87
libraries/pretty_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
88 89

# primitive has a warning about deprecated use of GHC.IOBase
90
libraries/primitive_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
91 92 93 94 95
# primitive uses deprecated Control.Monad.Trans.Error
libraries/primitive_dist-install_EXTRA_HC_OPTS += -Wno-deprecations

# See https://github.com/haskell/random/pull/20
libraries/random_dist-install_EXTRA_HC_OPTS += -Wno-redundant-constraints
96 97 98

# temporarily turn off unused-imports warnings for terminfo
libraries/terminfo_dist-boot_EXTRA_HC_OPTS += -fno-warn-unused-imports
99
libraries/terminfo_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
100 101 102 103 104

# vector has some unused match warnings
libraries/vector_dist-install_EXTRA_HC_OPTS += -Wwarn

# temporarily turn off unused-imports warnings for xhtml
105
libraries/xhtml_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
106
libraries/xhtml_dist-install_EXTRA_HC_OPTS += -Wno-tabs
107 108 109 110 111 112 113 114 115

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
116 117
libraries/transformers_dist-install_EXTRA_HC_OPTS += -Wno-unused-matches -Wno-unused-imports
libraries/transformers_dist-install_EXTRA_HC_OPTS += -Wno-redundant-constraints
118
libraries/transformers_dist-install_EXTRA_HC_OPTS += -Wno-orphans
119

120 121 122 123 124
# parsec has various warnings
libraries/parsec_dist-install_EXTRA_HC_OPTS += -Wno-name-shadowing -Wno-unused-matches
libraries/parsec_dist-install_EXTRA_HC_OPTS += -Wno-unused-do-bind -Wno-missing-signatures
libraries/parsec_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports -Wno-type-defaults

125
# Turn of trustworthy-safe warning
126 127 128
libraries/base_dist-install_EXTRA_HC_OPTS += -Wno-trustworthy-safe
libraries/ghc-prim_dist-install_EXTRA_HC_OPTS += -Wno-trustworthy-safe
libraries/Win32_dist-install_EXTRA_HC_OPTS += -Wno-trustworthy-safe
129

130 131
# We need -Wno-deprecated-flags to avoid failure with -Werror
GhcLibExtraHcOpts += -Wno-deprecated-flags
132 133
GhcBootLibExtraHcOpts += -fno-warn-deprecated-flags

134 135 136 137 138 139 140 141 142 143 144 145 146 147
# Note [Order of warning flags]
#
# In distdir-way-opts, build flags are added in the following order (this
# list is not exhaustive):
#
#   * SRC_HC_OPTS(_STAGE$4)
#   * ghc-options from .cabal files ($1_$2_HC_OPTS)
#   * SRC_HC_WARNING_OPTS(_STAGE$4)
#
# Considerations:
#
#   * Most .cabal files specify -Wall. But not all, and not all building we
#   do relies on .cabal files. So we have to add -Wall ourselves somewhere.
#
Gabor Greif's avatar
Gabor Greif committed
148 149 150
#   * Some .cabal also specify warning suppression flags. Because -Wall
#   overrides any warning suppression flags that come before it, we have to
#   make sure -Wall comes before any warning suppression flags. So we add it
151 152
#   to SRC_HC_OPTS.
#
Gabor Greif's avatar
Gabor Greif committed
153
#   * Similarly, our own warning suppression should come after the -Wall from
154
#   the .cabal files, so we do *not* add them to SRC_HC_OPTS.