aboutsummaryrefslogtreecommitdiff
path: root/meson.build
diff options
context:
space:
mode:
authoreldritch horrors <pennae@lix.systems>2024-09-01 01:37:10 +0200
committereldritch horrors <pennae@lix.systems>2024-09-09 01:48:20 +0000
commitc14486ae8d3bbc862c625d948a6b2f4dc0927d5b (patch)
treec2b2d1256d6e8cdb292537f3f339fec5907fb86f /meson.build
parente9505dcc5a0ff259b9e284e9e617486e81a1ff6f (diff)
forbid gcc for compilation, only allow clang
while gcc 12 and older miscompile our generators, gcc 13 and older outright crash on kj coroutines. (newer gcc versions may fix this) Change-Id: I19f12c8c147239680eb0fa5a84ef5c7de38c9263
Diffstat (limited to 'meson.build')
-rw-r--r--meson.build10
1 files changed, 9 insertions, 1 deletions
diff --git a/meson.build b/meson.build
index b015cc606..f89f5a016 100644
--- a/meson.build
+++ b/meson.build
@@ -167,10 +167,18 @@ endif
# frees one would expect when the objects are unique_ptrs. these problems
# often show up as memory corruption when nesting generators (since we do
# treat generators like owned memory) and will cause inexplicable crashs.
+#
+# gcc 13 does not compile capnp coroutine code correctly. a newer version
+# may fix this. (cf. https://gcc.gnu.org/bugzilla/show_bug.cgi?id=102051)
+# we allow gcc 13 here anyway because CI uses it for clang-tidy, and when
+# the compiler crashes outright if won't produce any bad binaries either.
assert(
cxx.get_id() != 'gcc' or cxx.version().version_compare('>=13'),
- 'GCC 12 and earlier are known to miscompile lix coroutines, use GCC 13 or clang.'
+ 'GCC is known to miscompile coroutines, use clang.'
)
+if cxx.get_id() == 'gcc'
+ warning('GCC is known to crash while building coroutines, use clang.')
+endif
# Translate some historical and Mesony CPU names to Lixy CPU names.