Skip to content

Commit 3f7a03e

Browse files
authored
ggml : do not use _GNU_SOURCE gratuitously (ggml-org#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.
1 parent 62642bb commit 3f7a03e

File tree

7 files changed

+10
-18
lines changed

7 files changed

+10
-18
lines changed

Makefile

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,12 @@ CFLAGS = -I. -O3 -DNDEBUG -std=c11 -fPIC
3636
CXXFLAGS = -I. -I./examples -O3 -DNDEBUG -std=c++11 -fPIC
3737
LDFLAGS =
3838

39-
# ref: https://github.com/ggerganov/whisper.cpp/issues/37
40-
ifneq ($(wildcard /usr/include/musl/*),)
41-
CFLAGS += -D_POSIX_SOURCE -D_GNU_SOURCE
42-
CXXFLAGS += -D_POSIX_SOURCE -D_GNU_SOURCE
43-
endif
39+
# clock_gettime came in POSIX.1b (1993)
40+
# CLOCK_MONOTONIC came in POSIX.1-2001 / SUSv3 as optional
41+
# posix_memalign came in POSIX.1-2001 / SUSv3
42+
# M_PI is an XSI extension since POSIX.1-2001 / SUSv3, came in XPG1 (1985)
43+
CFLAGS += -D_XOPEN_SOURCE=600
44+
CXXFLAGS += -D_XOPEN_SOURCE=600
4445

4546
# OS specific
4647
# TODO: support Windows

examples/command/command.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
// ref: https://github.com/ggerganov/whisper.cpp/issues/171
77
//
88

9-
#include "common.h"
109
#include "common-sdl.h"
10+
#include "common.h"
1111
#include "whisper.h"
1212

1313
#include <sstream>

examples/stream/stream.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
// A very quick-n-dirty implementation serving mainly as a proof of concept.
44
//
55

6-
#include "common.h"
76
#include "common-sdl.h"
7+
#include "common.h"
88
#include "whisper.h"
99

1010
#include <cassert>

examples/talk-llama/llama.cpp

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,3 @@
1-
// Defines fileno on msys:
2-
#ifndef _GNU_SOURCE
3-
#define _GNU_SOURCE
4-
#include <cstddef>
5-
#include <cstdint>
6-
#include <cstdio>
7-
#endif
8-
91
#include "llama-util.h"
102
#include "llama.h"
113

examples/talk-llama/talk-llama.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// Talk with AI
22
//
33

4-
#include "common.h"
54
#include "common-sdl.h"
5+
#include "common.h"
66
#include "whisper.h"
77
#include "llama.h"
88

examples/talk/talk.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// Talk with AI
22
//
33

4-
#include "common.h"
54
#include "common-sdl.h"
5+
#include "common.h"
66
#include "whisper.h"
77
#include "gpt-2.h"
88

ggml.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
#define _GNU_SOURCE // Defines CLOCK_MONOTONIC on Linux
21
#define _CRT_SECURE_NO_DEPRECATE // Disables ridiculous "unsafe" warnigns on Windows
32

43
#include "ggml.h"

0 commit comments

Comments
 (0)