aboutsummaryrefslogtreecommitdiff
path: root/src/main.cpp
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2020-03-25 20:32:40 -0400
committerAndrew Kelley <andrew@ziglang.org>2020-03-25 20:34:15 -0400
commitfae6cf09619e7a8e64f61b84cca7d9fcd471262f (patch)
tree373d125e6c7eb97f563af264de62eb48fb6b5baa /src/main.cpp
parentdd66fbb96a2e1f85e7dacdce18ebc5f85d26d0cc (diff)
downloadzig-fae6cf09619e7a8e64f61b84cca7d9fcd471262f.tar.gz
zig-fae6cf09619e7a8e64f61b84cca7d9fcd471262f.zip
improved handling of native system directories
* `-isystem` instead of `-I` for system include directories fixes a problem with native system directories interfering with zig's bundled libc. * separate Stage2Target.is_native into Stage2Target.is_native_os and Stage2Target.is_native_cpu.
Diffstat (limited to 'src/main.cpp')
-rw-r--r--src/main.cpp12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/main.cpp b/src/main.cpp
index dd7cdead6c..a543b43579 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -1325,7 +1325,15 @@ static int main0(int argc, char **argv) {
return print_error_usage(arg0);
}
- if (target.is_native && link_libs.length != 0) {
+ bool any_non_c_link_libs = false;
+ for (size_t i = 0; i < link_libs.length; i += 1) {
+ if (!target_is_libc_lib_name(&target, link_libs.at(i))) {
+ any_non_c_link_libs = true;
+ break;
+ }
+ }
+
+ if (target.is_native_os && any_non_c_link_libs) {
Error err;
Stage2NativePaths paths;
if ((err = stage2_detect_native_paths(&paths))) {
@@ -1338,7 +1346,7 @@ static int main0(int argc, char **argv) {
}
for (size_t i = 0; i < paths.include_dirs_len; i += 1) {
const char *include_dir = paths.include_dirs_ptr[i];
- clang_argv.append("-I");
+ clang_argv.append("-isystem");
clang_argv.append(include_dir);
}
for (size_t i = 0; i < paths.lib_dirs_len; i += 1) {