[libc-commits] [libc] 8d68195 - [libc][gpu][NFC] Move CMake logic to prepare GPU build to a separate file.

Siva Chandra Reddy via libc-commits libc-commits at lists.llvm.org
Mon Dec 19 10:20:19 PST 2022


Author: Siva Chandra Reddy
Date: 2022-12-19T18:20:10Z
New Revision: 8d681955b8766e2f7e89d81f3705ce7d18bde289

URL: https://github.com/llvm/llvm-project/commit/8d681955b8766e2f7e89d81f3705ce7d18bde289
DIFF: https://github.com/llvm/llvm-project/commit/8d681955b8766e2f7e89d81f3705ce7d18bde289.diff

LOG: [libc][gpu][NFC] Move CMake logic to prepare GPU build to a separate file.

Reviewed By: jhuber6

Differential Revision: https://reviews.llvm.org/D140309

Added: 
    libc/cmake/modules/prepare_libc_gpu_build.cmake

Modified: 
    libc/CMakeLists.txt

Removed: 
    


################################################################################
diff  --git a/libc/CMakeLists.txt b/libc/CMakeLists.txt
index 909f5bf618e35..fa0ce829a168a 100644
--- a/libc/CMakeLists.txt
+++ b/libc/CMakeLists.txt
@@ -55,15 +55,6 @@ option(LLVM_LIBC_FULL_BUILD "Build and test LLVM libc as if it is the full libc"
 option(LLVM_LIBC_IMPLEMENTATION_DEFINED_TEST_BEHAVIOR "Build LLVM libc tests assuming our implementation-defined behavior" ON)
 option(LLVM_LIBC_ENABLE_LINTING "Enables linting of libc source files" OFF)
 
-# Set up the target architectures to build for the GPU
-set(ALL_GPU_ARCHITECTURES "sm_35;sm_37;sm_50;sm_52;sm_53;sm_60;sm_61;sm_62;sm_70;sm_72;sm_75;sm_80;sm_86;gfx700;gfx701;gfx801;gfx803;gfx900;gfx902;gfx906;gfx908;gfx90a;gfx90c;gfx940;gfx1010;gfx1030;gfx1031;gfx1032;gfx1033;gfx1034;gfx1035;gfx1036;gfx1100;gfx1101;gfx1102;gfx1103")
-set(LLVM_LIBC_GPU_ARCHITECTURES ${ALL_GPU_ARCHITECTURES} CACHE STRING "List of GPU architectures to support in LLVM libc")
-if (LLVM_LIBC_GPU_ARCHITECTURES STREQUAL "all")
-  set(LIBC_GPU_ARCHITECTURES ${ALL_GPU_ARCHITECTURES})
-else()
-  set(LIBC_GPU_ARCHITECTURES ${LLVM_LIBC_GPU_ARCHITECTURES})
-endif()
-
 set(LLVM_LIBC_TARGET_OS ${CMAKE_SYSTEM_NAME} CACHE STRING "Target operating system for LLVM libc")
 string(TOLOWER ${LLVM_LIBC_TARGET_OS} LIBC_TARGET_OS)
 
@@ -71,13 +62,8 @@ string(TOLOWER ${LLVM_LIBC_TARGET_OS} LIBC_TARGET_OS)
 include(LLVMLibCArchitectures)
 include(LLVMLibCCheckMPFR)
 
-# Ensure the compiler is a valid clang when building the GPU target.
-if(LIBC_TARGET_ARCHITECTURE_IS_GPU AND NOT (CMAKE_CXX_COMPILER_ID MATCHES "[Cc]lang" AND 
-  ${CMAKE_CXX_COMPILER_VERSION} VERSION_EQUAL "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}"))
-  message(FATAL_ERROR "Cannot build GPU library, CMake compiler '${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}' is not `Clang ${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}`")
-endif()
-if(LIBC_TARGET_ARCHITECTURE_IS_GPU AND NOT LLVM_LIBC_FULL_BUILD)
-  message(FATAL_ERROR "Cannot build GPU library, LLVM_LIBC_FULL_BUILD must be enabled")
+if(LIBC_TARGET_ARCHITECTURE_IS_GPU)
+  include(prepare_libc_gpu_build)
 endif()
 
 if(LLVM_LIBC_CLANG_TIDY)

diff  --git a/libc/cmake/modules/prepare_libc_gpu_build.cmake b/libc/cmake/modules/prepare_libc_gpu_build.cmake
new file mode 100644
index 0000000000000..7d32af3069918
--- /dev/null
+++ b/libc/cmake/modules/prepare_libc_gpu_build.cmake
@@ -0,0 +1,26 @@
+# Set up the target architectures to build the GPU libc for.
+set(all_gpu_architectures "sm_35;sm_37;sm_50;sm_52;sm_53;sm_60;sm_61;sm_62;"
+                          "sm_70;sm_72;sm_75;sm_80;sm_86;gfx700;gfx701;gfx801;"
+                          "gfx803;gfx900;gfx902;gfx906;gfx908;gfx90a;gfx90c;"
+                          "gfx940;gfx1010;gfx1030;gfx1031;gfx1032;gfx1033;"
+                          "gfx1034;gfx1035;gfx1036;gfx1100;gfx1101;gfx1102;"
+                          "gfx1103")
+set(LIBC_GPU_ARCHITECTURES ${all_gpu_architectures} CACHE STRING
+    "List of GPU architectures to build the libc for.")
+if(LIBC_GPU_ARCHITECTURES STREQUAL "all")
+  set(LIBC_GPU_ARCHITECTURES ${all_gpu_architectures} FORCE)
+endif()
+
+# Ensure the compiler is a valid clang when building the GPU target.
+set(req_ver "${LLVM_VERSION_MAJOR}.${LLVM_VERSION_MINOR}.${LLVM_VERSION_PATCH}")
+if(LIBC_TARGET_ARCHITECTURE_IS_GPU AND
+   NOT (CMAKE_CXX_COMPILER_ID MATCHES "[Cc]lang" AND
+       ${CMAKE_CXX_COMPILER_VERSION} VERSION_EQUAL "${req_ver}"))
+  message(FATAL_ERROR "Cannot build libc for GPU. CMake compiler "
+                      "'${CMAKE_CXX_COMPILER_ID} ${CMAKE_CXX_COMPILER_VERSION}' "
+                      " is not `Clang ${req_ver}.")
+endif()
+if(LLVM_LIBC_FULL_BUILD)
+  message(FATAL_ERROR "LLVM_LIBC_FULL_BUILD must be enabled to build libc for "
+                      "GPU.")
+endif()


        


More information about the libc-commits mailing list