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
master
Andrew Kelley 2020-02-20 17:02:29 -05:00
parent b0d2ebe529
commit e381a42de9
No known key found for this signature in database
GPG Key ID: 7C5F548F728501A9
2 changed files with 7 additions and 0 deletions

View File

@ -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

View File

@ -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) {