1AC_DEFUN([PDNS_CHECK_OS],[
2  THREADFLAGS=""
3
4  case "$host_os" in
5  solaris2.1*)
6    LIBS="-lposix4 -lpthread $LIBS"
7    CXXFLAGS="-D_REENTRANT $CXXFLAGS"
8    have_solaris="yes"
9    ;;
10  solaris2.8 | solaris2.9 )
11    AC_DEFINE(NEED_POSIX_TYPEDEF,,[If POSIX typedefs need to be defined])
12    AC_DEFINE(NEED_INET_NTOP_PROTO,,[If your OS is so broken that it needs an additional prototype])
13    LIBS="-lposix4 -lpthread $LIBS"
14    CXXFLAGS="-D_REENTRANT $CXXFLAGS"
15    have_solaris="yes"
16    ;;
17  linux*)
18    THREADFLAGS="-pthread"
19    have_linux="yes"
20    ;;
21  darwin*)
22    CXXFLAGS="-D__APPLE_USE_RFC_3542 -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE $CXXFLAGS"
23    ;;
24  freebsd*)
25    THREADFLAGS="-pthread"
26    have_freebsd="yes"
27    ;;
28  *)
29    LDFLAGS="-pthread $LDFLAGS"
30    CXXFLAGS="-pthread $CXXFLAGS"
31    ;;
32  esac
33
34  AM_CONDITIONAL([HAVE_FREEBSD], [test "x$have_freebsd" = "xyes"])
35  AM_CONDITIONAL([HAVE_LINUX], [test "x$have_linux" = "xyes"])
36  AM_CONDITIONAL([HAVE_SOLARIS], [test "x$have_solaris" = "xyes"])
37
38  AC_MSG_CHECKING([whether -latomic is needed for __atomic builtins])
39  AC_LINK_IFELSE(
40    [AC_LANG_PROGRAM([[#include <stdint.h>]],
41       [[uint64_t val = 0; __atomic_add_fetch(&val, 1, __ATOMIC_RELAXED);]]
42    )],
43    [AC_MSG_RESULT([no])],
44    [LIBS="$LIBS -latomic"
45     AC_LINK_IFELSE(
46       [AC_LANG_PROGRAM([[#include <stdint.h>]],
47               [[uint64_t val = 0; __atomic_add_fetch(&val, 1, __ATOMIC_RELAXED);]]
48       )],
49       [AC_MSG_RESULT([yes])],
50       [AC_MSG_FAILURE([libatomic needed, but linking with -latomic failed, cannot continue])]
51    )]
52  )
53
54  AC_SUBST(THREADFLAGS)
55  AC_SUBST([DYNLINKFLAGS], [-export-dynamic])
56])
57