From ab4516274fe6b3f4e0ff7c5dab9fb0c60aa1a94e Mon Sep 17 00:00:00 2001 From: Bruno Haible Date: Tue, 24 Dec 2019 21:27:36 +0100 Subject: [PATCH] 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). --- ChangeLog | 8 ++++++++ m4/semaphore.m4 | 45 +++++++++++++++++++++++++++++++++++++++++++++ modules/lock-tests | 4 +++- 3 files changed, 56 insertions(+), 1 deletion(-) create mode 100644 m4/semaphore.m4 diff --git a/ChangeLog b/ChangeLog index 1f542832eb..ea866fb0df 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2019-12-24 Bruno Haible + + 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 strptime: fix typo in previous patch diff --git a/m4/semaphore.m4 b/m4/semaphore.m4 new file mode 100644 index 0000000000..4de682402a --- /dev/null +++ b/m4/semaphore.m4 @@ -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 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 ]], + [[sem_post ((sem_t *)0);]])], + [gl_cv_semaphore_lib=none], + [LIBS="$LIBS -lrt" + AC_LINK_IFELSE( + [AC_LANG_PROGRAM( + [[#include ]], + [[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]) +]) diff --git a/modules/lock-tests b/modules/lock-tests index 5d647fa813..112fbf9d04 100644 --- a/modules/lock-tests +++ b/modules/lock-tests @@ -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 -- 2.39.5