diff --git a/build.zig b/build.zig index 072f781750..9179d3d959 100644 --- a/build.zig +++ b/build.zig @@ -34,7 +34,6 @@ pub fn build(b: *std.Build) !void { const skip_install_langref = b.option(bool, "no-langref", "skip copying of langref to the installation prefix") orelse skip_install_lib_files; const skip_install_autodocs = b.option(bool, "no-autodocs", "skip copying of standard library autodocs to the installation prefix") orelse skip_install_lib_files; const no_bin = b.option(bool, "no-bin", "skip emitting compiler binary") orelse false; - const only_reduce = b.option(bool, "only-reduce", "only build zig reduce") orelse false; const docgen_exe = b.addExecutable(.{ .name = "docgen", @@ -245,7 +244,6 @@ pub fn build(b: *std.Build) !void { exe_options.addOption(bool, "force_gpa", force_gpa); exe_options.addOption(bool, "only_c", only_c); exe_options.addOption(bool, "only_core_functionality", only_c); - exe_options.addOption(bool, "only_reduce", only_reduce); if (link_libc) { exe.linkLibC(); @@ -407,7 +405,6 @@ pub fn build(b: *std.Build) !void { test_cases_options.addOption(bool, "force_gpa", force_gpa); test_cases_options.addOption(bool, "only_c", only_c); test_cases_options.addOption(bool, "only_core_functionality", true); - test_cases_options.addOption(bool, "only_reduce", false); test_cases_options.addOption(bool, "enable_qemu", b.enable_qemu); test_cases_options.addOption(bool, "enable_wine", b.enable_wine); test_cases_options.addOption(bool, "enable_wasmtime", b.enable_wasmtime); @@ -599,7 +596,6 @@ fn addWasiUpdateStep(b: *std.Build, version: [:0]const u8) !void { exe_options.addOption(bool, "enable_tracy_allocation", false); exe_options.addOption(bool, "value_tracing", false); exe_options.addOption(bool, "only_core_functionality", true); - exe_options.addOption(bool, "only_reduce", false); const run_opt = b.addSystemCommand(&.{ "wasm-opt", diff --git a/src/reduce.zig b/lib/std/zig/reduce.zig similarity index 96% rename from src/reduce.zig rename to lib/std/zig/reduce.zig index 0a52814ac1..1b40856ffe 100644 --- a/src/reduce.zig +++ b/lib/std/zig/reduce.zig @@ -2,7 +2,6 @@ const std = @import("std"); const mem = std.mem; const Allocator = std.mem.Allocator; const assert = std.debug.assert; -const fatal = @import("./main.zig").fatal; const Ast = std.zig.Ast; const Walk = @import("reduce/Walk.zig"); const AstGen = std.zig.AstGen; @@ -47,7 +46,16 @@ const Interestingness = enum { interesting, unknown, boring }; // - reduce flags sent to the compiler // - integrate with the build system? -pub fn main(gpa: Allocator, arena: Allocator, args: []const []const u8) !void { +pub fn main() !void { + var arena_instance = std.heap.ArenaAllocator.init(std.heap.page_allocator); + defer arena_instance.deinit(); + const arena = arena_instance.allocator(); + + var general_purpose_allocator: std.heap.GeneralPurposeAllocator(.{}) = .{}; + const gpa = general_purpose_allocator.allocator(); + + const args = try std.process.argsAlloc(arena); + var opt_checker_path: ?[]const u8 = null; var opt_root_source_file_path: ?[]const u8 = null; var argv: []const []const u8 = &.{}; @@ -55,7 +63,7 @@ pub fn main(gpa: Allocator, arena: Allocator, args: []const []const u8) !void { var skip_smoke_test = false; { - var i: usize = 2; // skip over "zig" and "reduce" + var i: usize = 1; while (i < args.len) : (i += 1) { const arg = args[i]; if (mem.startsWith(u8, arg, "-")) { @@ -411,3 +419,8 @@ fn parse(gpa: Allocator, file_path: []const u8) !Ast { return tree; } + +fn fatal(comptime format: []const u8, args: anytype) noreturn { + std.log.err(format, args); + std.process.exit(1); +} diff --git a/src/reduce/Walk.zig b/lib/std/zig/reduce/Walk.zig similarity index 100% rename from src/reduce/Walk.zig rename to lib/std/zig/reduce/Walk.zig diff --git a/src/main.zig b/src/main.zig index 5ece1b97d9..b80070fd35 100644 --- a/src/main.zig +++ b/src/main.zig @@ -203,14 +203,6 @@ pub fn main() anyerror!void { } } - if (build_options.only_reduce) { - if (mem.eql(u8, args[1], "reduce")) { - return @import("reduce.zig").main(gpa, arena, args); - } else { - @panic("only reduce is supported in a -Donly-reduce build"); - } - } - return mainArgs(gpa, arena, args); } @@ -302,7 +294,7 @@ fn mainArgs(gpa: Allocator, arena: Allocator, args: []const []const u8) !void { } else if (mem.eql(u8, cmd, "rc")) { return cmdRc(gpa, arena, args[1..]); } else if (mem.eql(u8, cmd, "fmt")) { - return cmdFmt(gpa, arena, cmd_args); + return jitCmd(gpa, arena, cmd_args, "fmt", "fmt.zig"); } else if (mem.eql(u8, cmd, "objcopy")) { return @import("objcopy.zig").cmdObjCopy(gpa, arena, cmd_args); } else if (mem.eql(u8, cmd, "fetch")) { @@ -325,7 +317,7 @@ fn mainArgs(gpa: Allocator, arena: Allocator, args: []const []const u8) !void { verifyLibcxxCorrectlyLinked(); return @import("print_env.zig").cmdEnv(arena, cmd_args, io.getStdOut().writer()); } else if (mem.eql(u8, cmd, "reduce")) { - return @import("reduce.zig").main(gpa, arena, args); + return jitCmd(gpa, arena, cmd_args, "reduce", "reduce.zig"); } else if (mem.eql(u8, cmd, "zen")) { return io.getStdOut().writeAll(info_zen); } else if (mem.eql(u8, cmd, "help") or mem.eql(u8, cmd, "-h") or mem.eql(u8, cmd, "--help")) { @@ -5710,7 +5702,13 @@ fn cmdBuild(gpa: Allocator, arena: Allocator, args: []const []const u8) !void { } } -fn cmdFmt(gpa: Allocator, arena: Allocator, args: []const []const u8) !void { +fn jitCmd( + gpa: Allocator, + arena: Allocator, + args: []const []const u8, + cmd_name: []const u8, + root_src_path: []const u8, +) !void { const color: Color = .auto; const target_query: std.Target.Query = .{}; @@ -5721,7 +5719,7 @@ fn cmdFmt(gpa: Allocator, arena: Allocator, args: []const []const u8) !void { }; const exe_basename = try std.zig.binNameAlloc(arena, .{ - .root_name = "fmt", + .root_name = cmd_name, .target = resolved_target.result, .output_mode = .Exe, }); @@ -5771,7 +5769,7 @@ fn cmdFmt(gpa: Allocator, arena: Allocator, args: []const []const u8) !void { .root_dir = zig_lib_directory, .sub_path = "std/zig", }, - .root_src_path = "fmt.zig", + .root_src_path = root_src_path, }; const config = try Compilation.Config.resolve(.{ @@ -5801,7 +5799,7 @@ fn cmdFmt(gpa: Allocator, arena: Allocator, args: []const []const u8) !void { .zig_lib_directory = zig_lib_directory, .local_cache_directory = global_cache_directory, .global_cache_directory = global_cache_directory, - .root_name = "fmt", + .root_name = cmd_name, .config = config, .root_mod = root_mod, .main_mod = root_mod, @@ -5820,8 +5818,8 @@ fn cmdFmt(gpa: Allocator, arena: Allocator, args: []const []const u8) !void { else => |e| return e, }; - const fmt_exe = try global_cache_directory.join(arena, &.{comp.cache_use.whole.bin_sub_path.?}); - child_argv.appendAssumeCapacity(fmt_exe); + const exe_path = try global_cache_directory.join(arena, &.{comp.cache_use.whole.bin_sub_path.?}); + child_argv.appendAssumeCapacity(exe_path); } child_argv.appendSliceAssumeCapacity(args); diff --git a/stage1/config.zig.in b/stage1/config.zig.in index 96215bb362..8e0a87e816 100644 --- a/stage1/config.zig.in +++ b/stage1/config.zig.in @@ -13,4 +13,3 @@ pub const skip_non_native = false; pub const only_c = false; pub const force_gpa = false; pub const only_core_functionality = true; -pub const only_reduce = false;