Mercurial > hg > octave-jordi > gnulib-hg
view m4/asinl.m4 @ 17751:9e8d98ca3311
pthread, pthread_sigmask, threadlib: port to Ubuntu 14.04
Problem reported by Assaf Gordon in:
http://lists.gnu.org/archive/html/bug-gnulib/2014-09/msg00023.html
Apparently Ubuntu is doing some fancy link-time optimization
that doesn't work with -lpthread but does work with -pthread.
Work around the bug by preferring -pthread to -lpthread.
This change affects only LIBS, not CFLAGS, which is a little
weird, but it works.
* m4/pthread.m4 (gl_PTHREAD_CHECK):
* m4/threadlib.m4 (gl_THREADLIB_BODY): Prefer -pthread to -lpthread.
* m4/pthread_sigmask.m4 (gl_FUNC_PTHREAD_SIGMASK):
Treat -pthread like -lpthread.
author | Paul Eggert <eggert@cs.ucla.edu> |
---|---|
date | Thu, 04 Sep 2014 14:55:12 -0700 |
parents | 344018b6e5d7 |
children | ab58d4870664 |
line wrap: on
line source
# asinl.m4 serial 8 dnl Copyright (C) 2010-2014 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, dnl with or without modifications, as long as this notice is preserved. AC_DEFUN([gl_FUNC_ASINL], [ AC_REQUIRE([gl_MATH_H_DEFAULTS]) AC_REQUIRE([gl_LONG_DOUBLE_VS_DOUBLE]) dnl Persuade glibc <math.h> to declare asinl(). AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS]) ASINL_LIBM= AC_CACHE_CHECK([whether asinl() can be used without linking with libm], [gl_cv_func_asinl_no_libm], [ AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#ifndef __NO_MATH_INLINES # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> long double (*funcptr) (long double) = asinl; long double x;]], [[return funcptr (x) > 1 || asinl (x) > 1;]])], [gl_cv_func_asinl_no_libm=yes], [gl_cv_func_asinl_no_libm=no]) ]) if test $gl_cv_func_asinl_no_libm = no; then AC_CACHE_CHECK([whether asinl() can be used with libm], [gl_cv_func_asinl_in_libm], [ save_LIBS="$LIBS" LIBS="$LIBS -lm" AC_LINK_IFELSE( [AC_LANG_PROGRAM( [[#ifndef __NO_MATH_INLINES # define __NO_MATH_INLINES 1 /* for glibc */ #endif #include <math.h> long double (*funcptr) (long double) = asinl; long double x;]], [[return funcptr (x) > 1 || asinl (x) > 1;]])], [gl_cv_func_asinl_in_libm=yes], [gl_cv_func_asinl_in_libm=no]) LIBS="$save_LIBS" ]) if test $gl_cv_func_asinl_in_libm = yes; then ASINL_LIBM=-lm fi fi if test $gl_cv_func_asinl_no_libm = yes \ || test $gl_cv_func_asinl_in_libm = yes; then dnl Also check whether it's declared. dnl Mac OS X 10.3 has asinl() in libc but doesn't declare it in <math.h>. AC_CHECK_DECL([asinl], , [HAVE_DECL_ASINL=0], [[#include <math.h>]]) else HAVE_DECL_ASINL=0 HAVE_ASINL=0 dnl Find libraries needed to link lib/asinl.c. if test $HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = 1; then AC_REQUIRE([gl_FUNC_ASIN]) ASINL_LIBM="$ASIN_LIBM" else AC_REQUIRE([gl_FUNC_SQRTL]) dnl Append $SQRTL_LIBM to ASINL_LIBM, avoiding gratuitous duplicates. case " $ASINL_LIBM " in *" $SQRTL_LIBM "*) ;; *) ASINL_LIBM="$ASINL_LIBM $SQRTL_LIBM" ;; esac fi fi AC_SUBST([ASINL_LIBM]) ])