Remove warning-suppression flags for Cabal
[ghc.git] / mk / warnings.mk
1 # See Note [Order of warning flags].
2 SRC_CC_OPTS += -Wall $(WERROR)
3 SRC_HC_OPTS += -Wall
4 # Don't add -Werror to SRC_HC_OPTS_STAGE0 (or SRC_HC_OPTS), because otherwise
5 # validate may unnecessarily fail when booting with an older compiler.
6 # It would be better to only exclude certain warnings from becoming errors
7 # (e.g. '-Werror -Wno-error=unused-imports -Wno-error=...'), but -Wno-error
8 # isn't supported yet (https://ghc.haskell.org/trac/ghc/wiki/Design/Warnings).
9 #
10 # See Note [Stage number in build variables] in mk/config.mk.in.
11 SRC_HC_OPTS_STAGE1 += $(WERROR)
12 SRC_HC_OPTS_STAGE2 += $(WERROR)
13
14
15 ifneq "$(GccIsClang)" "YES"
16
17 # Debian doesn't turn -Werror=unused-but-set-variable on by default, so
18 # we turn it on explicitly for consistency with other users
19 ifeq "$(GccLT46)" "NO"
20 # Never set the flag on Windows as the host gcc may be too old.
21 ifneq "$(HostOS_CPP)" "mingw32"
22 SRC_CC_WARNING_OPTS += -Werror=unused-but-set-variable
23 endif
24 # gcc 4.6 gives 3 warning for giveCapabilityToTask not being inlined
25 SRC_CC_WARNING_OPTS += -Wno-error=inline
26 endif
27
28 else
29
30 # Don't warn about unknown GCC pragmas when using clang
31 SRC_CC_WARNING_OPTS += -Wno-unknown-pragmas
32
33 endif
34
35 SRC_HC_WARNING_OPTS_STAGE1 += -Wnoncanonical-monad-instances
36 SRC_HC_WARNING_OPTS_STAGE2 += -Wnoncanonical-monad-instances
37
38
39 ######################################################################
40 # Disable some warnings in packages we use
41
42 # NB: The GHC version used for bootstrapping may not support the
43 # `-W`-aliases for `-f(no-)warn` flags introduced in GHC 8.0, so in
44 # some cases (watch out for make-variables with a name containing
45 # "boot") we need to pass the legacy `-f(no-)warn`-flags instead.
46
47 # Libraries that have dubious RULES
48 libraries/bytestring_dist-install_EXTRA_HC_OPTS += -Wno-inline-rule-shadowing
49
50 # Turn off import warnings for bad unused imports
51 libraries/containers_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
52 libraries/bytestring_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
53 utils/haddock_dist_EXTRA_HC_OPTS += -Wno-unused-imports
54 libraries/vector_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
55
56 # haddock's attoparsec uses deprecated `inlinePerformIO`
57 utils/haddock_dist_EXTRA_HC_OPTS += -Wno-deprecations
58
59 # containers uses bitSize at the moment
60 libraries/containers_dist-install_EXTRA_HC_OPTS += -Wno-deprecations
61 libraries/containers_dist-install_EXTRA_HC_OPTS += -Wno-redundant-constraints
62
63 # On Windows, there are also some unused import warnings
64 ifeq "$(HostOS_CPP)" "mingw32"
65 libraries/time_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports -Wno-identities
66 endif
67
68 # haskeline has warnings about deprecated use of block/unblock
69 libraries/haskeline_dist-install_EXTRA_HC_OPTS += -Wno-deprecations
70 libraries/haskeline_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
71 libraries/haskeline_dist-install_EXTRA_HC_OPTS += -Wno-redundant-constraints
72
73 # binary upstream has some warnings, so don't use -Werror for it
74 libraries/binary_dist-boot_EXTRA_HC_OPTS += -Wwarn
75 libraries/binary_dist-install_EXTRA_HC_OPTS += -Wwarn
76
77 # temporarily turn off unused-imports warnings for pretty
78 libraries/pretty_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
79
80 # primitive has a warning about deprecated use of GHC.IOBase
81 libraries/primitive_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
82
83 # temporarily turn off unused-imports warnings for terminfo
84 libraries/terminfo_dist-boot_EXTRA_HC_OPTS += -fno-warn-unused-imports
85 libraries/terminfo_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
86
87 # vector has some unused match warnings
88 libraries/vector_dist-install_EXTRA_HC_OPTS += -Wwarn
89
90 # temporarily turn off unused-imports warnings for xhtml
91 libraries/xhtml_dist-install_EXTRA_HC_OPTS += -Wno-unused-imports
92
93 libraries/dph/dph-base_dist-install_EXTRA_HC_OPTS += -Wwarn
94 libraries/dph/dph-prim-interface_dist-install_EXTRA_HC_OPTS += -Wwarn
95 libraries/dph/dph-prim-seq_dist-install_EXTRA_HC_OPTS += -Wwarn
96 libraries/dph/dph-prim-par_dist-install_EXTRA_HC_OPTS += -Wwarn
97 libraries/dph/dph-lifted-common-install_EXTRA_HC_OPTS += -Wwarn
98
99 # transformers has unused function parameters warnings
100 libraries/transformers_dist-boot_EXTRA_HC_OPTS += -fno-warn-unused-matches -fno-warn-unused-imports
101 libraries/transformers_dist-install_EXTRA_HC_OPTS += -Wno-unused-matches -Wno-unused-imports
102 libraries/transformers_dist-install_EXTRA_HC_OPTS += -Wno-redundant-constraints
103
104 # Turn of trustworthy-safe warning
105 libraries/base_dist-install_EXTRA_HC_OPTS += -Wno-trustworthy-safe
106 libraries/ghc-prim_dist-install_EXTRA_HC_OPTS += -Wno-trustworthy-safe
107 libraries/Win32_dist-install_EXTRA_HC_OPTS += -Wno-trustworthy-safe
108
109 # We need -Wno-deprecated-flags to avoid failure with -Werror
110 GhcLibExtraHcOpts += -Wno-deprecated-flags
111 GhcBootLibExtraHcOpts += -fno-warn-deprecated-flags
112
113 # The warning suppression flag below is a temporary kludge. While working with
114 # modules that contain tabs, please de-tab them so this flag can be eventually
115 # removed. See
116 # http://ghc.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#TabsvsSpaces
117 # for details
118 #
119 GhcLibExtraHcOpts += -Wno-tabs
120 GhcBootLibExtraHcOpts += -fno-warn-tabs
121
122
123 # Note [Order of warning flags]
124 #
125 # In distdir-way-opts, build flags are added in the following order (this
126 # list is not exhaustive):
127 #
128 # * SRC_HC_OPTS(_STAGE$4)
129 # * ghc-options from .cabal files ($1_$2_HC_OPTS)
130 # * SRC_HC_WARNING_OPTS(_STAGE$4)
131 #
132 # Considerations:
133 #
134 # * Most .cabal files specify -Wall. But not all, and not all building we
135 # do relies on .cabal files. So we have to add -Wall ourselves somewhere.
136 #
137 # * Some .cabal also specify warning supression flags. Because -Wall
138 # overrides any warning supression flags that come before it, we have to
139 # make sure -Wall comes before any warning supression flags. So we add it
140 # to SRC_HC_OPTS.
141 #
142 # * Similarly, our own warning supression should come after the -Wall from
143 # the .cabal files, so we do *not* add them to SRC_HC_OPTS.