]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - cmake/modules/AddLLD.cmake
Vendor import of lld trunk r338150:
[FreeBSD/FreeBSD.git] / cmake / modules / AddLLD.cmake
1 macro(add_lld_library name)
2   cmake_parse_arguments(ARG
3     "SHARED"
4     ""
5     ""
6     ${ARGN})
7   if(ARG_SHARED)
8     set(ARG_ENABLE_SHARED SHARED)
9   endif()
10   llvm_add_library(${name} ${ARG_ENABLE_SHARED} ${ARG_UNPARSED_ARGUMENTS})
11   set_target_properties(${name} PROPERTIES FOLDER "lld libraries")
12
13   if (NOT LLVM_INSTALL_TOOLCHAIN_ONLY)
14     if(${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
15         NOT LLVM_DISTRIBUTION_COMPONENTS)
16       set(export_to_lldtargets EXPORT lldTargets)
17       set_property(GLOBAL PROPERTY LLD_HAS_EXPORTS True)
18     endif()
19
20     install(TARGETS ${name}
21       COMPONENT ${name}
22       ${export_to_lldtargets}
23       LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
24       ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
25       RUNTIME DESTINATION bin)
26
27     if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES)
28       add_llvm_install_targets(install-${name}
29         DEPENDS ${name}
30         COMPONENT ${name})
31     endif()
32     set_property(GLOBAL APPEND PROPERTY LLD_EXPORTS ${name})
33   endif()
34 endmacro(add_lld_library)
35
36 macro(add_lld_executable name)
37   add_llvm_executable(${name} ${ARGN})
38   set_target_properties(${name} PROPERTIES FOLDER "lld executables")
39 endmacro(add_lld_executable)
40
41 macro(add_lld_tool name)
42   if (NOT LLD_BUILD_TOOLS)
43     set(EXCLUDE_FROM_ALL ON)
44   endif()
45
46   add_lld_executable(${name} ${ARGN})
47
48   if (LLD_BUILD_TOOLS)
49     if(${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
50         NOT LLVM_DISTRIBUTION_COMPONENTS)
51       set(export_to_lldtargets EXPORT lldTargets)
52       set_property(GLOBAL PROPERTY LLD_HAS_EXPORTS True)
53     endif()
54
55     install(TARGETS ${name}
56       ${export_to_lldtargets}
57       RUNTIME DESTINATION bin
58       COMPONENT ${name})
59
60     if(NOT CMAKE_CONFIGURATION_TYPES)
61       add_llvm_install_targets(install-${name}
62         DEPENDS ${name}
63         COMPONENT ${name})
64     endif()
65     set_property(GLOBAL APPEND PROPERTY LLD_EXPORTS ${name})
66   endif()
67 endmacro()
68
69 macro(add_lld_symlink name dest)
70   add_llvm_tool_symlink(${name} ${dest} ALWAYS_GENERATE)
71   # Always generate install targets
72   llvm_install_symlink(${name} ${dest} ALWAYS_GENERATE)
73 endmacro()