Skip to content

Commit ea89d52

Browse files
dertinlaanwj
authored andcommitted
Update ax_pthread.m4 to serial 21
- Add support for Clang Further details can be found at http://savannah.gnu.org/patch/?8186
1 parent e4235c3 commit ea89d52

File tree

1 file changed

+32
-17
lines changed

1 file changed

+32
-17
lines changed

src/m4/ax_pthread.m4

Lines changed: 32 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@
8282
# modified version of the Autoconf Macro, you may extend this special
8383
# exception to the GPL to apply to your modified version as well.
8484

85-
#serial 20
85+
#serial 21
8686

8787
AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD])
8888
AC_DEFUN([AX_PTHREAD], [
@@ -103,8 +103,8 @@ if test x"$PTHREAD_LIBS$PTHREAD_CFLAGS" != x; then
103103
save_LIBS="$LIBS"
104104
LIBS="$PTHREAD_LIBS $LIBS"
105105
AC_MSG_CHECKING([for pthread_join in LIBS=$PTHREAD_LIBS with CFLAGS=$PTHREAD_CFLAGS])
106-
AC_TRY_LINK_FUNC(pthread_join, ax_pthread_ok=yes)
107-
AC_MSG_RESULT($ax_pthread_ok)
106+
AC_TRY_LINK_FUNC([pthread_join], [ax_pthread_ok=yes])
107+
AC_MSG_RESULT([$ax_pthread_ok])
108108
if test x"$ax_pthread_ok" = xno; then
109109
PTHREAD_LIBS=""
110110
PTHREAD_CFLAGS=""
@@ -164,6 +164,20 @@ case ${host_os} in
164164
;;
165165
esac
166166
167+
# Clang doesn't consider unrecognized options an error unless we specify
168+
# -Werror. We throw in some extra Clang-specific options to ensure that
169+
# this doesn't happen for GCC, which also accepts -Werror.
170+
171+
AC_MSG_CHECKING([if compiler needs -Werror to reject unknown flags])
172+
save_CFLAGS="$CFLAGS"
173+
ax_pthread_extra_flags="-Werror"
174+
CFLAGS="$CFLAGS $ax_pthread_extra_flags -Wunknown-warning-option -Wsizeof-array-argument"
175+
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([int foo(void);],[foo()])],
176+
[AC_MSG_RESULT([yes])],
177+
[ax_pthread_extra_flags=
178+
AC_MSG_RESULT([no])])
179+
CFLAGS="$save_CFLAGS"
180+
167181
if test x"$ax_pthread_ok" = xno; then
168182
for flag in $ax_pthread_flags; do
169183
@@ -178,7 +192,7 @@ for flag in $ax_pthread_flags; do
178192
;;
179193
180194
pthread-config)
181-
AC_CHECK_PROG(ax_pthread_config, pthread-config, yes, no)
195+
AC_CHECK_PROG([ax_pthread_config], [pthread-config], [yes], [no])
182196
if test x"$ax_pthread_config" = xno; then continue; fi
183197
PTHREAD_CFLAGS="`pthread-config --cflags`"
184198
PTHREAD_LIBS="`pthread-config --ldflags` `pthread-config --libs`"
@@ -193,7 +207,7 @@ for flag in $ax_pthread_flags; do
193207
save_LIBS="$LIBS"
194208
save_CFLAGS="$CFLAGS"
195209
LIBS="$PTHREAD_LIBS $LIBS"
196-
CFLAGS="$CFLAGS $PTHREAD_CFLAGS"
210+
CFLAGS="$CFLAGS $PTHREAD_CFLAGS $ax_pthread_extra_flags"
197211
198212
# Check for various functions. We must include pthread.h,
199213
# since some functions may be macros. (On the Sequent, we
@@ -219,7 +233,7 @@ for flag in $ax_pthread_flags; do
219233
LIBS="$save_LIBS"
220234
CFLAGS="$save_CFLAGS"
221235
222-
AC_MSG_RESULT($ax_pthread_ok)
236+
AC_MSG_RESULT([$ax_pthread_ok])
223237
if test "x$ax_pthread_ok" = xyes; then
224238
break;
225239
fi
@@ -245,9 +259,9 @@ if test "x$ax_pthread_ok" = xyes; then
245259
[attr_name=$attr; break],
246260
[])
247261
done
248-
AC_MSG_RESULT($attr_name)
262+
AC_MSG_RESULT([$attr_name])
249263
if test "$attr_name" != PTHREAD_CREATE_JOINABLE; then
250-
AC_DEFINE_UNQUOTED(PTHREAD_CREATE_JOINABLE, $attr_name,
264+
AC_DEFINE_UNQUOTED([PTHREAD_CREATE_JOINABLE], [$attr_name],
251265
[Define to necessary symbol if this constant
252266
uses a non-standard name on your system.])
253267
fi
@@ -261,24 +275,25 @@ if test "x$ax_pthread_ok" = xyes; then
261275
if test "$GCC" = "yes"; then
262276
flag="-D_REENTRANT"
263277
else
278+
# TODO: What about Clang on Solaris?
264279
flag="-mt -D_REENTRANT"
265280
fi
266281
;;
267282
esac
268-
AC_MSG_RESULT(${flag})
283+
AC_MSG_RESULT([$flag])
269284
if test "x$flag" != xno; then
270285
PTHREAD_CFLAGS="$flag $PTHREAD_CFLAGS"
271286
fi
272287
273288
AC_CACHE_CHECK([for PTHREAD_PRIO_INHERIT],
274-
ax_cv_PTHREAD_PRIO_INHERIT, [
275-
AC_LINK_IFELSE([
276-
AC_LANG_PROGRAM([[#include <pthread.h>]], [[int i = PTHREAD_PRIO_INHERIT;]])],
289+
[ax_cv_PTHREAD_PRIO_INHERIT], [
290+
AC_LINK_IFELSE([AC_LANG_PROGRAM([[#include <pthread.h>]],
291+
[[int i = PTHREAD_PRIO_INHERIT;]])],
277292
[ax_cv_PTHREAD_PRIO_INHERIT=yes],
278293
[ax_cv_PTHREAD_PRIO_INHERIT=no])
279294
])
280295
AS_IF([test "x$ax_cv_PTHREAD_PRIO_INHERIT" = "xyes"],
281-
AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], 1, [Have PTHREAD_PRIO_INHERIT.]))
296+
[AC_DEFINE([HAVE_PTHREAD_PRIO_INHERIT], [1], [Have PTHREAD_PRIO_INHERIT.])])
282297
283298
LIBS="$save_LIBS"
284299
CFLAGS="$save_CFLAGS"
@@ -301,13 +316,13 @@ fi
301316
302317
test -n "$PTHREAD_CC" || PTHREAD_CC="$CC"
303318
304-
AC_SUBST(PTHREAD_LIBS)
305-
AC_SUBST(PTHREAD_CFLAGS)
306-
AC_SUBST(PTHREAD_CC)
319+
AC_SUBST([PTHREAD_LIBS])
320+
AC_SUBST([PTHREAD_CFLAGS])
321+
AC_SUBST([PTHREAD_CC])
307322
308323
# Finally, execute ACTION-IF-FOUND/ACTION-IF-NOT-FOUND:
309324
if test x"$ax_pthread_ok" = xyes; then
310-
ifelse([$1],,AC_DEFINE(HAVE_PTHREAD,1,[Define if you have POSIX threads libraries and header files.]),[$1])
325+
ifelse([$1],,[AC_DEFINE([HAVE_PTHREAD],[1],[Define if you have POSIX threads libraries and header files.])],[$1])
311326
:
312327
else
313328
ax_pthread_ok=no

0 commit comments

Comments
 (0)