From 3f7a03ebe3b65be0792849e300a122f6a050e3f8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Pawe=C5=82czyk?= Date: Sun, 25 Jun 2023 15:34:30 +0200 Subject: [PATCH] ggml : do not use _GNU_SOURCE gratuitously (#1027) * Do not use _GNU_SOURCE gratuitously. What is needed to build whisper.cpp and examples is availability of stuff defined in The Open Group Base Specifications Issue 6 (https://pubs.opengroup.org/onlinepubs/009695399/) known also as Single Unix Specification v3 (SUSv3) or POSIX.1-2001 + XSI extensions. There is no need to penalize musl libc which simply follows standards. Not having feature test macros in source code gives greater flexibility to those wanting to reuse it in 3rd party app, as they can build it with minimal FTM (_XOPEN_SOURCE=600) or other FTM depending on their needs. It builds without issues in Alpine (musl libc), Ubuntu (glibc), MSYS2. * examples : include SDL headers before other headers This is an attempt at fixing macOS build error coming from SDL2 relying on Darwin extension memset_pattern4/8/16 coming from Apple's string.h. --- Makefile | 11 ++++++----- examples/command/command.cpp | 2 +- examples/stream/stream.cpp | 2 +- examples/talk-llama/llama.cpp | 8 -------- examples/talk-llama/talk-llama.cpp | 2 +- examples/talk/talk.cpp | 2 +- ggml.c | 1 - 7 files changed, 10 insertions(+), 18 deletions(-) diff --git a/Makefile b/Makefile index 73e1c5fc..c7b05a9a 100644 --- a/Makefile +++ b/Makefile @@ -36,11 +36,12 @@ CFLAGS = -I. -O3 -DNDEBUG -std=c11 -fPIC CXXFLAGS = -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC LDFLAGS = -# ref: https://github.com/ggerganov/whisper.cpp/issues/37 -ifneq ($(wildcard /usr/include/musl/*),) - CFLAGS += -D_POSIX_SOURCE -D_GNU_SOURCE - CXXFLAGS += -D_POSIX_SOURCE -D_GNU_SOURCE -endif +# clock_gettime came in POSIX.1b (1993) +# CLOCK_MONOTONIC came in POSIX.1-2001 / SUSv3 as optional +# posix_memalign came in POSIX.1-2001 / SUSv3 +# M_PI is an XSI extension since POSIX.1-2001 / SUSv3, came in XPG1 (1985) +CFLAGS += -D_XOPEN_SOURCE=600 +CXXFLAGS += -D_XOPEN_SOURCE=600 # OS specific # TODO: support Windows diff --git a/examples/command/command.cpp b/examples/command/command.cpp index 54e3549f..d39af730 100644 --- a/examples/command/command.cpp +++ b/examples/command/command.cpp @@ -6,8 +6,8 @@ // ref: https://github.com/ggerganov/whisper.cpp/issues/171 // -#include "common.h" #include "common-sdl.h" +#include "common.h" #include "whisper.h" #include diff --git a/examples/stream/stream.cpp b/examples/stream/stream.cpp index cec5a2b7..e44c1f60 100644 --- a/examples/stream/stream.cpp +++ b/examples/stream/stream.cpp @@ -3,8 +3,8 @@ // A very quick-n-dirty implementation serving mainly as a proof of concept. // -#include "common.h" #include "common-sdl.h" +#include "common.h" #include "whisper.h" #include diff --git a/examples/talk-llama/llama.cpp b/examples/talk-llama/llama.cpp index 942407b8..04d78e03 100644 --- a/examples/talk-llama/llama.cpp +++ b/examples/talk-llama/llama.cpp @@ -1,11 +1,3 @@ -// Defines fileno on msys: -#ifndef _GNU_SOURCE -#define _GNU_SOURCE -#include -#include -#include -#endif - #include "llama-util.h" #include "llama.h" diff --git a/examples/talk-llama/talk-llama.cpp b/examples/talk-llama/talk-llama.cpp index 57a02eac..18658669 100644 --- a/examples/talk-llama/talk-llama.cpp +++ b/examples/talk-llama/talk-llama.cpp @@ -1,8 +1,8 @@ // Talk with AI // -#include "common.h" #include "common-sdl.h" +#include "common.h" #include "whisper.h" #include "llama.h" diff --git a/examples/talk/talk.cpp b/examples/talk/talk.cpp index 651ca200..12d98a00 100644 --- a/examples/talk/talk.cpp +++ b/examples/talk/talk.cpp @@ -1,8 +1,8 @@ // Talk with AI // -#include "common.h" #include "common-sdl.h" +#include "common.h" #include "whisper.h" #include "gpt-2.h" diff --git a/ggml.c b/ggml.c index 955f335c..9dcaafa9 100644 --- a/ggml.c +++ b/ggml.c @@ -1,4 +1,3 @@ -#define _GNU_SOURCE // Defines CLOCK_MONOTONIC on Linux #define _CRT_SECURE_NO_DEPRECATE // Disables ridiculous "unsafe" warnigns on Windows #include "ggml.h"