Replace js_wasm32 with freestanding_wasm32

This commit is contained in:
gingerBill
2021-06-08 12:18:26 +01:00
parent e79fb68291
commit 28e9a4f79c
8 changed files with 35 additions and 29 deletions
@@ -1,6 +1,5 @@
//+build !windows //+build !windows
//+build !freestanding //+build !freestanding
//+build !js
package runtime package runtime
when ODIN_DEFAULT_TO_NIL_ALLOCATOR { when ODIN_DEFAULT_TO_NIL_ALLOCATOR {
+1 -1
View File
@@ -1,4 +1,4 @@
//+build freestanding, js //+build freestanding
package runtime package runtime
// mem.nil_allocator reimplementation // mem.nil_allocator reimplementation
-1
View File
@@ -1,6 +1,5 @@
//+build !freestanding //+build !freestanding
//+build !windows //+build !windows
//+build !js
package runtime package runtime
import "core:os" import "core:os"
+12 -6
View File
@@ -10,7 +10,6 @@ enum TargetOsKind {
TargetOs_darwin, TargetOs_darwin,
TargetOs_linux, TargetOs_linux,
TargetOs_essence, TargetOs_essence,
TargetOs_js,
TargetOs_freebsd, TargetOs_freebsd,
TargetOs_freestanding, TargetOs_freestanding,
@@ -44,7 +43,6 @@ String target_os_names[TargetOs_COUNT] = {
str_lit("darwin"), str_lit("darwin"),
str_lit("linux"), str_lit("linux"),
str_lit("essence"), str_lit("essence"),
str_lit("js"),
str_lit("freebsd"), str_lit("freebsd"),
str_lit("freestanding"), str_lit("freestanding"),
@@ -312,8 +310,8 @@ gb_global TargetMetrics target_essence_amd64 = {
str_lit("x86_64-pc-none-elf"), str_lit("x86_64-pc-none-elf"),
}; };
gb_global TargetMetrics target_js_wasm32 = { gb_global TargetMetrics target_freestanding_wasm32 = {
TargetOs_js, TargetOs_freestanding,
TargetArch_wasm32, TargetArch_wasm32,
4, 4,
8, 8,
@@ -330,15 +328,15 @@ struct NamedTargetMetrics {
gb_global NamedTargetMetrics named_targets[] = { gb_global NamedTargetMetrics named_targets[] = {
{ str_lit("darwin_amd64"), &target_darwin_amd64 }, { str_lit("darwin_amd64"), &target_darwin_amd64 },
{ str_lit("darwin_arm64"), &target_darwin_arm64 }, { str_lit("darwin_arm64"), &target_darwin_arm64 },
{ str_lit("essence_amd64"), &target_essence_amd64 }, { str_lit("essence_amd64"), &target_essence_amd64 },
{ str_lit("js_wasm32"), &target_js_wasm32 },
{ str_lit("linux_386"), &target_linux_386 }, { str_lit("linux_386"), &target_linux_386 },
{ str_lit("linux_amd64"), &target_linux_amd64 }, { str_lit("linux_amd64"), &target_linux_amd64 },
{ str_lit("windows_386"), &target_windows_386 }, { str_lit("windows_386"), &target_windows_386 },
{ str_lit("windows_amd64"), &target_windows_amd64 }, { str_lit("windows_amd64"), &target_windows_amd64 },
{ str_lit("freebsd_386"), &target_freebsd_386 }, { str_lit("freebsd_386"), &target_freebsd_386 },
{ str_lit("freebsd_amd64"), &target_freebsd_amd64 }, { str_lit("freebsd_amd64"), &target_freebsd_amd64 },
{ str_lit("freestanding_wasm32"), &target_freestanding_wasm32 },
}; };
NamedTargetMetrics *selected_target_metrics; NamedTargetMetrics *selected_target_metrics;
@@ -443,6 +441,14 @@ bool find_library_collection_path(String name, String *path) {
return false; return false;
} }
bool is_arch_wasm(void) {
return build_context.metrics.arch == TargetArch_wasm32;
}
bool allow_check_foreign_filepath(void) {
return build_context.metrics.arch != TargetArch_wasm32;
}
// TODO(bill): OS dependent versions for the BuildContext // TODO(bill): OS dependent versions for the BuildContext
// join_path // join_path
+1 -1
View File
@@ -151,7 +151,7 @@ void lb_add_function_type_attributes(LLVMValueRef fn, lbFunctionType *ft, ProcCa
lbCallingConventionKind cc_kind = lbCallingConvention_C; lbCallingConventionKind cc_kind = lbCallingConvention_C;
// TODO(bill): Clean up this logic // TODO(bill): Clean up this logic
if (build_context.metrics.os != TargetOs_js) { if (!is_arch_wasm()) {
cc_kind = lb_calling_convention_map[calling_convention]; cc_kind = lb_calling_convention_map[calling_convention];
} }
LLVMSetFunctionCallConv(fn, cc_kind); LLVMSetFunctionCallConv(fn, cc_kind);
+19 -17
View File
@@ -2753,7 +2753,7 @@ lbProcedure *lb_create_procedure(lbModule *m, Entity *entity, bool ignore_body)
if (false) { if (false) {
lbCallingConventionKind cc_kind = lbCallingConvention_C; lbCallingConventionKind cc_kind = lbCallingConvention_C;
// TODO(bill): Clean up this logic // TODO(bill): Clean up this logic
if (build_context.metrics.os != TargetOs_js) { if (!is_arch_wasm()) {
cc_kind = lb_calling_convention_map[pt->Proc.calling_convention]; cc_kind = lb_calling_convention_map[pt->Proc.calling_convention];
} }
LLVMSetFunctionCallConv(p->value, cc_kind); LLVMSetFunctionCallConv(p->value, cc_kind);
@@ -2815,13 +2815,13 @@ lbProcedure *lb_create_procedure(lbModule *m, Entity *entity, bool ignore_body)
LLVMSetDLLStorageClass(p->value, LLVMDLLExportStorageClass); LLVMSetDLLStorageClass(p->value, LLVMDLLExportStorageClass);
LLVMSetVisibility(p->value, LLVMDefaultVisibility); LLVMSetVisibility(p->value, LLVMDefaultVisibility);
if (build_context.metrics.os == TargetOs_js) { if (is_arch_wasm()) {
char const *export_name = alloc_cstring(permanent_allocator(), p->name); char const *export_name = alloc_cstring(permanent_allocator(), p->name);
LLVMAddTargetDependentFunctionAttr(p->value, "wasm-export-name", export_name); LLVMAddTargetDependentFunctionAttr(p->value, "wasm-export-name", export_name);
} }
} }
if (p->is_foreign) { if (p->is_foreign) {
if (build_context.metrics.os == TargetOs_js) { if (is_arch_wasm()) {
char const *import_name = alloc_cstring(permanent_allocator(), p->name); char const *import_name = alloc_cstring(permanent_allocator(), p->name);
char const *module_name = "env"; char const *module_name = "env";
if (entity->Procedure.foreign_library != nullptr) { if (entity->Procedure.foreign_library != nullptr) {
@@ -2959,7 +2959,7 @@ lbProcedure *lb_create_dummy_procedure(lbModule *m, String link_name, Type *type
Type *pt = p->type; Type *pt = p->type;
lbCallingConventionKind cc_kind = lbCallingConvention_C; lbCallingConventionKind cc_kind = lbCallingConvention_C;
// TODO(bill): Clean up this logic // TODO(bill): Clean up this logic
if (build_context.metrics.os != TargetOs_js) { if (!is_arch_wasm()) {
cc_kind = lb_calling_convention_map[pt->Proc.calling_convention]; cc_kind = lb_calling_convention_map[pt->Proc.calling_convention];
} }
LLVMSetFunctionCallConv(p->value, cc_kind); LLVMSetFunctionCallConv(p->value, cc_kind);
@@ -14901,18 +14901,20 @@ String lb_filepath_obj_for_module(lbModule *m) {
if (build_context.build_mode == BuildMode_Assembly) { if (build_context.build_mode == BuildMode_Assembly) {
ext = STR_LIT(".S"); ext = STR_LIT(".S");
} else { } else {
switch (build_context.metrics.os) { if (is_arch_wasm()) {
case TargetOs_windows: ext = STR_LIT(".wasm.o");
ext = STR_LIT(".obj"); } else {
break; switch (build_context.metrics.os) {
case TargetOs_darwin: case TargetOs_windows:
case TargetOs_linux: ext = STR_LIT(".obj");
case TargetOs_essence: break;
ext = STR_LIT(".o"); default:
break; case TargetOs_darwin:
case TargetOs_js: case TargetOs_linux:
ext = STR_LIT(".wasm-obj"); case TargetOs_essence:
break; ext = STR_LIT(".o");
break;
}
} }
} }
@@ -15099,7 +15101,7 @@ void lb_generate_code(lbGenerator *gen) {
TIME_SECTION("LLVM Create Target Machine"); TIME_SECTION("LLVM Create Target Machine");
LLVMCodeModel code_mode = LLVMCodeModelDefault; LLVMCodeModel code_mode = LLVMCodeModelDefault;
if (build_context.metrics.arch == TargetArch_wasm32) { if (is_arch_wasm()) {
code_mode = LLVMCodeModelJITDefault; code_mode = LLVMCodeModelJITDefault;
} }
+1 -1
View File
@@ -152,7 +152,7 @@ i32 linker_stage(lbGenerator *gen) {
String output_base = gen->output_base; String output_base = gen->output_base;
if (build_context.metrics.os == TargetOs_js) { if (is_arch_wasm()) {
timings_start_section(timings, str_lit("wasm-ld")); timings_start_section(timings, str_lit("wasm-ld"));
system_exec_command_line_app("wasm-ld", system_exec_command_line_app("wasm-ld",
"\"%.*s\\bin\\wasm-ld\" \"%.*s.wasm-obj\" -o \"%.*s.wasm\" %.*s %.*s", "\"%.*s\\bin\\wasm-ld\" \"%.*s.wasm-obj\" -o \"%.*s.wasm\" %.*s %.*s",
+1 -1
View File
@@ -5121,7 +5121,7 @@ void parse_setup_file_decls(Parser *p, AstFile *f, String base_dir, Slice<Ast *>
for_array(fp_idx, fl->filepaths) { for_array(fp_idx, fl->filepaths) {
String file_str = fl->filepaths[fp_idx].string; String file_str = fl->filepaths[fp_idx].string;
String fullpath = file_str; String fullpath = file_str;
if (build_context.metrics.os != TargetOs_js) { if (allow_check_foreign_filepath()) {
String foreign_path = {}; String foreign_path = {};
bool ok = determine_path_from_string(&p->file_decl_mutex, node, base_dir, file_str, &foreign_path); bool ok = determine_path_from_string(&p->file_decl_mutex, node, base_dir, file_str, &foreign_path);
if (!ok) { if (!ok) {