Files
hakorune/lang/c-abi/include/hako_aot.h

40 lines
1.4 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// hako_aot.h — AOT CABI (minimal), standalone small library
// Purpose: Provide tiny, portable AOT helpers to compile MIR(JSON v0) to an
// object and link it into a native executable. This header accompanies the
// small shared library libhako_aot.{so|dylib|dll}.
#pragma once
#include <stddef.h>
#include <stdint.h>
#ifdef __cplusplus
extern "C" {
#endif
// Short diagnostics (threadlocal): "OK","VALIDATION","NOT_FOUND","FAILED","OOM"...
// Context parameter is ignored by the small lib and may be NULL.
struct hako_ctx;
const char* hako_last_error(struct hako_ctx*);
void hako_set_last_error(const char* short_msg);
// Memory API (libcbacked). Pair alloc/free within the same CRT.
void* hako_mem_alloc(uint64_t size);
void* hako_mem_realloc(void* ptr, uint64_t new_size);
void hako_mem_free(void* ptr);
// AOT: compile MIR(JSON v0) → object file
// Returns 0 on success; nonzero on failure. On failure, err_out (optional)
// receives a short heap message (free via hako_mem_free). hako_last_error()
// is set to a short token (VALIDATION/NOT_FOUND/FAILED…)
int hako_aot_compile_json(const char* json_in, const char* obj_out, char** err_out);
// AOT: link object → native executable
// extra_ldflags may be NULL. Returns 0 on success; nonzero on failure.
int hako_aot_link_obj(const char* obj_in, const char* exe_out, const char* extra_ldflags, char** err_out);
#ifdef __cplusplus
}
#endif