introduce operating system version ranges as part of the target
* re-introduce `std.build.Target` which is distinct from `std.Target`. `std.build.Target` wraps `std.Target` so that it can be annotated as "the native target" or an explicitly specified target. * `std.Target.Os` is moved to `std.Target.Os.Tag`. The former is now a struct which has the tag as well as version range information. * `std.elf` gains some more ELF header constants. * `std.Target.parse` gains the ability to parse operating system version ranges as well as glibc version. * Added `std.Target.isGnuLibC()`. * self-hosted dynamic linker detection and glibc version detection. This also adds the improved logic using `/usr/bin/env` rather than invoking the system C compiler to find the dynamic linker when zig is statically linked. Related: #2084 Note: this `/usr/bin/env` code is work-in-progress. * `-target-glibc` CLI option is removed in favor of the new `-target` syntax. Example: `-target x86_64-linux-gnu.2.27` closes #1907
This commit is contained in:
@@ -100,13 +100,11 @@ Error stage2_target_parse(struct ZigTarget *target, const char *zig_triple, cons
|
||||
if (mcpu == nullptr) {
|
||||
target->llvm_cpu_name = ZigLLVMGetHostCPUName();
|
||||
target->llvm_cpu_features = ZigLLVMGetNativeFeatures();
|
||||
target->builtin_str = "Target.Cpu.baseline(arch);\n";
|
||||
target->cache_hash = "native\n\n";
|
||||
} else if (strcmp(mcpu, "baseline") == 0) {
|
||||
target->is_native = false;
|
||||
target->llvm_cpu_name = "";
|
||||
target->llvm_cpu_features = "";
|
||||
target->builtin_str = "Target.Cpu.baseline(arch);\n";
|
||||
target->cache_hash = "baseline\n\n";
|
||||
} else {
|
||||
const char *msg = "stage0 can't handle CPU/features in the target";
|
||||
@@ -148,7 +146,6 @@ Error stage2_target_parse(struct ZigTarget *target, const char *zig_triple, cons
|
||||
const char *msg = "stage0 can't handle CPU/features in the target";
|
||||
stage2_panic(msg, strlen(msg));
|
||||
}
|
||||
target->builtin_str = "Target.Cpu.baseline(arch);\n";
|
||||
target->cache_hash = "\n\n";
|
||||
}
|
||||
|
||||
@@ -186,11 +183,6 @@ enum Error stage2_libc_find_native(struct Stage2LibCInstallation *libc) {
|
||||
stage2_panic(msg, strlen(msg));
|
||||
}
|
||||
|
||||
enum Error stage2_detect_dynamic_linker(const struct ZigTarget *target, char **out_ptr, size_t *out_len) {
|
||||
const char *msg = "stage0 called stage2_detect_dynamic_linker";
|
||||
stage2_panic(msg, strlen(msg));
|
||||
}
|
||||
|
||||
enum Error stage2_detect_native_paths(struct Stage2NativePaths *native_paths) {
|
||||
native_paths->include_dirs_ptr = nullptr;
|
||||
native_paths->include_dirs_len = 0;
|
||||
|
||||
Reference in New Issue
Block a user