+AC_SUBST(LIBDIR)
+
+# CFLAGS from libraries (the glib ones are needed for the following sizeof
+# test).
+AM_CFLAGS="${PTHREAD_CFLAGS} ${GLIB_CFLAGS}"
+
+# Check that the current size_t matches the size that glib thinks it should
+# be. This catches problems on multi-arch where people try to do a 32-bit
+# build while pointing at 64-bit glib headers. This is a common error because
+# glib.h is not platform specific but it includes glibconfig.h which is and
+# is usually installed in a non-standard path.
+
+# Do this before enabling all the warning flags, as the
+# AC_LANG_PROGRAM-generated program may generate some warning, which makes this
+# test fail unnecessarily.
+
+# Older versions of the pkg-config macros disallows PKG_* in the autoconf
+# output. Specifically allow pkg_config_libdir to be able to print the
+# error message.
+m4_pattern_allow([PKG_CONFIG_LIBDIR])
+
+save_CFLAGS=${CFLAGS}
+CFLAGS="${CFLAGS} ${AM_CFLAGS}"
+AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([dnl
+#include <glib.h>
+#include <unistd.h>
+ ], [dnl
+G_STATIC_ASSERT(sizeof(size_t) == GLIB_SIZEOF_SIZE_T);
+ ])
+],[:],[
+ AC_MSG_ERROR([dnl
+sizeof(size_t) doesn't match GLIB_SIZEOF_SIZE_T. You probably need to set
+PKG_CONFIG_LIBDIR to point to the right pkg-config files for your build
+target.
+ ])
+])
+CFLAGS=${save_CFLAGS}
+
+# Detect C and LD warning flags supported by the compiler.
+AX_COMPILER_FLAGS(
+ [WARN_CFLAGS], dnl CFLAGS variable name
+ [WARN_LDFLAGS], dnl LDFLAGS variable name (unused for now)
+ [], dnl is-release
+ [], dnl Extra base CFLAGS
+ [ dnl Extra "yes" CFLAGS
+ dnl Disable these flags, either because we don't want them
+ dnl or because we want them but are not ready to enable them
+ dnl yet.
+ -Wno-sign-compare dnl
+ -Wno-inline dnl
+ -Wno-declaration-after-statement dnl
+ -Wno-switch-enum dnl
+ -Wno-switch-default dnl
+ -Wno-packed dnl
+ -Wno-pointer-arith dnl
+ -Wno-format-nonliteral dnl
+ -Wno-double-promotion dnl
+ -Wno-cast-align dnl
+ dnl
+ dnl Some versions of SWIG (like 3.0.12) generate code that produces
+ dnl -Wcast-function-type warnings. This warning is present in gcc >= 8. This
+ dnl combo happens on RHEL/Centos 8, for example. Later versions of SWIG (like
+ dnl 4.0.1) have the correct function signatures to not produce this warning.
+ dnl It's simpler to just disable the warning globally.
+ dnl
+ dnl Note that the Debian/Ubuntu SWIG package 3.0.12-2 contains a local patch to
+ dnl fix this (python-fix-function-cast-warnings.patch), so you won't be able to
+ dnl reproduce the warning using that package.
+ dnl
+ dnl Ref: https://github.com/swig/swig/issues/1259
+ -Wno-cast-function-type dnl
+ ])
+
+# CFLAGS from AX_COMPILER_FLAGS.
+AM_CFLAGS="${AM_CFLAGS} ${WARN_CFLAGS}"
+
+# The test used in AX_COMPILER_FLAGS, generated using AC_LANG_PROGRAM, is
+# written in such a way that it triggers a -Wold-style-definition warning. So
+# if the user has -Werror in their CFLAGS, that warning flag will end up
+# disabled, because the test program will not build.
+#
+# Enable it here unconditionally. It is supported by GCC >= 4.8 and by Clang
+# (it is accepted for compatibility although it has no effect), and there is
+# not reason to not want it.