* 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.
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
// ref: https://github.com/ggerganov/whisper.cpp/issues/171
//
-#include "common.h"
#include "common-sdl.h"
+#include "common.h"
#include "whisper.h"
#include <sstream>
// 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 <cassert>
-// Defines fileno on msys:
-#ifndef _GNU_SOURCE
-#define _GNU_SOURCE
-#include <cstddef>
-#include <cstdint>
-#include <cstdio>
-#endif
-
#include "llama-util.h"
#include "llama.h"
// Talk with AI
//
-#include "common.h"
#include "common-sdl.h"
+#include "common.h"
#include "whisper.h"
#include "llama.h"
// Talk with AI
//
-#include "common.h"
#include "common-sdl.h"
+#include "common.h"
#include "whisper.h"
#include "gpt-2.h"
-#define _GNU_SOURCE // Defines CLOCK_MONOTONIC on Linux
#define _CRT_SECURE_NO_DEPRECATE // Disables ridiculous "unsafe" warnigns on Windows
#include "ggml.h"