[libcxx-commits] [libcxx] [libcxx] Add cache file for the GPU build (PR #99348)
Joseph Huber via libcxx-commits
libcxx-commits at lists.llvm.org
Wed Jul 24 11:38:58 PDT 2024
https://github.com/jhuber6 updated https://github.com/llvm/llvm-project/pull/99348
>From 85869957491f6f5072b65c8e19f41fbcec824a4a Mon Sep 17 00:00:00 2001
From: Joseph Huber <huberjn at outlook.com>
Date: Wed, 17 Jul 2024 11:12:57 -0500
Subject: [PATCH 1/3] [libcxx] Add cache file for the GPU build
Summary:
This patch adds a CMake cache config file for the GPU build. This cache
will set the default required options when used from the LLVM runtime
interface or directly. These options pretty much disable everything the
GPU can't handle.
With this and the fllowing patches: #99259, #99243, #99287, and #99333,
we will be able to build `libc++` targeting the GPU with an invocation
like this.
```
$ cmake ../llvm
-C${LLVM_ROOT}/libcxx/cmake/caches/GPU.cmake \
-DRUNTIMES_nvptx64-nvidia-cuda_LLVM_ENABLE_RUNTIMES=compiler-rt;libc;libcxx \
-DRUNTIMES_amdgcn-amd-amdhsa_LLVM_ENABLE_RUNTIMES=compiler-rt;libc;libcxx \
-DLLVM_RUNTIME_TARGETS=amdgcn-amd-amdhsa;nvptx64-nvidia-cuda \
```
This will then install the libraries and headers into the appropriate
locations for use with `clang`.
---
libcxx/cmake/caches/GPU.cmake | 45 +++++++++++++++++++++++++++++++++++
1 file changed, 45 insertions(+)
create mode 100644 libcxx/cmake/caches/GPU.cmake
diff --git a/libcxx/cmake/caches/GPU.cmake b/libcxx/cmake/caches/GPU.cmake
new file mode 100644
index 0000000000000..0963fc7fd3852
--- /dev/null
+++ b/libcxx/cmake/caches/GPU.cmake
@@ -0,0 +1,45 @@
+# Handle default arguments when done through the LLVM runtimes interface.
+foreach(target amdgcn-amd-amdhsa nvptx64-nvidia-cuda)
+ set(RUNTIMES_${target}_LIBCXX_ABI_VERSION 2 CACHE STRING "")
+ set(RUNTIMES_${target}_LIBCXX_CXX_ABI none CACHE STRING "")
+ set(RUNTIMES_${target}_LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_ENABLE_STATIC ON CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_ENABLE_FILESYSTEM OFF CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_ENABLE_RANDOM_DEVICE OFF CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_ENABLE_LOCALIZATION OFF CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_ENABLE_UNICODE OFF CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_ENABLE_WIDE_CHARACTERS OFF CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_ENABLE_RTTI OFF CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_ENABLE_STATIC_ABI_LIBRARY ON CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY ON CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_ENABLE_THREADS OFF CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_ENABLE_MONOTONIC_CLOCK ON CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_INSTALL_LIBRARY ON CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_USE_LLVM_LIBC ON CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS ON CACHE BOOL "")
+endforeach()
+
+# Handle default arguments when being built directly.
+if(${CMAKE_CXX_COMPILER_TARGET} MATCHES "^amdgcn|^nvptx")
+ set(LIBCXX_ABI_VERSION 2 CACHE STRING "")
+ set(LIBCXX_CXX_ABI none CACHE STRING "")
+ set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
+ set(LIBCXX_ENABLE_STATIC ON CACHE BOOL "")
+ set(LIBCXX_ENABLE_FILESYSTEM OFF CACHE BOOL "")
+ set(LIBCXX_ENABLE_RANDOM_DEVICE OFF CACHE BOOL "")
+ set(LIBCXX_ENABLE_LOCALIZATION OFF CACHE BOOL "")
+ set(LIBCXX_ENABLE_UNICODE OFF CACHE BOOL "")
+ set(LIBCXX_ENABLE_WIDE_CHARACTERS OFF CACHE BOOL "")
+ set(LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
+ set(LIBCXX_ENABLE_RTTI OFF CACHE BOOL "")
+ set(LIBCXX_ENABLE_STATIC_ABI_LIBRARY ON CACHE BOOL "")
+ set(LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY ON CACHE BOOL "")
+ set(LIBCXX_ENABLE_THREADS OFF CACHE BOOL "")
+ set(LIBCXX_ENABLE_MONOTONIC_CLOCK ON CACHE BOOL "")
+ set(LIBCXX_INSTALL_LIBRARY ON CACHE BOOL "")
+ set(LIBCXX_USE_LLVM_LIBC ON CACHE BOOL "")
+ set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
+ set(LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS ON CACHE BOOL "")
+endif()
>From 430c7b26ffbd9ac89173cd889be9d46b5fec7dd5 Mon Sep 17 00:00:00 2001
From: Joseph Huber <huberjn at outlook.com>
Date: Wed, 24 Jul 2024 13:38:46 -0500
Subject: [PATCH 2/3] Update libcxx/cmake/caches/GPU.cmake
---
libcxx/cmake/caches/GPU.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libcxx/cmake/caches/GPU.cmake b/libcxx/cmake/caches/GPU.cmake
index 0963fc7fd3852..dcfa9dc64717b 100644
--- a/libcxx/cmake/caches/GPU.cmake
+++ b/libcxx/cmake/caches/GPU.cmake
@@ -16,7 +16,7 @@ foreach(target amdgcn-amd-amdhsa nvptx64-nvidia-cuda)
set(RUNTIMES_${target}_LIBCXX_ENABLE_THREADS OFF CACHE BOOL "")
set(RUNTIMES_${target}_LIBCXX_ENABLE_MONOTONIC_CLOCK ON CACHE BOOL "")
set(RUNTIMES_${target}_LIBCXX_INSTALL_LIBRARY ON CACHE BOOL "")
- set(RUNTIMES_${target}_LIBCXX_USE_LLVM_LIBC ON CACHE BOOL "")
+ set(RUNTIMES_${target}_LIBCXX_LIBC "llvm-libc" CACHE STRING "")
set(RUNTIMES_${target}_LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
set(RUNTIMES_${target}_LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS ON CACHE BOOL "")
endforeach()
>From aca650066e77b26f180e07a1556e6dc7d17a42cf Mon Sep 17 00:00:00 2001
From: Joseph Huber <huberjn at outlook.com>
Date: Wed, 24 Jul 2024 13:38:51 -0500
Subject: [PATCH 3/3] Update libcxx/cmake/caches/GPU.cmake
---
libcxx/cmake/caches/GPU.cmake | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libcxx/cmake/caches/GPU.cmake b/libcxx/cmake/caches/GPU.cmake
index dcfa9dc64717b..a3941931688b5 100644
--- a/libcxx/cmake/caches/GPU.cmake
+++ b/libcxx/cmake/caches/GPU.cmake
@@ -39,7 +39,7 @@ if(${CMAKE_CXX_COMPILER_TARGET} MATCHES "^amdgcn|^nvptx")
set(LIBCXX_ENABLE_THREADS OFF CACHE BOOL "")
set(LIBCXX_ENABLE_MONOTONIC_CLOCK ON CACHE BOOL "")
set(LIBCXX_INSTALL_LIBRARY ON CACHE BOOL "")
- set(LIBCXX_USE_LLVM_LIBC ON CACHE BOOL "")
+ set(LIBCXX_LIBC "llvm-libc" CACHE STRING "")
set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
set(LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS ON CACHE BOOL "")
endif()
More information about the libcxx-commits
mailing list