summaryrefslogtreecommitdiffstats
path: root/m4/semaphore.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4/semaphore.m4')
-rw-r--r--m4/semaphore.m445
1 files changed, 45 insertions, 0 deletions
diff --git a/m4/semaphore.m4 b/m4/semaphore.m4
new file mode 100644
index 0000000..ca20c76
--- /dev/null
+++ b/m4/semaphore.m4
@@ -0,0 +1,45 @@
+# semaphore.m4 serial 1
+dnl Copyright (C) 2019-2020 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.
+
+# Sets LIB_SEMAPHORE to the library needed, in addition to $(LIBMULTITHREAD),
+# for getting the <semaphore.h> functions.
+
+AC_DEFUN([gl_SEMAPHORE],
+[
+ AC_REQUIRE([gl_THREADLIB])
+ dnl sem_post is
+ dnl - in libc on macOS, FreeBSD, AIX, IRIX, Solaris 11, Haiku, Cygwin,
+ dnl - in libpthread on glibc systems, OpenBSD,
+ dnl - in libpthread or librt on NetBSD,
+ dnl - in librt on HP-UX 11, OSF/1, Solaris 10.
+ dnl On the platforms where -lpthread is needed, it is contained in
+ dnl $LIBMULTITHREAD. Therefore, the only library we need to test for is -lrt.
+ AC_CACHE_CHECK([for library needed for semaphore functions],
+ [gl_cv_semaphore_lib],
+ [save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBMULTITHREAD"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <semaphore.h>]],
+ [[sem_post ((sem_t *)0);]])],
+ [gl_cv_semaphore_lib=none],
+ [LIBS="$LIBS -lrt"
+ AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#include <semaphore.h>]],
+ [[sem_post ((sem_t *)0);]])],
+ [gl_cv_semaphore_lib='-lrt'],
+ [gl_cv_semaphore_lib=none])
+ ])
+ LIBS="$save_LIBS"
+ ])
+ if test "x$gl_cv_semaphore_lib" = xnone; then
+ LIB_SEMAPHORE=
+ else
+ LIB_SEMAPHORE="$gl_cv_semaphore_lib"
+ fi
+ AC_SUBST([LIB_SEMAPHORE])
+])