Commit c55e3218 authored by Philip Withnall's avatar Philip Withnall
Browse files

build: Use AX_COMPILER_FLAGS

Switch from GNOME_COMPILE_WARNINGS to AX_COMPILER_FLAGS. This integrates
better with CI systems, allows easy disabling of -Werror, and integrates
with AX_IS_RELEASE to automatically disable errors when building
releases.

https://wiki.gnome.org/Projects/GnomeCommon/Migration
parent 6949c1d5
......@@ -524,6 +524,7 @@ gdata_libgdata_la_LDFLAGS = \
-version-info $(GDATA_LT_VERSION) \
-export-symbols $(srcdir)/gdata/gdata.symbols \
-no-undefined \
$(WARN_LDFLAGS) \
$(AM_LDFLAGS)
EXTRA_DIST += gdata/gdata.symbols
......@@ -562,7 +563,9 @@ gdata_GData_@GDATA_API_VERSION_MAJOR@_@GDATA_API_VERSION_MINOR@_gir_EXPORT_PACKA
gdata_GData_@GDATA_API_VERSION_MAJOR@_@GDATA_API_VERSION_MINOR@_gir_SCANNERFLAGS = \
--nsversion=$(GDATA_API_VERSION) \
--symbol-prefix=gdata \
--c-include="gdata/gdata.h"
--c-include="gdata/gdata.h" \
$(WARN_SCANNERFLAGS) \
$(NULL)
INTROSPECTION_GIRS += gdata/GData-$(GDATA_API_VERSION).gir
......@@ -643,6 +646,11 @@ demos_docs_list_docs_list_CFLAGS = \
$(AM_CFLAGS) \
$(NULL)
demos_docs_list_docs_list_LDFLAGS = \
$(WARN_LDFLAGS) \
$(AM_LDFLAGS) \
$(NULL)
demos_docs_list_docs_list_LDADD = \
$(top_builddir)/gdata/libgdata.la \
$(GDATA_LIBS) \
......@@ -672,6 +680,11 @@ demos_scrapbook_scrapbook_CFLAGS = \
$(AM_CFLAGS) \
$(NULL)
demos_scrapbook_scrapbook_LDFLAGS = \
$(WARN_LDFLAGS) \
$(AM_LDFLAGS) \
$(NULL)
demos_scrapbook_scrapbook_LDADD = \
$(top_builddir)/gdata/libgdata.la \
$(GTK_LIBS) \
......@@ -700,6 +713,11 @@ demos_freebase_freebase_cli_CFLAGS = \
$(AM_CFLAGS) \
$(NULL)
demos_freebase_freebase_cli_LDFLAGS = \
$(WARN_LDFLAGS) \
$(AM_LDFLAGS) \
$(NULL)
demos_freebase_freebase_cli_LDADD = \
$(top_builddir)/gdata/libgdata.la \
$(GDATA_LIBS) \
......@@ -727,6 +745,11 @@ demos_youtube_youtube_cli_CFLAGS = \
$(AM_CFLAGS) \
$(NULL)
demos_youtube_youtube_cli_LDFLAGS = \
$(WARN_LDFLAGS) \
$(AM_LDFLAGS) \
$(NULL)
demos_youtube_youtube_cli_LDADD = \
$(top_builddir)/gdata/libgdata.la \
$(GDATA_LIBS) \
......@@ -754,6 +777,11 @@ demos_calendar_calendar_cli_CFLAGS = \
$(AM_CFLAGS) \
$(NULL)
demos_calendar_calendar_cli_LDFLAGS = \
$(WARN_LDFLAGS) \
$(AM_LDFLAGS) \
$(NULL)
demos_calendar_calendar_cli_LDADD = \
$(top_builddir)/gdata/libgdata.la \
$(GDATA_LIBS) \
......@@ -768,7 +796,6 @@ EXTRA_DIST += \
gtk-doc.make \
libgdata.doap \
m4/ax_code_coverage.m4 \
m4/gnome-compiler-flags.m4 \
glib-tap.mk \
tap-driver.sh \
tap-test \
......
......@@ -193,33 +193,8 @@ IT_PROG_INTLTOOL([0.40.0])
AX_CODE_COVERAGE
# General macros
GNOME_COMPILE_WARNINGS([maximum],[
-Wdeclaration-after-statement
-Wextra
-Winline
-Wpacked
-Wlarger-than-65500
-Wmissing-declarations
-Wmissing-format-attribute
-Wmissing-noreturn
-Wold-style-definition
-Wsign-compare
-Wstrict-aliasing=2
-Wswitch-enum
-Wundef
-Wunsafe-loop-optimizations
-Wwrite-strings
-Wno-missing-field-initializers
-Wno-unused-parameter
-Wshadow
-Wcast-align
-Wformat-nonliteral
-Wswitch-default
-Waggregate-return
-Wredundant-decls
-Wunused-but-set-variable
-Warray-bounds
])
AX_COMPILER_FLAGS([WARN_CFLAGS],[WARN_LDFLAGS],[$ax_is_release],
[],[-Wunsafe-loop-optimizations])
GOBJECT_INTROSPECTION_CHECK([0.9.7])
......
......@@ -33,6 +33,9 @@ AM_CFLAGS = \
$(GNOME_CFLAGS) \
$(UHTTPMOCK_CFLAGS) \
$(NULL)
AM_LDFLAGS = \
$(WARN_LDFLAGS) \
$(NULL)
LDADD = \
libgdata-test.la \
......
# gnome-compiler-flags.m4
#
# serial 2
#
dnl GNOME_COMPILE_WARNINGS
dnl Turn on many useful compiler warnings and substitute the result into
dnl WARN_CFLAGS
dnl For now, only works on GCC
dnl Pass the default value of the --enable-compile-warnings configure option as
dnl the first argument to the macro, defaulting to 'yes'.
dnl Additional warning/error flags can be passed as an optional second argument.
dnl
dnl For example: GNOME_COMPILE_WARNINGS([maximum],[-Werror=some-flag -Wfoobar])
AC_DEFUN([GNOME_COMPILE_WARNINGS],[
dnl ******************************
dnl More compiler warnings
dnl ******************************
AC_ARG_ENABLE(compile-warnings,
AS_HELP_STRING([--enable-compile-warnings=@<:@no/minimum/yes/maximum/error@:>@],
[Turn on compiler warnings]),,
[enable_compile_warnings="m4_default([$1],[yes])"])
if test "x$GCC" != xyes; then
enable_compile_warnings=no
fi
warning_flags=
realsave_CFLAGS="$CFLAGS"
dnl These are warning flags that aren't marked as fatal. Can be
dnl overridden on a per-project basis with -Wno-foo.
base_warn_flags=" \
-Wall \
-Wstrict-prototypes \
-Wnested-externs \
"
dnl These compiler flags typically indicate very broken or suspicious
dnl code. Some of them such as implicit-function-declaration are
dnl just not default because gcc compiles a lot of legacy code.
dnl We choose to make this set into explicit errors.
base_error_flags=" \
-Werror=missing-prototypes \
-Werror=implicit-function-declaration \
-Werror=pointer-arith \
-Werror=init-self \
-Werror=format-security \
-Werror=format=2 \
-Werror=missing-include-dirs \
"
dnl Additional warning or error flags provided by the module author to
dnl allow stricter standards to be imposed on a per-module basis.
dnl The author can pass -W or -Werror flags here as they see fit.
additional_flags="m4_default([$2],[])"
case "$enable_compile_warnings" in
no)
warning_flags=
;;
minimum)
warning_flags="-Wall"
;;
yes|maximum|error)
warning_flags="$base_warn_flags $base_error_flags $additional_flags"
;;
*)
AC_MSG_ERROR(Unknown argument '$enable_compile_warnings' to --enable-compile-warnings)
;;
esac
if test "$enable_compile_warnings" = "error" ; then
warning_flags="$warning_flags -Werror"
fi
dnl Check whether GCC supports the warning options
for option in $warning_flags; do
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $option"
AC_MSG_CHECKING([whether gcc understands $option])
AC_TRY_COMPILE([], [],
has_option=yes,
has_option=no,)
CFLAGS="$save_CFLAGS"
AC_MSG_RESULT([$has_option])
if test $has_option = yes; then
tested_warning_flags="$tested_warning_flags $option"
fi
unset has_option
unset save_CFLAGS
done
unset option
CFLAGS="$realsave_CFLAGS"
AC_MSG_CHECKING(what warning flags to pass to the C compiler)
AC_MSG_RESULT($tested_warning_flags)
AC_ARG_ENABLE(iso-c,
AS_HELP_STRING([--enable-iso-c],
[Try to warn if code is not ISO C ]),,
[enable_iso_c=no])
AC_MSG_CHECKING(what language compliance flags to pass to the C compiler)
complCFLAGS=
if test "x$enable_iso_c" != "xno"; then
if test "x$GCC" = "xyes"; then
case " $CFLAGS " in
*[\ \ ]-ansi[\ \ ]*) ;;
*) complCFLAGS="$complCFLAGS -ansi" ;;
esac
case " $CFLAGS " in
*[\ \ ]-pedantic[\ \ ]*) ;;
*) complCFLAGS="$complCFLAGS -pedantic" ;;
esac
fi
fi
AC_MSG_RESULT($complCFLAGS)
WARN_CFLAGS="$tested_warning_flags $complCFLAGS"
AC_SUBST(WARN_CFLAGS)
])
dnl For C++, do basically the same thing.
AC_DEFUN([GNOME_CXX_WARNINGS],[
AC_ARG_ENABLE(cxx-warnings,
AS_HELP_STRING([--enable-cxx-warnings=@<:@no/minimum/yes@:>@]
[Turn on compiler warnings.]),,
[enable_cxx_warnings="m4_default([$1],[minimum])"])
AC_MSG_CHECKING(what warning flags to pass to the C++ compiler)
warnCXXFLAGS=
if test "x$GXX" != xyes; then
enable_cxx_warnings=no
fi
if test "x$enable_cxx_warnings" != "xno"; then
if test "x$GXX" = "xyes"; then
case " $CXXFLAGS " in
*[\ \ ]-Wall[\ \ ]*) ;;
*) warnCXXFLAGS="-Wall -Wno-unused" ;;
esac
## -W is not all that useful. And it cannot be controlled
## with individual -Wno-xxx flags, unlike -Wall
if test "x$enable_cxx_warnings" = "xyes"; then
warnCXXFLAGS="$warnCXXFLAGS -Wshadow -Woverloaded-virtual"
fi
fi
fi
AC_MSG_RESULT($warnCXXFLAGS)
AC_ARG_ENABLE(iso-cxx,
AS_HELP_STRING([--enable-iso-cxx],
[Try to warn if code is not ISO C++ ]),,
[enable_iso_cxx=no])
AC_MSG_CHECKING(what language compliance flags to pass to the C++ compiler)
complCXXFLAGS=
if test "x$enable_iso_cxx" != "xno"; then
if test "x$GXX" = "xyes"; then
case " $CXXFLAGS " in
*[\ \ ]-ansi[\ \ ]*) ;;
*) complCXXFLAGS="$complCXXFLAGS -ansi" ;;
esac
case " $CXXFLAGS " in
*[\ \ ]-pedantic[\ \ ]*) ;;
*) complCXXFLAGS="$complCXXFLAGS -pedantic" ;;
esac
fi
fi
AC_MSG_RESULT($complCXXFLAGS)
WARN_CXXFLAGS="$CXXFLAGS $warnCXXFLAGS $complCXXFLAGS"
AC_SUBST(WARN_CXXFLAGS)
])
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment