Author: Joseph Huber
Date: 2026-02-12T07:59:24Z
New Revision: c780d890daf3474c73c4ffa736e155c619c3d0be

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

LOG: [libc] Fix unit test dependency and respect LIBC_INCLUDE_BENCHMARKS 
(#180812)

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)

Added: 
    

Modified: 
    libc/benchmarks/CMakeLists.txt
    libc/benchmarks/gpu/CMakeLists.txt

Removed: 
    


################################################################################
diff  --git a/libc/benchmarks/CMakeLists.txt b/libc/benchmarks/CMakeLists.txt
index c17cc106f96d7..65c7cd76fad29 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 cf8c9902ca7f0..629e51c39dbb3 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


        
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits

Reply via email to