From dfbe68bcfe91e1f54eaa47c685d6229f37656f6c Mon Sep 17 00:00:00 2001 From: gingerBill Date: Sat, 21 May 2022 13:30:43 +0100 Subject: [PATCH] Begin to add support for experimental wasm64 --- core/sync/futex_wasm.odin | 2 +- core/sync/primitives_wasm.odin | 2 +- src/build_settings.cpp | 12 +++++++++++- vendor/wasm/js/dom.odin | 2 +- vendor/wasm/js/events.odin | 2 +- vendor/wasm/js/memory.odin | 2 +- 6 files changed, 16 insertions(+), 6 deletions(-) diff --git a/core/sync/futex_wasm.odin b/core/sync/futex_wasm.odin index 9e96614d6..a32935143 100644 --- a/core/sync/futex_wasm.odin +++ b/core/sync/futex_wasm.odin @@ -1,5 +1,5 @@ //+private -//+build wasm32 +//+build wasm32, wasm64 package sync import "core:intrinsics" diff --git a/core/sync/primitives_wasm.odin b/core/sync/primitives_wasm.odin index 283971ac5..ac36404d9 100644 --- a/core/sync/primitives_wasm.odin +++ b/core/sync/primitives_wasm.odin @@ -1,5 +1,5 @@ //+private -//+build wasm32 +//+build wasm32, wasm64 package sync _current_thread_id :: proc "contextless" () -> int { diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 767ce2149..8bc889635 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -452,6 +452,15 @@ gb_global TargetMetrics target_js_wasm32 = { str_lit(""), }; +gb_global TargetMetrics target_js_wasm64 = { + TargetOs_js, + TargetArch_wasm64, + 8, + 16, + str_lit("wasm64-js-js"), + str_lit(""), +}; + gb_global TargetMetrics target_wasi_wasm32 = { TargetOs_wasi, TargetArch_wasm32, @@ -504,6 +513,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("js_wasm64"), &target_js_wasm64 }, { str_lit("freestanding_amd64_sysv"), &target_freestanding_amd64_sysv }, }; @@ -1151,7 +1161,7 @@ void init_build_context(TargetMetrics *cross_target) { // link_flags = gb_string_appendc(link_flags, "--export-table "); link_flags = gb_string_appendc(link_flags, "--allow-undefined "); if (bc->metrics.arch == TargetArch_wasm64) { - link_flags = gb_string_appendc(link_flags, "-mwas64 "); + link_flags = gb_string_appendc(link_flags, "-mwasm64 "); } if (bc->no_entry_point) { link_flags = gb_string_appendc(link_flags, "--no-entry "); diff --git a/vendor/wasm/js/dom.odin b/vendor/wasm/js/dom.odin index 9f9f2fa96..044476d41 100644 --- a/vendor/wasm/js/dom.odin +++ b/vendor/wasm/js/dom.odin @@ -1,4 +1,4 @@ -//+build js wasm32 +//+build js wasm32, js wasm64 package wasm_js_interface foreign import dom_lib "odin_dom" diff --git a/vendor/wasm/js/events.odin b/vendor/wasm/js/events.odin index 93ea94ede..12a68937f 100644 --- a/vendor/wasm/js/events.odin +++ b/vendor/wasm/js/events.odin @@ -1,4 +1,4 @@ -//+build js wasm32 +//+build js wasm32, js wasm64 package wasm_js_interface foreign import dom_lib "odin_dom" diff --git a/vendor/wasm/js/memory.odin b/vendor/wasm/js/memory.odin index f6f4f82a4..84bb16d01 100644 --- a/vendor/wasm/js/memory.odin +++ b/vendor/wasm/js/memory.odin @@ -1,4 +1,4 @@ -//+build js wasm32 +//+build js wasm32, js wasm64 package wasm_js_interface import "core:mem"