build a builtins .obj file for windows cross-compilation

This commit is contained in:
Folkert 2022-08-30 13:49:47 +02:00
parent d9db0b7096
commit 42ef5d1977
No known key found for this signature in database
GPG key ID: 1F17F6FFD112B97C
4 changed files with 21 additions and 1 deletions

View file

@ -42,6 +42,7 @@ pub fn build(b: *Builder) void {
// Generate Object Files // Generate Object Files
generateObjectFile(b, mode, host_target, main_path, "object", "builtins-host"); generateObjectFile(b, mode, host_target, main_path, "object", "builtins-host");
generateObjectFile(b, mode, windows64_target, main_path, "windows-x86_64-object", "builtins-windows-x86_64");
generateObjectFile(b, mode, wasm32_target, main_path, "wasm32-object", "builtins-wasm32"); generateObjectFile(b, mode, wasm32_target, main_path, "wasm32-object", "builtins-wasm32");
removeInstallSteps(b); removeInstallSteps(b);

View file

@ -253,7 +253,9 @@ test "" {
// Export it as weak incase it is already linked in by something else. // Export it as weak incase it is already linked in by something else.
comptime { comptime {
@export(__muloti4, .{ .name = "__muloti4", .linkage = .Weak }); if (builtin.target.os.tag != .windows) {
@export(__muloti4, .{ .name = "__muloti4", .linkage = .Weak });
}
} }
fn __muloti4(a: i128, b: i128, overflow: *c_int) callconv(.C) i128 { fn __muloti4(a: i128, b: i128, overflow: *c_int) callconv(.C) i128 {
// @setRuntimeSafety(std.builtin.is_test); // @setRuntimeSafety(std.builtin.is_test);

View file

@ -60,6 +60,12 @@ fn main() {
generate_object_file(&bitcode_path, "object", BUILTINS_HOST_FILE); generate_object_file(&bitcode_path, "object", BUILTINS_HOST_FILE);
generate_object_file(
&bitcode_path,
"windows-x86_64-object",
"builtins-windows-x86_64.obj",
);
generate_object_file(&bitcode_path, "wasm32-object", "builtins-wasm32.o"); generate_object_file(&bitcode_path, "wasm32-object", "builtins-wasm32.o");
copy_zig_builtins_to_target_dir(&bitcode_path); copy_zig_builtins_to_target_dir(&bitcode_path);

View file

@ -14,6 +14,17 @@ pub fn get_builtins_host_obj_path() -> String {
.expect("Failed to convert builtins_host_path to str") .expect("Failed to convert builtins_host_path to str")
} }
pub fn get_builtins_windows_obj_path() -> String {
let builtins_host_path = get_lib_path()
.expect(LIB_DIR_ERROR)
.join("builtins-windows-x86_64.obj");
builtins_host_path
.into_os_string()
.into_string()
.expect("Failed to convert builtins_host_path to str")
}
pub fn get_builtins_wasm32_obj_path() -> String { pub fn get_builtins_wasm32_obj_path() -> String {
let builtins_wasm32_path = get_lib_path() let builtins_wasm32_path = get_lib_path()
.expect(LIB_DIR_ERROR) .expect(LIB_DIR_ERROR)