aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Huber <huberjn@outlook.com>2024-02-20 12:23:48 -0600
committerGitHub <noreply@github.com>2024-02-20 12:23:48 -0600
commit5454991c29945d791b82a9e25b1f605f54c75710 (patch)
treec251deecc542fdd622c9da670f7be1dd5699bfd3
parentd39d5ccbc0c3ea6aca68e46ff9f4503b682d1ac2 (diff)
downloadllvm-5454991c29945d791b82a9e25b1f605f54c75710.zip
llvm-5454991c29945d791b82a9e25b1f605f54c75710.tar.gz
llvm-5454991c29945d791b82a9e25b1f605f54c75710.tar.bz2
[libc] Cleanup of hermetic test flag handling (#82384)
Summary: This cleans up the handling of hermetic test flags. Primarily done to simplify the GPU rework patch.
-rw-r--r--libc/cmake/modules/LLVMLibCCompileOptionRules.cmake46
-rw-r--r--libc/cmake/modules/LLVMLibCTestRules.cmake21
-rw-r--r--libc/test/UnitTest/CMakeLists.txt4
3 files changed, 25 insertions, 46 deletions
diff --git a/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake b/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake
index f1f919f..140e4d5 100644
--- a/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake
+++ b/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake
@@ -135,21 +135,9 @@ function(_get_common_test_compile_options output_var flags)
# list(APPEND compile_options "-Wglobal-constructors")
# endif()
endif()
- if (LIBC_TARGET_ARCHITECTURE_IS_GPU)
- # TODO: Set these flags
- # list(APPEND compile_options "-nogpulib")
- # list(APPEND compile_options "-fvisibility=hidden")
- # list(APPEND compile_options "-fconvergent-functions")
-
- # # Manually disable all standard include paths and include the resource
- # # directory to prevent system headers from being included.
- # list(APPEND compile_options "-isystem${COMPILER_RESOURCE_DIR}/include")
- # list(APPEND compile_options "-nostdinc")
- endif()
set(${output_var} ${compile_options} PARENT_SCOPE)
endfunction()
-
# Obtains NVPTX specific arguments for compilation.
# The PTX feature is primarily based on the CUDA toolchain version. We want to
# be able to target NVPTX without an existing CUDA installation, so we need to
@@ -202,19 +190,21 @@ function(get_nvptx_compile_options output_var gpu_arch)
set(${output_var} ${nvptx_options} PARENT_SCOPE)
endfunction()
-#TODO: Fold this into a function to get test framework compile options (which
-# need to be separate from the main test compile options because otherwise they
-# error)
-set(LIBC_HERMETIC_TEST_COMPILE_OPTIONS ${LIBC_COMPILE_OPTIONS_DEFAULT}
- -fpie -ffreestanding -fno-exceptions -fno-rtti)
-# The GPU build requires overriding the default CMake triple and architecture.
-if(LIBC_GPU_TARGET_ARCHITECTURE_IS_AMDGPU)
- list(APPEND LIBC_HERMETIC_TEST_COMPILE_OPTIONS
- -nogpulib -mcpu=${LIBC_GPU_TARGET_ARCHITECTURE} -flto
- --target=${LIBC_GPU_TARGET_TRIPLE}
- -mcode-object-version=${LIBC_GPU_CODE_OBJECT_VERSION})
-elseif(LIBC_GPU_TARGET_ARCHITECTURE_IS_NVPTX)
- get_nvptx_compile_options(nvptx_options ${LIBC_GPU_TARGET_ARCHITECTURE})
- list(APPEND LIBC_HERMETIC_TEST_COMPILE_OPTIONS
- -nogpulib ${nvptx_options} -fno-use-cxa-atexit --target=${LIBC_GPU_TARGET_TRIPLE})
-endif()
+function(_get_hermetic_test_compile_options output_var flags)
+ _get_compile_options_from_flags(compile_flags ${flags})
+ list(APPEND compile_options ${LIBC_COMPILE_OPTIONS_DEFAULT} ${compile_flags}
+ ${flags} -fpie -ffreestanding -fno-exceptions -fno-rtti)
+
+ # The GPU build requires overriding the default CMake triple and architecture.
+ if(LIBC_GPU_TARGET_ARCHITECTURE_IS_AMDGPU)
+ list(APPEND compile_options
+ -nogpulib -mcpu=${LIBC_GPU_TARGET_ARCHITECTURE} -flto
+ --target=${LIBC_GPU_TARGET_TRIPLE}
+ -mcode-object-version=${LIBC_GPU_CODE_OBJECT_VERSION})
+ elseif(LIBC_GPU_TARGET_ARCHITECTURE_IS_NVPTX)
+ get_nvptx_compile_options(nvptx_options ${LIBC_GPU_TARGET_ARCHITECTURE})
+ list(APPEND compile_options
+ -nogpulib ${nvptx_options} -fno-use-cxa-atexit --target=${LIBC_GPU_TARGET_TRIPLE})
+ endif()
+ set(${output_var} ${compile_options} PARENT_SCOPE)
+endfunction()
diff --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake
index f5952ab..6ca9516 100644
--- a/libc/cmake/modules/LLVMLibCTestRules.cmake
+++ b/libc/cmake/modules/LLVMLibCTestRules.cmake
@@ -457,20 +457,9 @@ function(add_integration_test test_name)
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
target_include_directories(${fq_build_target_name} SYSTEM PRIVATE ${LIBC_INCLUDE_DIR})
target_include_directories(${fq_build_target_name} PRIVATE ${LIBC_SOURCE_DIR})
- target_compile_options(${fq_build_target_name}
- PRIVATE -fpie -ffreestanding -fno-exceptions -fno-rtti ${INTEGRATION_TEST_COMPILE_OPTIONS})
- # The GPU build requires overriding the default CMake triple and architecture.
- if(LIBC_GPU_TARGET_ARCHITECTURE_IS_AMDGPU)
- target_compile_options(${fq_build_target_name} PRIVATE
- -nogpulib -mcpu=${LIBC_GPU_TARGET_ARCHITECTURE}
- -flto --target=${LIBC_GPU_TARGET_TRIPLE}
- -mcode-object-version=${LIBC_GPU_CODE_OBJECT_VERSION})
- elseif(LIBC_GPU_TARGET_ARCHITECTURE_IS_NVPTX)
- get_nvptx_compile_options(nvptx_options ${LIBC_GPU_TARGET_ARCHITECTURE})
- target_compile_options(${fq_build_target_name} PRIVATE
- -nogpulib ${nvptx_options} -fno-use-cxa-atexit
- --target=${LIBC_GPU_TARGET_TRIPLE})
- endif()
+
+ _get_hermetic_test_compile_options(compile_options "${INTEGRATION_TEST_COMPILE_OPTIONS}")
+ target_compile_options(${fq_build_target_name} PRIVATE ${compile_options})
if(LIBC_TARGET_ARCHITECTURE_IS_GPU)
target_link_options(${fq_build_target_name} PRIVATE -nostdlib -static)
@@ -628,8 +617,8 @@ function(add_libc_hermetic_test test_name)
)
target_include_directories(${fq_build_target_name} SYSTEM PRIVATE ${LIBC_INCLUDE_DIR})
target_include_directories(${fq_build_target_name} PRIVATE ${LIBC_SOURCE_DIR})
- target_compile_options(${fq_build_target_name}
- PRIVATE ${LIBC_HERMETIC_TEST_COMPILE_OPTIONS} ${HERMETIC_TEST_COMPILE_OPTIONS})
+ _get_hermetic_test_compile_options(compile_options "${HERMETIC_TEST_COMPILE_OPTIONS}")
+ target_compile_options(${fq_build_target_name} PRIVATE ${compile_options})
set(link_libraries "")
foreach(lib IN LISTS HERMETIC_TEST_LINK_LIBRARIES)
diff --git a/libc/test/UnitTest/CMakeLists.txt b/libc/test/UnitTest/CMakeLists.txt
index 0848f56..4a615d4 100644
--- a/libc/test/UnitTest/CMakeLists.txt
+++ b/libc/test/UnitTest/CMakeLists.txt
@@ -36,9 +36,9 @@ function(add_unittest_framework_library name)
endif()
target_compile_options(${lib} PUBLIC ${compile_options})
endforeach()
+ _get_hermetic_test_compile_options(compile_options -nostdinc++)
target_include_directories(${name}.hermetic PRIVATE ${LIBC_BUILD_DIR}/include)
- target_compile_options(${name}.hermetic
- PRIVATE ${LIBC_HERMETIC_TEST_COMPILE_OPTIONS} -ffreestanding -nostdinc++)
+ target_compile_options(${name}.hermetic PRIVATE ${compile_options})
if(TEST_LIB_DEPENDS)
foreach(dep IN LISTS ${TEST_LIB_DEPENDS})