Index: CMakeLists.txt =================================================================== --- CMakeLists.txt +++ CMakeLists.txt @@ -106,6 +106,8 @@ list (APPEND CMAKE_MODULE_PATH "${LLD_SOURCE_DIR}/cmake/modules") +include(AddLLD) + option(LLD_USE_VTUNE "Enable VTune user task tracking." OFF) @@ -118,6 +120,8 @@ endif() endif() +option(LLD_BUILD_TOOLS + "Build the lld tools. If OFF, just generate build targets." ON) if (MSVC) add_definitions(-wd4530) # Suppress 'warning C4530: C++ exception handler used, but unwind semantics are not enabled.' @@ -138,12 +142,6 @@ ) endif() -macro(add_lld_library name) - add_llvm_library(${name} ${ARGN}) - set_target_properties(${name} PROPERTIES FOLDER "lld libraries") -endmacro(add_lld_library) - - add_subdirectory(lib) add_subdirectory(tools/lld) Index: cmake/modules/AddLLD.cmake =================================================================== --- /dev/null +++ cmake/modules/AddLLD.cmake @@ -0,0 +1,45 @@ +macro(add_lld_library name) + add_llvm_library(${name} ${ARGN}) + set_target_properties(${name} PROPERTIES FOLDER "lld libraries") +endmacro(add_lld_library) + +macro(add_lld_executable name) + add_llvm_executable(${name} ${ARGN}) + set_target_properties(${name} PROPERTIES FOLDER "lld executables") +endmacro(add_lld_executable) + +macro(add_lld_tool name) + if (NOT LLD_BUILD_TOOLS) + set(EXCLUDE_FROM_ALL ON) + endif() + + add_lld_executable(${name} ${ARGN}) + + if (LLD_BUILD_TOOLS) + if(${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR + NOT LLVM_DISTRIBUTION_COMPONENTS) + set(export_to_lldtargets EXPORT lldTargets) + set_property(GLOBAL PROPERTY LLD_HAS_EXPORTS True) + endif() + + install(TARGETS ${name} + ${export_to_lldtargets} + RUNTIME DESTINATION bin + COMPONENT ${name}) + + if(NOT CMAKE_CONFIGURATION_TYPES) + add_custom_target(install-${name} + DEPENDS ${name} + COMMAND "${CMAKE_COMMAND}" + -DCMAKE_INSTALL_COMPONENT=${name} + -P "${CMAKE_BINARY_DIR}/cmake_install.cmake") + endif() + set_property(GLOBAL APPEND PROPERTY LLD_EXPORTS ${name}) + endif() +endmacro() + +macro(add_lld_symlink name dest) + add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE) + # Always generate install targets + llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE) +endmacro() Index: tools/lld/CMakeLists.txt =================================================================== --- tools/lld/CMakeLists.txt +++ tools/lld/CMakeLists.txt @@ -1,4 +1,4 @@ -add_llvm_executable(lld +add_lld_tool(lld lld.cpp ) @@ -17,8 +17,5 @@ endif() foreach(link ${LLD_SYMLINKS_TO_CREATE}) - add_llvm_tool_symlink(${link} lld ALWAYS_GENERATE) - # Always generate install targets - llvm_install_symlink(${link} lld ALWAYS_GENERATE) + add_lld_symlink(${link} lld) endforeach() -