[CMake] Explicity set up RPATH for the runtime libs on Win to ARM Linux cross builds.
authorVladimir Vereschaka <vvereschaka@accesssoftek.com>
Fri, 13 Nov 2020 22:21:27 +0000 (14:21 -0800)
committerVladimir Vereschaka <vvereschaka@accesssoftek.com>
Fri, 13 Nov 2020 22:32:35 +0000 (14:32 -0800)
Since RPATH initialization was disabled for the runtime libraries to
avoid overwriting RPATH unconditionally we need to explicity set up it
for the Win to Arm Linux cross builds.

See some details here: https://reviews.llvm.org/D91099

clang/cmake/caches/CrossWinToARMLinux.cmake

index 67d49f4..b5781a7 100644 (file)
@@ -100,8 +100,14 @@ set(LIBCXX_CXX_ABI_INCLUDE_PATHS            "${LLVM_PROJECT_DIR}/libcxxabi/inclu
 set(LIBCXX_CXX_ABI_LIBRARY_PATH             "${CMAKE_BINARY_DIR}/lib/${LIBCXX_TARGET_TRIPLE}/c++" CACHE PATH "")
 set(LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS    ON CACHE BOOL "")
 
-set(BUILTINS_CMAKE_ARGS                     "-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_AR=${CMAKE_AR}" CACHE STRING "")
-set(RUNTIMES_CMAKE_ARGS                     "-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_AR=${CMAKE_AR}" CACHE STRING "")
+# Set up RPATH for the target runtime/builtin libraries.
+# See some details here: https://reviews.llvm.org/D91099
+if (NOT DEFINED RUNTIMES_INSTALL_RPATH)
+  set(RUNTIMES_INSTALL_RPATH                "\$ORIGIN/../lib;${CMAKE_INSTALL_PREFIX}/lib")
+endif()
+
+set(BUILTINS_CMAKE_ARGS                     "-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_AR=${CMAKE_AR};-DCMAKE_INSTALL_RPATH=${RUNTIMES_INSTALL_RPATH};-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON" CACHE STRING "")
+set(RUNTIMES_CMAKE_ARGS                     "-DCMAKE_SYSTEM_NAME=Linux;-DCMAKE_AR=${CMAKE_AR};-DCMAKE_INSTALL_RPATH=${RUNTIMES_INSTALL_RPATH};-DCMAKE_BUILD_WITH_INSTALL_RPATH=ON" CACHE STRING "")
 
 find_package(Python3 COMPONENTS Interpreter)