79 lines
2.6 KiB
Zig
79 lines
2.6 KiB
Zig
const std = @import("std");
|
|
const assert = std.debug.assert;
|
|
|
|
const Compilation = @import("Compilation.zig");
|
|
pub const panic = Compilation.panic;
|
|
|
|
const library = @import("library.zig");
|
|
const byte_equal = library.byte_equal;
|
|
|
|
const configuration = @import("configuration");
|
|
const editor = @import("editor.zig");
|
|
const compiler = @import("compiler.zig");
|
|
|
|
const env_detecting_libc_paths = "NATIVITY_IS_DETECTING_LIBC_PATHS";
|
|
|
|
test {
|
|
_ = library;
|
|
}
|
|
|
|
fn todo() noreturn {
|
|
@setCold(true);
|
|
@panic("TODO");
|
|
}
|
|
|
|
pub fn main() !void {
|
|
if (configuration.editor) {
|
|
editor.main();
|
|
} else {
|
|
compiler.make();
|
|
// var arg_iterator = std.process.ArgIterator.init();
|
|
// var buffer = library.BoundedArray([]const u8, 512){};
|
|
// while (arg_iterator.next()) |argument| {
|
|
// buffer.appendAssumeCapacity(argument);
|
|
// }
|
|
// const arguments = buffer.slice();
|
|
// const context = try Compilation.createContext();
|
|
//
|
|
// if (arguments.len <= 1) {
|
|
// return error.InvalidInput;
|
|
// }
|
|
//
|
|
// if (std.process.can_execv and std.posix.getenvZ(env_detecting_libc_paths) != null) {
|
|
// todo();
|
|
// }
|
|
//
|
|
// const command = arguments[1];
|
|
// const command_arguments = arguments[2..];
|
|
//
|
|
// if (byte_equal(command, "build")) {
|
|
// try Compilation.compileBuildExecutable(context, command_arguments);
|
|
// } else if (byte_equal(command, "clang") or byte_equal(command, "-cc1") or byte_equal(command, "-cc1as")) {
|
|
// const exit_code = try Compilation.clangMain(context.arena, arguments);
|
|
// std.process.exit(exit_code);
|
|
// } else if (byte_equal(command, "cc")) {
|
|
// try Compilation.compileCSourceFile(context, command_arguments, .c);
|
|
// } else if (byte_equal(command, "c++")) {
|
|
// try Compilation.compileCSourceFile(context, command_arguments, .cpp);
|
|
// } else if (byte_equal(command, "exe")) {
|
|
// try Compilation.buildExecutable(context, command_arguments, .{
|
|
// .is_test = false,
|
|
// });
|
|
// } else if (byte_equal(command, "lib")) {
|
|
// todo();
|
|
// } else if (byte_equal(command, "obj")) {
|
|
// todo();
|
|
// } else if (byte_equal(command, "test")) {
|
|
// try Compilation.buildExecutable(context, command_arguments, .{
|
|
// .is_test = true,
|
|
// });
|
|
// } else {
|
|
// todo();
|
|
// }
|
|
}
|
|
}
|
|
|
|
pub const std_options = std.Options{
|
|
.enable_segfault_handler = false,
|
|
};
|