-dnl xlC needs -qunique under AIX so that one source file can be
-dnl compiled to multiple object files and safely linked together.
-if test "x$XLCXX" = "xyes" -a "x$USE_AIX" = "x1"; then
- CXXFLAGS="-qunique $CXXFLAGS"
+if test "$USE_LINUX" = 1 -o "$USE_GNU" = 1; then
+ dnl While g++ predefines _GNU_SOURCE by default, gcc does not, so do it
+ dnl explicitly to ensure that the tests done below using C compiler
+ dnl succeed, otherwise things like pthread_mutexattr_settype() (and many
+ dnl others) wouldn't be detected.
+ AC_DEFINE(_GNU_SOURCE)
+
+ dnl For non-g++ compilers (including gcc, as mentioned above) we need to
+ dnl add this flag explicitly when building our own code later too.
+ GNU_SOURCE_FLAG="-D_GNU_SOURCE"
+ CFLAGS="$GNU_SOURCE_FLAG $CFLAGS"
+fi
+
+if test "x$USE_AIX" = "x1"; then
+ dnl xlC needs -qunique under AIX so that one source file can be
+ dnl compiled to multiple object files and safely linked together.
+ if test "x$XLCXX" = "xyes"; then
+ CXXFLAGS="-qunique $CXXFLAGS"
+ fi
+
+ dnl AIX sys/timer.h header #defines func_data as t_union.data breaking the
+ dnl compilation of GTK+ headers that use func_data as parameter name in
+ dnl several places. We could work around this by inserting "#undef
+ dnl func_data" in the code but IBM provides a possibility to disable this
+ dnl #define by pre-defining the symbol below and this seems to be simpler.
+ dnl And if we have any problems because of it we can always remove it and
+ dnl use the #undef approach.
+ CPPFLAGS="-D_LINUX_SOURCE_COMPAT $CPPFLAGS"