diff options
author | Ingo Schwarze <schwarze@openbsd.org> | 2016-07-20 14:03:06 +0000 |
---|---|---|
committer | Ingo Schwarze <schwarze@openbsd.org> | 2016-07-20 14:03:06 +0000 |
commit | adabbf213c455215091757e8a41226b45d6f2128 (patch) | |
tree | 6301b81dcaa0c7c6ba87740f719eca25f29989e5 | |
parent | 1c8453f78a03f9001101f31308bbb164b9990469 (diff) | |
download | mandoc-adabbf213c455215091757e8a41226b45d6f2128.tar.gz |
Autodetect if -lrt is needed for nanosleep(3).
Helpful for Solaris 9 and 10.
Reminded by Thomas Klausner.
-rw-r--r-- | Makefile | 1 | ||||
-rwxr-xr-x | configure | 20 | ||||
-rw-r--r-- | configure.local.example | 14 | ||||
-rw-r--r-- | test-nanosleep.c | 17 |
4 files changed, 47 insertions, 5 deletions
@@ -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 \ @@ -1,5 +1,7 @@ #!/bin/sh # +# $Id$ +# # Copyright (c) 2014, 2015, 2016 Ingo Schwarze <schwarze@openbsd.org> # # 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 db86c2fb..0fa3d3cb 100644 --- a/configure.local.example +++ b/configure.local.example @@ -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 <stdio.h> +#include <time.h> + +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; +} |