kit

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

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 }