60 lines
1.9 KiB
Diff
60 lines
1.9 KiB
Diff
From 61e0b2b4c5fbbea01bb40f28ea0222b87166ccdf Mon Sep 17 00:00:00 2001
|
|
From: =?UTF-8?q?Mateusz=20Miku=C5=82a?= <mati865@gmail.com>
|
|
Date: Tue, 15 Sep 2020 08:39:15 +0300
|
|
Subject: [PATCH] [LLD] Allow configuring default ld.lld backend
|
|
|
|
The motivation for this is ld.lld --help targeting MinGW which
|
|
currently prints help for the ELF backend unless -m i386pe{,p} is
|
|
added. This confuses build systems that grep through linker help to
|
|
find supported flags.
|
|
|
|
This matches LD from Binutils which always prints help for MinGW
|
|
when configured to target it.
|
|
|
|
After this change, the backend can still be overridden to any
|
|
supported ELF/MinGW target by using correct -m <arch>.
|
|
|
|
Differential Revision: https://reviews.llvm.org/D87418
|
|
---
|
|
CMakeLists.txt | 6 ++++++
|
|
tools/lld.cpp | 5 +++++
|
|
2 files changed, 11 insertions(+)
|
|
|
|
diff --git a/CMakeLists.txt b/CMakeLists.txt
|
|
index 34a7a68da42..8b8c7178c61 100644
|
|
--- a/CMakeLists.txt
|
|
+++ b/CMakeLists.txt
|
|
@@ -174,6 +174,12 @@ endif()
|
|
option(LLD_BUILD_TOOLS
|
|
"Build the lld tools. If OFF, just generate build targets." ON)
|
|
|
|
+option(LLD_DEFAULT_LD_LLD_IS_MINGW
|
|
+ "Use MinGW as the default backend for ld.lld. If OFF, ELF will be used." OFF)
|
|
+if (LLD_DEFAULT_LD_LLD_IS_MINGW)
|
|
+ add_definitions("-DLLD_DEFAULT_LD_LLD_IS_MINGW=1")
|
|
+endif()
|
|
+
|
|
if (MSVC)
|
|
add_definitions(-wd4530) # Suppress 'warning C4530: C++ exception handler used, but unwind semantics are not enabled.'
|
|
add_definitions(-wd4062) # Suppress 'warning C4062: enumerator X in switch of enum Y is not handled' from system header.
|
|
diff --git a/tools/lld/lld.cpp b/tools/lld/lld.cpp
|
|
index 8a8f8d04bbd..d4e2fbb0309 100644
|
|
--- a/tools/lld/lld.cpp
|
|
+++ b/tools/lld/lld.cpp
|
|
@@ -92,7 +92,12 @@ static bool isPETarget(std::vector<const char *> &v) {
|
|
continue;
|
|
return isPETargetName(*(it + 1));
|
|
}
|
|
+
|
|
+#ifdef LLD_DEFAULT_LD_LLD_IS_MINGW
|
|
+ return true;
|
|
+#else
|
|
return false;
|
|
+#endif
|
|
}
|
|
|
|
static Flavor parseProgname(StringRef progname) {
|
|
--
|
|
2.29.0.rc1.windows.1
|
|
|