diff --git a/Makefile b/Makefile index 991f6506..57693b24 100644 --- a/Makefile +++ b/Makefile @@ -45,6 +45,10 @@ ifeq ($(UNAME_S),FreeBSD) CFLAGS += -pthread CXXFLAGS += -pthread endif +ifeq ($(UNAME_S),Haiku) + CFLAGS += -pthread + CXXFLAGS += -pthread +endif # Architecture specific # TODO: probably these flags need to be tweaked on some architectures @@ -77,6 +81,23 @@ ifeq ($(UNAME_M),x86_64) ifneq (,$(findstring f16c,$(F16C_M))) CFLAGS += -mf16c endif + else ifeq ($(UNAME_S),Haiku) + AVX1_M := $(shell sysinfo -cpu | grep "AVX ") + ifneq (,$(findstring avx,$(AVX1_M))) + CFLAGS += -mavx + endif + AVX2_M := $(shell sysinfo -cpu | grep "AVX2 ") + ifneq (,$(findstring avx2,$(AVX2_M))) + CFLAGS += -mavx2 + endif + FMA_M := $(shell sysinfo -cpu | grep "FMA ") + ifneq (,$(findstring fma,$(FMA_M))) + CFLAGS += -mfma + endif + F16C_M := $(shell sysinfo -cpu | grep "F16C ") + ifneq (,$(findstring f16c,$(F16C_M))) + CFLAGS += -mf16c + endif else CFLAGS += -mfma -mf16c -mavx -mavx2 endif diff --git a/ggml.c b/ggml.c index f38b367d..f379f552 100644 --- a/ggml.c +++ b/ggml.c @@ -69,6 +69,10 @@ static int sched_yield (void) { typedef void* thread_ret_t; #endif +#ifdef __HAIKU__ +#define static_assert(cond, msg) _Static_assert(cond, msg) +#endif + #define GGML_DEBUG 0 #define GGML_GELU_FP16