llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT--> @llvm/pr-subscribers-libc Author: None (llvmbot) <details> <summary>Changes</summary> Backport e07a1182fd58a5b48a2c78bc3ae03872186d4ae0 Requested by: @<!-- -->jhuber6 --- Full diff: https://github.com/llvm/llvm-project/pull/179496.diff 3 Files Affected: - (modified) libc/cmake/modules/prepare_libc_gpu_build.cmake (+2-2) - (modified) libc/docs/gpu/building.rst (+6-34) - (modified) libc/startup/gpu/CMakeLists.txt (+1) ``````````diff diff --git a/libc/cmake/modules/prepare_libc_gpu_build.cmake b/libc/cmake/modules/prepare_libc_gpu_build.cmake index 4d12a5917a56f..55cd0242eedeb 100644 --- a/libc/cmake/modules/prepare_libc_gpu_build.cmake +++ b/libc/cmake/modules/prepare_libc_gpu_build.cmake @@ -17,8 +17,8 @@ if(NOT LLVM_LIBC_FULL_BUILD) endif() # Set the required flags globally so standard CMake utilities can compile. -if(LIBC_TARGET_TRIPLE) - set(CMAKE_REQUIRED_FLAGS "--target=${LIBC_TARGET_TRIPLE}") +if(NOT CMAKE_CXX_COMPILER_TARGET) + set(CMAKE_REQUIRED_FLAGS "${LIBC_COMPILE_OPTIONS_DEFAULT}") endif() # Optionally set up a job pool to limit the number of GPU tests run in parallel. diff --git a/libc/docs/gpu/building.rst b/libc/docs/gpu/building.rst index 9f9528b30d9bf..a7791331423dc 100644 --- a/libc/docs/gpu/building.rst +++ b/libc/docs/gpu/building.rst @@ -100,12 +100,12 @@ targeting a GPU architecture. $> TARGET_C_COMPILER=</path/to/clang> $> TARGET_CXX_COMPILER=</path/to/clang++> $> cmake ../runtimes \ # Point to the runtimes build - -G Ninja \ - -DLLVM_ENABLE_RUNTIMES=libc \ - -DCMAKE_C_COMPILER=$TARGET_C_COMPILER \ - -DCMAKE_CXX_COMPILER=$TARGET_CXX_COMPILER \ - -DLLVM_LIBC_FULL_BUILD=ON \ - -DLLVM_RUNTIMES_TARGET=$TARGET_TRIPLE \ + -G Ninja \ + -DLLVM_ENABLE_RUNTIMES=libc \ + -DCMAKE_C_COMPILER=$TARGET_C_COMPILER \ + -DCMAKE_CXX_COMPILER=$TARGET_CXX_COMPILER \ + -DLLVM_LIBC_FULL_BUILD=ON \ + -DLLVM_DEFAULT_TARGET_TRIPLE=$TARGET_TRIPLE \ -DCMAKE_BUILD_TYPE=Release $> ninja install @@ -113,34 +113,6 @@ The above steps will result in a build targeting one of the supported GPU architectures. Building for multiple targets requires separate CMake invocations. -Standalone cross build ----------------------- - -The GPU build can also be targeted directly as long as the compiler used is a -supported ``clang`` compiler. This method is generally not recommended as it can -only target a single GPU architecture. - -.. code-block:: sh - - $> cd llvm-project # The llvm-project checkout - $> mkdir build # A different build directory for the build tools - $> cd build - $> CLANG_C_COMPILER=</path/to/clang> # Must be a trunk build - $> CLANG_CXX_COMPILER=</path/to/clang++> # Must be a trunk build - $> TARGET_TRIPLE=<amdgcn-amd-amdhsa or nvptx64-nvidia-cuda> - $> cmake ../llvm \ # Point to the llvm directory - -G Ninja \ - -DLLVM_ENABLE_PROJECTS=libc \ - -DCMAKE_C_COMPILER=$CLANG_C_COMPILER \ - -DCMAKE_CXX_COMPILER=$CLANG_CXX_COMPILER \ - -DLLVM_LIBC_FULL_BUILD=ON \ - -DLIBC_TARGET_TRIPLE=$TARGET_TRIPLE \ - -DCMAKE_BUILD_TYPE=Release - $> ninja install - -This will build and install the GPU C library along with all the other LLVM -libraries. - Build overview ============== diff --git a/libc/startup/gpu/CMakeLists.txt b/libc/startup/gpu/CMakeLists.txt index fa326ef46a9d1..63e2a6c5dee1a 100644 --- a/libc/startup/gpu/CMakeLists.txt +++ b/libc/startup/gpu/CMakeLists.txt @@ -34,6 +34,7 @@ function(add_startup_object name) RUNTIME_OUTPUT_DIRECTORY ${LIBC_LIBRARY_DIR} RUNTIME_OUTPUT_NAME ${name}.o) target_link_options(${fq_target_name}.exe PRIVATE + ${LIBC_COMPILE_OPTIONS_DEFAULT} "-r" "-nostdlib" "-flto" "-Wl,--lto-emit-llvm") endif() endfunction() `````````` </details> https://github.com/llvm/llvm-project/pull/179496 _______________________________________________ llvm-branch-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits
