aboutsummaryrefslogtreecommitdiff
path: root/src/build_settings.cpp
diff options
context:
space:
mode:
authorgingerBill <bill@gingerbill.org>2021-10-31 01:08:17 +0000
committergingerBill <bill@gingerbill.org>2021-10-31 01:08:17 +0000
commit9a5216921ca44fe25e66c81928f812f13f2d59e0 (patch)
tree6541c693d153ce4fa14bc86741cc167ffe0c8a69 /src/build_settings.cpp
parent8a2078aa9027daa863dc0a3603a1afedd5836cb8 (diff)
Add `wasi_wasm32`
Diffstat (limited to 'src/build_settings.cpp')
-rw-r--r--src/build_settings.cpp31
1 files changed, 27 insertions, 4 deletions
diff --git a/src/build_settings.cpp b/src/build_settings.cpp
index 4c7faa1b2..d817c87f1 100644
--- a/src/build_settings.cpp
+++ b/src/build_settings.cpp
@@ -16,6 +16,8 @@ enum TargetOsKind {
TargetOs_linux,
TargetOs_essence,
TargetOs_freebsd,
+
+ TargetOs_wasi,
TargetOs_freestanding,
@@ -50,6 +52,8 @@ String target_os_names[TargetOs_COUNT] = {
str_lit("linux"),
str_lit("essence"),
str_lit("freebsd"),
+
+ str_lit("wasi"),
str_lit("freestanding"),
};
@@ -347,6 +351,16 @@ gb_global TargetMetrics target_freestanding_wasm64 = {
str_lit(""),
};
+gb_global TargetMetrics target_wasi_wasm32 = {
+ TargetOs_wasi,
+ TargetArch_wasm32,
+ 4,
+ 8,
+ str_lit("wasm32-wasi-js"),
+ str_lit(""),
+};
+
+
@@ -367,6 +381,7 @@ gb_global NamedTargetMetrics named_targets[] = {
{ str_lit("freebsd_amd64"), &target_freebsd_amd64 },
{ str_lit("freestanding_wasm32"), &target_freestanding_wasm32 },
{ str_lit("freestanding_wasm64"), &target_freestanding_wasm64 },
+ { str_lit("wasi_wasm32"), &target_wasi_wasm32 },
};
NamedTargetMetrics *selected_target_metrics;
@@ -893,10 +908,18 @@ void init_build_context(TargetMetrics *cross_target) {
bc->link_flags = str_lit("-arch arm64 ");
break;
}
- } else if (bc->metrics.arch == TargetArch_wasm32) {
- bc->link_flags = str_lit("--no-entry --export-table --export-all --allow-undefined --features=wasm-feature-atomics ");
- } else if (bc->metrics.arch == TargetArch_wasm64) {
- bc->link_flags = str_lit("--no-entry --export-table --export-all --allow-undefined -mwasm64 --features=wasm-feature-memory64,wasm-feature-atomics --verbose ");
+ } else if (is_arch_wasm()) {
+ gbString link_flags = gb_string_make(heap_allocator(), "--export-all ");
+ 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 ");
+ }
+ if (bc->metrics.os == TargetOs_freestanding) {
+ link_flags = gb_string_appendc(link_flags, "--no-entry ");
+ }
+
+ bc->link_flags = make_string_c(link_flags);
} else {
gb_printf_err("Compiler Error: Unsupported architecture\n");
gb_exit(1);