diff options
| author | gingerBill <bill@gingerbill.org> | 2021-10-30 23:24:34 +0100 |
|---|---|---|
| committer | gingerBill <bill@gingerbill.org> | 2021-10-30 23:24:34 +0100 |
| commit | 5bc8a491a7768da0019b7b17da637e681f2ace90 (patch) | |
| tree | 71186a22f6fa5e54c83c8e300309ce2ffa0deeb7 /src/build_settings.cpp | |
| parent | 87952fdb8ed56fcf926bea81e3247ff3c6395e31 (diff) | |
Begin work on supporting `wasm64`; Correct `wasm32` compilation behaviour
Diffstat (limited to 'src/build_settings.cpp')
| -rw-r--r-- | src/build_settings.cpp | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/build_settings.cpp b/src/build_settings.cpp index 69e1ec5f0..a906f6712 100644 --- a/src/build_settings.cpp +++ b/src/build_settings.cpp @@ -29,6 +29,7 @@ enum TargetArchKind { TargetArch_386, TargetArch_arm64, TargetArch_wasm32, + TargetArch_wasm64, TargetArch_COUNT, }; @@ -59,6 +60,7 @@ String target_arch_names[TargetArch_COUNT] = { str_lit("386"), str_lit("arm64"), str_lit("wasm32"), + str_lit("wasm64"), }; String target_endian_names[TargetEndian_COUNT] = { @@ -72,6 +74,7 @@ TargetEndianKind target_endians[TargetArch_COUNT] = { TargetEndian_Little, TargetEndian_Little, TargetEndian_Little, + TargetEndian_Little, }; #ifndef ODIN_VERSION_RAW @@ -335,6 +338,16 @@ gb_global TargetMetrics target_freestanding_wasm32 = { str_lit(""), }; +gb_global TargetMetrics target_freestanding_wasm64 = { + TargetOs_freestanding, + TargetArch_wasm64, + 8, + 16, + str_lit("wasm64-freestanding-js"), + str_lit(""), +}; + + struct NamedTargetMetrics { @@ -353,6 +366,7 @@ gb_global NamedTargetMetrics named_targets[] = { { str_lit("freebsd_386"), &target_freebsd_386 }, { str_lit("freebsd_amd64"), &target_freebsd_amd64 }, { str_lit("freestanding_wasm32"), &target_freestanding_wasm32 }, + { str_lit("freestanding_wasm64"), &target_freestanding_wasm64 }, }; NamedTargetMetrics *selected_target_metrics; @@ -458,11 +472,21 @@ bool find_library_collection_path(String name, String *path) { } bool is_arch_wasm(void) { - return build_context.metrics.arch == TargetArch_wasm32; + switch (build_context.metrics.arch) { + case TargetArch_wasm32: + case TargetArch_wasm64: + return true; + } + return false; } bool allow_check_foreign_filepath(void) { - return build_context.metrics.arch != TargetArch_wasm32; + switch (build_context.metrics.arch) { + case TargetArch_wasm32: + case TargetArch_wasm64: + return false; + } + return true; } @@ -870,7 +894,7 @@ void init_build_context(TargetMetrics *cross_target) { break; } - } else if (bc->metrics.arch == TargetArch_wasm32) { + } else if (is_arch_wasm()) { bc->link_flags = str_lit("--no-entry --export-table --export-all --allow-undefined "); } else { gb_printf_err("Compiler Error: Unsupported architecture\n");; |