From 93b2dee80e5d72cf12522d773b512097493c09fc Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Fri, 9 Sep 2016 10:22:45 -0700 Subject: [PATCH] compile with -std=c99 instead of -std=gnu99; use kiddie-gloves with bluetooth/bluetooh.h (#28017) --- configure | 24 ++++++++++++++++++++---- configure.ac | 13 +++++++++---- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/configure b/configure index 8c1650c594e..83550056b49 100755 --- a/configure +++ b/configure @@ -6855,9 +6855,7 @@ UNIVERSAL_ARCH_FLAGS= # tweak BASECFLAGS based on compiler and platform case $GCC in yes) - # GNU dialect of C99, enables GNU extensions like __attribute__. GNU99 - # is required by bluetooth.h on big endian machines. - CFLAGS_NODIST="$CFLAGS_NODIST -std=gnu99" + CFLAGS_NODIST="$CFLAGS_NODIST -std=c99" # Python doesn't violate C99 aliasing rules, but older versions of # GCC produce warnings for legal Python code. Enable @@ -7617,7 +7615,7 @@ sys/param.h sys/select.h sys/sendfile.h sys/socket.h sys/statvfs.h \ sys/stat.h sys/syscall.h sys/sys_domain.h sys/termio.h sys/time.h \ sys/times.h sys/types.h sys/uio.h sys/un.h sys/utsname.h sys/wait.h pty.h \ libutil.h sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \ -bluetooth/bluetooth.h linux/tipc.h linux/random.h spawn.h util.h alloca.h endian.h \ +linux/tipc.h linux/random.h spawn.h util.h alloca.h endian.h \ sys/endian.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -7840,6 +7838,24 @@ fi fi +# bluetooth/bluetooth.h has been known to not compile with -std=c99. +# http://permalink.gmane.org/gmane.linux.bluez.kernel/22294 +SAVE_CFLAGS=$CFLAGS +CFLAGS="-std=c99 $CFLAGS" +for ac_header in bluetooth/bluetooth.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "bluetooth/bluetooth.h" "ac_cv_header_bluetooth_bluetooth_h" "$ac_includes_default" +if test "x$ac_cv_header_bluetooth_bluetooth_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_BLUETOOTH_BLUETOOTH_H 1 +_ACEOF + +fi + +done + +CFLAGS=$SAVE_CFLAGS + # On Darwin (OS X) net/if.h requires sys/socket.h to be imported first. for ac_header in net/if.h do : diff --git a/configure.ac b/configure.ac index 06e6841d79a..67d3aefa618 100644 --- a/configure.ac +++ b/configure.ac @@ -1520,9 +1520,7 @@ AC_SUBST(UNIVERSAL_ARCH_FLAGS) # tweak BASECFLAGS based on compiler and platform case $GCC in yes) - # GNU dialect of C99, enables GNU extensions like __attribute__. GNU99 - # is required by bluetooth.h on big endian machines. - CFLAGS_NODIST="$CFLAGS_NODIST -std=gnu99" + CFLAGS_NODIST="$CFLAGS_NODIST -std=c99" # Python doesn't violate C99 aliasing rules, but older versions of # GCC produce warnings for legal Python code. Enable @@ -1991,11 +1989,18 @@ sys/param.h sys/select.h sys/sendfile.h sys/socket.h sys/statvfs.h \ sys/stat.h sys/syscall.h sys/sys_domain.h sys/termio.h sys/time.h \ sys/times.h sys/types.h sys/uio.h sys/un.h sys/utsname.h sys/wait.h pty.h \ libutil.h sys/resource.h netpacket/packet.h sysexits.h bluetooth.h \ -bluetooth/bluetooth.h linux/tipc.h linux/random.h spawn.h util.h alloca.h endian.h \ +linux/tipc.h linux/random.h spawn.h util.h alloca.h endian.h \ sys/endian.h) AC_HEADER_DIRENT AC_HEADER_MAJOR +# bluetooth/bluetooth.h has been known to not compile with -std=c99. +# http://permalink.gmane.org/gmane.linux.bluez.kernel/22294 +SAVE_CFLAGS=$CFLAGS +CFLAGS="-std=c99 $CFLAGS" +AC_CHECK_HEADERS(bluetooth/bluetooth.h) +CFLAGS=$SAVE_CFLAGS + # On Darwin (OS X) net/if.h requires sys/socket.h to be imported first. AC_CHECK_HEADERS([net/if.h], [], [], [#include