1include(LLVMDistributionSupport)
2
3macro(add_lld_library name)
4  cmake_parse_arguments(ARG
5    "SHARED"
6    ""
7    ""
8    ${ARGN})
9  if(ARG_SHARED)
10    set(ARG_ENABLE_SHARED SHARED)
11  endif()
12  llvm_add_library(${name} ${ARG_ENABLE_SHARED} ${ARG_UNPARSED_ARGUMENTS})
13  set_target_properties(${name} PROPERTIES FOLDER "lld libraries")
14
15  if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
16    get_target_export_arg(${name} LLD export_to_lldtargets)
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 bin)
23
24    if (${ARG_SHARED} AND 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_EXPORTS ${name})
30  endif()
31endmacro(add_lld_library)
32
33macro(add_lld_executable name)
34  add_llvm_executable(${name} ${ARGN})
35  set_target_properties(${name} PROPERTIES FOLDER "lld executables")
36endmacro(add_lld_executable)
37
38macro(add_lld_tool name)
39  if (NOT LLD_BUILD_TOOLS)
40    set(EXCLUDE_FROM_ALL ON)
41  endif()
42
43  add_lld_executable(${name} ${ARGN})
44
45  if (LLD_BUILD_TOOLS)
46    get_target_export_arg(${name} LLD export_to_lldtargets)
47    install(TARGETS ${name}
48      ${export_to_lldtargets}
49      RUNTIME DESTINATION bin
50      COMPONENT ${name})
51
52    if(NOT CMAKE_CONFIGURATION_TYPES)
53      add_llvm_install_targets(install-${name}
54        DEPENDS ${name}
55        COMPONENT ${name})
56    endif()
57    set_property(GLOBAL APPEND PROPERTY LLD_EXPORTS ${name})
58  endif()
59endmacro()
60
61macro(add_lld_symlink name dest)
62  add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE)
63  # Always generate install targets
64  llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE)
65endmacro()
66