Add mouse scroll support to session browser widget
[entangle:entangle.git] / m4 / entangle-compile-warnings.m4
1 dnl
2 dnl Enable all known GCC compiler warnings, except for those
3 dnl we can't yet cope with
4 dnl
5 AC_DEFUN([ENTANGLE_COMPILE_WARNINGS],[
6     dnl ******************************
7     dnl More compiler warnings
8     dnl ******************************
9
10     AC_ARG_ENABLE([werror],
11                   AS_HELP_STRING([--enable-werror], [Use -Werror (if supported)]),
12                   [set_werror="$enableval"],
13                   [if test -d $srcdir/.git; then
14                      is_git_version=true
15                      set_werror=yes
16                    else
17                      set_werror=no
18                    fi])
19
20
21     # List of warnings that are not relevant / wanted
22
23     # Don't care about C++ compiler compat
24     dontwarn="$dontwarn -Wc++-compat"
25     dontwarn="$dontwarn -Wabi"
26     dontwarn="$dontwarn -Wdeprecated"
27     # Don't care about ancient C standard compat
28     dontwarn="$dontwarn -Wtraditional"
29     # Don't care about ancient C standard compat
30     dontwarn="$dontwarn -Wtraditional-conversion"
31     # Ignore warnings in /usr/include
32     dontwarn="$dontwarn -Wsystem-headers"
33     # Happy for compiler to add struct padding
34     dontwarn="$dontwarn -Wpadded"
35     # GCC very confused with -O2
36     dontwarn="$dontwarn -Wunreachable-code"
37     # Broken gexiv2 pkg-config file
38     dontwarn="$dontwarn -Wmissing-include-dirs"
39     # We need to use long long in many places
40     dontwarn="$dontwarn -Wlong-long"
41     # We don't care about c90 rules
42     dontwarn="$dontwarn -Wdeclaration-after-statement"
43     # Need to allow some explicit bad casts
44     dontwarn="$dontwarn -Wcast-qual"
45     # entangle_session_next_filename
46     dontwarn="$dontwarn -Wformat-nonliteral"
47
48     # Get all possible GCC warnings
49     gl_MANYWARN_ALL_GCC([maybewarn])
50
51     # Remove the ones we don't want, blacklisted earlier
52     gl_MANYWARN_COMPLEMENT([wantwarn], [$maybewarn], [$dontwarn])
53
54     # Check for $CC support of each warning
55     for w in $wantwarn; do
56       gl_WARN_ADD([$w])
57     done
58
59     # GNULIB uses '-W' (aka -Wextra) which includes a bunch of stuff.
60     # Unfortunately, this means you can't simply use '-Wsign-compare'
61     # with gl_MANYWARN_COMPLEMENT
62     # So we have -W enabled, and then have to explicitly turn off...
63     gl_WARN_ADD([-Wno-sign-compare])
64     gl_WARN_ADD([-Wno-sign-conversion])
65     gl_WARN_ADD([-Wno-conversion])
66
67     # GNULIB expects this to be part of -Wc++-compat, but we turn
68     # that one off, so we need to manually enable this again
69     gl_WARN_ADD([-Wjump-misses-init])
70
71     # This should be < 256 really. Currently we're down to 4096,
72     # but using 1024 bytes sized buffers (mostly for virStrerror)
73     # stops us from going down further
74     gl_WARN_ADD([-Wframe-larger-than=40096])
75
76     # Extra special flags
77     gl_WARN_ADD([-Wp,-D_FORTIFY_SOURCE=2])
78     dnl -fstack-protector stuff passes gl_WARN_ADD with gcc
79     dnl on Mingw32, but fails when actually used
80     case $host in
81        *-*-linux*)
82        dnl Fedora only uses -fstack-protector, but doesn't seem to
83        dnl be great overhead in adding -fstack-protector-all instead
84        dnl gl_WARN_ADD([-fstack-protector])
85        gl_WARN_ADD([-fstack-protector-all])
86        gl_WARN_ADD([--param=ssp-buffer-size=4])
87        ;;
88     esac
89     gl_WARN_ADD([-fexceptions])
90     gl_WARN_ADD([-fasynchronous-unwind-tables])
91     gl_WARN_ADD([-fdiagnostics-show-option])
92     gl_WARN_ADD([-funit-at-a-time])
93
94     # Need -fipa-pure-const in order to make -Wsuggest-attribute=pure
95     # fire even without -O.
96     gl_WARN_ADD([-fipa-pure-const])
97     # We should eventually enable this
98     gl_WARN_ADD([-Wno-suggest-attribute=pure])
99     gl_WARN_ADD([-Wno-suggest-attribute=const])
100
101     if test "$enable_werror" = "yes"
102     then
103       gl_WARN_ADD([-Werror])
104     fi
105
106     WARN_LDFLAGS=$WARN_CFLAGS
107     AC_SUBST([WARN_CFLAGS])
108     AC_SUBST([WARN_LDFLAGS])
109 ])