Commit e381a42de9

Andrew Kelley <andrew@ziglang.org>
2020-02-20 23:02:29
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
1 parent b0d2ebe
Changed files (2)
src/main.cpp
@@ -450,6 +450,7 @@ static int main0(int argc, char **argv) {
     const char *cpu = nullptr;
     const char *features = nullptr;
     CodeModel code_model = CodeModelDefault;
+    bool baseline_cpu = false;
 
     ZigList<const char *> llvm_argv = {0};
     llvm_argv.append("zig (LLVM option parsing)");
@@ -716,6 +717,8 @@ static int main0(int argc, char **argv) {
                 emit_llvm_ir = true;
             } else if (strcmp(arg, "-fno-emit-llvm-ir") == 0) {
                 emit_llvm_ir = false;
+            } else if (strcmp(arg, "-mcpu=baseline") == 0) {
+                baseline_cpu = true;
             } else if (i + 1 >= argc) {
                 fprintf(stderr, "Expected another argument after %s\n", arg);
                 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");
             return print_error_usage(arg0);
         }
+        if (baseline_cpu) {
+            target.is_native = false;
+        }
     } else {
         if ((err = target_parse_triple(&target, target_string))) {
             if (err == ErrorUnknownArchitecture && target.arch != ZigLLVM_UnknownArch) {
CMakeLists.txt
@@ -616,6 +616,7 @@ endif()
 
 set(BUILD_LIBSTAGE2_ARGS "build-lib"
     "src-self-hosted/stage2.zig"
+    -mcpu=baseline
     --name zigstage2
     --override-lib-dir "${CMAKE_SOURCE_DIR}/lib"
     --cache on