authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-20 17:02:29-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-02-20 17:02:29-05:00
loge381a42de9c0f0c5439a926b0ac99026a0373f49
tree97efb484ce5823d10cc43d24d39b4a17a72896d4
parentb0d2ebe529593566f209d34d5bbbfd72cde2a6b9
signaturelock-open Commit is signed but in an unrecognized format.

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 #4506

2 files changed, 7 insertions(+), 0 deletions(-)

CMakeLists.txt+1
...@@ -616,6 +616,7 @@ endif()...@@ -616,6 +616,7 @@ endif()
616616
617set(BUILD_LIBSTAGE2_ARGS "build-lib"617set(BUILD_LIBSTAGE2_ARGS "build-lib"
618 "src-self-hosted/stage2.zig"618 "src-self-hosted/stage2.zig"
619 -mcpu=baseline
619 --name zigstage2620 --name zigstage2
620 --override-lib-dir "${CMAKE_SOURCE_DIR}/lib"621 --override-lib-dir "${CMAKE_SOURCE_DIR}/lib"
621 --cache on622 --cache on
src/main.cpp+6
...@@ -450,6 +450,7 @@ static int main0(int argc, char **argv) {...@@ -450,6 +450,7 @@ static int main0(int argc, char **argv) {
450 const char *cpu = nullptr;450 const char *cpu = nullptr;
451 const char *features = nullptr;451 const char *features = nullptr;
452 CodeModel code_model = CodeModelDefault;452 CodeModel code_model = CodeModelDefault;
453 bool baseline_cpu = false;
453454
454 ZigList<const char *> llvm_argv = {0};455 ZigList<const char *> llvm_argv = {0};
455 llvm_argv.append("zig (LLVM option parsing)");456 llvm_argv.append("zig (LLVM option parsing)");
...@@ -716,6 +717,8 @@ static int main0(int argc, char **argv) {...@@ -716,6 +717,8 @@ static int main0(int argc, char **argv) {
716 emit_llvm_ir = true;717 emit_llvm_ir = true;
717 } else if (strcmp(arg, "-fno-emit-llvm-ir") == 0) {718 } else if (strcmp(arg, "-fno-emit-llvm-ir") == 0) {
718 emit_llvm_ir = false;719 emit_llvm_ir = false;
720 } else if (strcmp(arg, "-mcpu=baseline") == 0) {
721 baseline_cpu = true;
719 } else if (i + 1 >= argc) {722 } else if (i + 1 >= argc) {
720 fprintf(stderr, "Expected another argument after %s\n", arg);723 fprintf(stderr, "Expected another argument after %s\n", arg);
721 return print_error_usage(arg0);724 return print_error_usage(arg0);
...@@ -977,6 +980,9 @@ static int main0(int argc, char **argv) {...@@ -977,6 +980,9 @@ static int main0(int argc, char **argv) {
977 fprintf(stderr, "-target-glibc provided but no -target parameter\n");980 fprintf(stderr, "-target-glibc provided but no -target parameter\n");
978 return print_error_usage(arg0);981 return print_error_usage(arg0);
979 }982 }
983 if (baseline_cpu) {
984 target.is_native = false;
985 }
980 } else {986 } else {
981 if ((err = target_parse_triple(&target, target_string))) {987 if ((err = target_parse_triple(&target, target_string))) {
982 if (err == ErrorUnknownArchitecture && target.arch != ZigLLVM_UnknownArch) {988 if (err == ErrorUnknownArchitecture && target.arch != ZigLLVM_UnknownArch) {