summaryrefslogtreecommitdiff
path: root/m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4')
-rw-r--r--m4/attributes.m474
-rw-r--r--m4/pthreads.m412
2 files changed, 54 insertions, 32 deletions
diff --git a/m4/attributes.m4 b/m4/attributes.m4
index b1f8e5ba2..17d57fbeb 100644
--- a/m4/attributes.m4
+++ b/m4/attributes.m4
@@ -32,14 +32,13 @@ dnl distribute a modified version of the Autoconf Macro, you may extend
dnl this special exception to the GPL to apply to your modified version as
dnl well.
-AC_DEFUN([CC_CHECK_CFLAGS], [
- AC_CACHE_CHECK([if $CC supports $1 flag],
- AS_TR_SH([cc_cv_cflags_$1]),
+AC_DEFUN([CC_CHECK_CFLAGS_SILENT], [
+ AC_CACHE_VAL(AS_TR_SH([cc_cv_cflags_$1]),
[ac_save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $1"
AC_COMPILE_IFELSE([int a;],
[eval "AS_TR_SH([cc_cv_cflags_$1])='yes'"],
- [eval "AS_TR_SH([cc_cv_cflags_$1])="])
+ [eval "AS_TR_SH([cc_cv_cflags_$1])='no'"])
CFLAGS="$ac_save_CFLAGS"
])
@@ -50,6 +49,19 @@ AC_DEFUN([CC_CHECK_CFLAGS], [
fi
])
+AC_DEFUN([CC_CHECK_CFLAGS], [
+ AC_CACHE_CHECK([if $CC supports $1 flag],
+ AS_TR_SH([cc_cv_cflags_$1]),
+ CC_CHECK_CFLAGS_SILENT([$1]) dnl Don't execute actions here!
+ )
+
+ if eval test [x$]AS_TR_SH([cc_cv_cflags_$1]) = xyes; then
+ ifelse([$2], , [:], [$2])
+ else
+ ifelse([$3], , [:], [$3])
+ fi
+])
+
AC_DEFUN([CC_CHECK_LDFLAGS], [
AC_CACHE_CHECK([if $CC supports $1 flag],
AS_TR_SH([cc_cv_ldflags_$1]),
@@ -77,9 +89,11 @@ dnl Other compilers don't support -Werror per se, but they support
dnl an equivalent flag:
dnl - Sun Studio compiler supports -errwarn=%all
AC_DEFUN([CC_CHECK_WERROR], [
- AC_CACHE_VAL([cc_cv_werror],
- [CC_CHECK_CFLAGS([-Werror], [cc_cv_werror=-Werror],
- [CC_CHECK_CFLAGS([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
+ AC_CACHE_CHECK(
+ [for $CC way to treat warnings as errors],
+ [cc_cv_werror],
+ [CC_CHECK_CFLAGS_SILENT([-Werror], [cc_cv_werror=-Werror],
+ [CC_CHECK_CFLAGS_SILENT([-errwarn=%all], [cc_cv_werror=-errwarn=%all])])
])
])
@@ -184,29 +198,31 @@ AC_DEFUN([CC_ATTRIBUTE_MALLOC], [
[$2])
])
+AC_DEFUN([CC_ATTRIBUTE_PACKED], [
+ CC_CHECK_ATTRIBUTE(
+ [packed], ,
+ [struct astructure { char a; int b; long c; void *d; } __attribute__((packed));],
+ [$1],
+ [$2])
+])
+
AC_DEFUN([CC_FLAG_VISIBILITY], [
- AC_REQUIRE([CC_CHECK_WERROR])
- ac_save_CFLAGS="$CFLAGS"
- CFLAGS="$CFLAGS $cc_cv_werror"
- AC_CACHE_CHECK([if compiler supports -fvisibility=hidden],
- [cc_cv_flag_visibility],
- [
- save_CFLAGS=$CFLAGS
- CFLAGS="$CFLAGS -fvisibility=hidden"
- AC_COMPILE_IFELSE([int a;],
- [cc_cv_flag_visibility=yes],
- [cc_cv_flag_visibility=no])
- CFLAGS="$save_CFLAGS"
- ])
- CFLAGS="$ac_save_CFLAGS"
-
- if test "x$cc_cv_flag_visibility" = "xyes"; then
- AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1, [Define this if the compiler supports the -fvisibility flag])
- $1
- else
- true
- $2
- fi
+ AC_REQUIRE([CC_CHECK_WERROR])
+ AC_CACHE_CHECK([if $CC supports -fvisibility=hidden],
+ [cc_cv_flag_visibility],
+ [cc_flag_visibility_save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $cc_cv_werror"
+ CC_CHECK_CFLAGS_SILENT([-fvisibility=hidden],
+ cc_cv_flag_visibility='yes',
+ cc_cv_flag_visibility='no')
+ CFLAGS="$cc_flag_visibility_save_CFLAGS"])
+
+ if test "x$cc_cv_flag_visibility" = "xyes"; then
+ AC_DEFINE([SUPPORT_FLAG_VISIBILITY], 1, [Define this if the compiler supports the -fvisibility flag])
+ ifelse([$1], , [:], [$1])
+ else
+ ifelse([$2], , [:], [$2])
+ fi
])
AC_DEFUN([CC_FUNC_EXPECT], [
diff --git a/m4/pthreads.m4 b/m4/pthreads.m4
index 7f914e562..facac076f 100644
--- a/m4/pthreads.m4
+++ b/m4/pthreads.m4
@@ -20,9 +20,10 @@ AC_DEFUN([CC_PTHREAD_FLAGS], [
case $host in
*-hpux11*) PTHREAD_CFLAGS="" ;;
*-darwin*) PTHREAD_CFLAGS="" ;;
- *-solaris*)
- # Handle Studio compiler
+ *-solaris*|*-linux-gnu)
+ dnl Handle Sun Studio compiler (also on Linux)
CC_CHECK_CFLAGS([-mt], [PTHREAD_CFLAGS="-mt"]);;
+
*) PTHREAD_CFLAGS="-pthread" ;;
esac
fi
@@ -31,10 +32,15 @@ AC_DEFUN([CC_PTHREAD_FLAGS], [
*-hpux11*) PTHREAD_LIBS="-lpthread" ;;
*-darwin*) PTHREAD_LIBS="" ;;
*-solaris*)
- # Use the same libraries for gcc and sun studio cc
+ dnl Use the same libraries for gcc and Sun Studio cc
PTHREAD_LIBS="-lpthread -lposix4 -lrt";;
*) PTHREAD_LIBS="-pthread" ;;
esac
+
+ dnl Again, handle Sun Studio compiler
+ if test "x${PTHREAD_CFLAGS}" = "x-mt"; then
+ PTHREAD_LIBS="-mt"
+ fi
fi
AC_CACHE_CHECK([if $CC supports Pthread],