summaryrefslogtreecommitdiff
path: root/gnu/llvm/tools/lld/cmake/modules/AddLLD.cmake
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/llvm/tools/lld/cmake/modules/AddLLD.cmake')
-rw-r--r--gnu/llvm/tools/lld/cmake/modules/AddLLD.cmake34
1 files changed, 33 insertions, 1 deletions
diff --git a/gnu/llvm/tools/lld/cmake/modules/AddLLD.cmake b/gnu/llvm/tools/lld/cmake/modules/AddLLD.cmake
index 906b2952a94..fd1d44199ca 100644
--- a/gnu/llvm/tools/lld/cmake/modules/AddLLD.cmake
+++ b/gnu/llvm/tools/lld/cmake/modules/AddLLD.cmake
@@ -1,6 +1,38 @@
macro(add_lld_library name)
- llvm_add_library(${name} ${ARGN})
+ 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})
set_target_properties(${name} PROPERTIES FOLDER "lld libraries")
+
+ if (LLD_BUILD_TOOLS)
+ if(${name} IN_LIST LLVM_DISTRIBUTION_COMPONENTS OR
+ NOT LLVM_DISTRIBUTION_COMPONENTS)
+ set(export_to_lldtargets EXPORT lldTargets)
+ set_property(GLOBAL PROPERTY LLD_HAS_EXPORTS True)
+ endif()
+
+ install(TARGETS ${name}
+ COMPONENT ${name}
+ ${export_to_lldtargets}
+ LIBRARY DESTINATION lib${LLVM_LIBDIR_SUFFIX}
+ ARCHIVE DESTINATION lib${LLVM_LIBDIR_SUFFIX}
+ RUNTIME DESTINATION bin)
+
+ if (${ARG_SHARED} AND NOT CMAKE_CONFIGURATION_TYPES)
+ add_custom_target(install-${name}
+ DEPENDS ${name}
+ COMMAND "${CMAKE_COMMAND}"
+ -DCMAKE_INSTALL_COMPONENT=${name}
+ -P "${CMAKE_BINARY_DIR}/cmake_install.cmake")
+ endif()
+ set_property(GLOBAL APPEND PROPERTY LLD_EXPORTS ${name})
+ endif()
endmacro(add_lld_library)
macro(add_lld_executable name)