# Copyright (C) Igor Sysoev # Copyright (C) NGINX, Inc. # Linux 3.17 with glibc 2.25, FreeBSD 12, Solaris 11.3. nxt_feature="getrandom()" nxt_feature_name=NXT_HAVE_GETRANDOM nxt_feature_run=yes nxt_feature_incs= nxt_feature_libs= nxt_feature_test="#include #include int main(void) { char buf[4]; if (getrandom(buf, 4, 0) < 0) { return 1; } return 0; }" . auto/feature if [ $nxt_found = no ]; then # Linux 3.17 SYS_getrandom. nxt_feature="SYS_getrandom in Linux" nxt_feature_name=NXT_HAVE_LINUX_SYS_GETRANDOM nxt_feature_test="#include #include #include int main(void) { char buf[4]; if (syscall(SYS_getrandom, buf, 4, 0) < 0) { return 1; } return 0; }" . auto/feature fi if [ $nxt_found = no ]; then # OpenBSD 5.6 lacks . nxt_feature="getentropy()" nxt_feature_name=NXT_HAVE_GETENTROPY nxt_feature_test="#include int main(void) { char buf[4]; if (getentropy(buf, 4) == -1) { return 1; } return 0; }" . auto/feature fi if [ $nxt_found = no ]; then # macOS 10.12. nxt_feature="getentropy() in sys/random.h" nxt_feature_name=NXT_HAVE_GETENTROPY_SYS_RANDOM nxt_feature_test="#include #include int main(void) { char buf[4]; if (getentropy(buf, 4) == -1) { return 1; } return 0; }" . auto/feature fi nxt_feature="ucontext" nxt_feature_name=NXT_HAVE_UCONTEXT nxt_feature_run= nxt_feature_incs= nxt_feature_libs= nxt_feature_test="#include #include int main(void) { ucontext_t uc; if (getcontext(&uc) == 0) { makecontext(&uc, NULL, 0); setcontext(&uc); } return 0; }" . auto/feature if [ $nxt_found = no ]; then # MacOSX 10.6 (Snow Leopard) has deprecated ucontext # and requires _XOPEN_SOURCE to be defined. nxt_feature="_XOPEN_SOURCE ucontext" nxt_feature_name=NXT_HAVE_UCONTEXT nxt_feature_run= nxt_feature_incs= nxt_feature_libs= nxt_feature_test="#define _XOPEN_SOURCE #include #include int main(void) { ucontext_t uc; if (getcontext(&uc) == 0) { makecontext(&uc, NULL, 0); setcontext(&uc); } return 0; }" . auto/feature fi # FreeBSD dlopen() is in libc. # MacOSX libdl.dylib is a symlink to libSystem.dylib. # GCC5 AddressSanitizer intercepts dlopen() and dlclose() but not dlsym() # so all dynamic linker functions should be tested. NXT_LIBDL= nxt_feature="dlopen()" nxt_feature_name=NXT_HAVE_DLOPEN nxt_feature_run= nxt_feature_incs= nxt_feature_libs= nxt_feature_test="#include #include int main(void) { void *h = dlopen(NULL, RTLD_NOW | RTLD_GLOBAL); dlsym(h, \"\"); dlclose(h); return 0; }" . auto/feature if [ $nxt_found = no ]; then # Linux and Solaris prior to 10 require libdl. # Solaris 10 libdl.so.1 is a filter to /usr/lib/ld.so.1. nxt_feature="dlopen() in libdl" nxt_feature_libs="-ldl" . auto/feature if [ $nxt_found = yes ]; then NXT_LIBDL="-ldl" fi fi # NetBSD 1.0, OpenBSD 1.0, FreeBSD 2.2 setproctitle(). nxt_feature="setproctitle()" nxt_feature_name=NXT_HAVE_SETPROCTITLE nxt_feature_run= nxt_feature_incs= nxt_feature_libs= nxt_feature_test="#include #include int main(void) { setproctitle(\"%s\", \"title\"); return 0; }" . auto/feature # Linux, FreeBSD, Solaris getgrouplist() nxt_feature="getgrouplist()" nxt_feature_name=NXT_HAVE_GETGROUPLIST nxt_feature_run= nxt_feature_incs= nxt_feature_libs= nxt_feature_test="#include #include int main(void) { getgrouplist(\"root\", 0, NULL, NULL); return 0; }" . auto/feature