aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorskytrias <skytrias@protonmail.com>2024-03-18 22:09:17 +0100
committerskytrias <skytrias@protonmail.com>2024-03-18 22:09:17 +0100
commitbca4c37f02879ba0b7e4f488659600da9d086d4d (patch)
tree5f92de606f3aaa09042ed6547504ca275e8f1655 /src
parent6cb74b63ec6316c1ca030f4d828f02bb28a3b91f (diff)
push orca target and old bindings
Diffstat (limited to 'src')
-rw-r--r--src/build_settings.cpp18
-rw-r--r--src/checker.cpp1
-rw-r--r--src/linker.cpp13
3 files changed, 26 insertions, 6 deletions
diff --git a/src/build_settings.cpp b/src/build_settings.cpp
index fdaa971f1..fe61903ae 100644
--- a/src/build_settings.cpp
+++ b/src/build_settings.cpp
@@ -22,6 +22,7 @@ enum TargetOsKind : u16 {
TargetOs_wasi,
TargetOs_js,
+ TargetOs_orca,
TargetOs_freestanding,
@@ -83,6 +84,7 @@ gb_global String target_os_names[TargetOs_COUNT] = {
str_lit("wasi"),
str_lit("js"),
+ str_lit("orca"),
str_lit("freestanding"),
};
@@ -583,6 +585,14 @@ gb_global TargetMetrics target_wasi_wasm32 = {
str_lit("e-m:e-p:32:32-i64:64-n32:64-S128"),
};
+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 = {
TargetOs_freestanding,
@@ -655,6 +665,7 @@ gb_global NamedTargetMetrics named_targets[] = {
{ str_lit("freestanding_wasm32"), &target_freestanding_wasm32 },
{ str_lit("wasi_wasm32"), &target_wasi_wasm32 },
{ str_lit("js_wasm32"), &target_js_wasm32 },
+ { str_lit("orca_wasm32"), &target_orca_wasm32 },
{ str_lit("freestanding_wasm64p32"), &target_freestanding_wasm64p32 },
{ str_lit("js_wasm64p32"), &target_js_wasm64p32 },
@@ -1513,9 +1524,12 @@ gb_internal void init_build_context(TargetMetrics *cross_target, Subtarget subta
// if (bc->metrics.arch == TargetArch_wasm64) {
// 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 ");
- }
+
+ // in case orca target was
+ bc->no_entry_point = true;
+ }
bc->link_flags = make_string_c(link_flags);
diff --git a/src/checker.cpp b/src/checker.cpp
index 72c0ae574..bf61dc4a6 100644
--- a/src/checker.cpp
+++ b/src/checker.cpp
@@ -1015,6 +1015,7 @@ gb_internal void init_universal(void) {
{"WASI", TargetOs_wasi},
{"JS", TargetOs_js},
{"Freestanding", TargetOs_freestanding},
+ {"Orca", TargetOs_orca},
};
auto fields = add_global_enum_type(str_lit("Odin_OS_Type"), values, gb_count_of(values));
diff --git a/src/linker.cpp b/src/linker.cpp
index 0cdeaf8d9..ee5e55465 100644
--- a/src/linker.cpp
+++ b/src/linker.cpp
@@ -69,15 +69,20 @@ gb_internal i32 linker_stage(LinkerData *gen) {
if (is_arch_wasm()) {
timings_start_section(timings, str_lit("wasm-ld"));
+ String extra_orca_flags = {};
+ if (build_context.metrics.os == TargetOs_orca) {
+ extra_orca_flags = str_lit(" -L . -lorca --export-dynamic");
+ }
+
#if defined(GB_SYSTEM_WINDOWS)
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(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
result = system_exec_command_line_app("wasm-ld",
- "wasm-ld \"%.*s.o\" -o \"%.*s\" %.*s %.*s",
- LIT(output_filename), LIT(output_filename), LIT(build_context.link_flags), LIT(build_context.extra_linker_flags));
+ "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(extra_orca_flags));
#endif
return result;
}