quick fix: add -mcpu=baseline support to zig0
When the build.zig logic to build libzigstage2 was converted to a cmake command, it neglected to use baseline CPU features rather than compiling with native features. This adds a hard coded flag `-mcpu=baseline` which can be used to detect the native target, but mark it as non-native so that it does not get the CPU features specific to the host used to compile libzigstage2. Full `-mcpu` support is happening in the upcoming pull request #4509, and so this "quick fix" will be cleaned up in that branch, before it is merged to master. closes #4506master
parent
b0d2ebe529
commit
e381a42de9
|
@ -616,6 +616,7 @@ endif()
|
||||||
|
|
||||||
set(BUILD_LIBSTAGE2_ARGS "build-lib"
|
set(BUILD_LIBSTAGE2_ARGS "build-lib"
|
||||||
"src-self-hosted/stage2.zig"
|
"src-self-hosted/stage2.zig"
|
||||||
|
-mcpu=baseline
|
||||||
--name zigstage2
|
--name zigstage2
|
||||||
--override-lib-dir "${CMAKE_SOURCE_DIR}/lib"
|
--override-lib-dir "${CMAKE_SOURCE_DIR}/lib"
|
||||||
--cache on
|
--cache on
|
||||||
|
|
|
@ -450,6 +450,7 @@ static int main0(int argc, char **argv) {
|
||||||
const char *cpu = nullptr;
|
const char *cpu = nullptr;
|
||||||
const char *features = nullptr;
|
const char *features = nullptr;
|
||||||
CodeModel code_model = CodeModelDefault;
|
CodeModel code_model = CodeModelDefault;
|
||||||
|
bool baseline_cpu = false;
|
||||||
|
|
||||||
ZigList<const char *> llvm_argv = {0};
|
ZigList<const char *> llvm_argv = {0};
|
||||||
llvm_argv.append("zig (LLVM option parsing)");
|
llvm_argv.append("zig (LLVM option parsing)");
|
||||||
|
@ -716,6 +717,8 @@ static int main0(int argc, char **argv) {
|
||||||
emit_llvm_ir = true;
|
emit_llvm_ir = true;
|
||||||
} else if (strcmp(arg, "-fno-emit-llvm-ir") == 0) {
|
} else if (strcmp(arg, "-fno-emit-llvm-ir") == 0) {
|
||||||
emit_llvm_ir = false;
|
emit_llvm_ir = false;
|
||||||
|
} else if (strcmp(arg, "-mcpu=baseline") == 0) {
|
||||||
|
baseline_cpu = true;
|
||||||
} else if (i + 1 >= argc) {
|
} else if (i + 1 >= argc) {
|
||||||
fprintf(stderr, "Expected another argument after %s\n", arg);
|
fprintf(stderr, "Expected another argument after %s\n", arg);
|
||||||
return print_error_usage(arg0);
|
return print_error_usage(arg0);
|
||||||
|
@ -977,6 +980,9 @@ static int main0(int argc, char **argv) {
|
||||||
fprintf(stderr, "-target-glibc provided but no -target parameter\n");
|
fprintf(stderr, "-target-glibc provided but no -target parameter\n");
|
||||||
return print_error_usage(arg0);
|
return print_error_usage(arg0);
|
||||||
}
|
}
|
||||||
|
if (baseline_cpu) {
|
||||||
|
target.is_native = false;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
if ((err = target_parse_triple(&target, target_string))) {
|
if ((err = target_parse_triple(&target, target_string))) {
|
||||||
if (err == ErrorUnknownArchitecture && target.arch != ZigLLVM_UnknownArch) {
|
if (err == ErrorUnknownArchitecture && target.arch != ZigLLVM_UnknownArch) {
|
||||||
|
|
Loading…
Reference in New Issue