mirror of
https://github.com/ziglang/zig.git
synced 2025-12-06 14:23:09 +00:00
81 lines
2.1 KiB
Zig
Vendored
81 lines
2.1 KiB
Zig
Vendored
const std = @import("std");
|
|
|
|
/// place uninitialized global variables in a common block
|
|
common: bool,
|
|
/// Place each function into its own section in the output file if the target supports arbitrary sections
|
|
func_sections: bool,
|
|
/// Place each data item into its own section in the output file if the target supports arbitrary sections
|
|
data_sections: bool,
|
|
pic_level: PicLevel,
|
|
/// Generate position-independent code that can only be linked into executables
|
|
is_pie: bool,
|
|
optimization_level: OptimizationLevel,
|
|
/// Generate debug information
|
|
debug: DebugFormat,
|
|
dwarf_version: DwarfVersion,
|
|
|
|
pub const DebugFormat = union(enum) {
|
|
strip,
|
|
dwarf: std.dwarf.Format,
|
|
code_view,
|
|
};
|
|
|
|
pub const DwarfVersion = enum(u3) {
|
|
@"0" = 0,
|
|
@"2" = 2,
|
|
@"3" = 3,
|
|
@"4" = 4,
|
|
@"5" = 5,
|
|
};
|
|
|
|
pub const PicLevel = enum(u8) {
|
|
/// Do not generate position-independent code
|
|
none = 0,
|
|
/// Generate position-independent code (PIC) suitable for use in a shared library, if supported for the target machine.
|
|
one = 1,
|
|
/// If supported for the target machine, emit position-independent code, suitable for dynamic linking and avoiding
|
|
/// any limit on the size of the global offset table.
|
|
two = 2,
|
|
};
|
|
|
|
pub const OptimizationLevel = enum {
|
|
@"0",
|
|
@"1",
|
|
@"2",
|
|
@"3",
|
|
/// Optimize for size
|
|
s,
|
|
/// Disregard strict standards compliance
|
|
fast,
|
|
/// Optimize debugging experience
|
|
g,
|
|
/// Optimize aggressively for size rather than speed
|
|
z,
|
|
|
|
const level_map = std.StaticStringMap(OptimizationLevel).initComptime(.{
|
|
.{ "0", .@"0" },
|
|
.{ "1", .@"1" },
|
|
.{ "2", .@"2" },
|
|
.{ "3", .@"3" },
|
|
.{ "s", .s },
|
|
.{ "fast", .fast },
|
|
.{ "g", .g },
|
|
.{ "z", .z },
|
|
});
|
|
|
|
pub fn fromString(str: []const u8) ?OptimizationLevel {
|
|
return level_map.get(str);
|
|
}
|
|
};
|
|
|
|
pub const default: @This() = .{
|
|
.common = false,
|
|
.func_sections = false,
|
|
.data_sections = false,
|
|
.pic_level = .none,
|
|
.is_pie = false,
|
|
.optimization_level = .@"0",
|
|
.debug = .strip,
|
|
.dwarf_version = .@"0",
|
|
};
|