88 lines · plain
1include(GNUInstallDirs)2include(LLVMDistributionSupport)3 4macro(add_lld_library name)5 cmake_parse_arguments(ARG6 "SHARED"7 ""8 ""9 ${ARGN})10 if(ARG_SHARED)11 set(ARG_ENABLE_SHARED SHARED)12 endif()13 llvm_add_library(${name} ${ARG_ENABLE_SHARED} ${ARG_UNPARSED_ARGUMENTS})14 15 if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)16 get_target_export_arg(${name} LLD export_to_lldtargets UMBRELLA lld-libraries)17 install(TARGETS ${name}18 COMPONENT ${name}19 ${export_to_lldtargets}20 LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}21 ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}22 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}")23 24 if (NOT CMAKE_CONFIGURATION_TYPES)25 add_llvm_install_targets(install-${name}26 DEPENDS ${name}27 COMPONENT ${name})28 endif()29 set_property(GLOBAL APPEND PROPERTY LLD_ALL_LIBS ${name})30 set_property(GLOBAL APPEND PROPERTY LLD_EXPORTS ${name})31 endif()32endmacro(add_lld_library)33 34macro(add_lld_executable name)35 add_llvm_executable(${name} ${ARGN})36endmacro(add_lld_executable)37 38macro(add_lld_tool name)39 cmake_parse_arguments(ARG "DEPENDS;GENERATE_DRIVER" "" "" ${ARGN})40 if (NOT LLD_BUILD_TOOLS)41 set(EXCLUDE_FROM_ALL ON)42 endif()43 if(ARG_GENERATE_DRIVER44 AND LLVM_TOOL_LLVM_DRIVER_BUILD45 AND (NOT LLVM_DISTRIBUTION_COMPONENTS OR ${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS)46 )47 set(get_obj_args ${ARGN})48 list(FILTER get_obj_args EXCLUDE REGEX "^SUPPORT_PLUGINS$")49 generate_llvm_objects(${name} ${get_obj_args})50 add_custom_target(${name} DEPENDS llvm-driver)51 else()52 add_lld_executable(${name} ${ARGN})53 54 if (LLD_BUILD_TOOLS)55 get_target_export_arg(${name} LLD export_to_lldtargets)56 install(TARGETS ${name}57 ${export_to_lldtargets}58 RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}"59 COMPONENT ${name})60 61 if (LLVM_ENABLE_PDB)62 install(FILES $<TARGET_PDB_FILE:${name}> DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT ${name} OPTIONAL)63 endif()64 65 if(NOT CMAKE_CONFIGURATION_TYPES)66 add_llvm_install_targets(install-${name}67 DEPENDS ${name}68 COMPONENT ${name})69 endif()70 set_property(GLOBAL APPEND PROPERTY LLD_EXPORTS ${name})71 endif()72 endif()73endmacro()74 75macro(add_lld_symlink name dest)76 get_property(LLVM_DRIVER_TOOLS GLOBAL PROPERTY LLVM_DRIVER_TOOLS)77 if(LLVM_TOOL_LLVM_DRIVER_BUILD78 AND ${dest} IN_LIST LLVM_DRIVER_TOOLS79 AND (NOT LLVM_DISTRIBUTION_COMPONENTS OR ${dest} IN_LIST LLVM_DISTRIBUTION_COMPONENTS)80 )81 set_property(GLOBAL APPEND PROPERTY LLVM_DRIVER_TOOL_ALIASES_${dest} ${name})82 else()83 llvm_add_tool_symlink(LLD ${name} ${dest} ALWAYS_GENERATE)84 # Always generate install targets85 llvm_install_symlink(LLD ${name} ${dest} ALWAYS_GENERATE)86 endif()87endmacro()88