mirror of
https://github.com/Ed94/Odin.git
synced 2026-08-07 16:18:52 +00:00
Add experimental target orca_wasm32
This commit is contained in:
+13
-1
@@ -23,6 +23,7 @@ enum TargetOsKind : u16 {
|
|||||||
|
|
||||||
TargetOs_wasi,
|
TargetOs_wasi,
|
||||||
TargetOs_js,
|
TargetOs_js,
|
||||||
|
TargetOs_orca,
|
||||||
|
|
||||||
TargetOs_freestanding,
|
TargetOs_freestanding,
|
||||||
|
|
||||||
@@ -90,6 +91,7 @@ gb_global String target_os_names[TargetOs_COUNT] = {
|
|||||||
|
|
||||||
str_lit("wasi"),
|
str_lit("wasi"),
|
||||||
str_lit("js"),
|
str_lit("js"),
|
||||||
|
str_lit("orca"),
|
||||||
|
|
||||||
str_lit("freestanding"),
|
str_lit("freestanding"),
|
||||||
};
|
};
|
||||||
@@ -1067,6 +1069,15 @@ gb_global TargetMetrics target_wasi_wasm32 = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
gb_global TargetMetrics target_orca_wasm32 = {
|
||||||
|
TargetOs_orca,
|
||||||
|
TargetArch_wasm32,
|
||||||
|
4, 4, 8, 16,
|
||||||
|
str_lit("wasm32-wasi-js"),
|
||||||
|
// str_lit("e-m:e-p:32:32-i64:64-n32:64-S128"),
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
gb_global TargetMetrics target_freestanding_wasm64p32 = {
|
gb_global TargetMetrics target_freestanding_wasm64p32 = {
|
||||||
TargetOs_freestanding,
|
TargetOs_freestanding,
|
||||||
TargetArch_wasm64p32,
|
TargetArch_wasm64p32,
|
||||||
@@ -2012,8 +2023,9 @@ gb_internal void init_build_context(TargetMetrics *cross_target, Subtarget subta
|
|||||||
// if (bc->metrics.arch == TargetArch_wasm64) {
|
// if (bc->metrics.arch == TargetArch_wasm64) {
|
||||||
// link_flags = gb_string_appendc(link_flags, "-mwasm64 ");
|
// link_flags = gb_string_appendc(link_flags, "-mwasm64 ");
|
||||||
// }
|
// }
|
||||||
if (bc->no_entry_point) {
|
if (bc->no_entry_point || bc->metrics.os == TargetOs_orca) {
|
||||||
link_flags = gb_string_appendc(link_flags, "--no-entry ");
|
link_flags = gb_string_appendc(link_flags, "--no-entry ");
|
||||||
|
bc->no_entry_point = true; // just in case for the "orca" target
|
||||||
}
|
}
|
||||||
|
|
||||||
bc->link_flags = make_string_c(link_flags);
|
bc->link_flags = make_string_c(link_flags);
|
||||||
|
|||||||
@@ -1016,6 +1016,7 @@ gb_internal void init_universal(void) {
|
|||||||
{"NetBSD", TargetOs_netbsd},
|
{"NetBSD", TargetOs_netbsd},
|
||||||
{"WASI", TargetOs_wasi},
|
{"WASI", TargetOs_wasi},
|
||||||
{"JS", TargetOs_js},
|
{"JS", TargetOs_js},
|
||||||
|
{"Orca", TargetOs_orca},
|
||||||
{"Freestanding", TargetOs_freestanding},
|
{"Freestanding", TargetOs_freestanding},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|||||||
+16
-4
@@ -69,15 +69,27 @@ gb_internal i32 linker_stage(LinkerData *gen) {
|
|||||||
if (is_arch_wasm()) {
|
if (is_arch_wasm()) {
|
||||||
timings_start_section(timings, str_lit("wasm-ld"));
|
timings_start_section(timings, str_lit("wasm-ld"));
|
||||||
|
|
||||||
|
String extra_orca_flags = {};
|
||||||
|
|
||||||
#if defined(GB_SYSTEM_WINDOWS)
|
#if defined(GB_SYSTEM_WINDOWS)
|
||||||
|
if (build_context.metrics.os == TargetOs_orca) {
|
||||||
|
extra_orca_flags = str_lit(" W:/orca/installation/dev-afb9591/bin/liborca_wasm.a --export-dynamic");
|
||||||
|
}
|
||||||
|
|
||||||
result = system_exec_command_line_app("wasm-ld",
|
result = system_exec_command_line_app("wasm-ld",
|
||||||
"\"%.*s\\bin\\wasm-ld\" \"%.*s.o\" -o \"%.*s\" %.*s %.*s",
|
"\"%.*s\\bin\\wasm-ld\" \"%.*s.o\" -o \"%.*s\" %.*s %.*s %.*s",
|
||||||
LIT(build_context.ODIN_ROOT),
|
LIT(build_context.ODIN_ROOT),
|
||||||
LIT(output_filename), LIT(output_filename), LIT(build_context.link_flags), LIT(build_context.extra_linker_flags));
|
LIT(output_filename), LIT(output_filename), LIT(build_context.link_flags), LIT(build_context.extra_linker_flags),
|
||||||
|
LIT(extra_orca_flags));
|
||||||
#else
|
#else
|
||||||
|
if (build_context.metrics.os == TargetOs_orca) {
|
||||||
|
extra_orca_flags = str_lit(" -L . -lorca --export-dynamic");
|
||||||
|
}
|
||||||
|
|
||||||
result = system_exec_command_line_app("wasm-ld",
|
result = system_exec_command_line_app("wasm-ld",
|
||||||
"wasm-ld \"%.*s.o\" -o \"%.*s\" %.*s %.*s",
|
"wasm-ld \"%.*s.o\" -o \"%.*s\" %.*s %.*s %.*s",
|
||||||
LIT(output_filename), LIT(output_filename), LIT(build_context.link_flags), LIT(build_context.extra_linker_flags));
|
LIT(output_filename), LIT(output_filename), LIT(build_context.link_flags), LIT(build_context.extra_linker_flags),
|
||||||
|
LIT(extra_orca_flags));
|
||||||
#endif
|
#endif
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user