Add support for LLD 6.0.0

This commit is contained in:
Martin 2018-03-09 01:01:31 +01:00
parent 63034ae1ca
commit f5f17bee6f
2 changed files with 24 additions and 4 deletions

View file

@ -428,7 +428,11 @@ if(NOT DEFINED LDC_WITH_LLD)
set(CMAKE_REQUIRED_FLAGS -std=c++11) set(CMAKE_REQUIRED_FLAGS -std=c++11)
endif() endif()
set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIRS}) set(CMAKE_REQUIRED_INCLUDES ${LLVM_INCLUDE_DIRS})
if(NOT (LDC_LLVM_VER LESS 600))
CHECK_INCLUDE_FILE_CXX(lld/Common/Driver.h LDC_WITH_LLD)
else()
CHECK_INCLUDE_FILE_CXX(lld/Driver/Driver.h LDC_WITH_LLD) CHECK_INCLUDE_FILE_CXX(lld/Driver/Driver.h LDC_WITH_LLD)
endif()
unset(CMAKE_REQUIRED_FLAGS) unset(CMAKE_REQUIRED_FLAGS)
unset(CMAKE_REQUIRED_INCLUDES) unset(CMAKE_REQUIRED_INCLUDES)
else() else()
@ -544,12 +548,20 @@ add_custom_target(${LDMD_EXE} ALL DEPENDS ${LDMD_EXE_FULL})
# LLVM flags into account. # LLVM flags into account.
set(LDC_LINKERFLAG_LIST "${SANITIZE_LDFLAGS};${LLVM_LIBRARIES};${LLVM_LDFLAGS}") set(LDC_LINKERFLAG_LIST "${SANITIZE_LDFLAGS};${LLVM_LIBRARIES};${LLVM_LDFLAGS}")
if(LDC_WITH_LLD) if(LDC_WITH_LLD)
if(NOT (LDC_LLVM_VER LESS 600))
if(MSVC)
list(APPEND LDC_LINKERFLAG_LIST lldCOFF.lib lldCommon.lib lldCore.lib lldDriver.lib LLVMWindowsManifest.lib)
else()
set(LDC_LINKERFLAG_LIST "-llldCOFF;-llldCommon;-llldCore;-llldDriver;-lLLVMWindowsManifest;${LDC_LINKERFLAG_LIST}")
endif()
else()
if(MSVC) if(MSVC)
list(APPEND LDC_LINKERFLAG_LIST lldCOFF.lib lldCore.lib lldDriver.lib) list(APPEND LDC_LINKERFLAG_LIST lldCOFF.lib lldCore.lib lldDriver.lib)
else() else()
set(LDC_LINKERFLAG_LIST "-llldCOFF;-llldCore;-llldDriver;${LDC_LINKERFLAG_LIST}") set(LDC_LINKERFLAG_LIST "-llldCOFF;-llldCore;-llldDriver;${LDC_LINKERFLAG_LIST}")
endif() endif()
endif() endif()
endif()
# Plugin support # Plugin support
if(UNIX) if(UNIX)

View file

@ -18,8 +18,12 @@
#include "llvm/Support/FileSystem.h" #include "llvm/Support/FileSystem.h"
#if LDC_WITH_LLD #if LDC_WITH_LLD
#if LDC_LLVM_VER >= 600
#include "lld/Common/Driver.h"
#else
#include "lld/Driver/Driver.h" #include "lld/Driver/Driver.h"
#endif #endif
#endif
////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////
@ -194,7 +198,11 @@ int linkObjToBinaryMSVC(llvm::StringRef outputPath, bool useInternalLinker,
const auto fullArgs = const auto fullArgs =
getFullArgs("lld-link.exe", args, global.params.verbose); getFullArgs("lld-link.exe", args, global.params.verbose);
#if LDC_LLVM_VER >= 600
const bool success = lld::coff::link(fullArgs, /*CanExitEarly=*/false);
#else
const bool success = lld::coff::link(fullArgs); const bool success = lld::coff::link(fullArgs);
#endif
if (!success) if (!success)
error(Loc(), "linking with LLD failed"); error(Loc(), "linking with LLD failed");