[PATCH] D37530: [MinGW] Don't link -lmsvcrt if a different msvcrt version is to be linked
This revision was automatically updated to reflect the committed changes. Closed by commit rL314138: [MinGW] Don't link -lmsvcrt if a different msvcrt version is to be linked (authored by mstorsjo). Changed prior to commit: https://reviews.llvm.org/D37530?vs=114429&id=116587#toc Repository: rL LLVM https://reviews.llvm.org/D37530 Files: cfe/trunk/lib/Driver/ToolChains/MinGW.cpp cfe/trunk/test/Driver/mingw-msvcrt.c Index: cfe/trunk/lib/Driver/ToolChains/MinGW.cpp === --- cfe/trunk/lib/Driver/ToolChains/MinGW.cpp +++ cfe/trunk/lib/Driver/ToolChains/MinGW.cpp @@ -82,6 +82,9 @@ CmdArgs.push_back("-lmoldname"); CmdArgs.push_back("-lmingwex"); + for (auto Lib : Args.getAllArgValues(options::OPT_l)) +if (StringRef(Lib).startswith("msvcr") || Lib == "ucrtbase") + return; CmdArgs.push_back("-lmsvcrt"); } Index: cfe/trunk/test/Driver/mingw-msvcrt.c === --- cfe/trunk/test/Driver/mingw-msvcrt.c +++ cfe/trunk/test/Driver/mingw-msvcrt.c @@ -0,0 +1,5 @@ +// RUN: %clang -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_DEFAULT %s +// RUN: %clang -v -target i686-pc-windows-gnu -lmsvcr120 -### %s 2>&1 | FileCheck -check-prefix=CHECK_MSVCR120 %s + +// CHECK_DEFAULT: "-lmingwex" "-lmsvcrt" "-ladvapi32" +// CHECK_MSVCR120: "-lmingwex" "-ladvapi32" Index: cfe/trunk/lib/Driver/ToolChains/MinGW.cpp === --- cfe/trunk/lib/Driver/ToolChains/MinGW.cpp +++ cfe/trunk/lib/Driver/ToolChains/MinGW.cpp @@ -82,6 +82,9 @@ CmdArgs.push_back("-lmoldname"); CmdArgs.push_back("-lmingwex"); + for (auto Lib : Args.getAllArgValues(options::OPT_l)) +if (StringRef(Lib).startswith("msvcr") || Lib == "ucrtbase") + return; CmdArgs.push_back("-lmsvcrt"); } Index: cfe/trunk/test/Driver/mingw-msvcrt.c === --- cfe/trunk/test/Driver/mingw-msvcrt.c +++ cfe/trunk/test/Driver/mingw-msvcrt.c @@ -0,0 +1,5 @@ +// RUN: %clang -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_DEFAULT %s +// RUN: %clang -v -target i686-pc-windows-gnu -lmsvcr120 -### %s 2>&1 | FileCheck -check-prefix=CHECK_MSVCR120 %s + +// CHECK_DEFAULT: "-lmingwex" "-lmsvcrt" "-ladvapi32" +// CHECK_MSVCR120: "-lmingwex" "-ladvapi32" ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D37530: [MinGW] Don't link -lmsvcrt if a different msvcrt version is to be linked
martell accepted this revision. martell added a comment. LGMT https://reviews.llvm.org/D37530 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D37530: [MinGW] Don't link -lmsvcrt if a different msvcrt version is to be linked
rnk added a comment. In https://reviews.llvm.org/D37530#865333, @mstorsjo wrote: > Attempted implementing Reid's suggestion. > > On the mingw-w64 mailing list > (https://sourceforge.net/p/mingw-w64/mailman/message/36030072/), there were > points made that it would be better with some mechanism that controls both > linking the right msvcrt version and setting `__MSVCRT_VERSION__` in sync. > > And someone pointed out some widely used (but not upstreamed) patches for GCC > that adds an option `-mcrtdll` which does pretty much exactly what my > `-mmsvcrt` option did in the previous iteration > (https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-gcc-git/0006-gcc-7-branch-Windows-New-feature-to-allow-overriding.patch), > which in another non-upstreamed patch also is used to set > `__MSVCRT_VERSION__` > (https://raw.githubusercontent.com/nak5124/build_env/master/gcc_build/patches/gcc/0020-MinGW-w64-Define-__MSVCRT_VERSION__.patch). Hm, these are interesting. Getting a separate concept of CRT version would be nice. We've talked about getting something like that for glibc as well, since there were some new math builtins we'd like to use there. https://reviews.llvm.org/D37530 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D37530: [MinGW] Don't link -lmsvcrt if a different msvcrt version is to be linked
rnk accepted this revision. rnk added a comment. This revision is now accepted and ready to land. lgtm https://reviews.llvm.org/D37530 ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
[PATCH] D37530: [MinGW] Don't link -lmsvcrt if a different msvcrt version is to be linked
mstorsjo updated this revision to Diff 114429. mstorsjo retitled this revision from "[MinGW] Allow overriding which version of msvcrt to link to" to "[MinGW] Don't link -lmsvcrt if a different msvcrt version is to be linked". mstorsjo edited the summary of this revision. mstorsjo added a comment. Attempted implementing Reid's suggestion. On the mingw-w64 mailing list (https://sourceforge.net/p/mingw-w64/mailman/message/36030072/), there were points made that it would be better with some mechanism that controls both linking the right msvcrt version and setting `__MSVCRT_VERSION__` in sync. And someone pointed out some widely used (but not upstreamed) patches for GCC that adds an option `-mcrtdll` which does pretty much exactly what my `-mmsvcrt` option did in the previous iteration (https://raw.githubusercontent.com/Alexpux/MINGW-packages/master/mingw-w64-gcc-git/0006-gcc-7-branch-Windows-New-feature-to-allow-overriding.patch), which in another non-upstreamed patch also is used to set `__MSVCRT_VERSION__` (https://raw.githubusercontent.com/nak5124/build_env/master/gcc_build/patches/gcc/0020-MinGW-w64-Define-__MSVCRT_VERSION__.patch). https://reviews.llvm.org/D37530 Files: lib/Driver/ToolChains/MinGW.cpp test/Driver/mingw-msvcrt.c Index: test/Driver/mingw-msvcrt.c === --- /dev/null +++ test/Driver/mingw-msvcrt.c @@ -0,0 +1,5 @@ +// RUN: %clang -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_DEFAULT %s +// RUN: %clang -v -target i686-pc-windows-gnu -lmsvcr120 -### %s 2>&1 | FileCheck -check-prefix=CHECK_MSVCR120 %s + +// CHECK_DEFAULT: "-lmingwex" "-lmsvcrt" "-ladvapi32" +// CHECK_MSVCR120: "-lmingwex" "-ladvapi32" Index: lib/Driver/ToolChains/MinGW.cpp === --- lib/Driver/ToolChains/MinGW.cpp +++ lib/Driver/ToolChains/MinGW.cpp @@ -82,6 +82,9 @@ CmdArgs.push_back("-lmoldname"); CmdArgs.push_back("-lmingwex"); + for (auto Lib : Args.getAllArgValues(options::OPT_l)) +if (StringRef(Lib).startswith("msvcr") || Lib == "ucrtbase") + return; CmdArgs.push_back("-lmsvcrt"); } Index: test/Driver/mingw-msvcrt.c === --- /dev/null +++ test/Driver/mingw-msvcrt.c @@ -0,0 +1,5 @@ +// RUN: %clang -v -target i686-pc-windows-gnu -### %s 2>&1 | FileCheck -check-prefix=CHECK_DEFAULT %s +// RUN: %clang -v -target i686-pc-windows-gnu -lmsvcr120 -### %s 2>&1 | FileCheck -check-prefix=CHECK_MSVCR120 %s + +// CHECK_DEFAULT: "-lmingwex" "-lmsvcrt" "-ladvapi32" +// CHECK_MSVCR120: "-lmingwex" "-ladvapi32" Index: lib/Driver/ToolChains/MinGW.cpp === --- lib/Driver/ToolChains/MinGW.cpp +++ lib/Driver/ToolChains/MinGW.cpp @@ -82,6 +82,9 @@ CmdArgs.push_back("-lmoldname"); CmdArgs.push_back("-lmingwex"); + for (auto Lib : Args.getAllArgValues(options::OPT_l)) +if (StringRef(Lib).startswith("msvcr") || Lib == "ucrtbase") + return; CmdArgs.push_back("-lmsvcrt"); } ___ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits