diff --git a/llvm/runtimes/CMakeLists.txt b/llvm/runtimes/CMakeLists.txt --- a/llvm/runtimes/CMakeLists.txt +++ b/llvm/runtimes/CMakeLists.txt @@ -555,6 +555,41 @@ add_dependencies(install-runtimes-stripped install-runtimes-${name}+${multilib}-stripped) endforeach() endforeach() + + string(REGEX MATCH "[0-9]+\\.[0-9]+(\\.[0-9]+)?" CLANG_VERSION + ${PACKAGE_VERSION}) + + foreach(name ${LLVM_RUNTIME_TARGETS}) + foreach(symlink ${LLVM_RUNTIME_TARGET_${name}_SYMLINK}) + if(CMAKE_HOST_UNIX) + set(LLVM_LINK_OR_COPY create_symlink) + else() + set(LLVM_LINK_OR_COPY copy) + endif() + set(dst_path ${LLVM_LIBRARY_OUTPUT_INTDIR}/clang/${CLANG_VERSION}/${symlink}) + add_custom_command(TARGET runtimes-${name} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E ${LLVM_LINK_OR_COPY} "${name}" "${dst_path}") + + foreach(path ${CMAKE_MODULE_PATH}) + if(EXISTS ${path}/LLVMInstallSymlink.cmake) + set(INSTALL_SYMLINK ${path}/LLVMInstallSymlink.cmake) + break() + endif() + endforeach() + + install(SCRIPT ${INSTALL_SYMLINK} + CODE "install_symlink(${symlink} ${name} lib${LLVM_LIBDIR_SUFFIX}/clang/${CLANG_VERSION})" + COMPONENT ${symlink}) + + add_custom_target(install-runtimes-${symlink} + DEPENDS install-runtimes-${name} + COMMAND "${CMAKE_COMMAND}" + -DCMAKE_INSTALL_COMPONENT="${symlink}" + -P "${CMAKE_BINARY_DIR}/cmake_install.cmake" + USES_TERMINAL) + add_dependencies(install-runtimes install-runtimes-${symlink}) + endforeach() + endforeach() endif() if(NOT LLVM_BUILD_INSTRUMENTED AND CLANG_ENABLE_BOOTSTRAP)