Commit bb290a1e authored by Debarshi Ray's avatar Debarshi Ray

build: Turn off -Wcast-function-type

GCC 8 introduced -Wcast-function-type. It is enabled by -Wextra, which
is on the AX_COMPILER_FLAGS list. Unfortunately, this cannot be sanely
used with the GNOME platform. It is exceedingly common practice to
specify a function as a callback that ignores some of the trailing
parameters passed to it. In fact, the following snippet that's part of
the g_list_copy_deep documentation triggers -Wcast-function-type:
  another_list = g_list_copy_deep (list,
                                   (GCopyFunc) g_object_ref,
                                   NULL);

Disabling warnings like this does go against the recommendation of the
AX_COMPILER_FLAGS documentation, which suggests the use of #pragmas
instead. However, unlike passing the flags through the command line,
attempts to ignore -Wcast-function-type through a #pragma will trigger
-Wpragmas on older versions of GCC, and, ironically, using
G_GNUC_CHECK_VERSION to conditionally disable it on newer compilers
will trigger -Wexpansion-to-defined, again, because of -Wextra.
parent 0e546cda
......@@ -18,7 +18,11 @@ AM_MAINTAINER_MODE([enable])
AX_IS_RELEASE([git-directory])
AX_CHECK_ENABLE_DEBUG([yes],,, [$ax_is_release])
AX_COMPILER_FLAGS([WARN_CFLAGS], [WARN_LDFLAGS], [$ax_is_release])
AX_COMPILER_FLAGS([WARN_CFLAGS],
[WARN_LDFLAGS],
[$ax_is_release],
[],
[-Wno-cast-function-type -Wno-error=cast-function-type])
AS_IF([test "x$ax_is_release" != "xyes"], [PACKAGE_COMMIT_ID=$(git describe)])
AS_IF([test -n "$PACKAGE_COMMIT_ID"],
......
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