@@ -810,7 +810,6 @@ pub const InitOptions = struct {
810810 /// this flag would be set to disable this machinery to avoid false positives.
811811 disable_lld_caching : bool = false ,
812812 cache_mode : CacheMode = .incremental ,
813- object_format : ? std.Target.ObjectFormat = null ,
814813 optimize_mode : std.builtin.Mode = .Debug ,
815814 keep_source_files_loaded : bool = false ,
816815 clang_argv : []const []const u8 = &[0 ][]const u8 {},
@@ -1027,8 +1026,6 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
10271026 const comp = try arena .create (Compilation );
10281027 const root_name = try arena .dupeZ (u8 , options .root_name );
10291028
1030- const ofmt = options .object_format orelse options .target .getObjectFormat ();
1031-
10321029 const use_stage1 = options .use_stage1 orelse blk : {
10331030 // Even though we may have no Zig code to compile (depending on `options.main_pkg`),
10341031 // we may need to use stage1 for building compiler-rt and other dependencies.
@@ -1042,7 +1039,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
10421039 }
10431040
10441041 // If LLVM does not support the target, then we can't use it.
1045- if (! target_util .hasLlvmSupport (options .target , ofmt ))
1042+ if (! target_util .hasLlvmSupport (options .target , options . target . ofmt ))
10461043 break :blk false ;
10471044
10481045 break :blk build_options .is_stage1 ;
@@ -1072,7 +1069,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
10721069 break :blk true ;
10731070
10741071 // If LLVM does not support the target, then we can't use it.
1075- if (! target_util .hasLlvmSupport (options .target , ofmt ))
1072+ if (! target_util .hasLlvmSupport (options .target , options . target . ofmt ))
10761073 break :blk false ;
10771074
10781075 // Prefer LLVM for release builds.
@@ -1115,7 +1112,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
11151112 if (! build_options .have_llvm )
11161113 break :blk false ;
11171114
1118- if (ofmt == .c )
1115+ if (options . target . ofmt == .c )
11191116 break :blk false ;
11201117
11211118 if (options .want_lto ) | lto | {
@@ -1374,7 +1371,7 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
13741371 cache .hash .add (options .target .os .getVersionRange ());
13751372 cache .hash .add (options .is_native_os );
13761373 cache .hash .add (options .target .abi );
1377- cache .hash .add (ofmt );
1374+ cache .hash .add (options . target . ofmt );
13781375 cache .hash .add (pic );
13791376 cache .hash .add (pie );
13801377 cache .hash .add (lto );
@@ -1682,7 +1679,6 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
16821679 .sysroot = sysroot ,
16831680 .output_mode = options .output_mode ,
16841681 .link_mode = link_mode ,
1685- .object_format = ofmt ,
16861682 .optimize_mode = options .optimize_mode ,
16871683 .use_lld = use_lld ,
16881684 .use_llvm = use_llvm ,
@@ -1841,7 +1837,9 @@ pub fn create(gpa: Allocator, options: InitOptions) !*Compilation {
18411837
18421838 const have_bin_emit = comp .bin_file .options .emit != null or comp .whole_bin_sub_path != null ;
18431839
1844- if (have_bin_emit and ! comp .bin_file .options .skip_linker_dependencies ) {
1840+ if (have_bin_emit and ! comp .bin_file .options .skip_linker_dependencies and
1841+ options .target .ofmt != .c )
1842+ {
18451843 if (comp .getTarget ().isDarwin ()) {
18461844 switch (comp .getTarget ().abi ) {
18471845 .none ,
@@ -3739,7 +3737,8 @@ fn updateCObject(comp: *Compilation, c_object: *CObject, c_obj_prog_node: *std.P
37393737 else
37403738 c_source_basename [0 .. c_source_basename .len - std .fs .path .extension (c_source_basename ).len ];
37413739
3742- const o_ext = comp .bin_file .options .object_format .fileExt (comp .bin_file .options .target .cpu .arch );
3740+ const target = comp .getTarget ();
3741+ const o_ext = target .ofmt .fileExt (target .cpu .arch );
37433742 const digest = if (! comp .disable_c_depfile and try man .hit ()) man .final () else blk : {
37443743 var argv = std .ArrayList ([]const u8 ).init (comp .gpa );
37453744 defer argv .deinit ();
@@ -4092,7 +4091,7 @@ pub fn addCCArgs(
40924091
40934092 if (! comp .bin_file .options .strip ) {
40944093 try argv .append ("-g" );
4095- switch (comp . bin_file . options . object_format ) {
4094+ switch (target . ofmt ) {
40964095 .coff = > try argv .append ("-gcodeview" ),
40974096 else = > {},
40984097 }
@@ -4660,7 +4659,7 @@ fn wantBuildLibCFromSource(comp: Compilation) bool {
46604659 };
46614660 return comp .bin_file .options .link_libc and is_exe_or_dyn_lib and
46624661 comp .bin_file .options .libc_installation == null and
4663- comp .bin_file .options .object_format != .c ;
4662+ comp .bin_file .options .target . ofmt != .c ;
46644663}
46654664
46664665fn wantBuildGLibCFromSource (comp : Compilation ) bool {
@@ -4688,7 +4687,7 @@ fn wantBuildLibUnwindFromSource(comp: *Compilation) bool {
46884687 .Exe = > true ,
46894688 };
46904689 return is_exe_or_dyn_lib and comp .bin_file .options .link_libunwind and
4691- comp .bin_file .options .object_format != .c ;
4690+ comp .bin_file .options .target . ofmt != .c ;
46924691}
46934692
46944693fn setAllocFailure (comp : * Compilation ) void {
@@ -4747,7 +4746,7 @@ pub fn generateBuiltinZigSource(comp: *Compilation, allocator: Allocator) Alloca
47474746 const zig_backend : std.builtin.CompilerBackend = blk : {
47484747 if (use_stage1 ) break :blk .stage1 ;
47494748 if (build_options .have_llvm and comp .bin_file .options .use_llvm ) break :blk .stage2_llvm ;
4750- if (comp . bin_file . options . object_format == .c ) break :blk .stage2_c ;
4749+ if (target . ofmt == .c ) break :blk .stage2_c ;
47514750 break :blk switch (target .cpu .arch ) {
47524751 .wasm32 , .wasm64 = > std .builtin .CompilerBackend .stage2_wasm ,
47534752 .arm , .armeb , .thumb , .thumbeb = > .stage2_arm ,
@@ -4895,6 +4894,7 @@ pub fn generateBuiltinZigSource(comp: *Compilation, allocator: Allocator) Alloca
48954894 \\ .cpu = cpu,
48964895 \\ .os = os,
48974896 \\ .abi = abi,
4897+ \\ .ofmt = object_format,
48984898 \\}};
48994899 \\pub const object_format = std.Target.ObjectFormat.{};
49004900 \\pub const mode = std.builtin.Mode.{};
@@ -4909,7 +4909,7 @@ pub fn generateBuiltinZigSource(comp: *Compilation, allocator: Allocator) Alloca
49094909 \\pub const code_model = std.builtin.CodeModel.{};
49104910 \\
49114911 , .{
4912- std .zig .fmtId (@tagName (comp . bin_file . options . object_format )),
4912+ std .zig .fmtId (@tagName (target . ofmt )),
49134913 std .zig .fmtId (@tagName (comp .bin_file .options .optimize_mode )),
49144914 link_libc ,
49154915 comp .bin_file .options .link_libcpp ,
0 commit comments