[libc] Simplify enabling the GPU build for libc

Currently the GPU build requires the `LLVM_LIBC_FULL_BUILD` option to be
set. This patch changes the logic so that it is always enabled when
targeting the GPU. Also, this patch allows `LIBC_GPU_BUILD` and
`LIBC_GPU_ARCHITECTURES` to both enable a GPU build. Now, enabling the
GPU support should only require the following CMake:

```
  -DLLVM_ENABLE_RUNTIMES=libc -DLIBC_GPU_ARCHITECTURES=gfx1030
```

Reviewed By: jdoerfert, sivachandra

Differential Revision: https://reviews.llvm.org/D146979
This commit is contained in:
Joseph Huber 2023-03-27 11:05:11 -05:00
parent a0bf6400d1
commit fd059ea7ec
4 changed files with 7 additions and 5 deletions

View File

@ -18,7 +18,7 @@ set(LIBC_BINARY_DIR ${CMAKE_CURRENT_BINARY_DIR})
# The top-level directory in which libc is being built.
set(LIBC_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR})
if(LLVM_LIBC_FULL_BUILD)
if(LLVM_LIBC_FULL_BUILD OR LIBC_GPU_BUILD OR LIBC_GPU_ARCHITECTURES)
if(NOT LIBC_HDRGEN_EXE)
# We need to set up hdrgen first since other targets depend on it.
add_subdirectory(utils/LibcTableGenUtil)

View File

@ -6,7 +6,7 @@
# platform.
# ------------------------------------------------------------------------------
if(LIBC_GPU_BUILD)
if(LIBC_GPU_BUILD OR LIBC_GPU_ARCHITECTURES)
# We set the generic target and OS to "gpu" here. More specific defintions
# for the exact target GPU are set up in prepare_libc_gpu_build.cmake.
set(LIBC_TARGET_OS "gpu")

View File

@ -29,8 +29,9 @@ if(NOT (CMAKE_CXX_COMPILER_ID MATCHES "[Cc]lang" AND
" is not `Clang ${req_ver}.")
endif()
if(NOT LLVM_LIBC_FULL_BUILD)
message(FATAL_ERROR "LLVM_LIBC_FULL_BUILD must be enabled to build libc for "
"GPU.")
message(STATUS "LLVM_LIBC_FULL_BUILD must be enabled to build libc for GPU. "
"Overriding LLVM_LIBC_FULL_BUILD to ON.")
set(LLVM_LIBC_FULL_BUILD ON FORCE)
endif()
# Identify the program used to package multiple images into a single binary.

View File

@ -385,7 +385,8 @@ if(runtimes)
list(APPEND extra_deps llvm-link)
endif()
endif()
if("libc" IN_LIST LLVM_ENABLE_RUNTIMES AND LLVM_LIBC_FULL_BUILD)
if("libc" IN_LIST LLVM_ENABLE_RUNTIMES AND
(LLVM_LIBC_FULL_BUILD OR LIBC_GPU_BUILD OR LIBC_GPU_ARCHITECTURES))
if(TARGET libc-hdrgen)
set(libc_tools libc-hdrgen)
set(libc_cmake_args "-DLIBC_HDRGEN_EXE=$<TARGET_FILE:libc-hdrgen>"