Add link to download area
[entangle:entangle.git] / acinclude.m4
1 # Find valid warning flags for the C Compiler.           -*-Autoconf-*-
2 #
3 # Copyright (C) 2001, 2002, 2006 Free Software Foundation, Inc.
4 #
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program; if not, write to the Free Software
17 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
18 # 02110-1301  USA
19
20 # Written by Jesse Thilo.
21
22 AC_DEFUN([gl_COMPILER_FLAGS],
23   [AC_MSG_CHECKING(whether compiler accepts $1)
24    AC_SUBST(COMPILER_FLAGS)
25    ac_save_CFLAGS="$CFLAGS"
26    dnl Some flags are dependant, so we set all previously checked
27    dnl flags when testing. Except for -Werror which we have to
28    dnl check on its own, because some of our compiler flags cause
29    dnl warnings from the autoconf test program!
30    if test "$1" = "-Werror" ; then
31      CFLAGS="$CFLAGS $1"
32    else
33      CFLAGS="$CFLAGS $COMPILER_FLAGS $1"
34    fi
35    AC_TRY_LINK([], [], has_option=yes, has_option=no,)
36    echo 'int x;' >conftest.c
37    $CC $CFLAGS -c conftest.c 2>conftest.err
38    ret=$?
39    if test $ret != 0 -o -s conftest.err -o $has_option = "no"; then
40        AC_MSG_RESULT(no)
41    else
42        AC_MSG_RESULT(yes)
43        COMPILER_FLAGS="$COMPILER_FLAGS $1"
44    fi
45    CFLAGS="$ac_save_CFLAGS"
46    rm -f conftest*
47  ])
48
49
50 dnl
51 dnl Taken from gnome-common/macros2/gnome-compiler-flags.m4
52 dnl
53 dnl We've added:
54 dnl   -Wextra -Wshadow -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Winline -Wredundant-decls
55 dnl We've removed
56 dnl   CFLAGS="$realsave_CFLAGS"
57 dnl   to avoid clobbering user-specified CFLAGS
58 dnl
59 AC_DEFUN([ENTANGLE_COMPILE_WARNINGS],[
60     dnl ******************************
61     dnl More compiler warnings
62     dnl ******************************
63
64     AC_ARG_ENABLE(compile-warnings,
65                   AC_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],
66                                  [Turn on compiler warnings]),,
67                   [enable_compile_warnings="m4_default([$1],[maximum])"])
68
69     warnCFLAGS=
70
71     common_flags="-Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fasynchronous-unwind-tables"
72
73     case "$enable_compile_warnings" in
74     no)
75         try_compiler_flags=""
76         ;;
77     minimum)
78         try_compiler_flags="-Wall -Wformat -Wformat-security $common_flags"
79         ;;
80     yes)
81         try_compiler_flags="-Wall -Wformat -Wformat-security -Wmissing-prototypes $common_flags"
82         ;;
83     maximum|error)
84         try_compiler_flags="-Wall -Wformat -Wformat-security -Wmissing-prototypes -Wnested-externs -Wpointer-arith"
85         try_compiler_flags="$try_compiler_flags -Wextra -Wshadow -Wcast-align -Wwrite-strings -Waggregate-return"
86         dnl XXX disabled strict-prototypes due  to bug in gtk header files
87         dnl /usr/include/gtk-2.0/gtk/gtkitemfactory.h:47: warning: function declaration isn’t a prototype
88         dnl try_compiler_flags="$try_compiler_flags -Wstrict-prototypes -Winline -Wredundant-decls -Wno-sign-compare"
89         try_compiler_flags="$try_compiler_flags -Winline -Wredundant-decls -Wno-sign-compare"
90         try_compiler_flags="$try_compiler_flags $common_flags"
91         if test "$enable_compile_warnings" = "error" ; then
92             try_compiler_flags="$try_compiler_flags -Werror"
93         fi
94         ;;
95     *)
96         AC_MSG_ERROR(Unknown argument '$enable_compile_warnings' to --enable-compile-warnings)
97         ;;
98     esac
99
100     COMPILER_FLAGS=
101     for option in $try_compiler_flags; do
102         gl_COMPILER_FLAGS($option)
103     done
104     unset option
105     unset try_compiler_flags
106
107     WARNING_CFLAGS="$COMPILER_FLAGS $complCFLAGS"
108     AC_SUBST(WARNING_CFLAGS)
109 ])