]> Savannah Git Hosting - gnulib.git/commitdiff
lock tests: Fix link error on HP-UX/hppa (regression from 2019-12-21).
authorBruno Haible <bruno@clisp.org>
Tue, 24 Dec 2019 20:27:36 +0000 (21:27 +0100)
committerBruno Haible <bruno@clisp.org>
Tue, 24 Dec 2019 20:42:53 +0000 (21:42 +0100)
* m4/semaphore.m4: New file.
* modules/lock-tests (Files): Add it.
(configure.ac): Require gl_SEMAPHORE.
(Makefile.am): Link test-lock with $(LIB_SEMAPHORE).

ChangeLog
m4/semaphore.m4 [new file with mode: 0644]
modules/lock-tests

index 1f542832ebca2e390defa85ff056d99fe71f1e93..ea866fb0df2b1e1f43d2401ac841a45066e9cbd4 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+2019-12-24  Bruno Haible  <bruno@clisp.org>
+
+       lock tests: Fix link error on HP-UX/hppa (regression from 2019-12-21).
+       * m4/semaphore.m4: New file.
+       * modules/lock-tests (Files): Add it.
+       (configure.ac): Require gl_SEMAPHORE.
+       (Makefile.am): Link test-lock with $(LIB_SEMAPHORE).
+
 2019-12-24  Paul Eggert  <eggert@cs.ucla.edu>
 
        strptime: fix typo in previous patch
diff --git a/m4/semaphore.m4 b/m4/semaphore.m4
new file mode 100644 (file)
index 0000000..4de6824
--- /dev/null
@@ -0,0 +1,45 @@
+# semaphore.m4 serial 1
+dnl Copyright (C) 2019 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])
+])
index 5d647fa813432b3053432c8ab6bad498bf406501..112fbf9d0493208c8707d2c6a694010cd8ca2723 100644 (file)
@@ -2,6 +2,7 @@ Files:
 tests/test-rwlock1.c
 tests/test-lock.c
 tests/test-once.c
+m4/semaphore.m4
 
 Depends-on:
 thread
@@ -12,12 +13,13 @@ yield
 configure.ac:
 AC_CHECK_HEADERS_ONCE([semaphore.h])
 AC_CHECK_DECLS_ONCE([alarm])
+AC_REQUIRE([gl_SEMAPHORE])
 
 Makefile.am:
 TESTS += test-rwlock1 test-lock test-once1 test-once2
 check_PROGRAMS += test-rwlock1 test-lock test-once1 test-once2
 test_rwlock1_LDADD = $(LDADD) @LIBMULTITHREAD@ @YIELD_LIB@
-test_lock_LDADD = $(LDADD) @LIBMULTITHREAD@ @YIELD_LIB@
+test_lock_LDADD = $(LDADD) @LIBMULTITHREAD@ @YIELD_LIB@ @LIB_SEMAPHORE@
 test_once1_SOURCES = test-once.c
 test_once1_LDADD = $(LDADD) @LIBTHREAD@
 test_once2_SOURCES = test-once.c