| include(GNUInstallDirs) |
| include(LLVMDistributionSupport) |
| |
| macro(add_lld_library name) |
| cmake_parse_arguments(ARG |
| "SHARED" |
| "" |
| "" |
| ${ARGN}) |
| if(ARG_SHARED) |
| set(ARG_ENABLE_SHARED SHARED) |
| endif() |
| llvm_add_library(${name} ${ARG_ENABLE_SHARED} ${ARG_UNPARSED_ARGUMENTS}) |
| |
| if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY) |
| get_target_export_arg(${name} LLD export_to_lldtargets) |
| install(TARGETS ${name} |
| COMPONENT ${name} |
| ${export_to_lldtargets} |
| LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX} |
| ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX} |
| RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}") |
| |
| if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES) |
| add_llvm_install_targets(install-${name} |
| DEPENDS ${name} |
| COMPONENT ${name}) |
| endif() |
| set_property(GLOBAL APPEND PROPERTY LLD_EXPORTS ${name}) |
| endif() |
| endmacro(add_lld_library) |
| |
| macro(add_lld_executable name) |
| add_llvm_executable(${name} ${ARGN}) |
| 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}) |
| |
| 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() |
| endif() |
| endmacro() |
| |
| macro(add_lld_symlink name dest) |
| 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() |