kit

kit
git clone https://git.ryansepassi.com/git/kit.git
Log | Files | Refs | README

config_assert.c (8701B)


      1 /* Build-time invariants on the component configuration in
      2  * include/kit/config.h. Kept in its own TU so the asserts always
      3  * compile, regardless of which other sources are gated out. */
      4 #include "kit/config.h"
      5 
      6 _Static_assert(KIT_ARCH_AA64_ENABLED + KIT_ARCH_X64_ENABLED +
      7                        KIT_ARCH_ARM32_ENABLED + KIT_ARCH_RV32_ENABLED +
      8                        KIT_ARCH_RV64_ENABLED + KIT_ARCH_WASM_ENABLED +
      9                        KIT_ARCH_C_TARGET_ENABLED >=
     10                    1,
     11                "at least one backend architecture must be enabled");
     12 
     13 _Static_assert(KIT_OBJ_ELF_ENABLED + KIT_OBJ_MACHO_ENABLED +
     14                        KIT_OBJ_COFF_ENABLED + KIT_OBJ_WASM_ENABLED >=
     15                    1,
     16                "at least one object/image format must be enabled");
     17 
     18 #define KIT_ASSERT_BOOL(flag) \
     19   _Static_assert((flag) == 0 || (flag) == 1, #flag " must be 0 or 1")
     20 
     21 KIT_ASSERT_BOOL(KIT_ARCH_AA64_ENABLED);
     22 KIT_ASSERT_BOOL(KIT_ARCH_X64_ENABLED);
     23 KIT_ASSERT_BOOL(KIT_ARCH_ARM32_ENABLED);
     24 KIT_ASSERT_BOOL(KIT_ARCH_RV32_ENABLED);
     25 KIT_ASSERT_BOOL(KIT_ARCH_RV64_ENABLED);
     26 KIT_ASSERT_BOOL(KIT_ARCH_WASM_ENABLED);
     27 KIT_ASSERT_BOOL(KIT_ARCH_C_TARGET_ENABLED);
     28 KIT_ASSERT_BOOL(KIT_OBJ_ELF_ENABLED);
     29 KIT_ASSERT_BOOL(KIT_OBJ_MACHO_ENABLED);
     30 KIT_ASSERT_BOOL(KIT_OBJ_COFF_ENABLED);
     31 KIT_ASSERT_BOOL(KIT_OBJ_WASM_ENABLED);
     32 KIT_ASSERT_BOOL(KIT_LANG_ASM_ENABLED);
     33 KIT_ASSERT_BOOL(KIT_LANG_CPP_ENABLED);
     34 KIT_ASSERT_BOOL(KIT_LANG_C_ENABLED);
     35 KIT_ASSERT_BOOL(KIT_LANG_TOY_ENABLED);
     36 KIT_ASSERT_BOOL(KIT_LANG_WASM_ENABLED);
     37 _Static_assert(KIT_OPT_ENABLED == 0 || KIT_OPT_ENABLED == 1,
     38                "KIT_OPT_ENABLED must be 0 or 1");
     39 KIT_ASSERT_BOOL(KIT_AR_ENABLED);
     40 KIT_ASSERT_BOOL(KIT_DISASM_ENABLED);
     41 KIT_ASSERT_BOOL(KIT_DWARF_ENABLED);
     42 KIT_ASSERT_BOOL(KIT_LINK_ENABLED);
     43 KIT_ASSERT_BOOL(KIT_JIT_ENABLED);
     44 KIT_ASSERT_BOOL(KIT_DBG_ENABLED);
     45 KIT_ASSERT_BOOL(KIT_EMU_ENABLED);
     46 KIT_ASSERT_BOOL(KIT_CAS_ENABLED);
     47 KIT_ASSERT_BOOL(KIT_PKG_ENABLED);
     48 KIT_ASSERT_BOOL(KIT_BUILD_ENABLED);
     49 KIT_ASSERT_BOOL(KIT_COMPRESS_ENABLED);
     50 KIT_ASSERT_BOOL(KIT_MAKE_ENABLED);
     51 KIT_ASSERT_BOOL(KIT_GRAM_ENABLED);
     52 KIT_ASSERT_BOOL(KIT_INTERP_ENABLED);
     53 KIT_ASSERT_BOOL(KIT_INTERP_THREADED);
     54 
     55 KIT_ASSERT_BOOL(KIT_TOOL_CC_ENABLED);
     56 KIT_ASSERT_BOOL(KIT_TOOL_CHECK_ENABLED);
     57 KIT_ASSERT_BOOL(KIT_TOOL_BUILD_EXE_ENABLED);
     58 KIT_ASSERT_BOOL(KIT_TOOL_BUILD_LIB_ENABLED);
     59 KIT_ASSERT_BOOL(KIT_TOOL_BUILD_OBJ_ENABLED);
     60 KIT_ASSERT_BOOL(KIT_TOOL_BUILD_ENABLED);
     61 KIT_ASSERT_BOOL(KIT_TOOL_MAKE_ENABLED);
     62 KIT_ASSERT_BOOL(KIT_TOOL_INSTALL_ENABLED);
     63 KIT_ASSERT_BOOL(KIT_TOOL_CPP_ENABLED);
     64 KIT_ASSERT_BOOL(KIT_TOOL_AS_ENABLED);
     65 KIT_ASSERT_BOOL(KIT_TOOL_LD_ENABLED);
     66 KIT_ASSERT_BOOL(KIT_TOOL_AR_ENABLED);
     67 KIT_ASSERT_BOOL(KIT_TOOL_RANLIB_ENABLED);
     68 KIT_ASSERT_BOOL(KIT_TOOL_STRIP_ENABLED);
     69 KIT_ASSERT_BOOL(KIT_TOOL_OBJCOPY_ENABLED);
     70 KIT_ASSERT_BOOL(KIT_TOOL_OBJDUMP_ENABLED);
     71 KIT_ASSERT_BOOL(KIT_TOOL_DBG_ENABLED);
     72 KIT_ASSERT_BOOL(KIT_TOOL_RUN_ENABLED);
     73 KIT_ASSERT_BOOL(KIT_TOOL_EMU_ENABLED);
     74 KIT_ASSERT_BOOL(KIT_TOOL_NM_ENABLED);
     75 KIT_ASSERT_BOOL(KIT_TOOL_SIZE_ENABLED);
     76 KIT_ASSERT_BOOL(KIT_TOOL_ADDR2LINE_ENABLED);
     77 KIT_ASSERT_BOOL(KIT_TOOL_SYMBOLIZE_ENABLED);
     78 KIT_ASSERT_BOOL(KIT_TOOL_STRINGS_ENABLED);
     79 KIT_ASSERT_BOOL(KIT_TOOL_CAS_ENABLED);
     80 KIT_ASSERT_BOOL(KIT_TOOL_PKG_ENABLED);
     81 KIT_ASSERT_BOOL(KIT_TOOL_XXD_ENABLED);
     82 KIT_ASSERT_BOOL(KIT_TOOL_CMP_ENABLED);
     83 KIT_ASSERT_BOOL(KIT_TOOL_HASH_ENABLED);
     84 KIT_ASSERT_BOOL(KIT_TOOL_COMPRESS_ENABLED);
     85 KIT_ASSERT_BOOL(KIT_TOOL_DISAS_ENABLED);
     86 KIT_ASSERT_BOOL(KIT_TOOL_MC_ENABLED);
     87 KIT_ASSERT_BOOL(KIT_TOOL_GRAM_ENABLED);
     88 KIT_ASSERT_BOOL(KIT_TOOL_UPDATE_ENABLED);
     89 KIT_ASSERT_BOOL(KIT_TOOL_TARGETS_ENABLED);
     90 
     91 #undef KIT_ASSERT_BOOL
     92 
     93 _Static_assert(!KIT_LANG_C_ENABLED || KIT_LANG_CPP_ENABLED,
     94                "KIT_LANG_C_ENABLED requires KIT_LANG_CPP_ENABLED");
     95 _Static_assert(!KIT_ARCH_WASM_ENABLED || KIT_OBJ_WASM_ENABLED,
     96                "KIT_ARCH_WASM_ENABLED requires KIT_OBJ_WASM_ENABLED");
     97 
     98 _Static_assert(!KIT_JIT_ENABLED || KIT_LINK_ENABLED,
     99                "KIT_JIT_ENABLED requires KIT_LINK_ENABLED");
    100 _Static_assert(!KIT_DBG_ENABLED || (KIT_JIT_ENABLED && KIT_DWARF_ENABLED),
    101                "KIT_DBG_ENABLED requires KIT_JIT_ENABLED and "
    102                "KIT_DWARF_ENABLED");
    103 _Static_assert(!KIT_EMU_ENABLED || (KIT_JIT_ENABLED && KIT_LINK_ENABLED &&
    104                                     KIT_DISASM_ENABLED && KIT_OBJ_ELF_ENABLED),
    105                "KIT_EMU_ENABLED requires JIT, link, disasm, and ELF "
    106                "support");
    107 _Static_assert(!KIT_INTERP_ENABLED || KIT_OPT_ENABLED,
    108                "KIT_INTERP_ENABLED requires KIT_OPT_ENABLED");
    109 _Static_assert(!KIT_PKG_ENABLED || KIT_CAS_ENABLED,
    110                "KIT_PKG_ENABLED requires KIT_CAS_ENABLED");
    111 _Static_assert(!KIT_BUILD_ENABLED || KIT_CAS_ENABLED,
    112                "KIT_BUILD_ENABLED requires KIT_CAS_ENABLED");
    113 
    114 _Static_assert(!KIT_TOOL_CC_ENABLED ||
    115                    (KIT_LANG_C_ENABLED && KIT_LINK_ENABLED && KIT_AR_ENABLED),
    116                "KIT_TOOL_CC_ENABLED requires C, link, and ar support");
    117 _Static_assert(!KIT_TOOL_CHECK_ENABLED || KIT_LANG_C_ENABLED,
    118                "KIT_TOOL_CHECK_ENABLED requires C support");
    119 /* The build-* verbs share build.c, which drives kit_build_link and the
    120  * archive engine unconditionally; every BUILD_* subset needs link + ar. */
    121 _Static_assert(!KIT_TOOL_BUILD_EXE_ENABLED ||
    122                    (KIT_LINK_ENABLED && KIT_AR_ENABLED),
    123                "KIT_TOOL_BUILD_EXE_ENABLED requires link and ar support");
    124 _Static_assert(!KIT_TOOL_BUILD_LIB_ENABLED ||
    125                    (KIT_LINK_ENABLED && KIT_AR_ENABLED),
    126                "KIT_TOOL_BUILD_LIB_ENABLED requires link and ar support");
    127 _Static_assert(!KIT_TOOL_BUILD_OBJ_ENABLED ||
    128                    (KIT_LINK_ENABLED && KIT_AR_ENABLED),
    129                "KIT_TOOL_BUILD_OBJ_ENABLED requires link and ar support");
    130 _Static_assert(!KIT_TOOL_BUILD_ENABLED || KIT_BUILD_ENABLED,
    131                "KIT_TOOL_BUILD_ENABLED requires build coordinator support");
    132 _Static_assert(!KIT_TOOL_MAKE_ENABLED || KIT_MAKE_ENABLED,
    133                "KIT_TOOL_MAKE_ENABLED requires make subsystem support");
    134 _Static_assert(!KIT_TOOL_CPP_ENABLED || KIT_LANG_CPP_ENABLED,
    135                "KIT_TOOL_CPP_ENABLED requires C preprocessor support");
    136 _Static_assert(!KIT_TOOL_LD_ENABLED || KIT_LINK_ENABLED,
    137                "KIT_TOOL_LD_ENABLED requires link support");
    138 _Static_assert(!KIT_TOOL_AR_ENABLED || KIT_AR_ENABLED,
    139                "KIT_TOOL_AR_ENABLED requires ar support");
    140 _Static_assert(!KIT_TOOL_RANLIB_ENABLED || KIT_AR_ENABLED,
    141                "KIT_TOOL_RANLIB_ENABLED requires ar support");
    142 _Static_assert(!KIT_TOOL_STRIP_ENABLED || KIT_AR_ENABLED,
    143                "KIT_TOOL_STRIP_ENABLED requires ar support");
    144 _Static_assert(!KIT_TOOL_OBJCOPY_ENABLED || KIT_AR_ENABLED,
    145                "KIT_TOOL_OBJCOPY_ENABLED requires ar support");
    146 _Static_assert(!KIT_TOOL_OBJDUMP_ENABLED || KIT_DISASM_ENABLED,
    147                "KIT_TOOL_OBJDUMP_ENABLED requires disasm support");
    148 _Static_assert(!KIT_TOOL_RUN_ENABLED || (KIT_JIT_ENABLED && KIT_LINK_ENABLED),
    149                "KIT_TOOL_RUN_ENABLED requires JIT and link support");
    150 _Static_assert(!KIT_TOOL_DBG_ENABLED || KIT_DBG_ENABLED,
    151                "KIT_TOOL_DBG_ENABLED requires debugger support");
    152 _Static_assert(!KIT_TOOL_EMU_ENABLED || KIT_EMU_ENABLED,
    153                "KIT_TOOL_EMU_ENABLED requires emulator support");
    154 _Static_assert(!KIT_TOOL_NM_ENABLED || KIT_AR_ENABLED,
    155                "KIT_TOOL_NM_ENABLED requires ar support");
    156 _Static_assert(!KIT_TOOL_SIZE_ENABLED || KIT_AR_ENABLED,
    157                "KIT_TOOL_SIZE_ENABLED requires ar support");
    158 _Static_assert(!KIT_TOOL_ADDR2LINE_ENABLED || KIT_DWARF_ENABLED,
    159                "KIT_TOOL_ADDR2LINE_ENABLED requires DWARF support");
    160 _Static_assert(!KIT_TOOL_SYMBOLIZE_ENABLED || KIT_DWARF_ENABLED,
    161                "KIT_TOOL_SYMBOLIZE_ENABLED requires DWARF support");
    162 _Static_assert(!KIT_TOOL_CAS_ENABLED || KIT_CAS_ENABLED,
    163                "KIT_TOOL_CAS_ENABLED requires CAS support");
    164 _Static_assert(!KIT_TOOL_PKG_ENABLED || KIT_PKG_ENABLED,
    165                "KIT_TOOL_PKG_ENABLED requires PKG support");
    166 _Static_assert(!KIT_TOOL_COMPRESS_ENABLED || KIT_COMPRESS_ENABLED,
    167                "KIT_TOOL_COMPRESS_ENABLED requires compression support");
    168 _Static_assert(!KIT_TOOL_DISAS_ENABLED || KIT_DISASM_ENABLED,
    169                "KIT_TOOL_DISAS_ENABLED requires disasm support");
    170 _Static_assert(!KIT_TOOL_MC_ENABLED || KIT_DISASM_ENABLED,
    171                "KIT_TOOL_MC_ENABLED requires disasm support");
    172 _Static_assert(!KIT_TOOL_GRAM_ENABLED || KIT_GRAM_ENABLED,
    173                "KIT_TOOL_GRAM_ENABLED requires gram support");
    174 _Static_assert(!KIT_TOOL_UPDATE_ENABLED || (KIT_PKG_ENABLED && KIT_CAS_ENABLED),
    175                "KIT_TOOL_UPDATE_ENABLED requires package + CAS support");