[PATCH] D37530: [MinGW] Don't link -lmsvcrt if a different msvcrt version is to be linked

2017-09-25 Thread Martin Storsjö via Phabricator via cfe-commits
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=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

2017-09-11 Thread Martell Malone via Phabricator via cfe-commits
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

2017-09-11 Thread Reid Kleckner via Phabricator via cfe-commits
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

2017-09-11 Thread Reid Kleckner via Phabricator via cfe-commits
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

2017-09-08 Thread Martin Storsjö via Phabricator via cfe-commits
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