aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonas 'Sortie' Termansen <sortie@maxsi.org>2021-10-03 13:33:16 +0200
committerJonas 'Sortie' Termansen <sortie@maxsi.org>2021-10-03 13:33:16 +0200
commitfcf6c877881626ee2ac94fc77051c79e3f7ae7ce (patch)
tree7634390a1cac4c517bae21b9e8b212949c27bc2f
parent691c7c7514c1f46e7d40619c4833094bd1c24571 (diff)
downloadportable-fcf6c877881626ee2ac94fc77051c79e3f7ae7ce.tar.gz
portable-fcf6c877881626ee2ac94fc77051c79e3f7ae7ce.tar.bz2
portable-fcf6c877881626ee2ac94fc77051c79e3f7ae7ce.zip
Support operating systems without some non-POSIX headers
The arpa/nameser.h, netinet/ip.h, and resolv.h headers are not crucial to building LibreSSL. The netinet/ip.h header is used in nc(1) for optional IPTOS_ features that can be ifdef'd on systems without support. The endian.h header is the upcoming standard header and should be used whenever available and correct. The machine/endian.h header is non-standard and doesn't have to exist on POSIX systems. Fix the check for getpagesize(3) not forward declaring the function, such that CFLAGS with -Werror=implicit-function-declaration doesn't cause the check to fail.
-rw-r--r--include/compat/arpa/nameser.h2
-rw-r--r--include/compat/machine/endian.h2
-rw-r--r--include/compat/netinet/ip.h2
-rw-r--r--include/compat/resolv.h2
-rw-r--r--m4/check-libc.m46
5 files changed, 8 insertions, 6 deletions
diff --git a/include/compat/arpa/nameser.h b/include/compat/arpa/nameser.h
index 0126a60..eff3b0d 100644
--- a/include/compat/arpa/nameser.h
+++ b/include/compat/arpa/nameser.h
@@ -4,7 +4,9 @@
4 */ 4 */
5 5
6#ifndef _WIN32 6#ifndef _WIN32
7#ifdef HAVE_ARPA_NAMESER_H
7#include_next <arpa/nameser.h> 8#include_next <arpa/nameser.h>
9#endif
8#else 10#else
9#include <win32netcompat.h> 11#include <win32netcompat.h>
10 12
diff --git a/include/compat/machine/endian.h b/include/compat/machine/endian.h
index 4dcb60d..bb22f5b 100644
--- a/include/compat/machine/endian.h
+++ b/include/compat/machine/endian.h
@@ -21,7 +21,7 @@
21#define BYTE_ORDER BIG_ENDIAN 21#define BYTE_ORDER BIG_ENDIAN
22#endif 22#endif
23 23
24#elif defined(__linux__) || defined(__midipix__) 24#elif defined(HAVE_ENDIAN_H)
25#include <endian.h> 25#include <endian.h>
26 26
27#elif defined(__sun) || defined(_AIX) || defined(__hpux) 27#elif defined(__sun) || defined(_AIX) || defined(__hpux)
diff --git a/include/compat/netinet/ip.h b/include/compat/netinet/ip.h
index 6019f7d..29f17f3 100644
--- a/include/compat/netinet/ip.h
+++ b/include/compat/netinet/ip.h
@@ -8,7 +8,9 @@
8#endif 8#endif
9 9
10#ifndef _WIN32 10#ifndef _WIN32
11#ifdef HAVE_NETINET_IP_H
11#include_next <netinet/ip.h> 12#include_next <netinet/ip.h>
13#endif
12#else 14#else
13#include <win32netcompat.h> 15#include <win32netcompat.h>
14#endif 16#endif
diff --git a/include/compat/resolv.h b/include/compat/resolv.h
index 42dec07..b804460 100644
--- a/include/compat/resolv.h
+++ b/include/compat/resolv.h
@@ -12,7 +12,7 @@
12#else 12#else
13#include <../include/resolv.h> 13#include <../include/resolv.h>
14#endif 14#endif
15#else 15#elif defined(HAVE_RESOLV_H)
16#include_next <resolv.h> 16#include_next <resolv.h>
17#endif 17#endif
18 18
diff --git a/m4/check-libc.m4 b/m4/check-libc.m4
index e511f6d..cca97c3 100644
--- a/m4/check-libc.m4
+++ b/m4/check-libc.m4
@@ -1,6 +1,7 @@
1AC_DEFUN([CHECK_LIBC_COMPAT], [ 1AC_DEFUN([CHECK_LIBC_COMPAT], [
2# Check for libc headers 2# Check for libc headers
3AC_CHECK_HEADERS([err.h readpassphrase.h]) 3AC_CHECK_HEADERS([err.h readpassphrase.h])
4AC_CHECK_HEADERS([arpa/nameser.h endian.h netinet/ip.h resolv.h])
4# Check for general libc functions 5# Check for general libc functions
5AC_CHECK_FUNCS([asprintf freezero memmem]) 6AC_CHECK_FUNCS([asprintf freezero memmem])
6AC_CHECK_FUNCS([readpassphrase reallocarray recallocarray]) 7AC_CHECK_FUNCS([readpassphrase reallocarray recallocarray])
@@ -9,10 +10,7 @@ AC_CHECK_FUNCS([timegm _mkgmtime timespecsub])
9AC_CHECK_FUNCS([getprogname syslog syslog_r]) 10AC_CHECK_FUNCS([getprogname syslog syslog_r])
10AC_CACHE_CHECK([for getpagesize], ac_cv_func_getpagesize, [ 11AC_CACHE_CHECK([for getpagesize], ac_cv_func_getpagesize, [
11 AC_LINK_IFELSE([AC_LANG_PROGRAM([[ 12 AC_LINK_IFELSE([AC_LANG_PROGRAM([[
12// Since Android NDK v16 getpagesize is defined as inline inside unistd.h 13#include <unistd.h>
13#ifdef __ANDROID__
14# include <unistd.h>
15#endif
16 ]], [[ 14 ]], [[
17 getpagesize(); 15 getpagesize();
18]])], 16]])],