api_context.c (1899B)
1 #include <kit/compile.h> 2 #include <kit/target.h> 3 4 extern void* malloc(size_t size); 5 extern void* realloc(void* ptr, size_t size); 6 extern void free(void* ptr); 7 8 static void* audit_alloc(KitHeap* heap, size_t size, size_t align) { 9 (void)heap; 10 (void)align; 11 return malloc(size ? size : 1); 12 } 13 14 static void* audit_realloc(KitHeap* heap, void* ptr, size_t old_size, 15 size_t new_size, size_t align) { 16 (void)heap; 17 (void)old_size; 18 (void)align; 19 return realloc(ptr, new_size ? new_size : 1); 20 } 21 22 static void audit_free(KitHeap* heap, void* ptr, size_t size) { 23 (void)heap; 24 (void)size; 25 free(ptr); 26 } 27 28 static void audit_diag(KitDiagSink* sink, KitDiagKind kind, KitSrcLoc loc, 29 const char* fmt, va_list ap) { 30 (void)sink; 31 (void)kind; 32 (void)loc; 33 (void)fmt; 34 (void)ap; 35 } 36 37 int main(void) { 38 KitHeap heap = {audit_alloc, audit_realloc, audit_free, NULL}; 39 KitDiagSink diag = {audit_diag, NULL, 0, 0}; 40 KitContext context = {&heap, NULL, &diag, NULL, -1}; 41 KitTargetSpec spec; 42 KitTargetOptions target_options = {0}; 43 KitTarget* target = NULL; 44 KitCompiler* compiler = NULL; 45 KitStatus status; 46 char triple[64]; 47 48 if (!kit_target_from_triple("aarch64-apple-darwin", &spec)) return 10; 49 target_options.spec = spec; 50 status = kit_target_new(&context, &target_options, &target); 51 if (status != KIT_OK) return 11; 52 status = kit_compiler_new(target, &context, &compiler); 53 if (status != KIT_OK) { 54 kit_target_free(target); 55 return 12; 56 } 57 spec = kit_compiler_target_spec(compiler); 58 if (!kit_target_to_triple(spec, triple, sizeof(triple))) { 59 kit_compiler_free(compiler); 60 kit_target_free(target); 61 return 13; 62 } 63 if (!kit_language_name(compiler, KIT_LANG_C)) { 64 kit_compiler_free(compiler); 65 kit_target_free(target); 66 return 14; 67 } 68 kit_compiler_free(compiler); 69 kit_target_free(target); 70 return 0; 71 }