aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoseph Huber <huberjn@outlook.com>2026-02-10 14:08:48 -0600
committerCullen Rhodes <cullen.rhodes@arm.com>2026-02-12 07:59:24 +0000
commitc780d890daf3474c73c4ffa736e155c619c3d0be (patch)
tree2eb2c527fea0bb9e277d49e41ebf92b1b39c2c0f
parent49ec007666c4feb2602c5103aff09206a3900064 (diff)
downloadllvm-release/22.x.tar.gz
llvm-release/22.x.tar.bz2
llvm-release/22.x.zip
[libc] Fix unit test dependency and respect LIBC_INCLUDE_BENCHMARKS (#180812)release/22.x
Summary: The unittest framework function is defined in another CMake file which may not be present if the uesr disabled tests, provide a smaller version here to keep this private. Also respesct the LIBC_INCLUDE_BENCHMARKS variable. (cherry picked from commit c9ee81a59e73a760febecad9fb8ed5baa3bee5ef)
-rw-r--r--libc/benchmarks/CMakeLists.txt8
-rw-r--r--libc/benchmarks/gpu/CMakeLists.txt44
2 files changed, 47 insertions, 5 deletions
diff --git a/libc/benchmarks/CMakeLists.txt b/libc/benchmarks/CMakeLists.txt
index c17cc106f96d..65c7cd76fad2 100644
--- a/libc/benchmarks/CMakeLists.txt
+++ b/libc/benchmarks/CMakeLists.txt
@@ -1,10 +1,10 @@
-if(LIBC_TARGET_OS_IS_GPU)
- add_subdirectory(gpu)
+# The CPU build depends on Google benchmark.
+if(NOT LIBC_INCLUDE_BENCHMARKS)
return()
endif()
-# The CPU build depends on Google benchmark.
-if(NOT LIBC_INCLUDE_BENCHMARKS)
+if(LIBC_TARGET_OS_IS_GPU)
+ add_subdirectory(gpu)
return()
endif()
diff --git a/libc/benchmarks/gpu/CMakeLists.txt b/libc/benchmarks/gpu/CMakeLists.txt
index cf8c9902ca7f..629e51c39dbb 100644
--- a/libc/benchmarks/gpu/CMakeLists.txt
+++ b/libc/benchmarks/gpu/CMakeLists.txt
@@ -33,7 +33,49 @@ function(add_benchmark benchmark_name)
add_dependencies(gpu-benchmark ${fq_target_name})
endfunction(add_benchmark)
-add_unittest_framework_library(
+function(add_benchmark_framework_library name)
+ cmake_parse_arguments(
+ "TEST_LIB"
+ "" # No optional arguments
+ "" # No single value arguments
+ "SRCS;HDRS;DEPENDS" # Multi value arguments
+ ${ARGN}
+ )
+ if(NOT TEST_LIB_SRCS)
+ message(FATAL_ERROR "'add_benchmark_framework_library' requires SRCS; for "
+ "header only libraries, use 'add_header_library'")
+ endif()
+
+ foreach(lib IN ITEMS ${name}.hermetic)
+ add_library(
+ ${lib}
+ STATIC
+ EXCLUDE_FROM_ALL
+ ${TEST_LIB_SRCS}
+ ${TEST_LIB_HDRS}
+ )
+ target_include_directories(${lib} PRIVATE ${LIBC_SOURCE_DIR})
+ if(TARGET libc.src.time.clock)
+ target_compile_definitions(${lib} PRIVATE TARGET_SUPPORTS_CLOCK)
+ endif()
+ endforeach()
+
+ _get_hermetic_test_compile_options(compile_options "")
+ target_include_directories(${name}.hermetic PRIVATE ${LIBC_INCLUDE_DIR})
+ target_compile_options(${name}.hermetic PRIVATE ${compile_options} -nostdinc++)
+
+ if(TEST_LIB_DEPENDS)
+ foreach(dep IN ITEMS ${TEST_LIB_DEPENDS})
+ if(TARGET ${dep}.hermetic)
+ add_dependencies(${name}.hermetic ${dep}.hermetic)
+ else()
+ add_dependencies(${name}.hermetic ${dep})
+ endif()
+ endforeach()
+ endif()
+endfunction()
+
+add_benchmark_framework_library(
LibcGpuBenchmark
SRCS
LibcGpuBenchmark.cpp