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)
endif()
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)
endif()
unset(CMAKE_REQUIRED_FLAGS)
unset(CMAKE_REQUIRED_INCLUDES)
else()
@ -544,12 +548,20 @@ add_custom_target(${LDMD_EXE} ALL DEPENDS ${LDMD_EXE_FULL})
# LLVM flags into account.
set(LDC_LINKERFLAG_LIST "${SANITIZE_LDFLAGS};${LLVM_LIBRARIES};${LLVM_LDFLAGS}")
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)
list(APPEND LDC_LINKERFLAG_LIST lldCOFF.lib lldCore.lib lldDriver.lib)
else()
set(LDC_LINKERFLAG_LIST "-llldCOFF;-llldCore;-llldDriver;${LDC_LINKERFLAG_LIST}")
endif()
endif()
endif()
# Plugin support
if(UNIX)

View file

@ -18,8 +18,12 @@
#include "llvm/Support/FileSystem.h"
#if LDC_WITH_LLD
#if LDC_LLVM_VER >= 600
#include "lld/Common/Driver.h"
#else
#include "lld/Driver/Driver.h"
#endif
#endif
//////////////////////////////////////////////////////////////////////////////
@ -194,7 +198,11 @@ int linkObjToBinaryMSVC(llvm::StringRef outputPath, bool useInternalLinker,
const auto fullArgs =
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);
#endif
if (!success)
error(Loc(), "linking with LLD failed");