commit 0d51543814386c2d99901b968fff1d4b3daf654c
parent 5660104434d3541184d794eff0f8b1a0af859bb1
Author: Ryan Sepassi <rsepassi@gmail.com>
Date: Fri, 12 Jun 2026 09:46:45 -0700
chore(config): assert every release gate in config_assert.c
Bring the build-config static assertions up to date with the current flag set:
add the RV32 backend to the backend-bool list and the at-least-one-backend
count; add the CAS/PKG/COMPRESS subsystem bools; add the build-*/install and
xxd/cmp/hash/compress/disas/mc tool bools; and add the matching dependency
_Static_asserts (build-* need link+ar, compress needs compression, disas/mc need
disasm) so a misconfigured release build fails at compile time.
Diffstat:
1 file changed, 33 insertions(+), 2 deletions(-)
diff --git a/src/core/config_assert.c b/src/core/config_assert.c
@@ -4,8 +4,8 @@
#include "kit/config.h"
_Static_assert(KIT_ARCH_AA64_ENABLED + KIT_ARCH_X64_ENABLED +
- KIT_ARCH_RV64_ENABLED + KIT_ARCH_WASM_ENABLED +
- KIT_ARCH_C_TARGET_ENABLED >=
+ KIT_ARCH_RV32_ENABLED + KIT_ARCH_RV64_ENABLED +
+ KIT_ARCH_WASM_ENABLED + KIT_ARCH_C_TARGET_ENABLED >=
1,
"at least one backend architecture must be enabled");
@@ -19,6 +19,7 @@ _Static_assert(KIT_OBJ_ELF_ENABLED + KIT_OBJ_MACHO_ENABLED +
KIT_ASSERT_BOOL(KIT_ARCH_AA64_ENABLED);
KIT_ASSERT_BOOL(KIT_ARCH_X64_ENABLED);
+KIT_ASSERT_BOOL(KIT_ARCH_RV32_ENABLED);
KIT_ASSERT_BOOL(KIT_ARCH_RV64_ENABLED);
KIT_ASSERT_BOOL(KIT_ARCH_WASM_ENABLED);
KIT_ASSERT_BOOL(KIT_ARCH_C_TARGET_ENABLED);
@@ -40,11 +41,18 @@ KIT_ASSERT_BOOL(KIT_LINK_ENABLED);
KIT_ASSERT_BOOL(KIT_JIT_ENABLED);
KIT_ASSERT_BOOL(KIT_DBG_ENABLED);
KIT_ASSERT_BOOL(KIT_EMU_ENABLED);
+KIT_ASSERT_BOOL(KIT_CAS_ENABLED);
+KIT_ASSERT_BOOL(KIT_PKG_ENABLED);
+KIT_ASSERT_BOOL(KIT_COMPRESS_ENABLED);
KIT_ASSERT_BOOL(KIT_INTERP_ENABLED);
KIT_ASSERT_BOOL(KIT_INTERP_THREADED);
KIT_ASSERT_BOOL(KIT_TOOL_CC_ENABLED);
KIT_ASSERT_BOOL(KIT_TOOL_CHECK_ENABLED);
+KIT_ASSERT_BOOL(KIT_TOOL_BUILD_EXE_ENABLED);
+KIT_ASSERT_BOOL(KIT_TOOL_BUILD_LIB_ENABLED);
+KIT_ASSERT_BOOL(KIT_TOOL_BUILD_OBJ_ENABLED);
+KIT_ASSERT_BOOL(KIT_TOOL_INSTALL_ENABLED);
KIT_ASSERT_BOOL(KIT_TOOL_CPP_ENABLED);
KIT_ASSERT_BOOL(KIT_TOOL_AS_ENABLED);
KIT_ASSERT_BOOL(KIT_TOOL_LD_ENABLED);
@@ -63,6 +71,12 @@ KIT_ASSERT_BOOL(KIT_TOOL_SYMBOLIZE_ENABLED);
KIT_ASSERT_BOOL(KIT_TOOL_STRINGS_ENABLED);
KIT_ASSERT_BOOL(KIT_TOOL_CAS_ENABLED);
KIT_ASSERT_BOOL(KIT_TOOL_PKG_ENABLED);
+KIT_ASSERT_BOOL(KIT_TOOL_XXD_ENABLED);
+KIT_ASSERT_BOOL(KIT_TOOL_CMP_ENABLED);
+KIT_ASSERT_BOOL(KIT_TOOL_HASH_ENABLED);
+KIT_ASSERT_BOOL(KIT_TOOL_COMPRESS_ENABLED);
+KIT_ASSERT_BOOL(KIT_TOOL_DISAS_ENABLED);
+KIT_ASSERT_BOOL(KIT_TOOL_MC_ENABLED);
#undef KIT_ASSERT_BOOL
@@ -90,6 +104,17 @@ _Static_assert(!KIT_TOOL_CC_ENABLED ||
"KIT_TOOL_CC_ENABLED requires C, link, and ar support");
_Static_assert(!KIT_TOOL_CHECK_ENABLED || KIT_LANG_C_ENABLED,
"KIT_TOOL_CHECK_ENABLED requires C support");
+/* The build-* verbs share build.c, which drives kit_build_link and the
+ * archive engine unconditionally; every BUILD_* subset needs link + ar. */
+_Static_assert(!KIT_TOOL_BUILD_EXE_ENABLED ||
+ (KIT_LINK_ENABLED && KIT_AR_ENABLED),
+ "KIT_TOOL_BUILD_EXE_ENABLED requires link and ar support");
+_Static_assert(!KIT_TOOL_BUILD_LIB_ENABLED ||
+ (KIT_LINK_ENABLED && KIT_AR_ENABLED),
+ "KIT_TOOL_BUILD_LIB_ENABLED requires link and ar support");
+_Static_assert(!KIT_TOOL_BUILD_OBJ_ENABLED ||
+ (KIT_LINK_ENABLED && KIT_AR_ENABLED),
+ "KIT_TOOL_BUILD_OBJ_ENABLED requires link and ar support");
_Static_assert(!KIT_TOOL_CPP_ENABLED || KIT_LANG_CPP_ENABLED,
"KIT_TOOL_CPP_ENABLED requires C preprocessor support");
_Static_assert(!KIT_TOOL_LD_ENABLED || KIT_LINK_ENABLED,
@@ -122,3 +147,9 @@ _Static_assert(!KIT_TOOL_CAS_ENABLED || KIT_CAS_ENABLED,
"KIT_TOOL_CAS_ENABLED requires CAS support");
_Static_assert(!KIT_TOOL_PKG_ENABLED || KIT_PKG_ENABLED,
"KIT_TOOL_PKG_ENABLED requires PKG support");
+_Static_assert(!KIT_TOOL_COMPRESS_ENABLED || KIT_COMPRESS_ENABLED,
+ "KIT_TOOL_COMPRESS_ENABLED requires compression support");
+_Static_assert(!KIT_TOOL_DISAS_ENABLED || KIT_DISASM_ENABLED,
+ "KIT_TOOL_DISAS_ENABLED requires disasm support");
+_Static_assert(!KIT_TOOL_MC_ENABLED || KIT_DISASM_ENABLED,
+ "KIT_TOOL_MC_ENABLED requires disasm support");