From ab8fc413028b4fd22492a93ef31223d606cac5a6 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E9=BB=98=E9=BB=98?= Date: Sun, 31 Mar 2019 16:07:03 +0800 Subject: [PATCH] fix compile error on macOS Mojave --- Makefile | 7 +++++++ lib/bch.c | 9 ++++++++- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c1af9307b3..92e04dd689 100644 --- a/Makefile +++ b/Makefile @@ -291,6 +291,9 @@ DARWIN_MINOR_VERSION = $(shell sw_vers -productVersion | cut -f 2 -d '.') os_x_before = $(shell if [ $(DARWIN_MAJOR_VERSION) -le $(1) -a \ $(DARWIN_MINOR_VERSION) -le $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;) +os_x_after = $(shell if [ $(DARWIN_MAJOR_VERSION) -ge $(1) -a \ + $(DARWIN_MINOR_VERSION) -ge $(2) ] ; then echo "$(3)"; else echo "$(4)"; fi ;) + # Snow Leopards build environment has no longer restrictions as described above HOSTCC = $(call os_x_before, 10, 5, "cc", "gcc") HOSTCFLAGS += $(call os_x_before, 10, 4, "-traditional-cpp") @@ -300,6 +303,10 @@ HOSTLDFLAGS += $(call os_x_before, 10, 5, "-multiply_defined suppress") # in some host tools which is a problem then ... so disable ASLR for these # tools HOSTLDFLAGS += $(call os_x_before, 10, 7, "", "-Xlinker -no_pie") + +# macOS Mojave (10.14.X) +# Undefined symbols for architecture x86_64: "_PyArg_ParseTuple" +HOSTLDFLAGS += $(call os_x_after, 10, 14, "-lpython -dynamclib", "") endif # Decide whether to build built-in, modular, or both. diff --git a/lib/bch.c b/lib/bch.c index 20079eb9eb..c4fac77d61 100644 --- a/lib/bch.c +++ b/lib/bch.c @@ -62,6 +62,9 @@ #include #if defined(__FreeBSD__) #include +#elif defined(__APPLE__) +#include +#include #else #include #endif @@ -70,7 +73,11 @@ #include #undef cpu_to_be32 +#if defined(__APPLE__) +#define cpu_to_be32 OSSwapHostToBigInt32 +#else #define cpu_to_be32 htobe32 +#endif #define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d)) #define kmalloc(size, flags) malloc(size) #define kzalloc(size, flags) calloc(1, size) @@ -116,7 +123,7 @@ struct gf_poly_deg1 { }; #ifdef USE_HOSTCC -#if !defined(__DragonFly__) && !defined(__FreeBSD__) +#if !defined(__DragonFly__) && !defined(__FreeBSD__) && !defined(__APPLE__) static int fls(int x) { int r = 32; -- 2.25.1