authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-02-16 13:50:47-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2022-02-16 14:12:15-07:00
logcc9eb9e90fec961a74e90e1ab3d66a7b8ec14f47
treea6901d6182774785c24697d1232afb5696800955
parent2b3df5c81d8455856c2b355694ce818385218f36

build.zig: bootstrap stage1 with zig0

Instead of assuming that the zig version used with `zig build` is appropriate for building the self-hosted compiler component, we follow the same path as the cmake build script and build zig0, using that to produce zig1.o, re-linking to produce stage1. This allows an arbitrarily old Zig version and corresponding build.zig script to build all future versions of Zig from source via the bootstrap compiler. In other words, it allows us to use `zig build` as an alternative to cmake when bootstrapping.

1 files changed, 141 insertions(+), 57 deletions(-)

build.zig+141-57
...@@ -19,7 +19,7 @@ pub fn build(b: *Builder) !void {...@@ -19,7 +19,7 @@ pub fn build(b: *Builder) !void {
19 const single_threaded = b.option(bool, "single-threaded", "Build artifacts that run in single threaded mode");19 const single_threaded = b.option(bool, "single-threaded", "Build artifacts that run in single threaded mode");
20 const use_zig_libcxx = b.option(bool, "use-zig-libcxx", "If libc++ is needed, use zig's bundled version, don't try to integrate with the system") orelse false;20 const use_zig_libcxx = b.option(bool, "use-zig-libcxx", "If libc++ is needed, use zig's bundled version, don't try to integrate with the system") orelse false;
2121
22 var docgen_exe = b.addExecutable("docgen", "doc/docgen.zig");22 const docgen_exe = b.addExecutable("docgen", "doc/docgen.zig");
23 docgen_exe.single_threaded = single_threaded;23 docgen_exe.single_threaded = single_threaded;
2424
25 const rel_zig_exe = try fs.path.relative(b.allocator, b.build_root, b.zig_exe);25 const rel_zig_exe = try fs.path.relative(b.allocator, b.build_root, b.zig_exe);
...@@ -27,7 +27,7 @@ pub fn build(b: *Builder) !void {...@@ -27,7 +27,7 @@ pub fn build(b: *Builder) !void {
27 b.allocator,27 b.allocator,
28 &[_][]const u8{ b.cache_root, "langref.html" },28 &[_][]const u8{ b.cache_root, "langref.html" },
29 ) catch unreachable;29 ) catch unreachable;
30 var docgen_cmd = docgen_exe.run();30 const docgen_cmd = docgen_exe.run();
31 docgen_cmd.addArgs(&[_][]const u8{31 docgen_cmd.addArgs(&[_][]const u8{
32 rel_zig_exe,32 rel_zig_exe,
33 "doc" ++ fs.path.sep_str ++ "langref.html.in",33 "doc" ++ fs.path.sep_str ++ "langref.html.in",
...@@ -60,6 +60,7 @@ pub fn build(b: *Builder) !void {...@@ -60,6 +60,7 @@ pub fn build(b: *Builder) !void {
60 const skip_install_lib_files = b.option(bool, "skip-install-lib-files", "Do not copy lib/ files to installation prefix") orelse false;60 const skip_install_lib_files = b.option(bool, "skip-install-lib-files", "Do not copy lib/ files to installation prefix") orelse false;
6161
62 const only_install_lib_files = b.option(bool, "lib-files-only", "Only install library files") orelse false;62 const only_install_lib_files = b.option(bool, "lib-files-only", "Only install library files") orelse false;
63
63 const is_stage1 = b.option(bool, "stage1", "Build the stage1 compiler, put stage2 behind a feature flag") orelse false;64 const is_stage1 = b.option(bool, "stage1", "Build the stage1 compiler, put stage2 behind a feature flag") orelse false;
64 const omit_stage2 = b.option(bool, "omit-stage2", "Do not include stage2 behind a feature flag inside stage1") orelse false;65 const omit_stage2 = b.option(bool, "omit-stage2", "Do not include stage2 behind a feature flag inside stage1") orelse false;
65 const static_llvm = b.option(bool, "static-llvm", "Disable integration with system-installed LLVM, Clang, LLD, and libc++") orelse false;66 const static_llvm = b.option(bool, "static-llvm", "Disable integration with system-installed LLVM, Clang, LLD, and libc++") orelse false;
...@@ -135,9 +136,9 @@ pub fn build(b: *Builder) !void {...@@ -135,9 +136,9 @@ pub fn build(b: *Builder) !void {
135 break :blk 4;136 break :blk 4;
136 };137 };
137138
138 const main_file = if (is_stage1) "src/stage1.zig" else "src/main.zig";139 const main_file: ?[]const u8 = if (is_stage1) null else "src/main.zig";
139140
140 var exe = b.addExecutable("zig", main_file);141 const exe = b.addExecutable("zig", main_file);
141 exe.strip = strip;142 exe.strip = strip;
142 exe.install();143 exe.install();
143 exe.setBuildMode(mode);144 exe.setBuildMode(mode);
...@@ -145,6 +146,7 @@ pub fn build(b: *Builder) !void {...@@ -145,6 +146,7 @@ pub fn build(b: *Builder) !void {
145 if (!skip_stage2_tests) {146 if (!skip_stage2_tests) {
146 toolchain_step.dependOn(&exe.step);147 toolchain_step.dependOn(&exe.step);
147 }148 }
149
148 b.default_step.dependOn(&exe.step);150 b.default_step.dependOn(&exe.step);
149 exe.single_threaded = single_threaded;151 exe.single_threaded = single_threaded;
150152
...@@ -166,56 +168,6 @@ pub fn build(b: *Builder) !void {...@@ -166,56 +168,6 @@ pub fn build(b: *Builder) !void {
166 exe_options.addOption(bool, "llvm_has_arc", llvm_has_arc);168 exe_options.addOption(bool, "llvm_has_arc", llvm_has_arc);
167 exe_options.addOption(bool, "force_gpa", force_gpa);169 exe_options.addOption(bool, "force_gpa", force_gpa);
168170
169 if (enable_llvm) {
170 const cmake_cfg = if (static_llvm) null else findAndParseConfigH(b, config_h_path_option);
171
172 if (is_stage1) {
173 exe.addIncludePath("src");
174 exe.addIncludePath("deps/SoftFloat-3e/source/include");
175
176 test_stage2.addIncludePath("src");
177 test_stage2.addIncludePath("deps/SoftFloat-3e/source/include");
178 // This is intentionally a dummy path. stage1.zig tries to @import("compiler_rt") in case
179 // of being built by cmake. But when built by zig it's gonna get a compiler_rt so that
180 // is pointless.
181 exe.addPackagePath("compiler_rt", "src/empty.zig");
182 exe.defineCMacro("ZIG_LINK_MODE", "Static");
183 test_stage2.defineCMacro("ZIG_LINK_MODE", "Static");
184
185 const softfloat = b.addStaticLibrary("softfloat", null);
186 softfloat.setBuildMode(.ReleaseFast);
187 softfloat.setTarget(target);
188 softfloat.addIncludePath("deps/SoftFloat-3e-prebuilt");
189 softfloat.addIncludePath("deps/SoftFloat-3e/source/8086");
190 softfloat.addIncludePath("deps/SoftFloat-3e/source/include");
191 softfloat.addCSourceFiles(&softfloat_sources, &[_][]const u8{ "-std=c99", "-O3" });
192 softfloat.single_threaded = single_threaded;
193
194 exe.linkLibrary(softfloat);
195 test_stage2.linkLibrary(softfloat);
196
197 exe.addCSourceFiles(&stage1_sources, &exe_cflags);
198 exe.addCSourceFiles(&optimized_c_sources, &[_][]const u8{ "-std=c99", "-O3" });
199
200 test_stage2.addCSourceFiles(&stage1_sources, &exe_cflags);
201 test_stage2.addCSourceFiles(&optimized_c_sources, &[_][]const u8{ "-std=c99", "-O3" });
202 }
203 if (cmake_cfg) |cfg| {
204 // Inside this code path, we have to coordinate with system packaged LLVM, Clang, and LLD.
205 // That means we also have to rely on stage1 compiled c++ files. We parse config.h to find
206 // the information passed on to us from cmake.
207 if (cfg.cmake_prefix_path.len > 0) {
208 b.addSearchPrefix(cfg.cmake_prefix_path);
209 }
210
211 try addCmakeCfgOptionsToExe(b, cfg, exe, use_zig_libcxx);
212 try addCmakeCfgOptionsToExe(b, cfg, test_stage2, use_zig_libcxx);
213 } else {
214 // Here we are -Denable-llvm but no cmake integration.
215 try addStaticLlvmOptionsToExe(exe);
216 try addStaticLlvmOptionsToExe(test_stage2);
217 }
218 }
219 if (link_libc) {171 if (link_libc) {
220 exe.linkLibC();172 exe.linkLibC();
221 test_stage2.linkLibC();173 test_stage2.linkLibC();
...@@ -227,12 +179,12 @@ pub fn build(b: *Builder) !void {...@@ -227,12 +179,12 @@ pub fn build(b: *Builder) !void {
227179
228 const opt_version_string = b.option([]const u8, "version-string", "Override Zig version string. Default is to find out with git.");180 const opt_version_string = b.option([]const u8, "version-string", "Override Zig version string. Default is to find out with git.");
229 const version = if (opt_version_string) |version| version else v: {181 const version = if (opt_version_string) |version| version else v: {
230 const version_string = b.fmt("{d}.{d}.{d}", .{ zig_version.major, zig_version.minor, zig_version.patch });
231
232 if (!std.process.can_spawn) {182 if (!std.process.can_spawn) {
233 std.debug.print("error: version info cannot be retrieved from git. Zig version must be provided using -Dversion-string\n", .{});183 std.debug.print("error: version info cannot be retrieved from git. Zig version must be provided using -Dversion-string\n", .{});
234 std.process.exit(1);184 std.process.exit(1);
235 }185 }
186 const version_string = b.fmt("{d}.{d}.{d}", .{ zig_version.major, zig_version.minor, zig_version.patch });
187
236 var code: u8 = undefined;188 var code: u8 = undefined;
237 const git_describe_untrimmed = b.execAllowFail(&[_][]const u8{189 const git_describe_untrimmed = b.execAllowFail(&[_][]const u8{
238 "git", "-C", b.build_root, "describe", "--match", "*.*.*", "--tags",190 "git", "-C", b.build_root, "describe", "--match", "*.*.*", "--tags",
...@@ -280,6 +232,108 @@ pub fn build(b: *Builder) !void {...@@ -280,6 +232,108 @@ pub fn build(b: *Builder) !void {
280 };232 };
281 exe_options.addOption([:0]const u8, "version", try b.allocator.dupeZ(u8, version));233 exe_options.addOption([:0]const u8, "version", try b.allocator.dupeZ(u8, version));
282234
235 if (enable_llvm) {
236 const cmake_cfg = if (static_llvm) null else findAndParseConfigH(b, config_h_path_option);
237
238 if (is_stage1) {
239 const softfloat = b.addStaticLibrary("softfloat", null);
240 softfloat.setBuildMode(.ReleaseFast);
241 softfloat.setTarget(target);
242 softfloat.addIncludePath("deps/SoftFloat-3e-prebuilt");
243 softfloat.addIncludePath("deps/SoftFloat-3e/source/8086");
244 softfloat.addIncludePath("deps/SoftFloat-3e/source/include");
245 softfloat.addCSourceFiles(&softfloat_sources, &[_][]const u8{ "-std=c99", "-O3" });
246 softfloat.single_threaded = single_threaded;
247
248 const zig0 = b.addExecutable("zig0", null);
249 zig0.addCSourceFiles(&.{"src/stage1/zig0.cpp"}, &exe_cflags);
250 zig0.addIncludePath("zig-cache/tmp"); // for config.h
251 zig0.defineCMacro("ZIG_VERSION_MAJOR", b.fmt("{d}", .{zig_version.major}));
252 zig0.defineCMacro("ZIG_VERSION_MINOR", b.fmt("{d}", .{zig_version.minor}));
253 zig0.defineCMacro("ZIG_VERSION_PATCH", b.fmt("{d}", .{zig_version.patch}));
254 zig0.defineCMacro("ZIG_VERSION_STRING", b.fmt("\"{s}\"", .{version}));
255
256 for ([_]*std.build.LibExeObjStep{ zig0, exe }) |artifact| {
257 artifact.addIncludePath("src");
258 artifact.addIncludePath("deps/SoftFloat-3e/source/include");
259 artifact.addIncludePath("deps/SoftFloat-3e-prebuilt");
260
261 artifact.defineCMacro("ZIG_LINK_MODE", "Static");
262
263 artifact.addCSourceFiles(&stage1_sources, &exe_cflags);
264 artifact.addCSourceFiles(&optimized_c_sources, &[_][]const u8{ "-std=c99", "-O3" });
265
266 artifact.linkLibrary(softfloat);
267 artifact.linkLibCpp();
268 }
269
270 try addStaticLlvmOptionsToExe(zig0);
271
272 const zig1_obj_ext = target.getObjectFormat().fileExt(target.getCpuArch());
273 const zig1_obj_path = b.pathJoin(&.{ "zig-cache", "tmp", b.fmt("zig1{s}", .{zig1_obj_ext}) });
274 const zig1_compiler_rt_path = b.pathJoin(&.{ b.pathFromRoot("lib"), "std", "special", "compiler_rt.zig" });
275
276 const zig1_obj = zig0.run();
277 zig1_obj.addArgs(&.{
278 "src/stage1.zig",
279 "-target",
280 try target.zigTriple(b.allocator),
281 "-mcpu=baseline",
282 "--name",
283 "zig1",
284 "--zig-lib-dir",
285 b.pathFromRoot("lib"),
286 b.fmt("-femit-bin={s}", .{b.pathFromRoot(zig1_obj_path)}),
287 "-fcompiler-rt",
288 "-lc",
289 });
290 {
291 zig1_obj.addArgs(&.{ "--pkg-begin", "build_options" });
292 zig1_obj.addFileSourceArg(exe_options.getSource());
293 zig1_obj.addArgs(&.{ "--pkg-end", "--pkg-begin", "compiler_rt", zig1_compiler_rt_path, "--pkg-end" });
294 }
295 switch (mode) {
296 .Debug => {},
297 .ReleaseFast => {
298 zig1_obj.addArg("-OReleaseFast");
299 zig1_obj.addArg("--strip");
300 },
301 .ReleaseSafe => {
302 zig1_obj.addArg("-OReleaseSafe");
303 zig1_obj.addArg("--strip");
304 },
305 .ReleaseSmall => {
306 zig1_obj.addArg("-OReleaseSmall");
307 zig1_obj.addArg("--strip");
308 },
309 }
310 if (single_threaded orelse false) {
311 zig1_obj.addArg("-fsingle-threaded");
312 }
313
314 exe.step.dependOn(&zig1_obj.step);
315 exe.addObjectFile(zig1_obj_path);
316
317 // This is intentionally a dummy path. stage1.zig tries to @import("compiler_rt") in case
318 // of being built by cmake. But when built by zig it's gonna get a compiler_rt so that
319 // is pointless.
320 exe.addPackagePath("compiler_rt", "src/empty.zig");
321 }
322 if (cmake_cfg) |cfg| {
323 // Inside this code path, we have to coordinate with system packaged LLVM, Clang, and LLD.
324 // That means we also have to rely on stage1 compiled c++ files. We parse config.h to find
325 // the information passed on to us from cmake.
326 if (cfg.cmake_prefix_path.len > 0) {
327 b.addSearchPrefix(cfg.cmake_prefix_path);
328 }
329
330 try addCmakeCfgOptionsToExe(b, cfg, exe, use_zig_libcxx);
331 } else {
332 // Here we are -Denable-llvm but no cmake integration.
333 try addStaticLlvmOptionsToExe(exe);
334 }
335 }
336
283 const semver = try std.SemanticVersion.parse(version);337 const semver = try std.SemanticVersion.parse(version);
284 exe_options.addOption(std.SemanticVersion, "semver", semver);338 exe_options.addOption(std.SemanticVersion, "semver", semver);
285339
...@@ -548,7 +602,6 @@ fn addCxxKnownPath(...@@ -548,7 +602,6 @@ fn addCxxKnownPath(
548) !void {602) !void {
549 if (!std.process.can_spawn)603 if (!std.process.can_spawn)
550 return error.RequiredLibraryNotFound;604 return error.RequiredLibraryNotFound;
551
552 const path_padded = try b.exec(&[_][]const u8{605 const path_padded = try b.exec(&[_][]const u8{
553 ctx.cxx_compiler,606 ctx.cxx_compiler,
554 b.fmt("-print-file-name={s}", .{objname}),607 b.fmt("-print-file-name={s}", .{objname}),
...@@ -695,15 +748,19 @@ fn toNativePathSep(b: *Builder, s: []const u8) []u8 {...@@ -695,15 +748,19 @@ fn toNativePathSep(b: *Builder, s: []const u8) []u8 {
695748
696const softfloat_sources = [_][]const u8{749const softfloat_sources = [_][]const u8{
697 "deps/SoftFloat-3e/source/8086/f128M_isSignalingNaN.c",750 "deps/SoftFloat-3e/source/8086/f128M_isSignalingNaN.c",
751 "deps/SoftFloat-3e/source/8086/extF80M_isSignalingNaN.c",
698 "deps/SoftFloat-3e/source/8086/s_commonNaNToF128M.c",752 "deps/SoftFloat-3e/source/8086/s_commonNaNToF128M.c",
753 "deps/SoftFloat-3e/source/8086/s_commonNaNToExtF80M.c",
699 "deps/SoftFloat-3e/source/8086/s_commonNaNToF16UI.c",754 "deps/SoftFloat-3e/source/8086/s_commonNaNToF16UI.c",
700 "deps/SoftFloat-3e/source/8086/s_commonNaNToF32UI.c",755 "deps/SoftFloat-3e/source/8086/s_commonNaNToF32UI.c",
701 "deps/SoftFloat-3e/source/8086/s_commonNaNToF64UI.c",756 "deps/SoftFloat-3e/source/8086/s_commonNaNToF64UI.c",
702 "deps/SoftFloat-3e/source/8086/s_f128MToCommonNaN.c",757 "deps/SoftFloat-3e/source/8086/s_f128MToCommonNaN.c",
758 "deps/SoftFloat-3e/source/8086/s_extF80MToCommonNaN.c",
703 "deps/SoftFloat-3e/source/8086/s_f16UIToCommonNaN.c",759 "deps/SoftFloat-3e/source/8086/s_f16UIToCommonNaN.c",
704 "deps/SoftFloat-3e/source/8086/s_f32UIToCommonNaN.c",760 "deps/SoftFloat-3e/source/8086/s_f32UIToCommonNaN.c",
705 "deps/SoftFloat-3e/source/8086/s_f64UIToCommonNaN.c",761 "deps/SoftFloat-3e/source/8086/s_f64UIToCommonNaN.c",
706 "deps/SoftFloat-3e/source/8086/s_propagateNaNF128M.c",762 "deps/SoftFloat-3e/source/8086/s_propagateNaNF128M.c",
763 "deps/SoftFloat-3e/source/8086/s_propagateNaNExtF80M.c",
707 "deps/SoftFloat-3e/source/8086/s_propagateNaNF16UI.c",764 "deps/SoftFloat-3e/source/8086/s_propagateNaNF16UI.c",
708 "deps/SoftFloat-3e/source/8086/softfloat_raiseFlags.c",765 "deps/SoftFloat-3e/source/8086/softfloat_raiseFlags.c",
709 "deps/SoftFloat-3e/source/f128M_add.c",766 "deps/SoftFloat-3e/source/f128M_add.c",
...@@ -723,6 +780,7 @@ const softfloat_sources = [_][]const u8{...@@ -723,6 +780,7 @@ const softfloat_sources = [_][]const u8{
723 "deps/SoftFloat-3e/source/f128M_to_f16.c",780 "deps/SoftFloat-3e/source/f128M_to_f16.c",
724 "deps/SoftFloat-3e/source/f128M_to_f32.c",781 "deps/SoftFloat-3e/source/f128M_to_f32.c",
725 "deps/SoftFloat-3e/source/f128M_to_f64.c",782 "deps/SoftFloat-3e/source/f128M_to_f64.c",
783 "deps/SoftFloat-3e/source/f128M_to_extF80M.c",
726 "deps/SoftFloat-3e/source/f128M_to_i32.c",784 "deps/SoftFloat-3e/source/f128M_to_i32.c",
727 "deps/SoftFloat-3e/source/f128M_to_i32_r_minMag.c",785 "deps/SoftFloat-3e/source/f128M_to_i32_r_minMag.c",
728 "deps/SoftFloat-3e/source/f128M_to_i64.c",786 "deps/SoftFloat-3e/source/f128M_to_i64.c",
...@@ -731,6 +789,20 @@ const softfloat_sources = [_][]const u8{...@@ -731,6 +789,20 @@ const softfloat_sources = [_][]const u8{
731 "deps/SoftFloat-3e/source/f128M_to_ui32_r_minMag.c",789 "deps/SoftFloat-3e/source/f128M_to_ui32_r_minMag.c",
732 "deps/SoftFloat-3e/source/f128M_to_ui64.c",790 "deps/SoftFloat-3e/source/f128M_to_ui64.c",
733 "deps/SoftFloat-3e/source/f128M_to_ui64_r_minMag.c",791 "deps/SoftFloat-3e/source/f128M_to_ui64_r_minMag.c",
792 "deps/SoftFloat-3e/source/extF80M_add.c",
793 "deps/SoftFloat-3e/source/extF80M_div.c",
794 "deps/SoftFloat-3e/source/extF80M_eq.c",
795 "deps/SoftFloat-3e/source/extF80M_le.c",
796 "deps/SoftFloat-3e/source/extF80M_lt.c",
797 "deps/SoftFloat-3e/source/extF80M_mul.c",
798 "deps/SoftFloat-3e/source/extF80M_rem.c",
799 "deps/SoftFloat-3e/source/extF80M_roundToInt.c",
800 "deps/SoftFloat-3e/source/extF80M_sqrt.c",
801 "deps/SoftFloat-3e/source/extF80M_sub.c",
802 "deps/SoftFloat-3e/source/extF80M_to_f16.c",
803 "deps/SoftFloat-3e/source/extF80M_to_f32.c",
804 "deps/SoftFloat-3e/source/extF80M_to_f64.c",
805 "deps/SoftFloat-3e/source/extF80M_to_f128M.c",
734 "deps/SoftFloat-3e/source/f16_add.c",806 "deps/SoftFloat-3e/source/f16_add.c",
735 "deps/SoftFloat-3e/source/f16_div.c",807 "deps/SoftFloat-3e/source/f16_div.c",
736 "deps/SoftFloat-3e/source/f16_eq.c",808 "deps/SoftFloat-3e/source/f16_eq.c",
...@@ -742,9 +814,12 @@ const softfloat_sources = [_][]const u8{...@@ -742,9 +814,12 @@ const softfloat_sources = [_][]const u8{
742 "deps/SoftFloat-3e/source/f16_roundToInt.c",814 "deps/SoftFloat-3e/source/f16_roundToInt.c",
743 "deps/SoftFloat-3e/source/f16_sqrt.c",815 "deps/SoftFloat-3e/source/f16_sqrt.c",
744 "deps/SoftFloat-3e/source/f16_sub.c",816 "deps/SoftFloat-3e/source/f16_sub.c",
817 "deps/SoftFloat-3e/source/f16_to_extF80M.c",
745 "deps/SoftFloat-3e/source/f16_to_f128M.c",818 "deps/SoftFloat-3e/source/f16_to_f128M.c",
746 "deps/SoftFloat-3e/source/f16_to_f64.c",819 "deps/SoftFloat-3e/source/f16_to_f64.c",
820 "deps/SoftFloat-3e/source/f32_to_extF80M.c",
747 "deps/SoftFloat-3e/source/f32_to_f128M.c",821 "deps/SoftFloat-3e/source/f32_to_f128M.c",
822 "deps/SoftFloat-3e/source/f64_to_extF80M.c",
748 "deps/SoftFloat-3e/source/f64_to_f128M.c",823 "deps/SoftFloat-3e/source/f64_to_f128M.c",
749 "deps/SoftFloat-3e/source/f64_to_f16.c",824 "deps/SoftFloat-3e/source/f64_to_f16.c",
750 "deps/SoftFloat-3e/source/i32_to_f128M.c",825 "deps/SoftFloat-3e/source/i32_to_f128M.c",
...@@ -752,6 +827,7 @@ const softfloat_sources = [_][]const u8{...@@ -752,6 +827,7 @@ const softfloat_sources = [_][]const u8{
752 "deps/SoftFloat-3e/source/s_addCarryM.c",827 "deps/SoftFloat-3e/source/s_addCarryM.c",
753 "deps/SoftFloat-3e/source/s_addComplCarryM.c",828 "deps/SoftFloat-3e/source/s_addComplCarryM.c",
754 "deps/SoftFloat-3e/source/s_addF128M.c",829 "deps/SoftFloat-3e/source/s_addF128M.c",
830 "deps/SoftFloat-3e/source/s_addExtF80M.c",
755 "deps/SoftFloat-3e/source/s_addM.c",831 "deps/SoftFloat-3e/source/s_addM.c",
756 "deps/SoftFloat-3e/source/s_addMagsF16.c",832 "deps/SoftFloat-3e/source/s_addMagsF16.c",
757 "deps/SoftFloat-3e/source/s_addMagsF32.c",833 "deps/SoftFloat-3e/source/s_addMagsF32.c",
...@@ -762,12 +838,14 @@ const softfloat_sources = [_][]const u8{...@@ -762,12 +838,14 @@ const softfloat_sources = [_][]const u8{
762 "deps/SoftFloat-3e/source/s_approxRecip_1Ks.c",838 "deps/SoftFloat-3e/source/s_approxRecip_1Ks.c",
763 "deps/SoftFloat-3e/source/s_compare128M.c",839 "deps/SoftFloat-3e/source/s_compare128M.c",
764 "deps/SoftFloat-3e/source/s_compare96M.c",840 "deps/SoftFloat-3e/source/s_compare96M.c",
841 "deps/SoftFloat-3e/source/s_compareNonnormExtF80M.c",
765 "deps/SoftFloat-3e/source/s_countLeadingZeros16.c",842 "deps/SoftFloat-3e/source/s_countLeadingZeros16.c",
766 "deps/SoftFloat-3e/source/s_countLeadingZeros32.c",843 "deps/SoftFloat-3e/source/s_countLeadingZeros32.c",
767 "deps/SoftFloat-3e/source/s_countLeadingZeros64.c",844 "deps/SoftFloat-3e/source/s_countLeadingZeros64.c",
768 "deps/SoftFloat-3e/source/s_countLeadingZeros8.c",845 "deps/SoftFloat-3e/source/s_countLeadingZeros8.c",
769 "deps/SoftFloat-3e/source/s_eq128.c",846 "deps/SoftFloat-3e/source/s_eq128.c",
770 "deps/SoftFloat-3e/source/s_invalidF128M.c",847 "deps/SoftFloat-3e/source/s_invalidF128M.c",
848 "deps/SoftFloat-3e/source/s_invalidExtF80M.c",
771 "deps/SoftFloat-3e/source/s_isNaNF128M.c",849 "deps/SoftFloat-3e/source/s_isNaNF128M.c",
772 "deps/SoftFloat-3e/source/s_le128.c",850 "deps/SoftFloat-3e/source/s_le128.c",
773 "deps/SoftFloat-3e/source/s_lt128.c",851 "deps/SoftFloat-3e/source/s_lt128.c",
...@@ -778,7 +856,9 @@ const softfloat_sources = [_][]const u8{...@@ -778,7 +856,9 @@ const softfloat_sources = [_][]const u8{
778 "deps/SoftFloat-3e/source/s_mulAddF32.c",856 "deps/SoftFloat-3e/source/s_mulAddF32.c",
779 "deps/SoftFloat-3e/source/s_mulAddF64.c",857 "deps/SoftFloat-3e/source/s_mulAddF64.c",
780 "deps/SoftFloat-3e/source/s_negXM.c",858 "deps/SoftFloat-3e/source/s_negXM.c",
859 "deps/SoftFloat-3e/source/s_normExtF80SigM.c",
781 "deps/SoftFloat-3e/source/s_normRoundPackMToF128M.c",860 "deps/SoftFloat-3e/source/s_normRoundPackMToF128M.c",
861 "deps/SoftFloat-3e/source/s_normRoundPackMToExtF80M.c",
782 "deps/SoftFloat-3e/source/s_normRoundPackToF16.c",862 "deps/SoftFloat-3e/source/s_normRoundPackToF16.c",
783 "deps/SoftFloat-3e/source/s_normRoundPackToF32.c",863 "deps/SoftFloat-3e/source/s_normRoundPackToF32.c",
784 "deps/SoftFloat-3e/source/s_normRoundPackToF64.c",864 "deps/SoftFloat-3e/source/s_normRoundPackToF64.c",
...@@ -789,6 +869,7 @@ const softfloat_sources = [_][]const u8{...@@ -789,6 +869,7 @@ const softfloat_sources = [_][]const u8{
789 "deps/SoftFloat-3e/source/s_remStepMBy32.c",869 "deps/SoftFloat-3e/source/s_remStepMBy32.c",
790 "deps/SoftFloat-3e/source/s_roundMToI64.c",870 "deps/SoftFloat-3e/source/s_roundMToI64.c",
791 "deps/SoftFloat-3e/source/s_roundMToUI64.c",871 "deps/SoftFloat-3e/source/s_roundMToUI64.c",
872 "deps/SoftFloat-3e/source/s_roundPackMToExtF80M.c",
792 "deps/SoftFloat-3e/source/s_roundPackMToF128M.c",873 "deps/SoftFloat-3e/source/s_roundPackMToF128M.c",
793 "deps/SoftFloat-3e/source/s_roundPackToF16.c",874 "deps/SoftFloat-3e/source/s_roundPackToF16.c",
794 "deps/SoftFloat-3e/source/s_roundPackToF32.c",875 "deps/SoftFloat-3e/source/s_roundPackToF32.c",
...@@ -817,9 +898,12 @@ const softfloat_sources = [_][]const u8{...@@ -817,9 +898,12 @@ const softfloat_sources = [_][]const u8{
817 "deps/SoftFloat-3e/source/s_subMagsF32.c",898 "deps/SoftFloat-3e/source/s_subMagsF32.c",
818 "deps/SoftFloat-3e/source/s_subMagsF64.c",899 "deps/SoftFloat-3e/source/s_subMagsF64.c",
819 "deps/SoftFloat-3e/source/s_tryPropagateNaNF128M.c",900 "deps/SoftFloat-3e/source/s_tryPropagateNaNF128M.c",
901 "deps/SoftFloat-3e/source/s_tryPropagateNaNExtF80M.c",
820 "deps/SoftFloat-3e/source/softfloat_state.c",902 "deps/SoftFloat-3e/source/softfloat_state.c",
821 "deps/SoftFloat-3e/source/ui32_to_f128M.c",903 "deps/SoftFloat-3e/source/ui32_to_f128M.c",
822 "deps/SoftFloat-3e/source/ui64_to_f128M.c",904 "deps/SoftFloat-3e/source/ui64_to_f128M.c",
905 "deps/SoftFloat-3e/source/ui32_to_extF80M.c",
906 "deps/SoftFloat-3e/source/ui64_to_extF80M.c",
823};907};
824908
825const stage1_sources = [_][]const u8{909const stage1_sources = [_][]const u8{