From fc3b67aee852d99bbb5d2f4670695d8246375dac Mon Sep 17 00:00:00 2001 From: Raul Tambre Date: Mon, 12 May 2025 22:59:39 +0300 Subject: [PATCH] [cmake] Normalize TARGET_SUBDIR paths (#138524) Some code paths normalize ".." and thus don't create the directory. But some execute in a shell thus requiring the directory to exist to be able to take the parent directory. This patch normalizes all the `TARGET_SUBDIR` variables to avoid this issue. --- libc/CMakeLists.txt | 1 + libcxx/CMakeLists.txt | 1 + libcxxabi/CMakeLists.txt | 1 + libunwind/CMakeLists.txt | 1 + 4 files changed, 4 insertions(+) diff --git a/libc/CMakeLists.txt b/libc/CMakeLists.txt index b264dcb4974c..f21fc2fba730 100644 --- a/libc/CMakeLists.txt +++ b/libc/CMakeLists.txt @@ -220,6 +220,7 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR) if(LIBC_LIBDIR_SUBDIR) string(APPEND LIBC_TARGET_SUBDIR /${LIBC_LIBDIR_SUBDIR}) endif() + cmake_path(NORMAL_PATH LIBC_TARGET_SUBDIR) endif() if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND (LIBC_ENABLE_USE_BY_CLANG OR LIBC_TARGET_OS_IS_GPU)) diff --git a/libcxx/CMakeLists.txt b/libcxx/CMakeLists.txt index ac5aece3281a..dffdd7a3c70a 100644 --- a/libcxx/CMakeLists.txt +++ b/libcxx/CMakeLists.txt @@ -419,6 +419,7 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) if(LIBCXX_LIBDIR_SUBDIR) string(APPEND LIBCXX_TARGET_SUBDIR /${LIBCXX_LIBDIR_SUBDIR}) endif() + cmake_path(NORMAL_PATH LIBCXX_TARGET_SUBDIR) set(LIBCXX_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LIBCXX_TARGET_SUBDIR}) set(LIBCXX_GENERATED_INCLUDE_DIR "${LLVM_BINARY_DIR}/include/c++/v1") set(LIBCXX_GENERATED_MODULE_DIR "${LLVM_BINARY_DIR}/modules/c++/v1") diff --git a/libcxxabi/CMakeLists.txt b/libcxxabi/CMakeLists.txt index 6dcfc51e5532..3e2f80b81845 100644 --- a/libcxxabi/CMakeLists.txt +++ b/libcxxabi/CMakeLists.txt @@ -187,6 +187,7 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) if(LIBCXXABI_LIBDIR_SUBDIR) string(APPEND LIBCXXABI_TARGET_SUBDIR /${LIBCXXABI_LIBDIR_SUBDIR}) endif() + cmake_path(NORMAL_PATH LIBCXXABI_TARGET_SUBDIR) set(LIBCXXABI_HEADER_DIR ${LLVM_BINARY_DIR}) set(LIBCXXABI_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LIBCXXABI_TARGET_SUBDIR}) set(LIBCXXABI_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LIBCXXABI_TARGET_SUBDIR} CACHE STRING diff --git a/libunwind/CMakeLists.txt b/libunwind/CMakeLists.txt index 3c8499fd3346..e27f3c2e2fc1 100644 --- a/libunwind/CMakeLists.txt +++ b/libunwind/CMakeLists.txt @@ -145,6 +145,7 @@ if(LLVM_ENABLE_PER_TARGET_RUNTIME_DIR AND NOT APPLE) if(LIBUNWIND_LIBDIR_SUBDIR) string(APPEND LIBUNWIND_TARGET_SUBDIR /${LIBUNWIND_LIBDIR_SUBDIR}) endif() + cmake_path(NORMAL_PATH LIBUNWIND_TARGET_SUBDIR) set(LIBUNWIND_LIBRARY_DIR ${LLVM_LIBRARY_OUTPUT_INTDIR}/${LIBUNWIND_TARGET_SUBDIR}) set(LIBUNWIND_INSTALL_LIBRARY_DIR lib${LLVM_LIBDIR_SUFFIX}/${LIBUNWIND_TARGET_SUBDIR} CACHE STRING "Path where built libunwind libraries should be installed.")