This is the mail archive of the mailing list for the glibc project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Use autoconf macro for testing compiler options with empty input

This patch adds an autoconf macro LIBC_TRY_CC_OPTION for the case of
configure tests that verify that a compiler option works given an
empty source file.  That pattern is present once in the toplevel and several times in sysdeps/i386/

Tested x86_64.

2012-03-21  Joseph Myers  <>

	* aclocal.m4 (LIBC_TRY_CC_OPTION): New macro.
	* (libc_cv_cc_submachine): Use LIBC_TRY_CC_OPTION.
	* configure: Regenerated.
	* sysdeps/i386/ (libc_cv_cc_sse4): Use
	(libc_cv_as_i686): Likewise.
	(libc_cv_cc_avx): Likewise.
	(libc_cv_cc_sse2avx): Likewise.
	(libc_cv_cc_fma4): Likewise.
	(libc_cv_cc_novzeroupper): Likewise.
	* sysdeps/i386/configure: Regenerated.

diff --git a/aclocal.m4 b/aclocal.m4
index fb546e4..e899932 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -128,6 +128,12 @@ AS_IF([AC_TRY_COMMAND([${CC-cc} $CFLAGS $CPPFLAGS $LDFLAGS -o conftest
       [$2], [$3])
 rm -f conftest*])
+dnl Test a compiler option or options with an empty input file.
+dnl LIBC_TRY_CC_OPTION([options], [action-if-true], [action-if-false])
+[AS_IF([AC_TRY_COMMAND([${CC-cc} $1 -xc /dev/null -S -o /dev/null])],
+	[$2], [$3])])
 dnl Find and source sysdeps/*/preconfigure.
 dnl LIBC_PRECONFIGURE([$srcdir], [for])
diff --git a/ b/
index ee5e856..bb3b057 100644
--- a/
+++ b/
@@ -2005,10 +2005,9 @@ if test -n "$submachine"; then
 		 libc_cv_cc_submachine, [dnl
   for opt in "-march=$submachine" "-mcpu=$submachine"; do
-    if AC_TRY_COMMAND([${CC-cc} $opt -xc /dev/null -S -o /dev/null]); then
+    LIBC_TRY_CC_OPTION([$opt], [
-      break
-    fi
+      break], [])
   if test "x$libc_cv_cc_submachine" = xno; then
     AC_MSG_ERROR([${CC-cc} does not support $submachine])
diff --git a/sysdeps/i386/ b/sysdeps/i386/
index f769019..7b4879d 100644
--- a/sysdeps/i386/
+++ b/sysdeps/i386/
@@ -40,60 +40,48 @@ fi
 dnl Check if -msse4 works.
 AC_CACHE_CHECK(for SSE4 support, libc_cv_cc_sse4, [dnl
-if AC_TRY_COMMAND([${CC-cc} -msse4 -xc /dev/null -S -o /dev/null]); then
-  libc_cv_cc_sse4=yes
-  libc_cv_cc_sse4=no
+LIBC_TRY_CC_OPTION([-msse4], [libc_cv_cc_sse4=yes], [libc_cv_cc_sse4=no])
 if test $libc_cv_cc_sse4 = yes; then
 dnl Check if -Wa,-mtune=i686 works.
 AC_CACHE_CHECK(for assembler -mtune=i686 support, libc_cv_as_i686, [dnl
-if AC_TRY_COMMAND([${CC-cc} -Wa,-mtune=i686 -xc /dev/null -S -o /dev/null]); then
-  libc_cv_as_i686=yes
-  libc_cv_as_i686=no
+		   [libc_cv_as_i686=yes],
+		   [libc_cv_as_i686=no])
 dnl Check if -mavx works.
 AC_CACHE_CHECK(for AVX support, libc_cv_cc_avx, [dnl
-if AC_TRY_COMMAND([${CC-cc} -mavx -xc /dev/null -S -o /dev/null]); then
-  libc_cv_cc_avx=yes
-  libc_cv_cc_avx=no
+LIBC_TRY_CC_OPTION([-mavx], [libc_cv_cc_avx=yes], [libc_cv_cc_avx=no])
 if test $libc_cv_cc_avx = yes; then
 dnl Check if -msse2avx works.
 AC_CACHE_CHECK(for AVX encoding of SSE instructions, libc_cv_cc_sse2avx, [dnl
-if AC_TRY_COMMAND([${CC-cc} -msse2avx -xc /dev/null -S -o /dev/null]); then
-  libc_cv_cc_sse2avx=yes
-  libc_cv_cc_sse2avx=no
+		   [libc_cv_cc_sse2avx=yes],
+		   [libc_cv_cc_sse2avx=no])
 if test $libc_cv_cc_sse2avx = yes; then
 dnl Check if -mfma4 works.
 AC_CACHE_CHECK(for FMA4 support, libc_cv_cc_fma4, [dnl
-if AC_TRY_COMMAND([${CC-cc} -mfma4 -xc /dev/null -S -o /dev/null]); then
-  libc_cv_cc_fma4=yes
-  libc_cv_cc_fma4=no
+LIBC_TRY_CC_OPTION([-mfma4], [libc_cv_cc_fma4=yes], [libc_cv_cc_fma4=no])
 if test $libc_cv_cc_fma4 = yes; then
 dnl Check if -mno-vzeroupper works.
 AC_CACHE_CHECK(for -mno-vzeroupper support, libc_cv_cc_novzeroupper, [dnl
-if AC_TRY_COMMAND([${CC-cc} -mno-vzeroupper -xc /dev/null -S -o /dev/null]); then
-  libc_cv_cc_novzeroupper=yes
-  libc_cv_cc_novzeroupper=no
+		   [libc_cv_cc_novzeroupper=yes],
+		   [libc_cv_cc_novzeroupper=no])

Joseph S. Myers

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]