pre-gcc-3.4 compatibility
authorAlex Vatchenko <alex@fabulatech.com>
Thu, 28 May 2009 19:58:50 +0000 (15:58 -0400)
committerDaniel Drake <dsd@gentoo.org>
Thu, 28 May 2009 20:06:24 +0000 (16:06 -0400)
The -fvisibility and -Wno-pointer-sign options are not available on
old GCC versions.

AUTHORS
configure.ac
libusb/Makefile.am

diff --git a/AUTHORS b/AUTHORS
index f36fac5..7ab9c45 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -3,6 +3,7 @@ Copyright (c) 2001 Johannes Erdfelt <johannes@erdfelt.com>
 Copyright (C) 2008-2009 Nathan Hjelm <hjelmn@users.sourceforge.net>
 
 Other contributors:
+Alex Vatchenko
 Artem Egorkine
 Aurelien Jarno
 Bastien Nocera
index dad73de..2617a16 100644 (file)
@@ -71,9 +71,27 @@ CFLAGS="$CFLAGS -fgnu89-inline"
 AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]), inline_cflags="-fgnu89-inline", inline_cflags="")
 CFLAGS="$saved_cflags"
 
-AC_DEFINE([API_EXPORTED], [__attribute__((visibility("default")))], [Default visibility])
-AM_CFLAGS="-std=gnu99 $inline_cflags -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration -Wno-pointer-sign -Wshadow"
+# check for -fvisibility=hidden compiler support (GCC >= 3.4)
+saved_cflags="$CFLAGS"
+CFLAGS="$CFLAGS -fvisibility=hidden"
+AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),
+       [VISIBILITY_CFLAGS="-fvisibility=hidden"
+        AC_DEFINE([API_EXPORTED], [__attribute__((visibility("default")))], [Default visibility]) ],
+       [ VISIBILITY_CFLAGS=""
+        AC_DEFINE([API_EXPORTED], [], [Default visibility]) ],
+       ])
+CFLAGS="$saved_cflags"
+
+# check for -Wno-pointer-sign compiler support (GCC >= 4)
+saved_cflags="$CFLAGS"
+CFLAGS="$CFLAGS -Wno-pointer-sign"
+AC_COMPILE_IFELSE(AC_LANG_PROGRAM([]),
+       nopointersign_cflags="-Wno-pointer-sign", nopointersign_cflags="")
+CFLAGS="$saved_cflags"
+
+AM_CFLAGS="-std=gnu99 $inline_cflags -Wall -Wundef -Wunused -Wstrict-prototypes -Werror-implicit-function-declaration $nopointersign_cflags -Wshadow"
 
+AC_SUBST(VISIBILITY_CFLAGS)
 AC_SUBST(AM_CFLAGS)
 AC_SUBST(AM_LDFLAGS)
 
index 3551603..a2be46c 100644 (file)
@@ -14,7 +14,7 @@ OS_SRC = $(DARWIN_USB_SRC)
 AM_CFLAGS_EXT = -no-cpp-precomp
 endif
 
-libusb_1_0_la_CFLAGS = -fvisibility=hidden $(AM_CFLAGS) -pthread
+libusb_1_0_la_CFLAGS = $(VISIBILITY_CFLAGS) $(AM_CFLAGS) -pthread
 libusb_1_0_la_SOURCES = libusbi.h core.c descriptor.c io.c sync.c $(OS_SRC)
 
 hdrdir = $(includedir)/libusb-1.0