From fd04a2530af452252677a5bf5b97f05788e91ba6 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Wed, 20 Jul 2016 14:03:06 +0000 Subject: Autodetect if -lrt is needed for nanosleep(3). Helpful for Solaris 9 and 10. Reminded by Thomas Klausner. --- Makefile | 3 ++- configure | 20 +++++++++++++++++++- configure.local.example | 16 +++++++++++----- test-nanosleep.c | 17 +++++++++++++++++ 4 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 test-nanosleep.c diff --git a/Makefile b/Makefile index df1116af..38f49721 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.489 2016/07/19 21:31:55 schwarze Exp $ +# $Id: Makefile,v 1.490 2016/07/20 14:03:06 schwarze Exp $ # # Copyright (c) 2010, 2011, 2012 Kristaps Dzonsons # Copyright (c) 2011, 2013-2016 Ingo Schwarze @@ -26,6 +26,7 @@ TESTSRCS = test-dirent-namlen.c \ test-getsubopt.c \ test-isblank.c \ test-mkdtemp.c \ + test-nanosleep.c \ test-ohash.c \ test-pledge.c \ test-progname.c \ diff --git a/configure b/configure index 919b2b9e..64a61f2b 100755 --- a/configure +++ b/configure @@ -1,5 +1,7 @@ #!/bin/sh # +# $Id: configure,v 1.47 2016/07/20 14:03:06 schwarze Exp $ +# # Copyright (c) 2014, 2015, 2016 Ingo Schwarze # # Permission to use, copy, modify, and distribute this software for any @@ -39,6 +41,7 @@ CFLAGS="-g -W -Wall -Wmissing-prototypes -Wstrict-prototypes -Wwrite-strings" CFLAGS="${CFLAGS} -Wno-unused-parameter" LDADD= LDFLAGS= +LD_NANOSLEEP= LD_OHASH= STATIC="-static" @@ -52,6 +55,7 @@ HAVE_GETLINE= HAVE_GETSUBOPT= HAVE_ISBLANK= HAVE_MKDTEMP= +HAVE_NANOSLEEP= HAVE_OHASH= HAVE_PLEDGE= HAVE_PROGNAME= @@ -197,6 +201,20 @@ runtest strtonum STRTONUM || true runtest vasprintf VASPRINTF || true runtest wchar WCHAR || true +# --- nanosleep --- +if [ -n "${LD_NANOSLEEP}" ]; then + runtest nanosleep NANOSLEEP "${LD_NANOSLEEP}" || true +elif singletest nanosleep NANOSLEEP; then + : +elif runtest nanosleep NANOSLEEP "-lrt"; then + LD_NANOSLEEP="-lrt" +fi +if [ "${HAVE_NANOSLEEP}" -eq 0 ]; then + echo "FATAL: nanosleep: no" 1>&2 + echo "FATAL: nanosleep: no" 1>&3 + exit 1 +fi + # --- ohash --- if ismanual ohash "${HAVE_OHASH}"; then : @@ -212,7 +230,7 @@ if [ "${HAVE_OHASH}" -eq 0 ]; then fi # --- LDADD --- -LDADD="${LDADD} ${LD_OHASH} -lz" +LDADD="${LDADD} ${LD_NANOSLEEP} ${LD_OHASH} -lz" echo "LDADD=\"${LDADD}\"" 1>&2 echo "LDADD=\"${LDADD}\"" 1>&3 echo 1>&3 diff --git a/configure.local.example b/configure.local.example index 9035c565..18a84fbd 100644 --- a/configure.local.example +++ b/configure.local.example @@ -1,4 +1,4 @@ -# $Id: configure.local.example,v 1.16 2016/07/19 22:40:33 schwarze Exp $ +# $Id: configure.local.example,v 1.17 2016/07/20 14:03:06 schwarze Exp $ # # Copyright (c) 2014, 2015, 2016 Ingo Schwarze # @@ -129,11 +129,17 @@ LD_OHASH="-lutil" CFLAGS="${CFLAGS} -I/usr/local/include" -# Some platforms may need additional linker flags to link against libmandoc -# that are not autodetected. -# For example, Solaris 9 and 10 need -lrt for nanosleep(2). +# Some platforms may need an additional linker flag for nanosleep(2). +# If none is needed or it is -lrt, it is autodetected. +# Otherwise, set the following variable. -LDADD="-lrt" +LD_NANOSLEEP="-lrt" + +# Some platforms might need additional linker flags to link against +# libmandoc that are not autodetected, though no such cases are +# currently known. + +LDADD="-lm" # Some systems may want to set additional linker flags for all the # binaries, not only for those using libmandoc, for example for diff --git a/test-nanosleep.c b/test-nanosleep.c new file mode 100644 index 00000000..4b25ca4c --- /dev/null +++ b/test-nanosleep.c @@ -0,0 +1,17 @@ +#include +#include + +int +main(void) +{ + struct timespec timeout; + + timeout.tv_sec = 0; + timeout.tv_nsec = 100000000; /* 0.1 seconds */ + + if (nanosleep(&timeout, NULL)) { + perror("nanosleep"); + return 1; + } + return 0; +} -- cgit v1.2.3-56-ge451