Skip to content

Commit 23a0080

Browse files
committed
[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: llvm#99259, llvm#99243, llvm#99287, and llvm#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`.
1 parent 7ad7f8f commit 23a0080

File tree

1 file changed

+94
-0
lines changed

1 file changed

+94
-0
lines changed

libcxx/cmake/caches/GPU.cmake

+94
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
# Handle default arguments when done through the LLVM runtimes interface.
2+
foreach(target amdgcn-amd-amdhsa nvptx64-nvidia-cuda)
3+
set(RUNTIMES_${target}_LIBCXX_ABI_VERSION 2 CACHE STRING "")
4+
set(RUNTIMES_${target}_LIBCXX_CXX_ABI none CACHE STRING "")
5+
set(RUNTIMES_${target}_LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
6+
set(RUNTIMES_${target}_LIBCXX_ENABLE_STATIC ON CACHE BOOL "")
7+
set(RUNTIMES_${target}_LIBCXX_ENABLE_FILESYSTEM OFF CACHE BOOL "")
8+
set(RUNTIMES_${target}_LIBCXX_ENABLE_RANDOM_DEVICE OFF CACHE BOOL "")
9+
set(RUNTIMES_${target}_LIBCXX_ENABLE_LOCALIZATION OFF CACHE BOOL "")
10+
set(RUNTIMES_${target}_LIBCXX_ENABLE_UNICODE OFF CACHE BOOL "")
11+
set(RUNTIMES_${target}_LIBCXX_ENABLE_WIDE_CHARACTERS OFF CACHE BOOL "")
12+
set(RUNTIMES_${target}_LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
13+
set(RUNTIMES_${target}_LIBCXX_HAS_TERMINAL_AVAILABLE OFF CACHE BOOL "")
14+
set(RUNTIMES_${target}_LIBCXX_ENABLE_RTTI OFF CACHE BOOL "")
15+
set(RUNTIMES_${target}_LIBCXX_ENABLE_STATIC_ABI_LIBRARY ON CACHE BOOL "")
16+
set(RUNTIMES_${target}_LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY ON CACHE BOOL "")
17+
set(RUNTIMES_${target}_LIBCXX_ENABLE_THREADS OFF CACHE BOOL "")
18+
set(RUNTIMES_${target}_LIBCXX_ENABLE_MONOTONIC_CLOCK ON CACHE BOOL "")
19+
set(RUNTIMES_${target}_LIBCXX_INSTALL_LIBRARY ON CACHE BOOL "")
20+
set(RUNTIMES_${target}_LIBCXX_LIBC "llvm-libc" CACHE STRING "")
21+
set(RUNTIMES_${target}_LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
22+
set(RUNTIMES_${target}_LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS ON CACHE BOOL "")
23+
24+
# Configuration options for libcxxabi.
25+
set(RUNTIMES_${target}_LIBCXXABI_BAREMETAL ON CACHE BOOL "")
26+
set(RUNTIMES_${target}_LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "")
27+
set(RUNTIMES_${target}_LIBCXXABI_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
28+
set(RUNTIMES_${target}_LIBCXXABI_ENABLE_THREADS OFF CACHE BOOL "")
29+
set(RUNTIMES_${target}_LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS OFF CACHE BOOL "")
30+
set(RUNTIMES_${target}_LIBCXXABI_USE_LLVM_UNWINDER OFF CACHE BOOL "")
31+
32+
# Target specific compile flags.
33+
if(${target} MATCHES "^amdgcn")
34+
set(RUNTIMES_${target}_LIBCXX_ADDITIONAL_COMPILE_FLAGS
35+
"-nogpulib;-flto;-fconvergent-functions;-Xclang;-mcode-object-version=none" CACHE STRING "")
36+
set(RUNTIMES_${target}_LIBCXXABI_ADDITIONAL_COMPILE_FLAGS
37+
"-nogpulib;-flto;-fconvergent-functions;-Xclang;-mcode-object-version=none" CACHE STRING "")
38+
set(RUNTIMES_${target}_CMAKE_REQUIRED_FLAGS "-nogpulib -nodefaultlibs" CACHE STRING "")
39+
else()
40+
set(RUNTIMES_${target}_LIBCXX_ADDITIONAL_COMPILE_FLAGS
41+
"-nogpulib;-flto;-fconvergent-functions;--cuda-feature=+ptx63" CACHE STRING "")
42+
set(RUNTIMES_${target}_LIBCXXABI_ADDITIONAL_COMPILE_FLAGS
43+
"-nogpulib;-flto;-fconvergent-functions;--cuda-feature=+ptx63" CACHE STRING "")
44+
set(RUNTIMES_${target}_CMAKE_REQUIRED_FLAGS
45+
"-flto -nodefaultlibs -c -Wno-unused-command-line-argument" CACHE STRING "")
46+
endif()
47+
endforeach()
48+
49+
# Handle default arguments when being built directly.
50+
if(${CMAKE_CXX_COMPILER_TARGET} MATCHES "^amdgcn|^nvptx")
51+
set(LIBCXX_ABI_VERSION 2 CACHE STRING "")
52+
set(LIBCXX_CXX_ABI none CACHE STRING "")
53+
set(LIBCXX_ENABLE_SHARED OFF CACHE BOOL "")
54+
set(LIBCXX_ENABLE_STATIC ON CACHE BOOL "")
55+
set(LIBCXX_ENABLE_FILESYSTEM OFF CACHE BOOL "")
56+
set(LIBCXX_ENABLE_RANDOM_DEVICE OFF CACHE BOOL "")
57+
set(LIBCXX_ENABLE_LOCALIZATION OFF CACHE BOOL "")
58+
set(LIBCXX_ENABLE_UNICODE OFF CACHE BOOL "")
59+
set(LIBCXX_ENABLE_WIDE_CHARACTERS OFF CACHE BOOL "")
60+
set(LIBCXX_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
61+
set(LIBCXX_HAS_TERMINAL_AVAILABLE OFF CACHE BOOL "")
62+
set(LIBCXX_ENABLE_RTTI OFF CACHE BOOL "")
63+
set(LIBCXX_ENABLE_STATIC_ABI_LIBRARY ON CACHE BOOL "")
64+
set(LIBCXX_STATICALLY_LINK_ABI_IN_STATIC_LIBRARY ON CACHE BOOL "")
65+
set(LIBCXX_ENABLE_THREADS OFF CACHE BOOL "")
66+
set(LIBCXX_ENABLE_MONOTONIC_CLOCK ON CACHE BOOL "")
67+
set(LIBCXX_INSTALL_LIBRARY ON CACHE BOOL "")
68+
set(LIBCXX_LIBC "llvm-libc" CACHE STRING "")
69+
set(LIBCXX_USE_COMPILER_RT ON CACHE BOOL "")
70+
set(LIBCXX_ENABLE_NEW_DELETE_DEFINITIONS ON CACHE BOOL "")
71+
72+
# Configuration options for libcxxabi.
73+
set(LIBCXXABI_BAREMETAL ON CACHE BOOL "")
74+
set(LIBCXXABI_ENABLE_SHARED OFF CACHE BOOL "")
75+
set(LIBCXXABI_ENABLE_EXCEPTIONS OFF CACHE BOOL "")
76+
set(LIBCXXABI_ENABLE_THREADS OFF CACHE BOOL "")
77+
set(LIBCXXABI_ENABLE_NEW_DELETE_DEFINITIONS OFF CACHE BOOL "")
78+
set(LIBCXXABI_USE_LLVM_UNWINDER OFF CACHE BOOL "")
79+
80+
# Target specific compile flags.
81+
if(${target} MATCHES "^amdgcn")
82+
set(LIBCXX_ADDITIONAL_COMPILE_FLAGS
83+
"-nogpulib;-flto;-fconvergent-functions;-Xclang;-mcode-object-version=none" CACHE STRING "")
84+
set(LIBCXXABI_ADDITIONAL_COMPILE_FLAGS
85+
"-nogpulib;-flto;-fconvergent-functions;-Xclang;-mcode-object-version=none" CACHE STRING "")
86+
set(CMAKE_REQUIRED_FLAGS "-nogpulib" CACHE STRING "")
87+
else()
88+
set(LIBCXX_ADDITIONAL_COMPILE_FLAGS
89+
"-nogpulib;-flto;-fconvergent-functions;--cuda-feature=+ptx63" CACHE STRING "")
90+
set(LIBCXXABI_ADDITIONAL_COMPILE_FLAGS
91+
"-nogpulib;-flto;-fconvergent-functions;--cuda-feature=+ptx63" CACHE STRING "")
92+
set(CMAKE_REQUIRED_FLAGS "-flto;-c;-Wno-unused-command-line-argument" CACHE STRING "")
93+
endif()
94+
endif()

0 commit comments

Comments
 (0)