diff options
Diffstat (limited to 'lld/cmake')
-rw-r--r-- | lld/cmake/modules/AddLLD.cmake | 50 |
1 files changed, 34 insertions, 16 deletions
diff --git a/lld/cmake/modules/AddLLD.cmake b/lld/cmake/modules/AddLLD.cmake index d3924f7..2ee066b 100644 --- a/lld/cmake/modules/AddLLD.cmake +++ b/lld/cmake/modules/AddLLD.cmake @@ -37,30 +37,48 @@ macro(add_lld_executable name) endmacro(add_lld_executable) macro(add_lld_tool name) + cmake_parse_arguments(ARG "DEPENDS;GENERATE_DRIVER" "" "" ${ARGN}) if (NOT LLD_BUILD_TOOLS) set(EXCLUDE_FROM_ALL ON) endif() + if(ARG_GENERATE_DRIVER + AND LLVM_TOOL_LLVM_DRIVER_BUILD + AND (NOT LLVM_DISTRIBUTION_COMPONENTS OR ${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS) + ) + set(get_obj_args ${ARGN}) + list(FILTER get_obj_args EXCLUDE REGEX "^SUPPORT_PLUGINS$") + generate_llvm_objects(${name} ${get_obj_args}) + add_custom_target(${name} DEPENDS llvm-driver) + else() + add_lld_executable(${name} ${ARGN}) - add_lld_executable(${name} ${ARGN}) - - if (LLD_BUILD_TOOLS) - get_target_export_arg(${name} LLD export_to_lldtargets) - install(TARGETS ${name} - ${export_to_lldtargets} - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" - COMPONENT ${name}) - - if(NOT CMAKE_CONFIGURATION_TYPES) - add_llvm_install_targets(install-${name} - DEPENDS ${name} + if (LLD_BUILD_TOOLS) + get_target_export_arg(${name} LLD export_to_lldtargets) + install(TARGETS ${name} + ${export_to_lldtargets} + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT ${name}) + + if(NOT CMAKE_CONFIGURATION_TYPES) + add_llvm_install_targets(install-${name} + DEPENDS ${name} + COMPONENT ${name}) + endif() + set_property(GLOBAL APPEND PROPERTY LLD_EXPORTS ${name}) endif() - set_property(GLOBAL APPEND PROPERTY LLD_EXPORTS ${name}) endif() endmacro() macro(add_lld_symlink name dest) - llvm_add_tool_symlink(LLD ${name} ${dest} ALWAYS_GENERATE) - # Always generate install targets - llvm_install_symlink(LLD ${name} ${dest} ALWAYS_GENERATE) + get_property(LLVM_DRIVER_TOOLS GLOBAL PROPERTY LLVM_DRIVER_TOOLS) + if(LLVM_TOOL_LLVM_DRIVER_BUILD + AND ${dest} IN_LIST LLVM_DRIVER_TOOLS + AND (NOT LLVM_DISTRIBUTION_COMPONENTS OR ${dest} IN_LIST LLVM_DISTRIBUTION_COMPONENTS) + ) + set_property(GLOBAL APPEND PROPERTY LLVM_DRIVER_TOOL_ALIASES_${dest} ${name}) + else() + llvm_add_tool_symlink(LLD ${name} ${dest} ALWAYS_GENERATE) + # Always generate install targets + llvm_install_symlink(LLD ${name} ${dest} ALWAYS_GENERATE) + endif() endmacro() |