| ... | ... | @@ -969,6 +969,9 @@ fn buildOutputType( |
| 969 | 969 | .libc_paths_file = try EnvVar.ZIG_LIBC.get(arena), |
| 970 | 970 | .link_objects = .{}, |
| 971 | 971 | .native_system_include_paths = &.{}, |
| 972 | .host_triple = null, |
| 973 | .host_cpu = null, |
| 974 | .host_dynamic_linker = null, |
| 972 | 975 | }; |
| 973 | 976 | |
| 974 | 977 | // before arg parsing, check for the NO_COLOR environment variable |
| ... | ... | @@ -1262,6 +1265,12 @@ fn buildOutputType( |
| 1262 | 1265 | mod_opts.optimize_mode = parseOptimizeMode(arg["-O".len..]); |
| 1263 | 1266 | } else if (mem.eql(u8, arg, "--dynamic-linker")) { |
| 1264 | 1267 | create_module.dynamic_linker = args_iter.nextOrFatal(); |
| 1268 | } else if (mem.eql(u8, arg, "--host-target")) { |
| 1269 | create_module.host_triple = args_iter.nextOrFatal(); |
| 1270 | } else if (mem.eql(u8, arg, "--host-cpu")) { |
| 1271 | create_module.host_cpu = args_iter.nextOrFatal(); |
| 1272 | } else if (mem.eql(u8, arg, "--host-dynamic-linker")) { |
| 1273 | create_module.host_dynamic_linker = args_iter.nextOrFatal(); |
| 1265 | 1274 | } else if (mem.eql(u8, arg, "--sysroot")) { |
| 1266 | 1275 | const next_arg = args_iter.nextOrFatal(); |
| 1267 | 1276 | create_module.sysroot = next_arg; |
| ... | ... | @@ -3455,6 +3464,9 @@ const CreateModule = struct { |
| 3455 | 3464 | each_lib_rpath: ?bool, |
| 3456 | 3465 | libc_paths_file: ?[]const u8, |
| 3457 | 3466 | link_objects: std.ArrayListUnmanaged(Compilation.LinkObject), |
| 3467 | host_triple: ?[]const u8, |
| 3468 | host_cpu: ?[]const u8, |
| 3469 | host_dynamic_linker: ?[]const u8, |
| 3458 | 3470 | }; |
| 3459 | 3471 | |
| 3460 | 3472 | fn createModule( |
| ... | ... | @@ -3539,7 +3551,15 @@ fn createModule( |
| 3539 | 3551 | } |
| 3540 | 3552 | |
| 3541 | 3553 | const target_query = parseTargetQueryOrReportFatalError(arena, target_parse_options); |
| 3542 | | const target = resolveTargetQueryOrFatal(target_query); |
| 3554 | const adjusted_target_query = a: { |
| 3555 | if (!target_query.isNative()) break :a target_query; |
| 3556 | if (create_module.host_triple) |triple| target_parse_options.arch_os_abi = triple; |
| 3557 | if (create_module.host_cpu) |cpu| target_parse_options.cpu_features = cpu; |
| 3558 | if (create_module.host_dynamic_linker) |dl| target_parse_options.dynamic_linker = dl; |
| 3559 | break :a parseTargetQueryOrReportFatalError(arena, target_parse_options); |
| 3560 | }; |
| 3561 | |
| 3562 | const target = resolveTargetQueryOrFatal(adjusted_target_query); |
| 3543 | 3563 | break :t .{ |
| 3544 | 3564 | .result = target, |
| 3545 | 3565 | .is_native_os = target_query.isNativeOs(), |