brintos

brintos / llvm-project-archived public Read only

0
0
Text · 2.7 KiB · 37f73af Raw
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