kit

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

config_assert.c (5974B)


      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_RV64_ENABLED + KIT_ARCH_WASM_ENABLED +
      8                        KIT_ARCH_C_TARGET_ENABLED >=
      9                    1,
     10                "at least one backend architecture must be enabled");
     11 
     12 _Static_assert(KIT_OBJ_ELF_ENABLED + KIT_OBJ_MACHO_ENABLED +
     13                        KIT_OBJ_COFF_ENABLED + KIT_OBJ_WASM_ENABLED >=
     14                    1,
     15                "at least one object/image format must be enabled");
     16 
     17 #define KIT_ASSERT_BOOL(flag) \
     18   _Static_assert((flag) == 0 || (flag) == 1, #flag " must be 0 or 1")
     19 
     20 KIT_ASSERT_BOOL(KIT_ARCH_AA64_ENABLED);
     21 KIT_ASSERT_BOOL(KIT_ARCH_X64_ENABLED);
     22 KIT_ASSERT_BOOL(KIT_ARCH_RV64_ENABLED);
     23 KIT_ASSERT_BOOL(KIT_ARCH_WASM_ENABLED);
     24 KIT_ASSERT_BOOL(KIT_ARCH_C_TARGET_ENABLED);
     25 KIT_ASSERT_BOOL(KIT_OBJ_ELF_ENABLED);
     26 KIT_ASSERT_BOOL(KIT_OBJ_MACHO_ENABLED);
     27 KIT_ASSERT_BOOL(KIT_OBJ_COFF_ENABLED);
     28 KIT_ASSERT_BOOL(KIT_OBJ_WASM_ENABLED);
     29 KIT_ASSERT_BOOL(KIT_LANG_ASM_ENABLED);
     30 KIT_ASSERT_BOOL(KIT_LANG_CPP_ENABLED);
     31 KIT_ASSERT_BOOL(KIT_LANG_C_ENABLED);
     32 KIT_ASSERT_BOOL(KIT_LANG_TOY_ENABLED);
     33 KIT_ASSERT_BOOL(KIT_LANG_WASM_ENABLED);
     34 _Static_assert(KIT_OPT_ENABLED == 0 || KIT_OPT_ENABLED == 1,
     35                "KIT_OPT_ENABLED must be 0 or 1");
     36 KIT_ASSERT_BOOL(KIT_AR_ENABLED);
     37 KIT_ASSERT_BOOL(KIT_DISASM_ENABLED);
     38 KIT_ASSERT_BOOL(KIT_DWARF_ENABLED);
     39 KIT_ASSERT_BOOL(KIT_LINK_ENABLED);
     40 KIT_ASSERT_BOOL(KIT_JIT_ENABLED);
     41 KIT_ASSERT_BOOL(KIT_DBG_ENABLED);
     42 KIT_ASSERT_BOOL(KIT_EMU_ENABLED);
     43 KIT_ASSERT_BOOL(KIT_INTERP_ENABLED);
     44 KIT_ASSERT_BOOL(KIT_INTERP_THREADED);
     45 
     46 KIT_ASSERT_BOOL(KIT_TOOL_CC_ENABLED);
     47 KIT_ASSERT_BOOL(KIT_TOOL_CHECK_ENABLED);
     48 KIT_ASSERT_BOOL(KIT_TOOL_CPP_ENABLED);
     49 KIT_ASSERT_BOOL(KIT_TOOL_AS_ENABLED);
     50 KIT_ASSERT_BOOL(KIT_TOOL_LD_ENABLED);
     51 KIT_ASSERT_BOOL(KIT_TOOL_AR_ENABLED);
     52 KIT_ASSERT_BOOL(KIT_TOOL_RANLIB_ENABLED);
     53 KIT_ASSERT_BOOL(KIT_TOOL_STRIP_ENABLED);
     54 KIT_ASSERT_BOOL(KIT_TOOL_OBJCOPY_ENABLED);
     55 KIT_ASSERT_BOOL(KIT_TOOL_OBJDUMP_ENABLED);
     56 KIT_ASSERT_BOOL(KIT_TOOL_DBG_ENABLED);
     57 KIT_ASSERT_BOOL(KIT_TOOL_RUN_ENABLED);
     58 KIT_ASSERT_BOOL(KIT_TOOL_EMU_ENABLED);
     59 KIT_ASSERT_BOOL(KIT_TOOL_NM_ENABLED);
     60 KIT_ASSERT_BOOL(KIT_TOOL_SIZE_ENABLED);
     61 KIT_ASSERT_BOOL(KIT_TOOL_ADDR2LINE_ENABLED);
     62 KIT_ASSERT_BOOL(KIT_TOOL_SYMBOLIZE_ENABLED);
     63 KIT_ASSERT_BOOL(KIT_TOOL_STRINGS_ENABLED);
     64 KIT_ASSERT_BOOL(KIT_TOOL_CAS_ENABLED);
     65 KIT_ASSERT_BOOL(KIT_TOOL_PKG_ENABLED);
     66 
     67 #undef KIT_ASSERT_BOOL
     68 
     69 _Static_assert(!KIT_LANG_C_ENABLED || KIT_LANG_CPP_ENABLED,
     70                "KIT_LANG_C_ENABLED requires KIT_LANG_CPP_ENABLED");
     71 _Static_assert(!KIT_ARCH_WASM_ENABLED || KIT_OBJ_WASM_ENABLED,
     72                "KIT_ARCH_WASM_ENABLED requires KIT_OBJ_WASM_ENABLED");
     73 
     74 _Static_assert(!KIT_JIT_ENABLED || KIT_LINK_ENABLED,
     75                "KIT_JIT_ENABLED requires KIT_LINK_ENABLED");
     76 _Static_assert(!KIT_DBG_ENABLED || (KIT_JIT_ENABLED && KIT_DWARF_ENABLED),
     77                "KIT_DBG_ENABLED requires KIT_JIT_ENABLED and "
     78                "KIT_DWARF_ENABLED");
     79 _Static_assert(!KIT_EMU_ENABLED || (KIT_JIT_ENABLED && KIT_LINK_ENABLED &&
     80                                     KIT_DISASM_ENABLED && KIT_OBJ_ELF_ENABLED),
     81                "KIT_EMU_ENABLED requires JIT, link, disasm, and ELF "
     82                "support");
     83 _Static_assert(!KIT_INTERP_ENABLED || KIT_OPT_ENABLED,
     84                "KIT_INTERP_ENABLED requires KIT_OPT_ENABLED");
     85 _Static_assert(!KIT_PKG_ENABLED || KIT_CAS_ENABLED,
     86                "KIT_PKG_ENABLED requires KIT_CAS_ENABLED");
     87 
     88 _Static_assert(!KIT_TOOL_CC_ENABLED ||
     89                    (KIT_LANG_C_ENABLED && KIT_LINK_ENABLED && KIT_AR_ENABLED),
     90                "KIT_TOOL_CC_ENABLED requires C, link, and ar support");
     91 _Static_assert(!KIT_TOOL_CHECK_ENABLED || KIT_LANG_C_ENABLED,
     92                "KIT_TOOL_CHECK_ENABLED requires C support");
     93 _Static_assert(!KIT_TOOL_CPP_ENABLED || KIT_LANG_CPP_ENABLED,
     94                "KIT_TOOL_CPP_ENABLED requires C preprocessor support");
     95 _Static_assert(!KIT_TOOL_LD_ENABLED || KIT_LINK_ENABLED,
     96                "KIT_TOOL_LD_ENABLED requires link support");
     97 _Static_assert(!KIT_TOOL_AR_ENABLED || KIT_AR_ENABLED,
     98                "KIT_TOOL_AR_ENABLED requires ar support");
     99 _Static_assert(!KIT_TOOL_RANLIB_ENABLED || KIT_AR_ENABLED,
    100                "KIT_TOOL_RANLIB_ENABLED requires ar support");
    101 _Static_assert(!KIT_TOOL_STRIP_ENABLED || KIT_AR_ENABLED,
    102                "KIT_TOOL_STRIP_ENABLED requires ar support");
    103 _Static_assert(!KIT_TOOL_OBJCOPY_ENABLED || KIT_AR_ENABLED,
    104                "KIT_TOOL_OBJCOPY_ENABLED requires ar support");
    105 _Static_assert(!KIT_TOOL_OBJDUMP_ENABLED || KIT_DISASM_ENABLED,
    106                "KIT_TOOL_OBJDUMP_ENABLED requires disasm support");
    107 _Static_assert(!KIT_TOOL_RUN_ENABLED || (KIT_JIT_ENABLED && KIT_LINK_ENABLED),
    108                "KIT_TOOL_RUN_ENABLED requires JIT and link support");
    109 _Static_assert(!KIT_TOOL_DBG_ENABLED || KIT_DBG_ENABLED,
    110                "KIT_TOOL_DBG_ENABLED requires debugger support");
    111 _Static_assert(!KIT_TOOL_EMU_ENABLED || KIT_EMU_ENABLED,
    112                "KIT_TOOL_EMU_ENABLED requires emulator support");
    113 _Static_assert(!KIT_TOOL_NM_ENABLED || KIT_AR_ENABLED,
    114                "KIT_TOOL_NM_ENABLED requires ar support");
    115 _Static_assert(!KIT_TOOL_SIZE_ENABLED || KIT_AR_ENABLED,
    116                "KIT_TOOL_SIZE_ENABLED requires ar support");
    117 _Static_assert(!KIT_TOOL_ADDR2LINE_ENABLED || KIT_DWARF_ENABLED,
    118                "KIT_TOOL_ADDR2LINE_ENABLED requires DWARF support");
    119 _Static_assert(!KIT_TOOL_SYMBOLIZE_ENABLED || KIT_DWARF_ENABLED,
    120                "KIT_TOOL_SYMBOLIZE_ENABLED requires DWARF support");
    121 _Static_assert(!KIT_TOOL_CAS_ENABLED || KIT_CAS_ENABLED,
    122                "KIT_TOOL_CAS_ENABLED requires CAS support");
    123 _Static_assert(!KIT_TOOL_PKG_ENABLED || KIT_PKG_ENABLED,
    124                "KIT_TOOL_PKG_ENABLED requires PKG support");