summaryrefslogtreecommitdiff
path: root/ext
diff options
context:
space:
mode:
authorUros Majstorovic <majstor@majstor.org>2022-02-02 08:14:56 +0100
committerUros Majstorovic <majstor@majstor.org>2022-02-02 08:14:56 +0100
commitd359dd9981f4137e8873a7a571e5c54c5b2449c4 (patch)
treeabfe99bcbce4324c71bd03f68581bdd605d13ec9 /ext
parente215377e5b1440f8ec0842712f2e559e82de2f03 (diff)
linux and freebsd compatibility
Diffstat (limited to 'ext')
-rw-r--r--ext/libressl/include/compat/machine/endian.h51
-rw-r--r--ext/libressl/include/compat/stdlib.h47
-rw-r--r--ext/libressl/ssl_common.mk2
3 files changed, 100 insertions, 0 deletions
diff --git a/ext/libressl/include/compat/machine/endian.h b/ext/libressl/include/compat/machine/endian.h
new file mode 100644
index 0000000..4dcb60d
--- /dev/null
+++ b/ext/libressl/include/compat/machine/endian.h
@@ -0,0 +1,51 @@
+/*
+ * Public domain
+ * machine/endian.h compatibility shim
+ */
+
+#ifndef LIBCRYPTOCOMPAT_BYTE_ORDER_H_
+#define LIBCRYPTOCOMPAT_BYTE_ORDER_H_
+
+#if defined(_WIN32)
+
+#define LITTLE_ENDIAN 1234
+#define BIG_ENDIAN 4321
+#define PDP_ENDIAN 3412
+
+/*
+ * Use GCC and Visual Studio compiler defines to determine endian.
+ */
+#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
+#define BYTE_ORDER LITTLE_ENDIAN
+#else
+#define BYTE_ORDER BIG_ENDIAN
+#endif
+
+#elif defined(__linux__) || defined(__midipix__)
+#include <endian.h>
+
+#elif defined(__sun) || defined(_AIX) || defined(__hpux)
+#include <sys/types.h>
+#include <arpa/nameser_compat.h>
+
+#elif defined(__sgi)
+#include <standards.h>
+#include <sys/endian.h>
+
+#else
+#include_next <machine/endian.h>
+
+#endif
+
+#ifndef __STRICT_ALIGNMENT
+#define __STRICT_ALIGNMENT
+#if defined(__i386) || defined(__i386__) || \
+ defined(__x86_64) || defined(__x86_64__) || \
+ defined(__s390__) || defined(__s390x__) || \
+ defined(__aarch64__) || \
+ ((defined(__arm__) || defined(__arm)) && __ARM_ARCH >= 6)
+#undef __STRICT_ALIGNMENT
+#endif
+#endif
+
+#endif
diff --git a/ext/libressl/include/compat/stdlib.h b/ext/libressl/include/compat/stdlib.h
new file mode 100644
index 0000000..2eaea24
--- /dev/null
+++ b/ext/libressl/include/compat/stdlib.h
@@ -0,0 +1,47 @@
+/*
+ * stdlib.h compatibility shim
+ * Public domain
+ */
+
+#ifdef _MSC_VER
+#if _MSC_VER >= 1900
+#include <../ucrt/stdlib.h>
+#else
+#include <../include/stdlib.h>
+#endif
+#else
+#include_next <stdlib.h>
+#endif
+
+#ifndef LIBCRYPTOCOMPAT_STDLIB_H
+#define LIBCRYPTOCOMPAT_STDLIB_H
+
+#include <sys/types.h>
+#include <stdint.h>
+
+#ifndef HAVE_ARC4RANDOM_BUF
+uint32_t arc4random(void);
+void arc4random_buf(void *_buf, size_t n);
+uint32_t arc4random_uniform(uint32_t upper_bound);
+#endif
+
+#ifndef HAVE_FREEZERO
+void freezero(void *ptr, size_t sz);
+#endif
+
+#ifndef HAVE_GETPROGNAME
+const char * getprogname(void);
+#endif
+
+void *reallocarray(void *, size_t, size_t);
+
+#ifndef HAVE_RECALLOCARRAY
+void *recallocarray(void *, size_t, size_t, size_t);
+#endif
+
+#ifndef HAVE_STRTONUM
+long long strtonum(const char *nptr, long long minval,
+ long long maxval, const char **errstr);
+#endif
+
+#endif
diff --git a/ext/libressl/ssl_common.mk b/ext/libressl/ssl_common.mk
index fab0710..bac4e9f 100644
--- a/ext/libressl/ssl_common.mk
+++ b/ext/libressl/ssl_common.mk
@@ -1,6 +1,8 @@
-include common.mk
CFLAGS += -I../../include/compat -I../../include
+# exclude from include/compat/stdlib.h
+CFLAGS += -DHAVE_FREEZERO -DHAVE_GETPROGNAME -DHAVE_RECALLOCARRAY -DHAVE_STRTONUM
# exclude from include/compat/string.h
CFLAGS += -DHAVE_STRCASECMP -DHAVE_STRLCPY -DHAVE_STRLCAT -DHAVE_STRNDUP -DHAVE_STRNLEN -DHAVE_STRSEP -DHAVE_MEMMEM
# exclude from include/compat/unistd.h