authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-04-12 00:50:16-04:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-04-12 00:50:16-04:00
logd27ef1aaef8ac12801ba4e6c2ed748c7151096a7
tree5f2a20f01987e297bbe973e5fe3d01493ae97f78
parentf79faf9008c8e4c5539780e712012c55ab1b3cfc

Zig treats -lstdc++ identically to -lc++

Thanks to Michael Dusan for figuring out what was happening here. closes #5012

2 files changed, 24 insertions(+), 9 deletions(-)

src/codegen.cpp+1
...@@ -9252,6 +9252,7 @@ void add_cc_args(CodeGen *g, ZigList<const char *> &args, const char *out_dep_pa...@@ -9252,6 +9252,7 @@ void add_cc_args(CodeGen *g, ZigList<const char *> &args, const char *out_dep_pa
9252 }9252 }
92539253
9254 args.append("-nostdinc");9254 args.append("-nostdinc");
9255 args.append("-nostdinc++");
9255 args.append("-fno-spell-checking");9256 args.append("-fno-spell-checking");
92569257
9257 if (g->function_sections) {9258 if (g->function_sections) {
src/main.cpp+23-9
...@@ -632,11 +632,17 @@ static int main0(int argc, char **argv) {...@@ -632,11 +632,17 @@ static int main0(int argc, char **argv) {
632 break;632 break;
633 }633 }
634 case Stage2ClangArgL: // -l634 case Stage2ClangArgL: // -l
635 if (strcmp(it.only_arg, "c") == 0)635 if (strcmp(it.only_arg, "c") == 0) {
636 have_libc = true;636 have_libc = true;
637 if (strcmp(it.only_arg, "c++") == 0)637 link_libs.append("c");
638 } else if (strcmp(it.only_arg, "c++") == 0 ||
639 strcmp(it.only_arg, "stdc++") == 0)
640 {
638 have_libcpp = true;641 have_libcpp = true;
639 link_libs.append(it.only_arg);642 link_libs.append("c++");
643 } else {
644 link_libs.append(it.only_arg);
645 }
640 break;646 break;
641 case Stage2ClangArgIgnore:647 case Stage2ClangArgIgnore:
642 break;648 break;
...@@ -1016,11 +1022,15 @@ static int main0(int argc, char **argv) {...@@ -1016,11 +1022,15 @@ static int main0(int argc, char **argv) {
1016 } else if (arg[1] == 'l' && arg[2] != 0) {1022 } else if (arg[1] == 'l' && arg[2] != 0) {
1017 // alias for --library1023 // alias for --library
1018 const char *l = &arg[2];1024 const char *l = &arg[2];
1019 if (strcmp(l, "c") == 0)1025 if (strcmp(l, "c") == 0) {
1020 have_libc = true;1026 have_libc = true;
1021 if (strcmp(l, "c++") == 0)1027 link_libs.append("c");
1028 } else if (strcmp(l, "c++") == 0 || strcmp(l, "stdc++") == 0) {
1022 have_libcpp = true;1029 have_libcpp = true;
1023 link_libs.append(l);1030 link_libs.append("c++");
1031 } else {
1032 link_libs.append(l);
1033 }
1024 } else if (arg[1] == 'I' && arg[2] != 0) {1034 } else if (arg[1] == 'I' && arg[2] != 0) {
1025 clang_argv.append("-I");1035 clang_argv.append("-I");
1026 clang_argv.append(&arg[2]);1036 clang_argv.append(&arg[2]);
...@@ -1159,11 +1169,15 @@ static int main0(int argc, char **argv) {...@@ -1159,11 +1169,15 @@ static int main0(int argc, char **argv) {
1159 } else if (strcmp(arg, "-F") == 0) {1169 } else if (strcmp(arg, "-F") == 0) {
1160 framework_dirs.append(argv[i]);1170 framework_dirs.append(argv[i]);
1161 } else if (strcmp(arg, "--library") == 0 || strcmp(arg, "-l") == 0) {1171 } else if (strcmp(arg, "--library") == 0 || strcmp(arg, "-l") == 0) {
1162 if (strcmp(argv[i], "c") == 0)1172 if (strcmp(argv[i], "c") == 0) {
1163 have_libc = true;1173 have_libc = true;
1164 if (strcmp(argv[i], "c++") == 0)1174 link_libs.append("c");
1175 } else if (strcmp(argv[i], "c++") == 0 || strcmp(argv[i], "stdc++") == 0) {
1165 have_libcpp = true;1176 have_libcpp = true;
1166 link_libs.append(argv[i]);1177 link_libs.append("c++");
1178 } else {
1179 link_libs.append(argv[i]);
1180 }
1167 } else if (strcmp(arg, "--forbid-library") == 0) {1181 } else if (strcmp(arg, "--forbid-library") == 0) {
1168 forbidden_link_libs.append(argv[i]);1182 forbidden_link_libs.append(argv[i]);
1169 } else if (strcmp(arg, "--object") == 0) {1183 } else if (strcmp(arg, "--object") == 0) {