summaryrefslogtreecommitdiffstats
path: root/build
diff options
context:
space:
mode:
authorTavian Barnes <tavianator@tavianator.com>2025-07-09 10:22:00 -0400
committerTavian Barnes <tavianator@tavianator.com>2025-07-26 14:19:51 -0400
commit1b1e5a4707d681e4b38df56e83db1be9c07723b8 (patch)
tree818d23177c1b2ab338c28ad84ff4a496dc0c9602 /build
parent54260a40b37890bb6ee3b62659abd3b13c89a0aa (diff)
downloadbfs-1b1e5a4707d681e4b38df56e83db1be9c07723b8.tar.xz
build: Use C23 if possible
For broader compiler support, we try both -std=c23 and -std=c2x. If neither is supported, we fall back to -std=c17, but we will start requiring some C23 features as extensions in this mode.
Diffstat (limited to 'build')
-rw-r--r--build/flags.mk14
-rw-r--r--build/flags/std.c12
2 files changed, 19 insertions, 7 deletions
diff --git a/build/flags.mk b/build/flags.mk
index d6f9499..00876d1 100644
--- a/build/flags.mk
+++ b/build/flags.mk
@@ -8,7 +8,7 @@ include gen/vars.mk
# Internal flags
_CPPFLAGS := -Isrc -Igen -include src/prelude.h
-_CFLAGS := -std=c17
+_CFLAGS :=
_LDFLAGS :=
_LDLIBS :=
@@ -58,8 +58,7 @@ _CFLAGS += ${SAN_CFLAGS,${SAN}}
YESLIBS := ${NOT,${_MSAN}${_TSAN}${_TYSAN}}
NOLIBS ?= ${NOT,${YESLIBS}}
-# gcov only intercepts fork()/exec() with -std=gnu*
-GCOV_CFLAGS,y := -std=gnu17 --coverage
+GCOV_CFLAGS,y := --coverage
_CFLAGS += ${GCOV_CFLAGS,${_GCOV}}
LINT_CPPFLAGS,y := -D_FORTIFY_SOURCE=3 -DBFS_LINT
@@ -91,6 +90,10 @@ include build/exports.mk
# Conditionally-supported flags
AUTO_FLAGS := \
+ gen/flags/std.mk \
+ gen/flags/bind-now.mk \
+ gen/flags/deps.mk \
+ gen/flags/pthread.mk \
gen/flags/Wformat.mk \
gen/flags/Wimplicit-fallthrough.mk \
gen/flags/Wimplicit.mk \
@@ -99,10 +102,7 @@ AUTO_FLAGS := \
gen/flags/Wshadow.mk \
gen/flags/Wsign-compare.mk \
gen/flags/Wstrict-prototypes.mk \
- gen/flags/Wundef-prefix.mk \
- gen/flags/bind-now.mk \
- gen/flags/deps.mk \
- gen/flags/pthread.mk
+ gen/flags/Wundef-prefix.mk
gen/flags.mk: ${AUTO_FLAGS}
${MSG} "[ GEN] $@"
diff --git a/build/flags/std.c b/build/flags/std.c
new file mode 100644
index 0000000..6030d1f
--- /dev/null
+++ b/build/flags/std.c
@@ -0,0 +1,12 @@
+// Copyright © Tavian Barnes <tavianator@tavianator.com>
+// SPDX-License-Identifier: 0BSD
+
+/// _CFLAGS += -std=c23
+/// ---
+/// _CFLAGS += -std=c2x
+/// ---
+/// _CFLAGS += -std=c17
+
+int main(void) {
+ return 0;
+}