[libc-commits] [libc] [libc][cmake] Unify test suite creation and hierarchy in add_libc_testsuite. (PR #234465)

via libc-commits libc-commits at lists.llvm.org
Wed Oct 21 19:52:08 PDT 2026


https://github.com/lntue created https://github.com/llvm/llvm-project/pull/234465

- Expand `add_libc_testsuite` to unconditionally create `<suite_name>` and `<suite_name>-build` and wire them into `<parent_suite>` and `<parent_suite>-build` (defaulting to `libc-tests` unless `ROOT` or `PARENT <parent_suite>` is specified).
- Remove lazy test suite creation.
- Folding `add_libc_exhaustive_testsuite`, `add_libc_long_running_testsuite`, and `add_libc_integration_test_suite` into `add_libc_testsuite`.
- Consolidate `NO_RUN_POSTBUILD` and exhaustive suites into a single `BUILD_ONLY` option across `add_libc_testsuite` and `add_libc_test`, naming executables `*.__build_only__` so Lit ignores them during `check-libc` while keeping `<fq_target_name>` runner targets for manual invocation.
- Migrate all test suite definitions across `libc/test/` and `libc/benchmarks/gpu/` to `add_libc_testsuite` and standardize suite names on `libc-*-tests` and `libc-*-integration-tests`.

Assisted-by: Gemini

>From 335b2334bb1a41e0da769d970fe54f4cace3b775 Mon Sep 17 00:00:00 2001
From: Tue Ly <lntue.h at gmail.com>
Date: Thu, 22 Oct 2026 02:47:09 +0000
Subject: [PATCH] [libc][cmake] Unify test suite creation and hierarchy in
 add_libc_testsuite

- Expand add_libc_testsuite to unconditionally create <suite_name> and
  <suite_name>-build and wire them into <parent_suite> and
  <parent_suite>-build (defaulting to libc-tests unless ROOT or
  PARENT <parent_suite> is specified).
- Remove lazy test suite creation (if(NOT TARGET ...) guards in
  add_libc_testsuite and the lazy add_libc_testsuite call in
  _register_libc_test_with_suite), folding add_libc_exhaustive_testsuite,
  add_libc_long_running_testsuite, and add_libc_integration_test_suite
  into add_libc_testsuite.
- Consolidate NO_RUN_POSTBUILD and exhaustive suites into a single
  BUILD_ONLY option across add_libc_testsuite and add_libc_test,
  naming executables *.__build_only__ so Lit ignores them during
  check-libc while keeping <fq_target_name> runner targets for manual
  invocation.
- Migrate all test suite definitions across libc/test/ and
  libc/benchmarks/gpu/ to add_libc_testsuite and standardize suite
  names on libc-*-tests and libc-*-integration-tests.

Assisted-by: Gemini
---
 libc/benchmarks/gpu/CMakeLists.txt            |   7 +-
 libc/benchmarks/gpu/src/ctype/CMakeLists.txt  |   2 +-
 libc/benchmarks/gpu/src/math/CMakeLists.txt   |   2 +-
 libc/cmake/modules/LLVMLibCTestRules.cmake    | 165 +++--
 libc/cmake/modules/LibcParseArguments.cmake   |   7 +-
 libc/src/math/docs/add_math_function.md       |   2 +-
 libc/test/CMakeLists.txt                      |   9 +-
 libc/test/include/CMakeLists.txt              |  94 +--
 libc/test/include/net/linux/CMakeLists.txt    |   2 +-
 libc/test/integration/CMakeLists.txt          |   8 +-
 .../src/__support/GPU/CMakeLists.txt          |  11 +-
 .../src/__support/threads/CMakeLists.txt      |   2 +-
 .../integration/src/pthread/CMakeLists.txt    |   2 +-
 .../test/integration/src/spawn/CMakeLists.txt |   5 +-
 .../test/integration/src/stdio/CMakeLists.txt |   8 +-
 .../integration/src/stdio/gpu/CMakeLists.txt  |   5 +-
 .../integration/src/stdlib/CMakeLists.txt     |  20 +-
 .../integration/src/stdlib/gpu/CMakeLists.txt |  11 +-
 .../src/sys/ptrace/linux/CMakeLists.txt       |   5 +-
 .../integration/src/sys/sem/CMakeLists.txt    |   5 +-
 .../integration/src/threads/CMakeLists.txt    |   2 +-
 .../integration/src/ucontext/CMakeLists.txt   |   2 +-
 .../integration/src/unistd/CMakeLists.txt     |  25 +-
 libc/test/integration/startup/CMakeLists.txt  |  59 --
 .../integration/startup/gpu/CMakeLists.txt    |   3 +-
 .../integration/startup/linux/CMakeLists.txt  |   3 +-
 .../integration/startup/uefi/CMakeLists.txt   |   3 +-
 libc/test/src/__support/CMakeLists.txt        |   6 +-
 libc/test/src/__support/CPP/CMakeLists.txt    |   2 +-
 libc/test/src/__support/FPUtil/CMakeLists.txt |   2 +-
 libc/test/src/__support/OSUtil/CMakeLists.txt |   2 +-
 libc/test/src/__support/RPC/CMakeLists.txt    |   2 +-
 .../src/__support/fixed_point/CMakeLists.txt  |   2 +-
 .../test/src/__support/threads/CMakeLists.txt |   2 +-
 libc/test/src/__support/time/CMakeLists.txt   |   2 +-
 libc/test/src/__support/wchar/CMakeLists.txt  |  10 +-
 libc/test/src/__support/wctype/CMakeLists.txt |   2 +-
 libc/test/src/arpa/inet/CMakeLists.txt        |  20 +-
 libc/test/src/assert/CMakeLists.txt           |   4 +-
 libc/test/src/compiler/CMakeLists.txt         |   4 +-
 libc/test/src/complex/CMakeLists.txt          |  50 +-
 libc/test/src/ctype/CMakeLists.txt            |   2 +-
 libc/test/src/dirent/CMakeLists.txt           |  10 +-
 libc/test/src/err/CMakeLists.txt              |  18 +-
 libc/test/src/errno/CMakeLists.txt            |   4 +-
 libc/test/src/fcntl/CMakeLists.txt            |  14 +-
 libc/test/src/fcntl/linux/CMakeLists.txt      |   2 +-
 libc/test/src/fenv/CMakeLists.txt             |  20 +-
 libc/test/src/fnmatch/CMakeLists.txt          |   2 +-
 libc/test/src/glob/CMakeLists.txt             |   2 +-
 libc/test/src/grp/CMakeLists.txt              |  20 +-
 libc/test/src/inttypes/CMakeLists.txt         |  14 +-
 libc/test/src/libgen/CMakeLists.txt           |   2 +-
 libc/test/src/libintl/CMakeLists.txt          |   2 +-
 libc/test/src/link/CMakeLists.txt             |   4 +-
 libc/test/src/locale/CMakeLists.txt           |   2 +-
 libc/test/src/math/CMakeLists.txt             | 567 +++++++++---------
 libc/test/src/math/exhaustive/CMakeLists.txt  | 152 ++---
 libc/test/src/math/smoke/CMakeLists.txt       |  10 +-
 libc/test/src/mathvec/CMakeLists.txt          |  64 +-
 .../src/mathvec/exhaustive/CMakeLists.txt     |  95 +--
 libc/test/src/net/linux/CMakeLists.txt        |   8 +-
 libc/test/src/netdb/CMakeLists.txt            |   2 +-
 libc/test/src/netinet/CMakeLists.txt          |   6 +-
 libc/test/src/netinet/ether/CMakeLists.txt    |   6 +-
 libc/test/src/nl_types/CMakeLists.txt         |   2 +-
 libc/test/src/poll/CMakeLists.txt             |   6 +-
 libc/test/src/pthread/CMakeLists.txt          |  10 +-
 libc/test/src/pwd/CMakeLists.txt              |  16 +-
 libc/test/src/regex/CMakeLists.txt            |   6 +-
 libc/test/src/sched/CMakeLists.txt            |  28 +-
 libc/test/src/sched/linux/CMakeLists.txt      |   2 +-
 libc/test/src/search/CMakeLists.txt           |  12 +-
 libc/test/src/semaphore/CMakeLists.txt        |  12 +-
 libc/test/src/semaphore/linux/CMakeLists.txt  |   2 +-
 libc/test/src/setjmp/CMakeLists.txt           |   6 +-
 libc/test/src/signal/CMakeLists.txt           |  22 +-
 libc/test/src/spawn/CMakeLists.txt            |   4 +-
 libc/test/src/stdbit/CMakeLists.txt           |   2 +-
 libc/test/src/stdfix/CMakeLists.txt           |   2 +-
 libc/test/src/stdio/CMakeLists.txt            |  86 +--
 libc/test/src/stdio/scanf_core/CMakeLists.txt |   6 +-
 libc/test/src/stdlib/CMakeLists.txt           |   2 +-
 libc/test/src/string/CMakeLists.txt           |   2 +-
 libc/test/src/strings/CMakeLists.txt          |   2 +-
 libc/test/src/sys/auxv/linux/CMakeLists.txt   |   4 +-
 libc/test/src/sys/epoll/linux/CMakeLists.txt  |  14 +-
 .../test/src/sys/eventfd/linux/CMakeLists.txt |   4 +-
 libc/test/src/sys/file/linux/CMakeLists.txt   |   4 +-
 .../test/src/sys/inotify/linux/CMakeLists.txt |  10 +-
 libc/test/src/sys/ioctl/linux/CMakeLists.txt  |   4 +-
 libc/test/src/sys/ipc/linux/CMakeLists.txt    |   4 +-
 libc/test/src/sys/mman/linux/CMakeLists.txt   |  26 +-
 .../src/sys/personality/linux/CMakeLists.txt  |   4 +-
 libc/test/src/sys/prctl/linux/CMakeLists.txt  |   4 +-
 libc/test/src/sys/random/linux/CMakeLists.txt |   6 +-
 libc/test/src/sys/resource/CMakeLists.txt     |   8 +-
 libc/test/src/sys/select/CMakeLists.txt       |  10 +-
 libc/test/src/sys/sem/linux/CMakeLists.txt    |   4 +-
 libc/test/src/sys/sendfile/CMakeLists.txt     |   4 +-
 libc/test/src/sys/socket/linux/CMakeLists.txt |  30 +-
 libc/test/src/sys/stat/CMakeLists.txt         |  32 +-
 libc/test/src/sys/statfs/linux/CMakeLists.txt |   6 +-
 .../test/src/sys/statvfs/linux/CMakeLists.txt |   6 +-
 libc/test/src/sys/sysinfo/CMakeLists.txt      |   4 +-
 .../src/sys/sysmacros/linux/CMakeLists.txt    |   4 +-
 libc/test/src/sys/time/CMakeLists.txt         |  10 +-
 libc/test/src/sys/uio/CMakeLists.txt          |   6 +-
 libc/test/src/sys/utsname/CMakeLists.txt      |   4 +-
 libc/test/src/sys/wait/CMakeLists.txt         |   8 +-
 libc/test/src/sys/xattr/CMakeLists.txt        |   8 +-
 libc/test/src/termios/CMakeLists.txt          |   8 +-
 libc/test/src/time/CMakeLists.txt             |  46 +-
 libc/test/src/ucontext/CMakeLists.txt         |   4 +-
 libc/test/src/unistd/CMakeLists.txt           | 140 ++---
 libc/test/src/wchar/CMakeLists.txt            | 118 ++--
 libc/test/src/wctype/CMakeLists.txt           |  34 +-
 libc/test/utils/UnitTest/CMakeLists.txt       |   4 +-
 118 files changed, 1109 insertions(+), 1310 deletions(-)

diff --git a/libc/benchmarks/gpu/CMakeLists.txt b/libc/benchmarks/gpu/CMakeLists.txt
index c7befd869fe27e..85e768ddf93adc 100644
--- a/libc/benchmarks/gpu/CMakeLists.txt
+++ b/libc/benchmarks/gpu/CMakeLists.txt
@@ -1,6 +1,6 @@
 add_subdirectory(timing)
 
-add_custom_target(gpu-benchmark)
+add_libc_testsuite(gpu-benchmark ROOT)
 
 function(add_benchmark benchmark_name)
   cmake_parse_arguments(
@@ -16,7 +16,6 @@ function(add_benchmark benchmark_name)
   endif()
   add_libc_test(
     ${benchmark_name}
-    IS_GPU_BENCHMARK
     FULL_BUILD_ONLY
     LINK_LIBRARIES
       LibcGpuBenchmark
@@ -28,10 +27,6 @@ function(add_benchmark benchmark_name)
     COMPILE_OPTIONS
       -flto
   )
-  get_fq_target_name(${benchmark_name} fq_target_name)
-  if(TARGET ${fq_target_name})
-    add_dependencies(gpu-benchmark ${fq_target_name})
-  endif()
 endfunction()
 
 function(add_benchmark_framework_library name)
diff --git a/libc/benchmarks/gpu/src/ctype/CMakeLists.txt b/libc/benchmarks/gpu/src/ctype/CMakeLists.txt
index f277624dbb9016..f8654e709c2a11 100644
--- a/libc/benchmarks/gpu/src/ctype/CMakeLists.txt
+++ b/libc/benchmarks/gpu/src/ctype/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-gpu-ctype-benchmarks)
+add_libc_testsuite(libc-gpu-ctype-benchmarks PARENT gpu-benchmark)
 
 add_benchmark(
   isalnum_benchmark
diff --git a/libc/benchmarks/gpu/src/math/CMakeLists.txt b/libc/benchmarks/gpu/src/math/CMakeLists.txt
index c94e44606a85ef..a5b40d2783ef76 100644
--- a/libc/benchmarks/gpu/src/math/CMakeLists.txt
+++ b/libc/benchmarks/gpu/src/math/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-gpu-math-benchmarks)
+add_libc_testsuite(libc-gpu-math-benchmarks PARENT gpu-benchmark)
 
 set(math_benchmark_flags "")
 if(LIBC_TARGET_ARCHITECTURE_IS_NVPTX)
diff --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake
index bc3adc79644ec9..1c7a4252a69d6b 100644
--- a/libc/cmake/modules/LLVMLibCTestRules.cmake
+++ b/libc/cmake/modules/LLVMLibCTestRules.cmake
@@ -317,28 +317,42 @@ if(LLVM_INCLUDE_TESTS AND LLVM_LIBC_FULL_BUILD AND NOT LIBC_TARGET_OS_IS_GPU AND
 endif()
 
 # Rule to add a test suite in the hierarchy.
-# Automatically creates <suite_name> (run target) and <suite_name>-build (build target).
-# Connects them to libc-tests and libc-tests-build.
+# Usage:
+#   add_libc_testsuite(
+#     <suite_name>
+#     [PARENT <parent_suite> | ROOT]
+#     [BUILD_ONLY]
+#   )
+# Automatically creates <suite_name> (run target) and <suite_name>-build (build target),
+# and connects them to <parent_suite> (defaulting to libc-tests unless ROOT is specified).
 function(add_libc_testsuite suite_name)
-  if(NOT TARGET ${suite_name})
-    add_custom_target(${suite_name})
-  endif()
+  llvm_libc_parse_arguments(SUITE ${ARGN})
 
-  if(NOT TARGET ${suite_name}-build)
-    add_custom_target(${suite_name}-build)
-    add_dependencies(libc-tests ${suite_name})
-    add_dependencies(libc-tests-build ${suite_name}-build)
+  if(SUITE_ROOT AND SUITE_PARENT)
+    message(FATAL_ERROR
+      "Cannot specify both ROOT and PARENT for test suite ${suite_name}.")
   endif()
-endfunction()
 
-function(add_libc_exhaustive_testsuite suite_name)
-  add_libc_testsuite(${suite_name})
-  add_dependencies(exhaustive-check-libc ${suite_name})
-endfunction()
+  add_custom_target(${suite_name})
+  add_custom_target(${suite_name}-build)
+
+  if(SUITE_BUILD_ONLY)
+    set_target_properties(${suite_name} PROPERTIES BUILD_ONLY TRUE)
+  endif()
 
-function(add_libc_long_running_testsuite suite_name)
-  add_libc_testsuite(${suite_name})
-  add_dependencies(libc-long-running-tests ${suite_name})
+  if(NOT SUITE_ROOT)
+    if(SUITE_PARENT)
+      set(parent_suite ${SUITE_PARENT})
+    else()
+      set(parent_suite libc-tests)
+    endif()
+    if(SUITE_BUILD_ONLY)
+      add_dependencies(${parent_suite} ${suite_name}-build)
+    else()
+      add_dependencies(${parent_suite} ${suite_name})
+    endif()
+    add_dependencies(${parent_suite}-build ${suite_name}-build)
+  endif()
 endfunction()
 
 # Helper function for create_libc_test: returns the list of libc entrypoints
@@ -630,16 +644,14 @@ function(_add_libc_test_runner fq_target_name fq_build_target_name test_args loa
 endfunction()
 
 # Helper function for create_libc_test: registers the test and its build target
-# with the appropriate test suite (or libc-tests / libc-tests-build).
-function(_register_libc_test_with_suite fq_target_name fq_build_target_name suite)
-  if(suite)
-    add_libc_testsuite(${suite})
-    add_dependencies(${suite} ${fq_target_name})
-    add_dependencies(${suite}-build ${fq_build_target_name})
+# with the appropriate test suite.
+function(_register_libc_test_with_suite fq_target_name fq_build_target_name suite build_only)
+  if(build_only)
+    add_dependencies(${suite} ${fq_build_target_name})
   else()
-    add_dependencies(libc-tests ${fq_target_name})
-    add_dependencies(libc-tests-build ${fq_build_target_name})
+    add_dependencies(${suite} ${fq_target_name})
   endif()
+  add_dependencies(${suite}-build ${fq_build_target_name})
 endfunction()
 
 # Core rule to create a libc test executable and runner (overlay or hermetic).
@@ -650,6 +662,11 @@ function(create_libc_test fq_target_name)
 
   llvm_libc_parse_arguments(TEST ${ARGN})
 
+  if(NOT TEST_SUITE)
+    message(FATAL_ERROR "SUITE not specified for ${fq_target_name}.")
+  endif()
+  get_target_property(suite_build_only ${TEST_SUITE} BUILD_ONLY)
+
   # 1. Validate build mode, target platform, and external library requirements
   if(TEST_NEED_MPC)
     set(TEST_NEED_MPFR TRUE)
@@ -768,8 +785,8 @@ function(create_libc_test fq_target_name)
   endif()
 
   # 3. Create the test executable
-  if(TEST_NO_RUN_POSTBUILD)
-    set(fq_build_target_name ${fq_target_name})
+  if(TEST_BUILD_ONLY OR suite_build_only)
+    set(fq_build_target_name ${fq_target_name}.__build_only__)
   else()
     set(fq_build_target_name ${fq_target_name}.__build__)
   endif()
@@ -827,25 +844,22 @@ function(create_libc_test fq_target_name)
     ${fq_deps_list}
   )
 
-  # 5. Add test runner target if post-build run is enabled
-  if(NOT TEST_NO_RUN_POSTBUILD)
-    _add_libc_test_runner(
-      ${fq_target_name}
-      ${fq_build_target_name}
-      "${TEST_ARGS}"
-      "${TEST_LOADER_ARGS}"
-      "${TEST_ENV}"
-    )
-  endif()
+  # 5. Add test runner target
+  _add_libc_test_runner(
+    ${fq_target_name}
+    ${fq_build_target_name}
+    "${TEST_ARGS}"
+    "${TEST_LOADER_ARGS}"
+    "${TEST_ENV}"
+  )
 
   # 6. Register with test suite
-  if(TEST_IS_GPU_BENCHMARK)
-    if(TEST_SUITE)
-      add_dependencies(${TEST_SUITE} ${fq_target_name})
-    endif()
-  else()
-    _register_libc_test_with_suite(${fq_target_name} ${fq_build_target_name} "${TEST_SUITE}")
-  endif()
+  _register_libc_test_with_suite(
+    ${fq_target_name}
+    ${fq_build_target_name}
+    "${TEST_SUITE}"
+    "${TEST_BUILD_ONLY}"
+  )
 endfunction()
 
 
@@ -1091,60 +1105,19 @@ function(add_integration_test test_name)
     libc.test.IntegrationTest.test
     ${INTEGRATION_TEST_DEPENDS})
 
-  # We have to use a separate var to store the command as a list because
-  # the COMMAND option of `add_custom_target` cannot handle empty vars in the
-  # command. For example, if INTEGRATION_TEST_ENV is empty, the actual
-  # command also will not run. So, we use this list and tell `add_custom_target`
-  # to expand the list (by including the option COMMAND_EXPAND_LISTS). This
-  # makes `add_custom_target` construct the correct command and execute it.
-  set(test_cmd
-    ${INTEGRATION_TEST_ENV}
-    $<$<BOOL:${LIBC_TARGET_ARCHITECTURE_IS_NVPTX}>:LIBOMPTARGET_STACK_SIZE=3072>
-    ${CMAKE_CROSSCOMPILING_EMULATOR}
-    ${INTEGRATION_TEST_LOADER_ARGS}
-    $<TARGET_FILE:${fq_build_target_name}> ${INTEGRATION_TEST_ARGS})
-  # Generate a sidecar .params file alongside the executable for any test that
-  # requires specific command-line arguments or environment variables.  The
-  # LibcTest lit format reads this file at test time.  Format: one arg per line,
-  # a "---" separator, then one KEY=VALUE env entry per line.
-  set(_params_content "")
-  foreach(_arg IN LISTS INTEGRATION_TEST_LOADER_ARGS)
-    string(APPEND _params_content "${_arg}\n")
-  endforeach()
-  string(APPEND _params_content "---\n")
-  foreach(_arg IN LISTS INTEGRATION_TEST_ARGS)
-    string(APPEND _params_content "${_arg}\n")
-  endforeach()
-  string(APPEND _params_content "---\n")
-  foreach(_env_entry IN LISTS INTEGRATION_TEST_ENV)
-    string(APPEND _params_content "${_env_entry}\n")
-  endforeach()
-
-  if(INTEGRATION_TEST_LOADER_ARGS OR INTEGRATION_TEST_ARGS OR INTEGRATION_TEST_ENV)
-    file(GENERATE
-      OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/${fq_build_target_name}.params"
-      CONTENT "${_params_content}"
-    )
-  endif()
-
-  add_custom_target(
+  _add_libc_test_runner(
     ${fq_target_name}
-    COMMAND ${test_cmd}
-    COMMAND_EXPAND_LISTS
-    COMMENT "Running integration test ${fq_target_name}"
+    ${fq_build_target_name}
+    "${INTEGRATION_TEST_ARGS}"
+    "${INTEGRATION_TEST_LOADER_ARGS}"
+    "${INTEGRATION_TEST_ENV}"
+  )
+  _register_libc_test_with_suite(
+    ${fq_target_name}
+    ${fq_build_target_name}
+    "${INTEGRATION_TEST_SUITE}"
+    FALSE
   )
-  if(INTEGRATION_TEST_SUITE)
-    add_dependencies(${INTEGRATION_TEST_SUITE} ${fq_target_name})
-    # If a target named ${INTEGRATION_TEST_SUITE}-build exists, we add the
-    # test executable to it as a dependency. This allows building the
-    # test binaries for Lit without triggering their execution.
-    if(TARGET ${INTEGRATION_TEST_SUITE}-build)
-      add_dependencies(${INTEGRATION_TEST_SUITE}-build ${fq_build_target_name})
-    endif()
-  endif()
-  if(TARGET libc-integration-tests-build)
-    add_dependencies(libc-integration-tests-build ${fq_build_target_name})
-  endif()
 endfunction()
 
 # A unified function to add a libc test.
diff --git a/libc/cmake/modules/LibcParseArguments.cmake b/libc/cmake/modules/LibcParseArguments.cmake
index 990a67284bdaa1..b21eee60a9ce15 100644
--- a/libc/cmake/modules/LibcParseArguments.cmake
+++ b/libc/cmake/modules/LibcParseArguments.cmake
@@ -25,7 +25,7 @@
 #
 #      add_libc_test(
 #        sin_test
-#        SUITE libc_math_tests
+#        SUITE libc-math-tests
 #        SRCS sin_test.cpp
 #        DEPENDS libc.src.math.sin
 #        OVERLAY_DEPENDS libc.test.UnitTest.OverlaySupport
@@ -48,7 +48,7 @@
 #      add_libc_test(
 #        loader_test
 #        FULL_BUILD_ONLY
-#        SUITE libc_loader_tests
+#        SUITE libc-loader-tests
 #        SRCS loader_test.cpp
 #        DEPENDS ...
 #      )
@@ -87,16 +87,13 @@ set(LLVM_LIBC_OPTIONAL_ARGS
   REDIRECTED
   SKIPPED
   NO_GPU_BUNDLE
-  NO_RUN_POSTBUILD
   C_TEST
   NEED_MPFR
   NEED_MPFR_F80
   NEED_MPFR_F128
   NEED_MPC
-  IS_GPU_BENCHMARK
   FP_TEST
   BUILD_ONLY
-  EXHAUSTIVE
   ROOT
   PACKAGE_VARIANTS
   DISPATCH_VARIANTS
diff --git a/libc/src/math/docs/add_math_function.md b/libc/src/math/docs/add_math_function.md
index 0fff2ffd04653c..bd017f1b01b7dd 100644
--- a/libc/src/math/docs/add_math_function.md
+++ b/libc/src/math/docs/add_math_function.md
@@ -217,7 +217,7 @@ implementation (which is very often glibc).
 
 - Run math smoke and unit tests:
 ```
-  $ ninja libc-math-unittests
+  $ ninja libc-math-tests
 ```
 
 - Build and Run a specific unit test:
diff --git a/libc/test/CMakeLists.txt b/libc/test/CMakeLists.txt
index 19fb6ea4a369ff..ae9cd0e4b028f8 100644
--- a/libc/test/CMakeLists.txt
+++ b/libc/test/CMakeLists.txt
@@ -1,11 +1,4 @@
-add_custom_target(libc-tests)
-
-add_custom_target(exhaustive-check-libc)
-add_custom_target(libc-long-running-tests)
-
-# Build-only targets for lit (don't run tests, just build executables)
-add_custom_target(libc-tests-build)
-add_custom_target(libc-integration-tests-build)
+add_libc_testsuite(libc-tests ROOT)
 
 # Configure the site config file for lit
 configure_lit_site_cfg(
diff --git a/libc/test/include/CMakeLists.txt b/libc/test/include/CMakeLists.txt
index a63e1638418467..fb52c23f64bffb 100644
--- a/libc/test/include/CMakeLists.txt
+++ b/libc/test/include/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_libc_testsuite(libc_include_tests)
+add_libc_testsuite(libc-include-tests)
 
 add_libc_test(
   alloca_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     alloca_test.cpp
   DEPENDS
@@ -13,7 +13,7 @@ add_libc_test(
 add_libc_test(
   assert_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     assert_test.cpp
   DEPENDS
@@ -23,7 +23,7 @@ add_libc_test(
 add_libc_test(
   complex_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     complex_test.cpp
   DEPENDS
@@ -33,7 +33,7 @@ add_libc_test(
 add_libc_test(
   unistd_macros_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     unistd_macros_test.cpp
   DEPENDS
@@ -42,7 +42,7 @@ add_libc_test(
 add_libc_test(
   sys_queue_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     sys/queue_test.cpp
   DEPENDS
@@ -57,7 +57,7 @@ add_libc_test(
 add_libc_test(
   stdbit_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   HDRS
     stdbit_stub.h
   SRCS
@@ -75,7 +75,7 @@ add_libc_test(
   stdbit_c_test
   C_TEST
   SUITE
-    libc_include_tests
+    libc-include-tests
   HDRS
     stdbit_stub.h
   SRCS
@@ -97,7 +97,7 @@ add_libc_test(
 add_libc_test(
   stdckdint_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     stdckdint_test.cpp
   DEPENDS
@@ -107,7 +107,7 @@ add_libc_test(
 add_libc_test(
   sched_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     sched_test.cpp
   DEPENDS
@@ -118,7 +118,7 @@ add_libc_test(
 add_libc_test(
   issubnormal_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     issubnormal_test.cpp
   DEPENDS
@@ -128,7 +128,7 @@ add_libc_test(
 add_libc_test(
   issubnormalf_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     issubnormalf_test.cpp
   DEPENDS
@@ -138,7 +138,7 @@ add_libc_test(
 add_libc_test(
   issubnormall_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     issubnormall_test.cpp
   DEPENDS
@@ -148,7 +148,7 @@ add_libc_test(
 add_libc_test(
   isnormal_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isnormal_test.cpp
   DEPENDS
@@ -158,7 +158,7 @@ add_libc_test(
 add_libc_test(
   isnormalf_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isnormalf_test.cpp
   DEPENDS
@@ -168,7 +168,7 @@ add_libc_test(
 add_libc_test(
   isnormall_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isnormall_test.cpp
   DEPENDS
@@ -178,7 +178,7 @@ add_libc_test(
 add_libc_test(
   fpclassify_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     fpclassify_test.cpp
   DEPENDS
@@ -188,7 +188,7 @@ add_libc_test(
 add_libc_test(
   fpclassifyf_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     fpclassifyf_test.cpp
   DEPENDS
@@ -198,7 +198,7 @@ add_libc_test(
 add_libc_test(
   fpclassifyl_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     fpclassifyl_test.cpp
   DEPENDS
@@ -208,7 +208,7 @@ add_libc_test(
 add_libc_test(
   iszero_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     iszero_test.cpp
   DEPENDS
@@ -218,7 +218,7 @@ add_libc_test(
 add_libc_test(
   iszerof_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     iszerof_test.cpp
   DEPENDS
@@ -228,7 +228,7 @@ add_libc_test(
 add_libc_test(
   iszerol_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     iszerol_test.cpp
   DEPENDS
@@ -238,7 +238,7 @@ add_libc_test(
 add_libc_test(
   netinet_in_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     netinet_in_test.cpp
   DEPENDS
@@ -250,7 +250,7 @@ add_subdirectory(net)
 add_libc_test(
   signbit_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     signbit_test.cpp
   DEPENDS
@@ -260,7 +260,7 @@ add_libc_test(
 add_libc_test(
   signbitf_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     signbitf_test.cpp
   DEPENDS
@@ -270,7 +270,7 @@ add_libc_test(
 add_libc_test(
   signbitl_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     signbitl_test.cpp
   DEPENDS
@@ -280,7 +280,7 @@ add_libc_test(
 add_libc_test(
   isnan_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isnan_test.cpp
   DEPENDS
@@ -290,7 +290,7 @@ add_libc_test(
 add_libc_test(
   isnanf_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isnanf_test.cpp
   DEPENDS
@@ -300,7 +300,7 @@ add_libc_test(
 add_libc_test(
   isnanl_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isnanl_test.cpp
   DEPENDS
@@ -310,7 +310,7 @@ add_libc_test(
 add_libc_test(
   isinf_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isinf_test.cpp
   DEPENDS
@@ -320,7 +320,7 @@ add_libc_test(
 add_libc_test(
   isinff_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isinff_test.cpp
   DEPENDS
@@ -330,7 +330,7 @@ add_libc_test(
 add_libc_test(
   isinfl_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isinfl_test.cpp
   DEPENDS
@@ -340,7 +340,7 @@ add_libc_test(
 add_libc_test(
   isfinite_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isfinite_test.cpp
   DEPENDS
@@ -350,7 +350,7 @@ add_libc_test(
 add_libc_test(
   isfinitef_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isfinitef_test.cpp
   DEPENDS
@@ -360,7 +360,7 @@ add_libc_test(
 add_libc_test(
   isfinitel_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isfinitel_test.cpp
   DEPENDS
@@ -371,7 +371,7 @@ add_libc_test(
   signbit_c_test
   C_TEST
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     signbit_test.c
   COMPILE_OPTIONS
@@ -385,7 +385,7 @@ add_libc_test(
   isnan_c_test
   C_TEST
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isnan_test.c
   COMPILE_OPTIONS
@@ -399,7 +399,7 @@ add_libc_test(
   isnormal_c_test
   C_TEST
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isnormal_test.c
   COMPILE_OPTIONS
@@ -414,7 +414,7 @@ add_libc_test(
 #   issignaling_c_test
 #   C_TEST
 #   SUITE
-#     libc_include_tests
+#     libc-include-tests
 #   SRCS
 #     issignaling_test.c
 #   COMPILE_OPTIONS
@@ -431,7 +431,7 @@ add_libc_test(
 #   iscanonical_c_test
 #   C_TEST
 #   SUITE
-#     libc_include_tests
+#     libc-include-tests
 #   SRCS
 #     iscanonical_test.c
 #   COMPILE_OPTIONS
@@ -450,7 +450,7 @@ add_libc_test(
   isinf_c_test
   C_TEST
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isinf_test.c
   COMPILE_OPTIONS
@@ -464,7 +464,7 @@ add_libc_test(
   isfinite_c_test
   C_TEST
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     isfinite_test.c
   COMPILE_OPTIONS
@@ -478,7 +478,7 @@ add_libc_test(
   issubnormal_c_test
   C_TEST
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     issubnormal_test.c
   COMPILE_OPTIONS
@@ -492,7 +492,7 @@ add_libc_test(
   fpclassify_c_test
   C_TEST
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     fpclassify_test.c
   COMPILE_OPTIONS
@@ -506,7 +506,7 @@ add_libc_test(
   iszero_c_test
   C_TEST
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     iszero_test.c
   COMPILE_OPTIONS
@@ -520,7 +520,7 @@ add_libc_test(
   math_constants_c_test
   C_TEST
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     math_constants_test.c
   COMPILE_OPTIONS
@@ -543,7 +543,7 @@ function(add_header_test target_name source_file deps std_mode)
       C_TEST
       FULL_BUILD_ONLY
       SUITE
-        libc_include_tests
+        libc-include-tests
       SRCS
         ${source_file}
       COMPILE_OPTIONS
diff --git a/libc/test/include/net/linux/CMakeLists.txt b/libc/test/include/net/linux/CMakeLists.txt
index 0536f796182ef7..3f4ab86e449e29 100644
--- a/libc/test/include/net/linux/CMakeLists.txt
+++ b/libc/test/include/net/linux/CMakeLists.txt
@@ -1,7 +1,7 @@
 add_libc_test(
   net_if_and_linux_if_test
   SUITE
-    libc_include_tests
+    libc-include-tests
   SRCS
     linux_if_helper.cpp
     net_if_and_linux_if_test.cpp
diff --git a/libc/test/integration/CMakeLists.txt b/libc/test/integration/CMakeLists.txt
index 0eb8bc38c4bf71..c1c2a320438d1b 100644
--- a/libc/test/integration/CMakeLists.txt
+++ b/libc/test/integration/CMakeLists.txt
@@ -1,10 +1,4 @@
-add_custom_target(libc-integration-tests)
-add_dependencies(check-libc libc-integration-tests-build)
-
-function(add_libc_integration_test_suite name)
-  add_custom_target(${name})
-  add_dependencies(libc-integration-tests ${name})
-endfunction()
+add_libc_testsuite(libc-integration-tests)
 
 add_subdirectory(startup)
 add_subdirectory(scudo)
diff --git a/libc/test/integration/src/__support/GPU/CMakeLists.txt b/libc/test/integration/src/__support/GPU/CMakeLists.txt
index a7ecd80a922b58..c7b66d7e48e7fa 100644
--- a/libc/test/integration/src/__support/GPU/CMakeLists.txt
+++ b/libc/test/integration/src/__support/GPU/CMakeLists.txt
@@ -1,9 +1,8 @@
-add_custom_target(libc-support-gpu-tests)
-add_dependencies(libc-integration-tests libc-support-gpu-tests)
+add_libc_testsuite(libc-support-gpu-integration-tests PARENT libc-integration-tests)
 
 add_integration_test(
   scan_reduce_test
-  SUITE libc-support-gpu-tests
+  SUITE libc-support-gpu-integration-tests
   SRCS
     scan_reduce.cpp
   LOADER_ARGS
@@ -12,7 +11,7 @@ add_integration_test(
 
 add_integration_test(
   shuffle_test
-  SUITE libc-support-gpu-tests
+  SUITE libc-support-gpu-integration-tests
   SRCS
     shuffle.cpp
   LOADER_ARGS
@@ -21,7 +20,7 @@ add_integration_test(
 
 add_integration_test(
   match_test
-  SUITE libc-support-gpu-tests
+  SUITE libc-support-gpu-integration-tests
   SRCS
     match.cpp
   LOADER_ARGS
@@ -31,7 +30,7 @@ add_integration_test(
 add_integration_test(
   fixedbuffer_test
   SUITE
-    libc-support-gpu-tests
+    libc-support-gpu-integration-tests
   SRCS
     fixedbuffer_test.cpp
   DEPENDS
diff --git a/libc/test/integration/src/__support/threads/CMakeLists.txt b/libc/test/integration/src/__support/threads/CMakeLists.txt
index 482c3f007fe340..de5738c23c06e7 100644
--- a/libc/test/integration/src/__support/threads/CMakeLists.txt
+++ b/libc/test/integration/src/__support/threads/CMakeLists.txt
@@ -3,7 +3,7 @@ if(NOT (TARGET libc.src.__support.threads.thread AND
   return()
 endif()
 
-add_libc_integration_test_suite(libc-support-threads-integration-tests)
+add_libc_testsuite(libc-support-threads-integration-tests PARENT libc-integration-tests)
 
 add_integration_test(
   thread_detach_test
diff --git a/libc/test/integration/src/pthread/CMakeLists.txt b/libc/test/integration/src/pthread/CMakeLists.txt
index aa99eb7f1cb396..7a2d4a1fb15f2c 100644
--- a/libc/test/integration/src/pthread/CMakeLists.txt
+++ b/libc/test/integration/src/pthread/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_libc_integration_test_suite(libc-pthread-integration-tests)
+add_libc_testsuite(libc-pthread-integration-tests PARENT libc-integration-tests)
 
 add_integration_test(
   pthread_mutex_test
diff --git a/libc/test/integration/src/spawn/CMakeLists.txt b/libc/test/integration/src/spawn/CMakeLists.txt
index f3a7327cc005ed..dc97a3d76402ed 100644
--- a/libc/test/integration/src/spawn/CMakeLists.txt
+++ b/libc/test/integration/src/spawn/CMakeLists.txt
@@ -1,5 +1,4 @@
-add_custom_target(spawn-integration-tests)
-add_dependencies(libc-integration-tests spawn-integration-tests)
+add_libc_testsuite(libc-spawn-integration-tests PARENT libc-integration-tests)
 
 add_executable(
   libc_posix_spawn_test_binary
@@ -23,7 +22,7 @@ add_header_library(
 add_integration_test(
   posix_spawn_test
   SUITE
-    spawn-integration-tests
+    libc-spawn-integration-tests
   SRCS
     posix_spawn_test.cpp
   DEPENDS
diff --git a/libc/test/integration/src/stdio/CMakeLists.txt b/libc/test/integration/src/stdio/CMakeLists.txt
index aca22daf653b81..8a4d671d1fa81d 100644
--- a/libc/test/integration/src/stdio/CMakeLists.txt
+++ b/libc/test/integration/src/stdio/CMakeLists.txt
@@ -1,8 +1,8 @@
+add_libc_testsuite(libc-stdio-integration-tests PARENT libc-integration-tests)
+
 if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS})
   add_subdirectory(${LIBC_TARGET_OS})
 endif()
-add_custom_target(stdio-integration-tests)
-add_dependencies(libc-integration-tests stdio-integration-tests)
 
 # These tests are not for correctness testing, but are instead a convenient way
 # to generate hermetic binaries for comparitive binary size testing.
@@ -11,7 +11,7 @@ if(NOT LIBC_TARGET_ARCHITECTURE_IS_AMDGPU)
   add_integration_test(
     sprintf_size_test
     SUITE
-      stdio-integration-tests
+      libc-stdio-integration-tests
     SRCS
       sprintf_size_test.cpp
     DEPENDS
@@ -27,7 +27,7 @@ endif()
 add_integration_test(
   sprintf_size_test_no_sprintf
   SUITE
-    stdio-integration-tests
+    libc-stdio-integration-tests
   SRCS
     sprintf_size_test.cpp
   ARGS
diff --git a/libc/test/integration/src/stdio/gpu/CMakeLists.txt b/libc/test/integration/src/stdio/gpu/CMakeLists.txt
index 1b896b5ddbe849..b499a51db58f6b 100644
--- a/libc/test/integration/src/stdio/gpu/CMakeLists.txt
+++ b/libc/test/integration/src/stdio/gpu/CMakeLists.txt
@@ -1,5 +1,4 @@
-add_custom_target(stdio-gpu-integration-tests)
-add_dependencies(libc-integration-tests stdio-gpu-integration-tests)
+add_libc_testsuite(libc-stdio-gpu-integration-tests PARENT libc-stdio-integration-tests)
 
 # Create an output directory for any temporary test files.
 file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testdata)
@@ -9,7 +8,7 @@ file(MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/testdata)
 add_integration_test(
   printf_test
   SUITE
-    stdio-gpu-integration-tests
+    libc-stdio-gpu-integration-tests
   SRCS
     printf_test.cpp
   DEPENDS
diff --git a/libc/test/integration/src/stdlib/CMakeLists.txt b/libc/test/integration/src/stdlib/CMakeLists.txt
index f0b86ea6470af6..dc0dc7275f7ced 100644
--- a/libc/test/integration/src/stdlib/CMakeLists.txt
+++ b/libc/test/integration/src/stdlib/CMakeLists.txt
@@ -1,13 +1,13 @@
+add_libc_testsuite(libc-stdlib-integration-tests PARENT libc-integration-tests)
+
 if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS})
   add_subdirectory(${LIBC_TARGET_OS})
 endif()
-add_custom_target(stdlib-integration-tests)
-add_dependencies(libc-integration-tests stdlib-integration-tests)
 
 add_integration_test(
   getenv_test
   SUITE
-    stdlib-integration-tests
+    libc-stdlib-integration-tests
   SRCS
     getenv_test.cpp
   DEPENDS
@@ -21,7 +21,7 @@ if(${LIBC_TARGET_OS} STREQUAL "linux")
   add_integration_test(
     secure_getenv_test
     SUITE
-      stdlib-integration-tests
+      libc-stdlib-integration-tests
     SRCS
       secure_getenv_test.cpp
     DEPENDS
@@ -37,7 +37,7 @@ if(${LIBC_TARGET_OS} STREQUAL "linux")
   add_integration_test(
     setenv_test
     SUITE
-      stdlib-integration-tests
+      libc-stdlib-integration-tests
     SRCS
       setenv_test.cpp
     DEPENDS
@@ -49,7 +49,7 @@ if(${LIBC_TARGET_OS} STREQUAL "linux")
   add_integration_test(
     putenv_test
     SUITE
-      stdlib-integration-tests
+      libc-stdlib-integration-tests
     SRCS
       putenv_test.cpp
     DEPENDS
@@ -62,7 +62,7 @@ if(${LIBC_TARGET_OS} STREQUAL "linux")
   add_integration_test(
     unsetenv_test
     SUITE
-      stdlib-integration-tests
+      libc-stdlib-integration-tests
     SRCS
       unsetenv_test.cpp
     DEPENDS
@@ -78,7 +78,7 @@ if(${LIBC_TARGET_OS} STREQUAL "linux")
   add_integration_test(
     clearenv_test
     SUITE
-      stdlib-integration-tests
+      libc-stdlib-integration-tests
     SRCS
       clearenv_test.cpp
     DEPENDS
@@ -93,7 +93,7 @@ if(${LIBC_TARGET_OS} STREQUAL "linux")
   add_integration_test(
     abort_test
     SUITE
-      stdlib-integration-tests
+      libc-stdlib-integration-tests
     SRCS
       abort_test.cpp
     DEPENDS
@@ -113,7 +113,7 @@ if(${LIBC_TARGET_OS} STREQUAL "linux")
   add_integration_test(
     atexit_thread_test
     SUITE
-      stdlib-integration-tests
+      libc-stdlib-integration-tests
     SRCS
       atexit_thread_test.cpp
     DEPENDS
diff --git a/libc/test/integration/src/stdlib/gpu/CMakeLists.txt b/libc/test/integration/src/stdlib/gpu/CMakeLists.txt
index 5f9a215bb8738b..1a6c900e22cb86 100644
--- a/libc/test/integration/src/stdlib/gpu/CMakeLists.txt
+++ b/libc/test/integration/src/stdlib/gpu/CMakeLists.txt
@@ -1,12 +1,11 @@
-add_custom_target(stdlib-gpu-integration-tests)
-add_dependencies(libc-integration-tests stdlib-gpu-integration-tests)
+add_libc_testsuite(libc-stdlib-gpu-integration-tests PARENT libc-stdlib-integration-tests)
 
 # TODO: Test on NVPTX, requires CUDA VMEM API.
 if(NOT LIBC_TARGET_ARCHITECTURE_IS_NVPTX)
   add_integration_test(
     malloc
     SUITE
-      stdlib-gpu-integration-tests
+      libc-stdlib-gpu-integration-tests
     SRCS
       malloc.cpp
     DEPENDS
@@ -20,7 +19,7 @@ if(NOT LIBC_TARGET_ARCHITECTURE_IS_NVPTX)
   add_integration_test(
     realloc
     SUITE
-      stdlib-gpu-integration-tests
+      libc-stdlib-gpu-integration-tests
     SRCS
       realloc.cpp
     DEPENDS
@@ -35,7 +34,7 @@ if(NOT LIBC_TARGET_ARCHITECTURE_IS_NVPTX)
   add_integration_test(
     aligned_alloc
     SUITE
-      stdlib-gpu-integration-tests
+      libc-stdlib-gpu-integration-tests
     SRCS
       aligned_alloc.cpp
     DEPENDS
@@ -50,7 +49,7 @@ if(NOT LIBC_TARGET_ARCHITECTURE_IS_NVPTX)
   add_integration_test(
     malloc_stress
     SUITE
-      stdlib-gpu-integration-tests
+      libc-stdlib-gpu-integration-tests
     SRCS
       malloc_stress.cpp
     DEPENDS
diff --git a/libc/test/integration/src/sys/ptrace/linux/CMakeLists.txt b/libc/test/integration/src/sys/ptrace/linux/CMakeLists.txt
index 83768523de781c..27000a432d3f4a 100644
--- a/libc/test/integration/src/sys/ptrace/linux/CMakeLists.txt
+++ b/libc/test/integration/src/sys/ptrace/linux/CMakeLists.txt
@@ -1,10 +1,9 @@
-add_custom_target(sys-ptrace-integration-tests)
-add_dependencies(libc-integration-tests sys-ptrace-integration-tests)
+add_libc_testsuite(libc-sys-ptrace-integration-tests PARENT libc-integration-tests)
 
 add_integration_test(
   ptrace_test
   SUITE
-    sys-ptrace-integration-tests
+    libc-sys-ptrace-integration-tests
   SRCS
     ptrace_test.cpp
   DEPENDS
diff --git a/libc/test/integration/src/sys/sem/CMakeLists.txt b/libc/test/integration/src/sys/sem/CMakeLists.txt
index e5f0aa697deb33..3db7714ede402d 100644
--- a/libc/test/integration/src/sys/sem/CMakeLists.txt
+++ b/libc/test/integration/src/sys/sem/CMakeLists.txt
@@ -1,10 +1,9 @@
-add_custom_target(sys-sem-integration-tests)
-add_dependencies(libc-integration-tests sys-sem-integration-tests)
+add_libc_testsuite(libc-sys-sem-integration-tests PARENT libc-integration-tests)
 
 add_integration_test(
   sem_test
   SUITE
-    sys-sem-integration-tests
+    libc-sys-sem-integration-tests
   SRCS
     sem_test.cpp
   DEPENDS
diff --git a/libc/test/integration/src/threads/CMakeLists.txt b/libc/test/integration/src/threads/CMakeLists.txt
index 93b7666d6ac7c7..f5af0dc56f1ebb 100644
--- a/libc/test/integration/src/threads/CMakeLists.txt
+++ b/libc/test/integration/src/threads/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_libc_integration_test_suite(libc-threads-integration-tests)
+add_libc_testsuite(libc-threads-integration-tests PARENT libc-integration-tests)
 
 add_integration_test(
   mtx_test
diff --git a/libc/test/integration/src/ucontext/CMakeLists.txt b/libc/test/integration/src/ucontext/CMakeLists.txt
index 9e4d432ac9d6ad..f96a5cc451cb4b 100644
--- a/libc/test/integration/src/ucontext/CMakeLists.txt
+++ b/libc/test/integration/src/ucontext/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_libc_integration_test_suite(libc-ucontext-integration-tests)
+add_libc_testsuite(libc-ucontext-integration-tests PARENT libc-integration-tests)
 
 add_integration_test(
   ucontext_test
diff --git a/libc/test/integration/src/unistd/CMakeLists.txt b/libc/test/integration/src/unistd/CMakeLists.txt
index 8d2b6bb418e8dc..ea91aaa83a4d82 100644
--- a/libc/test/integration/src/unistd/CMakeLists.txt
+++ b/libc/test/integration/src/unistd/CMakeLists.txt
@@ -1,12 +1,11 @@
-add_custom_target(unistd-integration-tests)
-add_dependencies(libc-integration-tests unistd-integration-tests)
+add_libc_testsuite(libc-unistd-integration-tests PARENT libc-integration-tests)
 
 add_subdirectory(testdata)
 
 add_integration_test(
   getcwd_test
   SUITE
-    unistd-integration-tests
+    libc-unistd-integration-tests
   SRCS
     getcwd_test.cpp
   DEPENDS
@@ -19,7 +18,7 @@ add_integration_test(
 add_integration_test(
   fork_test
   SUITE
-    unistd-integration-tests
+    libc-unistd-integration-tests
   SRCS
     fork_test.cpp
   DEPENDS
@@ -43,7 +42,7 @@ add_integration_test(
 add_integration_test(
   lockf_test
   SUITE
-    unistd-integration-tests
+    libc-unistd-integration-tests
   SRCS
     lockf_test.cpp
   DEPENDS
@@ -67,7 +66,7 @@ if((${LIBC_TARGET_OS} STREQUAL "linux") AND (${LIBC_TARGET_ARCHITECTURE_IS_X86})
   add_integration_test(
     stack_smashing_test
     SUITE
-      unistd-integration-tests
+      libc-unistd-integration-tests
     SRCS
       stack_smashing_test.cpp
     DEPENDS
@@ -138,7 +137,7 @@ set_target_properties(
 add_integration_test(
   execl_test
   SUITE
-    unistd-integration-tests
+    libc-unistd-integration-tests
   SRCS
     execl_test.cpp
   DEPENDS
@@ -158,7 +157,7 @@ add_integration_test(
 add_integration_test(
   execle_test
   SUITE
-    unistd-integration-tests
+    libc-unistd-integration-tests
   SRCS
     execle_test.cpp
   DEPENDS
@@ -175,7 +174,7 @@ add_integration_test(
 add_integration_test(
   execv_test
   SUITE
-    unistd-integration-tests
+    libc-unistd-integration-tests
   SRCS
     execv_test.cpp
   DEPENDS
@@ -192,7 +191,7 @@ add_integration_test(
 add_integration_test(
   execve_test
   SUITE
-    unistd-integration-tests
+    libc-unistd-integration-tests
   SRCS
     execve_test.cpp
   DEPENDS
@@ -209,7 +208,7 @@ add_integration_test(
 add_integration_test(
   execvp_test
   SUITE
-    unistd-integration-tests
+    libc-unistd-integration-tests
   SRCS
     execvp_test.cpp
   DEPENDS
@@ -231,7 +230,7 @@ add_integration_test(
 add_integration_test(
   execvpe_test
   SUITE
-    unistd-integration-tests
+    libc-unistd-integration-tests
   SRCS
     execvpe_test.cpp
   DEPENDS
@@ -252,7 +251,7 @@ add_integration_test(
 add_integration_test(
   fexecve_test
   SUITE
-    unistd-integration-tests
+    libc-unistd-integration-tests
   SRCS
     fexecve_test.cpp
   DEPENDS
diff --git a/libc/test/integration/startup/CMakeLists.txt b/libc/test/integration/startup/CMakeLists.txt
index 2964e22e508b1f..b4bbe81c92ff2e 100644
--- a/libc/test/integration/startup/CMakeLists.txt
+++ b/libc/test/integration/startup/CMakeLists.txt
@@ -1,62 +1,3 @@
-# A rule to add startup system tests. When we have a complete startup system,
-# we should be able to use the add_libc_test rule or an extension of it.
-# But, while the system is being developed,  we need to use a special rule like
-# this.
-function(add_startup_test target_name)
-  if(NOT CMAKE_HOST_UNIX)
-    message(
-      WARNING
-      "Test for the startup system currently assume a POSIX/Unix like "
-      "environment and may not work on your platform.")
-  endif()
-
-  cmake_parse_arguments(
-    "ADD_STARTUP_TEST"
-    "" # No option arguments
-    "SRC" # Single value arguments
-    "DEPENDS;ARGS;ENV" # Multivalue arguments.
-    ${ARGN}
-  )
-
-  get_fq_target_name(${target_name} fq_target_name)
-  add_executable(
-    ${fq_target_name}
-    EXCLUDE_FROM_ALL
-    ${ADD_STARTUP_TEST_SRC}
-  )
-
-  set_target_properties(${fq_target_name} PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
-
-  target_include_directories(
-    ${fq_target_name}
-    PRIVATE
-      ${LIBC_SOURCE_DIR}
-      ${LIBC_BUILD_DIR}
-      ${LIBC_INCLUDE_DIR}
-  )
-
-  if(ADD_STARTUP_TEST_DEPENDS)
-    get_fq_deps_list(fq_deps_list ${ADD_STARTUP_TEST_DEPENDS})
-    add_dependencies(${fq_target_name} ${fq_deps_list})
-    get_object_files_for_test(link_object_files has_skipped_entrypoint_list ${fq_deps_list})
-    target_link_libraries(${fq_target_name} ${link_object_files})
-  endif()
-
-  target_link_options(
-    ${fq_target_name}
-    BEFORE PRIVATE
-    -nostdlib
-  )
-
-  add_custom_command(
-    TARGET ${fq_target_name}
-    POST_BUILD
-    COMMAND ${ADD_STARTUP_TEST_ENV} $<TARGET_FILE:${fq_target_name}> ${ADD_STARTUP_TEST_ARGS}
-  )
-
-  add_dependencies(libc_startup_tests ${fq_target_name})
-endfunction()
-
 if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS})
   add_subdirectory(${LIBC_TARGET_OS})
 endif()
diff --git a/libc/test/integration/startup/gpu/CMakeLists.txt b/libc/test/integration/startup/gpu/CMakeLists.txt
index c0e6ddfe712fd4..35c957ade2b174 100644
--- a/libc/test/integration/startup/gpu/CMakeLists.txt
+++ b/libc/test/integration/startup/gpu/CMakeLists.txt
@@ -1,5 +1,4 @@
-add_custom_target(libc-startup-tests)
-add_dependencies(libc-integration-tests libc-startup-tests)
+add_libc_testsuite(libc-startup-tests PARENT libc-integration-tests)
 
 add_integration_test(
   startup_args_test
diff --git a/libc/test/integration/startup/linux/CMakeLists.txt b/libc/test/integration/startup/linux/CMakeLists.txt
index a0885a9e70990b..0f61efc108eca8 100644
--- a/libc/test/integration/startup/linux/CMakeLists.txt
+++ b/libc/test/integration/startup/linux/CMakeLists.txt
@@ -3,8 +3,7 @@ if(NOT (EXISTS ${LIBC_SOURCE_DIR}/startup/linux/${LIBC_TARGET_ARCHITECTURE}))
   return()
 endif()
 
-add_custom_target(libc-startup-tests)
-add_dependencies(libc-integration-tests libc-startup-tests)
+add_libc_testsuite(libc-startup-tests PARENT libc-integration-tests)
 
 add_integration_test(
   startup_args_test
diff --git a/libc/test/integration/startup/uefi/CMakeLists.txt b/libc/test/integration/startup/uefi/CMakeLists.txt
index cb43dcb31ddf81..c038f4eb9854c9 100644
--- a/libc/test/integration/startup/uefi/CMakeLists.txt
+++ b/libc/test/integration/startup/uefi/CMakeLists.txt
@@ -1,5 +1,4 @@
-add_custom_target(libc-startup-tests)
-add_dependencies(libc-integration-tests libc-startup-tests)
+add_libc_testsuite(libc-startup-tests PARENT libc-integration-tests)
 
 add_integration_test(
   startup_no_args_test
diff --git a/libc/test/src/__support/CMakeLists.txt b/libc/test/src/__support/CMakeLists.txt
index 6f97334657158a..4dd0cd1359c9fa 100644
--- a/libc/test/src/__support/CMakeLists.txt
+++ b/libc/test/src/__support/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-support-tests)
+add_libc_testsuite(libc-support-tests)
 
 if(NOT LIBC_TARGET_OS_IS_GPU)
   add_libc_test(
@@ -311,7 +311,7 @@ if(LIBC_TARGET_OS_IS_BAREMETAL AND
   add_libc_test(
     external_startup_link_test
     FULL_BUILD_ONLY
-    NO_RUN_POSTBUILD
+    BUILD_ONLY
     STARTUP
       .minimal_external_crt1_for_test
     SUITE
@@ -323,7 +323,7 @@ endif()
 
 add_libc_test(
   str_to_float_comparison_test
-  NO_RUN_POSTBUILD
+  BUILD_ONLY
   SUITE
     libc-support-tests
   SRCS
diff --git a/libc/test/src/__support/CPP/CMakeLists.txt b/libc/test/src/__support/CPP/CMakeLists.txt
index 5e2321a2ae7cf2..ac6699c3e65b7f 100644
--- a/libc/test/src/__support/CPP/CMakeLists.txt
+++ b/libc/test/src/__support/CPP/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-cpp-utils-tests)
+add_libc_testsuite(libc-cpp-utils-tests PARENT libc-support-tests)
 
 add_libc_test(
   algorithm_test
diff --git a/libc/test/src/__support/FPUtil/CMakeLists.txt b/libc/test/src/__support/FPUtil/CMakeLists.txt
index deed4f201dd0a5..ead42ebf0911bd 100644
--- a/libc/test/src/__support/FPUtil/CMakeLists.txt
+++ b/libc/test/src/__support/FPUtil/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-fputil-tests)
+add_libc_testsuite(libc-fputil-tests PARENT libc-support-tests)
 
 add_fp_unittest(
   dyadic_float_test
diff --git a/libc/test/src/__support/OSUtil/CMakeLists.txt b/libc/test/src/__support/OSUtil/CMakeLists.txt
index c8818d4715d0f9..9aa0ea64cd3506 100644
--- a/libc/test/src/__support/OSUtil/CMakeLists.txt
+++ b/libc/test/src/__support/OSUtil/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-osutil-tests)
+add_libc_testsuite(libc-osutil-tests PARENT libc-support-tests)
 
 if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS})
   add_subdirectory(${LIBC_TARGET_OS})
diff --git a/libc/test/src/__support/RPC/CMakeLists.txt b/libc/test/src/__support/RPC/CMakeLists.txt
index ba80619307e6c4..fb8a8c89c5fffc 100644
--- a/libc/test/src/__support/RPC/CMakeLists.txt
+++ b/libc/test/src/__support/RPC/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-rpc-tests)
+add_libc_testsuite(libc-rpc-tests PARENT libc-support-tests)
 
 add_libc_test(
   rpc_smoke_test
diff --git a/libc/test/src/__support/fixed_point/CMakeLists.txt b/libc/test/src/__support/fixed_point/CMakeLists.txt
index 384cc9394ee79b..2b3648a7752656 100644
--- a/libc/test/src/__support/fixed_point/CMakeLists.txt
+++ b/libc/test/src/__support/fixed_point/CMakeLists.txt
@@ -2,7 +2,7 @@ if(NOT LIBC_COMPILER_HAS_FIXED_POINT)
   return()
 endif()
 
-add_custom_target(libc-fixed-point-tests)
+add_libc_testsuite(libc-fixed-point-tests PARENT libc-support-tests)
 
 add_libc_test(
   fx_bits_test
diff --git a/libc/test/src/__support/threads/CMakeLists.txt b/libc/test/src/__support/threads/CMakeLists.txt
index deb05689f8f9ac..44ad50d03e3a1f 100644
--- a/libc/test/src/__support/threads/CMakeLists.txt
+++ b/libc/test/src/__support/threads/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-support-threads-tests)
+add_libc_testsuite(libc-support-threads-tests PARENT libc-support-tests)
 
 if(TARGET libc.src.__support.threads.${LIBC_TARGET_OS}.futex_utils)
   add_libc_test(
diff --git a/libc/test/src/__support/time/CMakeLists.txt b/libc/test/src/__support/time/CMakeLists.txt
index 37062e131acf5f..3d5e21bc48ec60 100644
--- a/libc/test/src/__support/time/CMakeLists.txt
+++ b/libc/test/src/__support/time/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-support-time-tests)
+add_libc_testsuite(libc-support-time-tests PARENT libc-support-tests)
 
 if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS})
   add_subdirectory(${LIBC_TARGET_OS})
diff --git a/libc/test/src/__support/wchar/CMakeLists.txt b/libc/test/src/__support/wchar/CMakeLists.txt
index 259e896ee835d4..033ac5b3c774eb 100644
--- a/libc/test/src/__support/wchar/CMakeLists.txt
+++ b/libc/test/src/__support/wchar/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc-support-wchar-tests)
+add_libc_testsuite(libc-support-wchar-tests PARENT libc-support-tests)
 
 add_libc_test(
   string_converter_test
   SUITE
-    libc-support-tests
+    libc-support-wchar-tests
   SRCS
     string_converter_test.cpp
   DEPENDS
@@ -18,7 +18,7 @@ add_libc_test(
 add_libc_test(
   utf8_to_32_test
   SUITE
-    libc-support-tests
+    libc-support-wchar-tests
   SRCS
     utf8_to_32_test.cpp
   DEPENDS
@@ -31,7 +31,7 @@ add_libc_test(
 add_libc_test(
   utf32_to_8_test
   SUITE
-    libc-support-tests
+    libc-support-wchar-tests
   SRCS
     utf32_to_8_test.cpp
   DEPENDS
@@ -44,7 +44,7 @@ add_libc_test(
 add_libc_test(
   wcsnrtombs_test
   SUITE
-    libc-support-tests
+    libc-support-wchar-tests
   SRCS
     wcsnrtombs_test.cpp
   DEPENDS
diff --git a/libc/test/src/__support/wctype/CMakeLists.txt b/libc/test/src/__support/wctype/CMakeLists.txt
index 1f2cc7dcdc59fa..e2bbba2c1b8846 100644
--- a/libc/test/src/__support/wctype/CMakeLists.txt
+++ b/libc/test/src/__support/wctype/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-support-wctype-tests)
+add_libc_testsuite(libc-support-wctype-tests PARENT libc-support-tests)
 
 set(CONSTEXPR_FLAGS "")
 
diff --git a/libc/test/src/arpa/inet/CMakeLists.txt b/libc/test/src/arpa/inet/CMakeLists.txt
index 9959935db1dbba..080eac5f82ad03 100644
--- a/libc/test/src/arpa/inet/CMakeLists.txt
+++ b/libc/test/src/arpa/inet/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_arpa_inet_unittests)
+add_libc_testsuite(libc-arpa-inet-tests)
 
 add_libc_test(
   htonl
   SUITE
-    libc_arpa_inet_unittests
+    libc-arpa-inet-tests
   SRCS
     htonl_test.cpp
   DEPENDS
@@ -14,7 +14,7 @@ add_libc_test(
 add_libc_test(
   htons
   SUITE
-    libc_arpa_inet_unittests
+    libc-arpa-inet-tests
   SRCS
     htons_test.cpp
   DEPENDS
@@ -25,7 +25,7 @@ add_libc_test(
 add_libc_test(
   inet_addr
   SUITE
-    libc_arpa_inet_unittests
+    libc-arpa-inet-tests
   SRCS
     inet_addr_test.cpp
   DEPENDS
@@ -36,7 +36,7 @@ add_libc_test(
 add_libc_test(
   inet_aton
   SUITE
-    libc_arpa_inet_unittests
+    libc-arpa-inet-tests
   SRCS
     inet_aton_test.cpp
   DEPENDS
@@ -47,7 +47,7 @@ add_libc_test(
 add_libc_test(
   inet_ntoa
   SUITE
-    libc_arpa_inet_unittests
+    libc-arpa-inet-tests
   SRCS
     inet_ntoa_test.cpp
   DEPENDS
@@ -59,7 +59,7 @@ add_libc_test(
 add_libc_test(
   inet_ntop
   SUITE
-    libc_arpa_inet_unittests
+    libc-arpa-inet-tests
   SRCS
     inet_ntop_test.cpp
   DEPENDS
@@ -75,7 +75,7 @@ add_libc_test(
 add_libc_test(
   inet_pton
   SUITE
-    libc_arpa_inet_unittests
+    libc-arpa-inet-tests
   SRCS
     inet_pton_test.cpp
   DEPENDS
@@ -92,7 +92,7 @@ add_libc_test(
 add_libc_test(
   ntohl
   SUITE
-    libc_arpa_inet_unittests
+    libc-arpa-inet-tests
   SRCS
     ntohl_test.cpp
   DEPENDS
@@ -103,7 +103,7 @@ add_libc_test(
 add_libc_test(
   ntohs
   SUITE
-    libc_arpa_inet_unittests
+    libc-arpa-inet-tests
   SRCS
     ntohs_test.cpp
   DEPENDS
diff --git a/libc/test/src/assert/CMakeLists.txt b/libc/test/src/assert/CMakeLists.txt
index 7b8d26bd157aa3..8b91c2e52aabe7 100644
--- a/libc/test/src/assert/CMakeLists.txt
+++ b/libc/test/src/assert/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_assert_unittests)
+add_libc_testsuite(libc-assert-tests)
 
 add_libc_test(
   assert_test
   SUITE
-    libc_assert_unittests
+    libc-assert-tests
   SRCS
     assert_test.cpp
   DEPENDS
diff --git a/libc/test/src/compiler/CMakeLists.txt b/libc/test/src/compiler/CMakeLists.txt
index 430f07a576e23c..94f3c542775594 100644
--- a/libc/test/src/compiler/CMakeLists.txt
+++ b/libc/test/src/compiler/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc_stack_chk_guard_unittests)
+add_libc_testsuite(libc-stack-chk-guard-tests)
 
 if(LIBC_TARGET_OS_IS_BAREMETAL)
   return()
@@ -7,7 +7,7 @@ endif()
 add_libc_test(
   stack_chk_guard_test
   SUITE
-    libc_stack_chk_guard_unittests
+    libc-stack-chk-guard-tests
   SRCS
     stack_chk_guard_test.cpp
   DEPENDS
diff --git a/libc/test/src/complex/CMakeLists.txt b/libc/test/src/complex/CMakeLists.txt
index e88416cf13ae19..3ecc54e2b2a353 100644
--- a/libc/test/src/complex/CMakeLists.txt
+++ b/libc/test/src/complex/CMakeLists.txt
@@ -1,10 +1,10 @@
-add_custom_target(libc-complex-unittests)
+add_libc_testsuite(libc-complex-tests)
 
 add_fp_unittest(
   cabs_test
   NEED_MPC
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     cabs_test.cpp
   HDRS
@@ -17,7 +17,7 @@ add_fp_unittest(
   cabsf_test
   NEED_MPC
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     cabsf_test.cpp
   HDRS
@@ -30,7 +30,7 @@ add_fp_unittest(
   carg_test
   NEED_MPC
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     carg_test.cpp
   HDRS
@@ -43,7 +43,7 @@ add_fp_unittest(
   cargf_test
   NEED_MPC
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     cargf_test.cpp
   HDRS
@@ -55,7 +55,7 @@ add_fp_unittest(
 add_fp_unittest(
   conj_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     conj_test.cpp
   DEPENDS
@@ -65,7 +65,7 @@ add_fp_unittest(
 add_fp_unittest(
   conjf_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     conjf_test.cpp
   DEPENDS
@@ -75,7 +75,7 @@ add_fp_unittest(
 add_fp_unittest(
   conjl_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     conjl_test.cpp
   DEPENDS
@@ -85,7 +85,7 @@ add_fp_unittest(
 add_fp_unittest(
   conjf16_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     conjf16_test.cpp
   DEPENDS
@@ -95,7 +95,7 @@ add_fp_unittest(
 add_fp_unittest(
   conjf128_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     conjf128_test.cpp
   DEPENDS
@@ -105,7 +105,7 @@ add_fp_unittest(
 add_fp_unittest(
   cproj_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     cproj_test.cpp
   DEPENDS
@@ -116,7 +116,7 @@ add_fp_unittest(
   cprojf_test
   NEED_MPC
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     cprojf_test.cpp
   DEPENDS
@@ -126,7 +126,7 @@ add_fp_unittest(
 add_fp_unittest(
   cprojl_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     cprojl_test.cpp
   DEPENDS
@@ -136,7 +136,7 @@ add_fp_unittest(
 add_fp_unittest(
   cprojf16_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     cprojf16_test.cpp
   DEPENDS
@@ -146,7 +146,7 @@ add_fp_unittest(
 add_fp_unittest(
   cprojf128_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     cprojf128_test.cpp
   DEPENDS
@@ -156,7 +156,7 @@ add_fp_unittest(
 add_fp_unittest(
   creal_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     creal_test.cpp
   DEPENDS
@@ -166,7 +166,7 @@ add_fp_unittest(
 add_fp_unittest(
   crealf_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     crealf_test.cpp
   DEPENDS
@@ -176,7 +176,7 @@ add_fp_unittest(
 add_fp_unittest(
   creall_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     creall_test.cpp
   DEPENDS
@@ -186,7 +186,7 @@ add_fp_unittest(
 add_fp_unittest(
   crealf16_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     crealf16_test.cpp
   DEPENDS
@@ -196,7 +196,7 @@ add_fp_unittest(
 add_fp_unittest(
   crealf128_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     crealf128_test.cpp
   DEPENDS
@@ -206,7 +206,7 @@ add_fp_unittest(
 add_fp_unittest(
   cimag_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     cimag_test.cpp
   DEPENDS
@@ -216,7 +216,7 @@ add_fp_unittest(
 add_fp_unittest(
   cimagf_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     cimagf_test.cpp
   DEPENDS
@@ -226,7 +226,7 @@ add_fp_unittest(
 add_fp_unittest(
   cimagl_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     cimagl_test.cpp
   DEPENDS
@@ -236,7 +236,7 @@ add_fp_unittest(
 add_fp_unittest(
   cimagf16_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     cimagf16_test.cpp
   DEPENDS
@@ -246,7 +246,7 @@ add_fp_unittest(
 add_fp_unittest(
   cimagf128_test
   SUITE
-    libc-complex-unittests
+    libc-complex-tests
   SRCS
     cimagf128_test.cpp
   DEPENDS
diff --git a/libc/test/src/ctype/CMakeLists.txt b/libc/test/src/ctype/CMakeLists.txt
index 0621f83c2bae76..21c206a8bcc46a 100644
--- a/libc/test/src/ctype/CMakeLists.txt
+++ b/libc/test/src/ctype/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-ctype-tests)
+add_libc_testsuite(libc-ctype-tests)
 
 add_libc_test(
   isalnum_test
diff --git a/libc/test/src/dirent/CMakeLists.txt b/libc/test/src/dirent/CMakeLists.txt
index c7bea2c7e3fcd1..95d93c3883023b 100644
--- a/libc/test/src/dirent/CMakeLists.txt
+++ b/libc/test/src/dirent/CMakeLists.txt
@@ -1,10 +1,10 @@
+add_libc_testsuite(libc-dirent-tests)
 add_subdirectory(testdata)
-add_custom_target(libc_dirent_unittests)
 
 add_libc_test(
   dirent_test
   SUITE
-    libc_dirent_unittests
+    libc-dirent-tests
   SRCS
     dirent_test.cpp
   DEPENDS
@@ -20,7 +20,7 @@ add_libc_test(
 add_libc_test(
   fdopendir_test
   SUITE
-    libc_dirent_unittests
+    libc-dirent-tests
   SRCS
     fdopendir_test.cpp
   DEPENDS
@@ -41,7 +41,7 @@ add_libc_test(
 add_libc_test(
   alphasort_test
   SUITE
-    libc_dirent_unittests
+    libc-dirent-tests
   SRCS
     alphasort_test.cpp
   DEPENDS
@@ -53,7 +53,7 @@ add_libc_test(
 add_libc_test(
   scandir_test
   SUITE
-    libc_dirent_unittests
+    libc-dirent-tests
   SRCS
     scandir_test.cpp
   DEPENDS
diff --git a/libc/test/src/err/CMakeLists.txt b/libc/test/src/err/CMakeLists.txt
index 322e538d4e843b..a9c237b5ba2f76 100644
--- a/libc/test/src/err/CMakeLists.txt
+++ b/libc/test/src/err/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc_err_unittests)
+add_libc_testsuite(libc-err-tests)
 
 if(NOT TARGET libc.src.__support.OSUtil.osutil)
   return()
@@ -7,7 +7,7 @@ endif()
 add_libc_test(
   err_test
   SUITE
-    libc_err_unittests
+    libc-err-tests
   SRCS
     err_test.cpp
   DEPENDS
@@ -18,7 +18,7 @@ add_libc_test(
 add_libc_test(
   errx_test
   SUITE
-    libc_err_unittests
+    libc-err-tests
   SRCS
     errx_test.cpp
   DEPENDS
@@ -28,7 +28,7 @@ add_libc_test(
 add_libc_test(
   verr_test
   SUITE
-    libc_err_unittests
+    libc-err-tests
   SRCS
     verr_test.cpp
   DEPENDS
@@ -39,7 +39,7 @@ add_libc_test(
 add_libc_test(
   verrx_test
   SUITE
-    libc_err_unittests
+    libc-err-tests
   SRCS
     verrx_test.cpp
   DEPENDS
@@ -49,7 +49,7 @@ add_libc_test(
 add_libc_test(
   warn_test
   SUITE
-    libc_err_unittests
+    libc-err-tests
   SRCS
     warn_test.cpp
   DEPENDS
@@ -60,7 +60,7 @@ add_libc_test(
 add_libc_test(
   warnx_test
   SUITE
-    libc_err_unittests
+    libc-err-tests
   SRCS
     warnx_test.cpp
   DEPENDS
@@ -71,7 +71,7 @@ add_libc_test(
 add_libc_test(
   vwarn_test
   SUITE
-    libc_err_unittests
+    libc-err-tests
   SRCS
     vwarn_test.cpp
   DEPENDS
@@ -82,7 +82,7 @@ add_libc_test(
 add_libc_test(
   vwarnx_test
   SUITE
-    libc_err_unittests
+    libc-err-tests
   SRCS
     vwarnx_test.cpp
   DEPENDS
diff --git a/libc/test/src/errno/CMakeLists.txt b/libc/test/src/errno/CMakeLists.txt
index 187e955e7b71c2..b5e63e912c3300 100644
--- a/libc/test/src/errno/CMakeLists.txt
+++ b/libc/test/src/errno/CMakeLists.txt
@@ -2,12 +2,12 @@ if(NOT LLVM_LIBC_FULL_BUILD OR LIBC_TARGET_OS_IS_GPU)
   return()
 endif()
 
-add_custom_target(libc_errno_unittests)
+add_libc_testsuite(libc-errno-tests)
 
 add_libc_test(
   errno_test
   SUITE
-    libc_errno_unittests
+    libc-errno-tests
   SRCS
     errno_test.cpp
   DEPENDS
diff --git a/libc/test/src/fcntl/CMakeLists.txt b/libc/test/src/fcntl/CMakeLists.txt
index 4e8b120ec6a705..1add5ec181f5c0 100644
--- a/libc/test/src/fcntl/CMakeLists.txt
+++ b/libc/test/src/fcntl/CMakeLists.txt
@@ -1,11 +1,11 @@
-add_custom_target(libc_fcntl_unittests)
+add_libc_testsuite(libc-fcntl-tests)
 
 add_subdirectory(testdata)
 
 add_libc_test(
   creat_test
   SUITE
-    libc_fcntl_unittests
+    libc-fcntl-tests
   SRCS
     creat_test.cpp
   DEPENDS
@@ -22,7 +22,7 @@ add_libc_test(
 add_libc_test(
   fcntl_test
   SUITE
-    libc_fcntl_unittests
+    libc-fcntl-tests
   SRCS
     fcntl_test.cpp
   DEPENDS
@@ -43,7 +43,7 @@ add_libc_test(
 add_libc_test(
   openat_test
   SUITE
-    libc_fcntl_unittests
+    libc-fcntl-tests
   SRCS
     openat_test.cpp
   DEPENDS
@@ -60,7 +60,7 @@ add_libc_test(
 add_libc_test(
   posix_fadvise_test
   SUITE
-    libc_fcntl_unittests
+    libc-fcntl-tests
   SRCS
     posix_fadvise_test.cpp
   DEPENDS
@@ -81,7 +81,7 @@ add_libc_test(
 add_libc_test(
   posix_fadvise64_test
   SUITE
-    libc_fcntl_unittests
+    libc-fcntl-tests
   SRCS
     posix_fadvise64_test.cpp
   DEPENDS
@@ -103,7 +103,7 @@ add_libc_test(
 add_libc_test(
   posix_fallocate_test
   SUITE
-    libc_fcntl_unittests
+    libc-fcntl-tests
   SRCS
     posix_fallocate_test.cpp
   DEPENDS
diff --git a/libc/test/src/fcntl/linux/CMakeLists.txt b/libc/test/src/fcntl/linux/CMakeLists.txt
index a280fdbac652c4..a38c5c9de0a343 100644
--- a/libc/test/src/fcntl/linux/CMakeLists.txt
+++ b/libc/test/src/fcntl/linux/CMakeLists.txt
@@ -1,7 +1,7 @@
 add_libc_test(
   fallocate_test
   SUITE
-    libc_fcntl_unittests
+    libc-fcntl-tests
   SRCS
     fallocate_test.cpp
   DEPENDS
diff --git a/libc/test/src/fenv/CMakeLists.txt b/libc/test/src/fenv/CMakeLists.txt
index 3c4135bed8c942..911e162aa613ae 100644
--- a/libc/test/src/fenv/CMakeLists.txt
+++ b/libc/test/src/fenv/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_fenv_unittests)
+add_libc_testsuite(libc-fenv-tests)
 
 add_libc_test(
   rounding_mode_test
   SUITE
-    libc_fenv_unittests
+    libc-fenv-tests
   SRCS
     rounding_mode_test.cpp
   DEPENDS
@@ -15,7 +15,7 @@ add_libc_test(
 add_libc_test(
   exception_status_test
   SUITE
-    libc_fenv_unittests
+    libc-fenv-tests
   SRCS
     exception_status_test.cpp
   DEPENDS
@@ -30,7 +30,7 @@ add_libc_test(
 add_libc_test(
   getenv_and_setenv_test
   SUITE
-    libc_fenv_unittests
+    libc-fenv-tests
   SRCS
     getenv_and_setenv_test.cpp
   DEPENDS
@@ -46,7 +46,7 @@ add_libc_test(
 add_libc_test(
   exception_flags_test
   SUITE
-    libc_fenv_unittests
+    libc-fenv-tests
   SRCS
     exception_flags_test.cpp
   DEPENDS
@@ -60,7 +60,7 @@ add_libc_test(
 add_libc_test(
   feupdateenv_test
   SUITE
-    libc_fenv_unittests
+    libc-fenv-tests
   SRCS
     feupdateenv_test.cpp
   DEPENDS
@@ -73,7 +73,7 @@ add_libc_test(
 add_libc_test(
   feclearexcept_test
   SUITE
-    libc_fenv_unittests
+    libc-fenv-tests
   SRCS
     feclearexcept_test.cpp
   DEPENDS
@@ -85,7 +85,7 @@ add_libc_test(
 add_libc_test(
   feenableexcept_test
   SUITE
-    libc_fenv_unittests
+    libc-fenv-tests
   SRCS
     feenableexcept_test.cpp
   DEPENDS
@@ -105,7 +105,7 @@ if(NOT (LLVM_USE_SANITIZER OR (${LIBC_TARGET_OS} STREQUAL "windows")
   add_fp_unittest(
     enabled_exceptions_test
     SUITE
-      libc_fenv_unittests
+      libc-fenv-tests
     SRCS
       enabled_exceptions_test.cpp
     DEPENDS
@@ -121,7 +121,7 @@ if(NOT (LLVM_USE_SANITIZER OR (${LIBC_TARGET_OS} STREQUAL "windows")
   add_fp_unittest(
     feholdexcept_test
     SUITE
-      libc_fenv_unittests
+      libc-fenv-tests
     SRCS
       feholdexcept_test.cpp
     DEPENDS
diff --git a/libc/test/src/fnmatch/CMakeLists.txt b/libc/test/src/fnmatch/CMakeLists.txt
index a244ad4c7fa156..effdff4ea4ff2a 100644
--- a/libc/test/src/fnmatch/CMakeLists.txt
+++ b/libc/test/src/fnmatch/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-fnmatch-tests)
+add_libc_testsuite(libc-fnmatch-tests)
 
 add_libc_test(
   fnmatch_test
diff --git a/libc/test/src/glob/CMakeLists.txt b/libc/test/src/glob/CMakeLists.txt
index 8410821bccb4e8..8ed2299776ef3b 100644
--- a/libc/test/src/glob/CMakeLists.txt
+++ b/libc/test/src/glob/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-glob-tests)
+add_libc_testsuite(libc-glob-tests)
 
 add_libc_test(
   glob_test
diff --git a/libc/test/src/grp/CMakeLists.txt b/libc/test/src/grp/CMakeLists.txt
index e05586fd8bdc92..516d192b3c396e 100644
--- a/libc/test/src/grp/CMakeLists.txt
+++ b/libc/test/src/grp/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc_grp_unittests)
+add_libc_testsuite(libc-grp-tests)
 
 if(NOT TARGET libc.src.grp.grp_utils)
   return()
@@ -7,7 +7,7 @@ endif()
 add_libc_test(
   grp_utils_test
   SUITE
-    libc_grp_unittests
+    libc-grp-tests
   SRCS
     grp_utils_test.cpp
   DEPENDS
@@ -23,7 +23,7 @@ add_libc_test(
 add_libc_test(
   getgrent_test
   SUITE
-    libc_grp_unittests
+    libc-grp-tests
   HDRS
     grp_test_utils.h
   SRCS
@@ -51,7 +51,7 @@ add_libc_test(
 add_libc_test(
   getgrnam_r_test
   SUITE
-    libc_grp_unittests
+    libc-grp-tests
   HDRS
     grp_test_utils.h
   SRCS
@@ -74,7 +74,7 @@ add_libc_test(
 add_libc_test(
   getgrgid_r_test
   SUITE
-    libc_grp_unittests
+    libc-grp-tests
   HDRS
     grp_test_utils.h
   SRCS
@@ -97,7 +97,7 @@ add_libc_test(
 add_libc_test(
   getgrnam_test
   SUITE
-    libc_grp_unittests
+    libc-grp-tests
   HDRS
     grp_test_utils.h
   SRCS
@@ -126,7 +126,7 @@ add_libc_test(
 add_libc_test(
   getgrgid_test
   SUITE
-    libc_grp_unittests
+    libc-grp-tests
   HDRS
     grp_test_utils.h
   SRCS
@@ -154,7 +154,7 @@ add_libc_test(
 add_libc_test(
   getgrouplist_test
   SUITE
-    libc_grp_unittests
+    libc-grp-tests
   HDRS
     grp_test_utils.h
   SRCS
@@ -183,7 +183,7 @@ add_libc_test(
 add_libc_test(
   initgroups_test
   SUITE
-    libc_grp_unittests
+    libc-grp-tests
   HDRS
     grp_test_utils.h
   SRCS
@@ -211,7 +211,7 @@ add_libc_test(
 add_libc_test(
   setgroups_test
   SUITE
-    libc_grp_unittests
+    libc-grp-tests
   SRCS
     setgroups_test.cpp
   DEPENDS
diff --git a/libc/test/src/inttypes/CMakeLists.txt b/libc/test/src/inttypes/CMakeLists.txt
index f79c9a7f4f6f94..1b43ff86def5a2 100644
--- a/libc/test/src/inttypes/CMakeLists.txt
+++ b/libc/test/src/inttypes/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_inttypes_tests)
+add_libc_testsuite(libc-inttypes-tests)
 
 add_libc_test(
   strtoimax_test
   SUITE
-    libc_inttypes_tests
+    libc-inttypes-tests
   SRCS
     strtoimax_test.cpp
   DEPENDS
@@ -14,7 +14,7 @@ add_libc_test(
 add_libc_test(
   strtoumax_test
   SUITE
-    libc_inttypes_tests
+    libc-inttypes-tests
   SRCS
     strtoumax_test.cpp
   DEPENDS
@@ -25,7 +25,7 @@ add_libc_test(
 add_libc_test(
   imaxdiv_test
   SUITE
-    libc_inttypes_tests
+    libc-inttypes-tests
   SRCS
     imaxdiv_test.cpp
   HDRS
@@ -38,7 +38,7 @@ add_libc_test(
 add_libc_test(
   imaxabs_test
   SUITE
-    libc_inttypes_tests
+    libc-inttypes-tests
   SRCS
     imaxabs_test.cpp
   HDRS
@@ -51,7 +51,7 @@ add_libc_test(
 add_libc_test(
   wcstoimax_test
   SUITE
-    libc_inttypes_tests
+    libc-inttypes-tests
   SRCS
     wcstoimax_test.cpp
   DEPENDS
@@ -62,7 +62,7 @@ add_libc_test(
 add_libc_test(
   wcstoumax_test
   SUITE
-    libc_inttypes_tests
+    libc-inttypes-tests
   SRCS
     wcstoumax_test.cpp
   DEPENDS
diff --git a/libc/test/src/libgen/CMakeLists.txt b/libc/test/src/libgen/CMakeLists.txt
index 5237f5224a7723..b76e043922480c 100644
--- a/libc/test/src/libgen/CMakeLists.txt
+++ b/libc/test/src/libgen/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-libgen-tests)
+add_libc_testsuite(libc-libgen-tests)
 
 add_libc_test(
   basename_test
diff --git a/libc/test/src/libintl/CMakeLists.txt b/libc/test/src/libintl/CMakeLists.txt
index 2b75d81e7d8d02..233a30956385ae 100644
--- a/libc/test/src/libintl/CMakeLists.txt
+++ b/libc/test/src/libintl/CMakeLists.txt
@@ -1,5 +1,5 @@
 if(LLVM_LIBC_FULL_BUILD AND LLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS)
-  add_custom_target(libc-libintl-tests)
+  add_libc_testsuite(libc-libintl-tests)
 
   add_libc_test(
     libintl_test
diff --git a/libc/test/src/link/CMakeLists.txt b/libc/test/src/link/CMakeLists.txt
index 823c96508626eb..75d95cd1272a10 100644
--- a/libc/test/src/link/CMakeLists.txt
+++ b/libc/test/src/link/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_link_unittests)
+add_libc_testsuite(libc-link-tests)
 
 add_libc_test(
   dl_iterate_phdr_test
   SUITE
-    libc_link_unittests
+    libc-link-tests
   SRCS
     dl_iterate_phdr_test.cpp
   DEPENDS
diff --git a/libc/test/src/locale/CMakeLists.txt b/libc/test/src/locale/CMakeLists.txt
index 2a50e2ed87d1b9..bea8eb396d6b93 100644
--- a/libc/test/src/locale/CMakeLists.txt
+++ b/libc/test/src/locale/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-locale-tests)
+add_libc_testsuite(libc-locale-tests)
 
 add_libc_test(
   locale_test
diff --git a/libc/test/src/math/CMakeLists.txt b/libc/test/src/math/CMakeLists.txt
index f01461bf31294d..d94bcd17b6bb16 100644
--- a/libc/test/src/math/CMakeLists.txt
+++ b/libc/test/src/math/CMakeLists.txt
@@ -1,10 +1,10 @@
-add_libc_testsuite(libc-math-unittests)
+add_libc_testsuite(libc-math-tests)
 
 add_fp_unittest(
   cosf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     cosf_test.cpp
   HDRS
@@ -24,7 +24,7 @@ add_fp_unittest(
   cos_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     cos_test.cpp
   DEPENDS
@@ -36,7 +36,7 @@ add_fp_unittest(
   cosf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     cosf16_test.cpp
   DEPENDS
@@ -47,7 +47,7 @@ add_fp_unittest(
   cospif_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     cospif_test.cpp
   HDRS
@@ -63,7 +63,7 @@ add_fp_unittest(
   cospif16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     cospif16_test.cpp
   DEPENDS
@@ -74,7 +74,7 @@ add_fp_unittest(
   daddl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     daddl_test.cpp
   HDRS
@@ -87,7 +87,7 @@ add_fp_unittest(
   sinf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sinf_test.cpp
   HDRS
@@ -107,7 +107,7 @@ add_fp_unittest(
   sinf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sinf16_test.cpp
   DEPENDS
@@ -118,7 +118,7 @@ add_fp_unittest(
   sinpif_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sinpif_test.cpp
   HDRS
@@ -134,7 +134,7 @@ add_fp_unittest(
   sinpif16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sinpif16_test.cpp
   DEPENDS
@@ -145,7 +145,7 @@ add_fp_unittest(
   sin_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sin_test.cpp
   DEPENDS
@@ -157,7 +157,7 @@ add_fp_unittest(
   sincosf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sincosf_test.cpp
   HDRS
@@ -173,7 +173,7 @@ add_fp_unittest(
   sincos_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sincos_test.cpp
   DEPENDS
@@ -185,7 +185,7 @@ add_fp_unittest(
   tanbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     tanbf16_test.cpp
   DEPENDS
@@ -198,7 +198,7 @@ add_fp_unittest(
   tanf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     tanf_test.cpp
   HDRS
@@ -217,7 +217,7 @@ add_fp_unittest(
   tanf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     tanf16_test.cpp
   DEPENDS
@@ -228,7 +228,7 @@ add_fp_unittest(
   tanpif_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     tanpif_test.cpp
   HDRS
@@ -243,7 +243,7 @@ add_fp_unittest(
   lgammaf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     lgammaf_test.cpp
   DEPENDS
@@ -255,7 +255,7 @@ add_fp_unittest(
   lgammaf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     lgammaf16_test.cpp
   DEPENDS
@@ -266,7 +266,7 @@ add_fp_unittest(
   tanpif16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     tanpif16_test.cpp
   DEPENDS
@@ -277,7 +277,7 @@ add_fp_unittest(
   fabs_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fabs_test.cpp
   HDRS
@@ -291,7 +291,7 @@ add_fp_unittest(
   fabsf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fabsf_test.cpp
   HDRS
@@ -305,7 +305,7 @@ add_fp_unittest(
   fabsf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fabsf16_test.cpp
   HDRS
@@ -319,7 +319,7 @@ add_fp_unittest(
   fabsbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fabsbf16_test.cpp
   HDRS
@@ -334,7 +334,7 @@ add_fp_unittest(
   fabsl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fabsl_test.cpp
   HDRS
@@ -348,7 +348,7 @@ add_fp_unittest(
   fadd_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fadd_test.cpp
   HDRS
@@ -362,7 +362,7 @@ add_fp_unittest(
   faddl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     faddl_test.cpp
   HDRS
@@ -375,7 +375,7 @@ add_fp_unittest(
   trunc_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     trunc_test.cpp
   HDRS
@@ -390,7 +390,7 @@ add_fp_unittest(
   truncf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     truncf_test.cpp
   HDRS
@@ -405,7 +405,7 @@ add_fp_unittest(
   truncl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     truncl_test.cpp
   HDRS
@@ -420,7 +420,7 @@ add_fp_unittest(
   truncf128_test
   NEED_MPFR_F128
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     truncf128_test.cpp
   HDRS
@@ -436,7 +436,7 @@ add_fp_unittest(
   truncf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     truncf16_test.cpp
   HDRS
@@ -451,7 +451,7 @@ add_fp_unittest(
   truncbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     truncbf16_test.cpp
   HDRS
@@ -467,7 +467,7 @@ add_fp_unittest(
   ceil_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ceil_test.cpp
   HDRS
@@ -482,7 +482,7 @@ add_fp_unittest(
   ceilf128_test
   NEED_MPFR_F128
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ceilf128_test.cpp
   HDRS
@@ -498,7 +498,7 @@ add_fp_unittest(
   ceilf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ceilf_test.cpp
   HDRS
@@ -513,7 +513,7 @@ add_fp_unittest(
   ceill_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ceill_test.cpp
   HDRS
@@ -528,7 +528,7 @@ add_fp_unittest(
   ceilf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ceilf16_test.cpp
   HDRS
@@ -543,7 +543,7 @@ add_fp_unittest(
   ceilbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ceilbf16_test.cpp
   HDRS
@@ -559,7 +559,7 @@ add_fp_unittest(
   floor_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     floor_test.cpp
   HDRS
@@ -574,7 +574,7 @@ add_fp_unittest(
   floorf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     floorf_test.cpp
   HDRS
@@ -589,7 +589,7 @@ add_fp_unittest(
   floorl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     floorl_test.cpp
   HDRS
@@ -604,7 +604,7 @@ add_fp_unittest(
   floorf128_test
   NEED_MPFR_F128
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     floorf128_test.cpp
   HDRS
@@ -620,7 +620,7 @@ add_fp_unittest(
   floorf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     floorf16_test.cpp
   HDRS
@@ -635,7 +635,7 @@ add_fp_unittest(
   floorbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     floorbf16_test.cpp
   HDRS
@@ -651,7 +651,7 @@ add_fp_unittest(
   round_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     round_test.cpp
   HDRS
@@ -666,7 +666,7 @@ add_fp_unittest(
   roundf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     roundf_test.cpp
   HDRS
@@ -681,7 +681,7 @@ add_fp_unittest(
   roundl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     roundl_test.cpp
   HDRS
@@ -696,7 +696,7 @@ add_fp_unittest(
   roundf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     roundf16_test.cpp
   HDRS
@@ -711,7 +711,7 @@ add_fp_unittest(
   roundbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     roundbf16_test.cpp
   HDRS
@@ -727,7 +727,7 @@ add_fp_unittest(
   roundf128_test
   NEED_MPFR_F128
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     roundf128_test.cpp
   HDRS
@@ -742,7 +742,7 @@ add_fp_unittest(
   roundeven_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     roundeven_test.cpp
   HDRS
@@ -757,7 +757,7 @@ add_fp_unittest(
   roundevenf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     roundevenf_test.cpp
   HDRS
@@ -772,7 +772,7 @@ add_fp_unittest(
   roundevenl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     roundevenl_test.cpp
   HDRS
@@ -787,7 +787,7 @@ add_fp_unittest(
   roundevenf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     roundevenf16_test.cpp
   HDRS
@@ -802,7 +802,7 @@ add_fp_unittest(
   roundevenbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     roundevenbf16_test.cpp
   HDRS
@@ -818,7 +818,7 @@ add_fp_unittest(
   lround_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     lround_test.cpp
   HDRS
@@ -836,7 +836,7 @@ add_fp_unittest(
   lroundf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     lroundf_test.cpp
   HDRS
@@ -854,7 +854,7 @@ add_fp_unittest(
   lroundl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     lroundl_test.cpp
   HDRS
@@ -872,7 +872,7 @@ add_fp_unittest(
   lroundf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     lroundf16_test.cpp
   HDRS
@@ -890,7 +890,7 @@ add_fp_unittest(
   lroundbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     lroundbf16_test.cpp
   HDRS
@@ -909,7 +909,7 @@ add_fp_unittest(
   llround_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     llround_test.cpp
   HDRS
@@ -927,7 +927,7 @@ add_fp_unittest(
   llroundf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     llroundf_test.cpp
   HDRS
@@ -945,7 +945,7 @@ add_fp_unittest(
   llroundl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     llroundl_test.cpp
   HDRS
@@ -963,7 +963,7 @@ add_fp_unittest(
   llroundf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     llroundf16_test.cpp
   HDRS
@@ -981,7 +981,7 @@ add_fp_unittest(
   llroundbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     llroundbf16_test.cpp
   HDRS
@@ -1000,7 +1000,7 @@ add_fp_unittest(
   nearbyint_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     nearbyint_test.cpp
   HDRS
@@ -1015,7 +1015,7 @@ add_fp_unittest(
   nearbyintf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     nearbyintf_test.cpp
   HDRS
@@ -1030,7 +1030,7 @@ add_fp_unittest(
   nearbyintl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     nearbyintl_test.cpp
   HDRS
@@ -1045,7 +1045,7 @@ add_fp_unittest(
   nearbyintf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     nearbyintf16_test.cpp
   HDRS
@@ -1060,7 +1060,7 @@ add_fp_unittest(
   nearbyintbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     nearbyintbf16_test.cpp
   HDRS
@@ -1076,7 +1076,7 @@ add_fp_unittest(
   rint_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     rint_test.cpp
   HDRS
@@ -1093,7 +1093,7 @@ add_fp_unittest(
   rintf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     rintf_test.cpp
   HDRS
@@ -1110,7 +1110,7 @@ add_fp_unittest(
   rintl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     rintl_test.cpp
   HDRS
@@ -1127,7 +1127,7 @@ add_fp_unittest(
   rintf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     rintf16_test.cpp
   HDRS
@@ -1144,7 +1144,7 @@ add_fp_unittest(
   rintbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     rintbf16_test.cpp
   HDRS
@@ -1162,7 +1162,7 @@ add_fp_unittest(
   lrint_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     lrint_test.cpp
   HDRS
@@ -1178,7 +1178,7 @@ add_fp_unittest(
   lrintf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     lrintf_test.cpp
   HDRS
@@ -1194,7 +1194,7 @@ add_fp_unittest(
   lrintl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     lrintl_test.cpp
   HDRS
@@ -1210,7 +1210,7 @@ add_fp_unittest(
   lrintf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     lrintf16_test.cpp
   HDRS
@@ -1226,7 +1226,7 @@ add_fp_unittest(
   lrintbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     lrintbf16_test.cpp
   HDRS
@@ -1243,7 +1243,7 @@ add_fp_unittest(
   llrint_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     llrint_test.cpp
   HDRS
@@ -1259,7 +1259,7 @@ add_fp_unittest(
   llrintf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     llrintf_test.cpp
   HDRS
@@ -1275,7 +1275,7 @@ add_fp_unittest(
   llrintl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     llrintl_test.cpp
   HDRS
@@ -1291,7 +1291,7 @@ add_fp_unittest(
   llrintf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     llrintf16_test.cpp
   HDRS
@@ -1307,7 +1307,7 @@ add_fp_unittest(
   llrintbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     llrintbf16_test.cpp
   HDRS
@@ -1324,7 +1324,7 @@ add_fp_unittest(
   exp_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     exp_test.cpp
   DEPENDS
@@ -1336,7 +1336,7 @@ add_fp_unittest(
   expf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     expf_test.cpp
   DEPENDS
@@ -1354,7 +1354,7 @@ add_fp_unittest(
   expf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     expf16_test.cpp
   DEPENDS
@@ -1365,7 +1365,7 @@ add_fp_unittest(
   expbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     expbf16_test.cpp
   DEPENDS
@@ -1377,7 +1377,7 @@ add_fp_unittest(
   exp2_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     exp2_test.cpp
   DEPENDS
@@ -1393,7 +1393,7 @@ add_fp_unittest(
   exp2f_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     exp2f_test.cpp
   DEPENDS
@@ -1411,7 +1411,7 @@ add_fp_unittest(
   exp2bf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     exp2bf16_test.cpp
   DEPENDS
@@ -1423,7 +1423,7 @@ add_fp_unittest(
   exp2f16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     exp2f16_test.cpp
   DEPENDS
@@ -1434,7 +1434,7 @@ add_fp_unittest(
   exp2m1f_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     exp2m1f_test.cpp
   DEPENDS
@@ -1448,7 +1448,7 @@ add_fp_unittest(
   exp2m1f16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     exp2m1f16_test.cpp
   DEPENDS
@@ -1459,7 +1459,7 @@ add_fp_unittest(
   exp10_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     exp10_test.cpp
   DEPENDS
@@ -1471,7 +1471,7 @@ add_fp_unittest(
   exp10f_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     exp10f_test.cpp
   DEPENDS
@@ -1488,7 +1488,7 @@ add_fp_unittest(
   exp10f16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     exp10f16_test.cpp
   DEPENDS
@@ -1499,7 +1499,7 @@ add_fp_unittest(
   exp10m1f16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     exp10m1f16_test.cpp
   DEPENDS
@@ -1510,7 +1510,7 @@ add_fp_unittest(
   exp10m1f_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     exp10m1f_test.cpp
   DEPENDS
@@ -1524,7 +1524,7 @@ add_fp_unittest(
 add_fp_unittest(
   copysign_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     copysign_test.cpp
   HDRS
@@ -1537,7 +1537,7 @@ add_fp_unittest(
 add_fp_unittest(
   copysignf_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     copysignf_test.cpp
   HDRS
@@ -1550,7 +1550,7 @@ add_fp_unittest(
 add_fp_unittest(
   copysignl_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     copysignl_test.cpp
   HDRS
@@ -1564,7 +1564,7 @@ add_fp_unittest(
   frexp_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     frexp_test.cpp
   HDRS
@@ -1578,7 +1578,7 @@ add_fp_unittest(
   frexpf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     frexpf_test.cpp
   HDRS
@@ -1592,7 +1592,7 @@ add_fp_unittest(
   frexpf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     frexpf16_test.cpp
   HDRS
@@ -1606,7 +1606,7 @@ add_fp_unittest(
   frexpbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     frexpbf16_test.cpp
   HDRS
@@ -1621,7 +1621,7 @@ add_fp_unittest(
   frexpl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     frexpl_test.cpp
   HDRS
@@ -1634,7 +1634,7 @@ add_fp_unittest(
 add_fp_unittest(
   ilogb_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ilogb_test.cpp
   HDRS
@@ -1649,7 +1649,7 @@ add_fp_unittest(
 add_fp_unittest(
   ilogbf_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ilogbf_test.cpp
   HDRS
@@ -1664,7 +1664,7 @@ add_fp_unittest(
 add_fp_unittest(
   ilogbl_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ilogbl_test.cpp
   HDRS
@@ -1679,7 +1679,7 @@ add_fp_unittest(
 add_fp_unittest(
   ldexp_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ldexp_test.cpp
   HDRS
@@ -1694,7 +1694,7 @@ add_fp_unittest(
 add_fp_unittest(
   ldexpf_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ldexpf_test.cpp
   HDRS
@@ -1709,7 +1709,7 @@ add_fp_unittest(
 add_fp_unittest(
   ldexpl_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ldexpl_test.cpp
   HDRS
@@ -1724,7 +1724,7 @@ add_fp_unittest(
 add_fp_unittest(
   logb_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     logb_test.cpp
   DEPENDS
@@ -1735,7 +1735,7 @@ add_fp_unittest(
 add_fp_unittest(
   logbf_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     logbf_test.cpp
   DEPENDS
@@ -1746,7 +1746,7 @@ add_fp_unittest(
 add_fp_unittest(
   logbl_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     logbl_test.cpp
   HDRS
@@ -1759,7 +1759,7 @@ add_fp_unittest(
 add_fp_unittest(
   modf_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     modf_test.cpp
   HDRS
@@ -1773,7 +1773,7 @@ add_fp_unittest(
 add_fp_unittest(
   modff_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     modff_test.cpp
   HDRS
@@ -1787,7 +1787,7 @@ add_fp_unittest(
 add_fp_unittest(
   modfl_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     modfl_test.cpp
   HDRS
@@ -1801,7 +1801,7 @@ add_fp_unittest(
 add_fp_unittest(
   fdimf_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fdimf_test.cpp
   HDRS
@@ -1815,7 +1815,7 @@ add_fp_unittest(
 add_fp_unittest(
   fdim_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fdim_test.cpp
   HDRS
@@ -1829,7 +1829,7 @@ add_fp_unittest(
 add_fp_unittest(
   fdiml_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fdiml_test.cpp
   HDRS
@@ -1843,7 +1843,7 @@ add_fp_unittest(
 add_fp_unittest(
   fminf_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fminf_test.cpp
   HDRS
@@ -1856,7 +1856,7 @@ add_fp_unittest(
 add_fp_unittest(
   fmin_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fmin_test.cpp
   HDRS
@@ -1869,7 +1869,7 @@ add_fp_unittest(
 add_fp_unittest(
   fminl_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fminl_test.cpp
   HDRS
@@ -1882,7 +1882,7 @@ add_fp_unittest(
 add_fp_unittest(
   fmaxf_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fmaxf_test.cpp
   HDRS
@@ -1895,7 +1895,7 @@ add_fp_unittest(
 add_fp_unittest(
   fmax_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fmax_test.cpp
   HDRS
@@ -1908,7 +1908,7 @@ add_fp_unittest(
 add_fp_unittest(
   fmaxl_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fmaxl_test.cpp
   HDRS
@@ -1922,7 +1922,7 @@ add_fp_unittest(
   sqrtf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sqrtf_test.cpp
   HDRS
@@ -1935,7 +1935,7 @@ add_fp_unittest(
   sqrt_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sqrt_test.cpp
   HDRS
@@ -1948,7 +1948,7 @@ add_fp_unittest(
   sqrtl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sqrtl_test.cpp
   HDRS
@@ -1961,7 +1961,7 @@ add_fp_unittest(
   rsqrtf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     rsqrtf_test.cpp
   DEPENDS
@@ -1972,7 +1972,7 @@ add_fp_unittest(
   rsqrtf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     rsqrtf16_test.cpp
   DEPENDS
@@ -1983,7 +1983,7 @@ add_fp_unittest(
   sqrtf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sqrtf16_test.cpp
   DEPENDS
@@ -1994,7 +1994,7 @@ add_fp_unittest(
   sqrtf128_test
   NEED_MPFR_F128
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sqrtf128_test.cpp
   HDRS
@@ -2009,7 +2009,7 @@ add_fp_unittest(
   sqrtbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sqrtbf16_test.cpp
   DEPENDS
@@ -2021,7 +2021,7 @@ add_fp_unittest(
   generic_sqrtf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     generic_sqrtf_test.cpp
   HDRS
@@ -2037,7 +2037,7 @@ add_fp_unittest(
   generic_sqrt_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     generic_sqrt_test.cpp
   HDRS
@@ -2053,7 +2053,7 @@ add_fp_unittest(
   generic_sqrtl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     generic_sqrtl_test.cpp
   HDRS
@@ -2069,7 +2069,7 @@ add_fp_unittest(
   remquof_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     remquof_test.cpp
   HDRS
@@ -2085,7 +2085,7 @@ add_fp_unittest(
   remquof16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     remquof16_test.cpp
   HDRS
@@ -2101,7 +2101,7 @@ add_fp_unittest(
   remquobf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     remquobf16_test.cpp
   HDRS
@@ -2118,7 +2118,7 @@ add_fp_unittest(
   remquo_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     remquo_test.cpp
   HDRS
@@ -2134,7 +2134,7 @@ add_fp_unittest(
   remquol_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     remquol_test.cpp
   HDRS
@@ -2150,7 +2150,7 @@ add_fp_unittest(
   hypotf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     hypotf_test.cpp
   DEPENDS
@@ -2162,7 +2162,7 @@ add_fp_unittest(
   hypot_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     hypot_test.cpp
   DEPENDS
@@ -2174,7 +2174,7 @@ add_fp_unittest(
   hypotbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     hypotbf16_test.cpp
   DEPENDS
@@ -2187,7 +2187,7 @@ add_fp_unittest(
   hypotf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     hypotf16_test.cpp
   DEPENDS
@@ -2197,7 +2197,7 @@ add_fp_unittest(
 add_fp_unittest(
   nextafter_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     nextafter_test.cpp
   HDRS
@@ -2211,7 +2211,7 @@ add_fp_unittest(
 add_fp_unittest(
   nextafterf_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     nextafterf_test.cpp
   HDRS
@@ -2225,7 +2225,7 @@ add_fp_unittest(
 add_fp_unittest(
   nextafterl_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     nextafterl_test.cpp
   HDRS
@@ -2239,7 +2239,7 @@ add_fp_unittest(
 add_fp_unittest(
   nextafterf128_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     nextafterf128_test.cpp
   HDRS
@@ -2256,7 +2256,7 @@ add_fp_unittest(
   fmaf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fmaf_test.cpp
   HDRS
@@ -2273,7 +2273,7 @@ add_fp_unittest(
   fmaf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fmaf16_test.cpp
   HDRS
@@ -2288,7 +2288,7 @@ add_fp_unittest(
   fma_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fma_test.cpp
   HDRS
@@ -2303,7 +2303,7 @@ add_fp_unittest(
   fmabf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fmabf16_test.cpp
   DEPENDS
@@ -2316,7 +2316,7 @@ add_fp_unittest(
   tan_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     tan_test.cpp
   DEPENDS
@@ -2328,7 +2328,7 @@ add_fp_unittest(
   expm1_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     expm1_test.cpp
   DEPENDS
@@ -2340,7 +2340,7 @@ add_fp_unittest(
   expm1f_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     expm1f_test.cpp
   DEPENDS
@@ -2353,7 +2353,7 @@ add_fp_unittest(
   expm1f16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     expm1f16_test.cpp
   DEPENDS
@@ -2364,7 +2364,7 @@ add_fp_unittest(
   log_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     log_test.cpp
   DEPENDS
@@ -2376,7 +2376,7 @@ add_fp_unittest(
   logf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     logf_test.cpp
   DEPENDS
@@ -2388,7 +2388,7 @@ add_fp_unittest(
   logf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     logf16_test.cpp
   DEPENDS
@@ -2399,7 +2399,7 @@ add_fp_unittest(
   log_bf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     log_bf16_test.cpp
   DEPENDS
@@ -2411,7 +2411,7 @@ add_fp_unittest(
   log2_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     log2_test.cpp
   DEPENDS
@@ -2423,7 +2423,7 @@ add_fp_unittest(
   log2f_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     log2f_test.cpp
   DEPENDS
@@ -2436,7 +2436,7 @@ add_fp_unittest(
   log2f16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     log2f16_test.cpp
   DEPENDS
@@ -2447,7 +2447,7 @@ add_fp_unittest(
   log10_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     log10_test.cpp
   DEPENDS
@@ -2459,7 +2459,7 @@ add_fp_unittest(
   log10f_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     log10f_test.cpp
   DEPENDS
@@ -2471,7 +2471,7 @@ add_fp_unittest(
   log10f16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     log10f16_test.cpp
   DEPENDS
@@ -2482,7 +2482,7 @@ add_fp_unittest(
   log10p1f16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     log10p1f16_test.cpp
   DEPENDS
@@ -2493,7 +2493,7 @@ add_fp_unittest(
   log2p1f16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     log2p1f16_test.cpp
   DEPENDS
@@ -2504,7 +2504,7 @@ add_fp_unittest(
   log1p_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     log1p_test.cpp
   DEPENDS
@@ -2516,7 +2516,7 @@ add_fp_unittest(
   log1pf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     log1pf_test.cpp
   DEPENDS
@@ -2527,7 +2527,7 @@ add_fp_unittest(
 add_fp_unittest(
   fmodf_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fmodf_test.cpp
   HDRS
@@ -2542,7 +2542,7 @@ add_fp_unittest(
 add_fp_unittest(
   fmod_test
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fmod_test.cpp
   HDRS
@@ -2558,7 +2558,7 @@ add_fp_unittest(
   explogxf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   HDRS
     in_float_range_test_helper.h
   SRCS
@@ -2574,7 +2574,7 @@ add_fp_unittest(
   coshf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     coshf_test.cpp
   HDRS
@@ -2590,7 +2590,7 @@ add_fp_unittest(
   coshf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     coshf16_test.cpp
   DEPENDS
@@ -2601,7 +2601,7 @@ add_fp_unittest(
   sinhf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sinhf_test.cpp
   HDRS
@@ -2617,7 +2617,7 @@ add_fp_unittest(
   sinhf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sinhf16_test.cpp
   DEPENDS
@@ -2628,7 +2628,7 @@ add_fp_unittest(
   tanhf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     tanhf_test.cpp
   DEPENDS
@@ -2640,7 +2640,7 @@ add_fp_unittest(
   tanhf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     tanhf16_test.cpp
   DEPENDS
@@ -2651,7 +2651,7 @@ add_fp_unittest(
   atanhf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     atanhf_test.cpp
   DEPENDS
@@ -2664,7 +2664,7 @@ add_fp_unittest(
   atanhf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     atanhf16_test.cpp
   DEPENDS
@@ -2675,7 +2675,7 @@ add_fp_unittest(
   atanpif16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     atanpif16_test.cpp
   DEPENDS
@@ -2686,7 +2686,7 @@ add_fp_unittest(
   fmul_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fmul_test.cpp
   HDRS
@@ -2701,7 +2701,7 @@ add_fp_unittest(
   fmull_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fmull_test.cpp
   HDRS
@@ -2716,7 +2716,7 @@ add_fp_unittest(
   asinhf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     asinhf_test.cpp
   DEPENDS
@@ -2728,7 +2728,7 @@ add_fp_unittest(
   asinhf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     asinhf16_test.cpp
   DEPENDS
@@ -2739,7 +2739,7 @@ add_fp_unittest(
   acoshf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     acoshf_test.cpp
   DEPENDS
@@ -2752,7 +2752,7 @@ add_fp_unittest(
   acoshf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     acoshf16_test.cpp
   DEPENDS
@@ -2763,7 +2763,7 @@ add_fp_unittest(
   asinf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     asinf_test.cpp
   DEPENDS
@@ -2776,7 +2776,7 @@ add_fp_unittest(
   asin_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     asin_test.cpp
   DEPENDS
@@ -2787,7 +2787,7 @@ add_fp_unittest(
   asinbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     asinbf16_test.cpp
   DEPENDS
@@ -2800,7 +2800,7 @@ add_fp_unittest(
   asinf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     asinf16_test.cpp
   DEPENDS
@@ -2811,7 +2811,7 @@ add_fp_unittest(
   asinpi_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     asinpi_test.cpp
   DEPENDS
@@ -2822,7 +2822,7 @@ add_fp_unittest(
   asinpif_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     asinpif_test.cpp
   DEPENDS
@@ -2833,7 +2833,7 @@ add_fp_unittest(
   asinpif16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     asinpif16_test.cpp
   DEPENDS
@@ -2844,7 +2844,7 @@ add_fp_unittest(
   acosbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     acosbf16_test.cpp
   DEPENDS
@@ -2857,7 +2857,7 @@ add_fp_unittest(
   acosf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     acosf_test.cpp
   DEPENDS
@@ -2870,7 +2870,7 @@ add_fp_unittest(
   acos_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     acos_test.cpp
   DEPENDS
@@ -2881,7 +2881,7 @@ add_fp_unittest(
   acosf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     acosf16_test.cpp
   DEPENDS
@@ -2892,7 +2892,7 @@ add_fp_unittest(
   acospif_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     acospif_test.cpp
   DEPENDS
@@ -2903,7 +2903,7 @@ add_fp_unittest(
   acospif16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     acospif16_test.cpp
   DEPENDS
@@ -2914,7 +2914,7 @@ add_fp_unittest(
   atanf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     atanf_test.cpp
   DEPENDS
@@ -2926,7 +2926,7 @@ add_fp_unittest(
   atan_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     atan_test.cpp
   DEPENDS
@@ -2938,7 +2938,7 @@ add_fp_unittest(
   atanbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     atanbf16_test.cpp
   DEPENDS
@@ -2951,7 +2951,7 @@ add_fp_unittest(
   atanf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     atanf16_test.cpp
   DEPENDS
@@ -2962,7 +2962,7 @@ add_fp_unittest(
   scalbn_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     scalbn_test.cpp
   HDRS
@@ -2977,7 +2977,7 @@ add_fp_unittest(
   scalbnf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     scalbnf_test.cpp
   HDRS
@@ -2992,7 +2992,7 @@ add_fp_unittest(
   scalbnl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     scalbnl_test.cpp
   HDRS
@@ -3007,7 +3007,7 @@ add_fp_unittest(
   scalbnf128_test
   NEED_MPFR_F128
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     scalbnf128_test.cpp
   HDRS
@@ -3022,7 +3022,7 @@ add_fp_unittest(
   erff_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     erff_test.cpp
   DEPENDS
@@ -3034,7 +3034,7 @@ add_fp_unittest(
   erff16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     erff16_test.cpp
   DEPENDS
@@ -3046,7 +3046,7 @@ add_fp_unittest(
   erfcf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     erfcf16_test.cpp
   DEPENDS
@@ -3058,7 +3058,7 @@ add_fp_unittest(
   pow_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     pow_test.cpp
   DEPENDS
@@ -3069,7 +3069,7 @@ add_fp_unittest(
   powf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     powf_test.cpp
   DEPENDS
@@ -3083,7 +3083,7 @@ add_fp_unittest(
   atan2f_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     atan2f_test.cpp
   DEPENDS
@@ -3095,7 +3095,7 @@ add_fp_unittest(
   atan2f16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     atan2f16_test.cpp
   DEPENDS
@@ -3107,7 +3107,7 @@ add_fp_unittest(
   atan2_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     atan2_test.cpp
   DEPENDS
@@ -3119,7 +3119,7 @@ add_fp_unittest(
   atan2f128_test
   NEED_MPFR_F128
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     atan2f128_test.cpp
   DEPENDS
@@ -3132,7 +3132,7 @@ add_fp_unittest(
   f16add_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16add_test.cpp
   HDRS
@@ -3145,7 +3145,7 @@ add_fp_unittest(
   f16addf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16addf_test.cpp
   HDRS
@@ -3158,7 +3158,7 @@ add_fp_unittest(
   f16addl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16addl_test.cpp
   HDRS
@@ -3171,7 +3171,7 @@ add_fp_unittest(
   f16sub_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16sub_test.cpp
   HDRS
@@ -3184,7 +3184,7 @@ add_fp_unittest(
   f16subf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16subf_test.cpp
   HDRS
@@ -3197,7 +3197,7 @@ add_fp_unittest(
   f16subl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16subl_test.cpp
   HDRS
@@ -3210,7 +3210,7 @@ add_fp_unittest(
   f16div_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16div_test.cpp
   HDRS
@@ -3223,7 +3223,7 @@ add_fp_unittest(
   f16divf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16divf_test.cpp
   HDRS
@@ -3236,7 +3236,7 @@ add_fp_unittest(
   f16divl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16divl_test.cpp
   HDRS
@@ -3249,7 +3249,7 @@ add_fp_unittest(
   f16fma_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16fma_test.cpp
   HDRS
@@ -3264,7 +3264,7 @@ add_fp_unittest(
   f16fmaf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16fmaf_test.cpp
   HDRS
@@ -3279,7 +3279,7 @@ add_fp_unittest(
   f16fmal_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16fmal_test.cpp
   HDRS
@@ -3294,7 +3294,7 @@ add_fp_unittest(
   f16sqrt_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16sqrt_test.cpp
   HDRS
@@ -3307,7 +3307,7 @@ add_fp_unittest(
   f16sqrtf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16sqrtf_test.cpp
   HDRS
@@ -3320,7 +3320,7 @@ add_fp_unittest(
   f16sqrtl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16sqrtl_test.cpp
   HDRS
@@ -3333,7 +3333,7 @@ add_fp_unittest(
   fsqrt_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fsqrt_test.cpp
   HDRS
@@ -3346,7 +3346,7 @@ add_fp_unittest(
   fsqrtl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fsqrtl_test.cpp
   HDRS
@@ -3359,7 +3359,7 @@ add_fp_unittest(
   fsub_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fsub_test.cpp
   HDRS
@@ -3372,7 +3372,7 @@ add_fp_unittest(
   fsubl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fsubl_test.cpp
   HDRS
@@ -3385,7 +3385,7 @@ add_fp_unittest(
   dsqrtl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     dsqrtl_test.cpp
   HDRS
@@ -3398,7 +3398,7 @@ add_fp_unittest(
   cbrtf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     cbrtf_test.cpp
   DEPENDS
@@ -3410,7 +3410,7 @@ add_fp_unittest(
   cbrt_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     cbrt_test.cpp
   DEPENDS
@@ -3422,7 +3422,7 @@ add_fp_unittest(
   cbrtf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     cbrtf16_test.cpp
   DEPENDS
@@ -3434,7 +3434,7 @@ add_fp_unittest(
   cbrtbf16_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     cbrtbf16_test.cpp
   DEPENDS
@@ -3446,7 +3446,7 @@ add_fp_unittest(
   dmull_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     dmull_test.cpp
   HDRS
@@ -3461,7 +3461,7 @@ add_fp_unittest(
   f16mul_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16mul_test.cpp
   HDRS
@@ -3476,7 +3476,7 @@ add_fp_unittest(
   f16mulf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16mulf_test.cpp
   HDRS
@@ -3491,7 +3491,7 @@ add_fp_unittest(
   f16mull_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     f16mull_test.cpp
   HDRS
@@ -3506,7 +3506,7 @@ add_fp_unittest(
   ddivl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ddivl_test.cpp
   HDRS
@@ -3519,7 +3519,7 @@ add_fp_unittest(
   dfmal_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     dfmal_test.cpp
   HDRS
@@ -3534,7 +3534,7 @@ add_fp_unittest(
   dsubl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     dsubl_test.cpp
   HDRS
@@ -3547,7 +3547,7 @@ add_fp_unittest(
   fdiv_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fdiv_test.cpp
   HDRS
@@ -3560,7 +3560,7 @@ add_fp_unittest(
   fdivl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     fdivl_test.cpp
   HDRS
@@ -3573,7 +3573,7 @@ add_fp_unittest(
   ffma_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ffma_test.cpp
   HDRS
@@ -3588,7 +3588,7 @@ add_fp_unittest(
   ffmal_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     ffmal_test.cpp
   HDRS
@@ -3603,7 +3603,7 @@ add_fp_unittest(
   add_same_type_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     add_same_type_test.cpp
   HDRS
@@ -3618,7 +3618,7 @@ add_fp_unittest(
   sub_same_type_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     sub_same_type_test.cpp
   HDRS
@@ -3633,7 +3633,7 @@ add_fp_unittest(
   bf16add_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16add_test.cpp
   HDRS
@@ -3647,7 +3647,7 @@ add_fp_unittest(
   bf16addf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16addf_test.cpp
   HDRS
@@ -3661,7 +3661,7 @@ add_fp_unittest(
   bf16addl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16addl_test.cpp
   HDRS
@@ -3675,7 +3675,7 @@ add_fp_unittest(
   bf16addf128_test
   NEED_MPFR_F128
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16addf128_test.cpp
   HDRS
@@ -3689,7 +3689,7 @@ add_fp_unittest(
   bf16div_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16div_test.cpp
   HDRS
@@ -3703,7 +3703,7 @@ add_fp_unittest(
   bf16divf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16divf_test.cpp
   HDRS
@@ -3717,7 +3717,7 @@ add_fp_unittest(
   bf16divl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16divl_test.cpp
   HDRS
@@ -3731,7 +3731,7 @@ add_fp_unittest(
   bf16divf128_test
   NEED_MPFR_F128
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16divf128_test.cpp
   HDRS
@@ -3745,7 +3745,7 @@ add_fp_unittest(
   bf16fma_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16fma_test.cpp
   HDRS
@@ -3761,7 +3761,7 @@ add_fp_unittest(
   bf16fmaf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16fmaf_test.cpp
   HDRS
@@ -3777,7 +3777,7 @@ add_fp_unittest(
   bf16fmal_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16fmal_test.cpp
   HDRS
@@ -3793,7 +3793,7 @@ add_fp_unittest(
   bf16fmaf128_test
   NEED_MPFR_F128
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16fmaf128_test.cpp
   HDRS
@@ -3809,7 +3809,7 @@ add_fp_unittest(
   bf16mul_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16mul_test.cpp
   HDRS
@@ -3825,7 +3825,7 @@ add_fp_unittest(
   bf16mulf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16mulf_test.cpp
   HDRS
@@ -3841,7 +3841,7 @@ add_fp_unittest(
   bf16mull_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16mull_test.cpp
   HDRS
@@ -3857,7 +3857,7 @@ add_fp_unittest(
   bf16mulf128_test
   NEED_MPFR_F128
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16mulf128_test.cpp
   HDRS
@@ -3873,7 +3873,7 @@ add_fp_unittest(
   bf16sub_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16sub_test.cpp
   HDRS
@@ -3887,7 +3887,7 @@ add_fp_unittest(
   bf16subf_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16subf_test.cpp
   HDRS
@@ -3901,7 +3901,7 @@ add_fp_unittest(
   bf16subl_test
   NEED_MPFR
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16subl_test.cpp
   HDRS
@@ -3915,7 +3915,7 @@ add_fp_unittest(
   bf16subf128_test
   NEED_MPFR_F128
   SUITE
-    libc-math-unittests
+    libc-math-tests
   SRCS
     bf16subf128_test.cpp
   HDRS
@@ -3927,9 +3927,6 @@ add_fp_unittest(
 
 add_subdirectory(smoke)
 
-add_custom_target(libc-math-all-tests)
-add_dependencies(libc-math-all-tests libc-math-smoke-tests libc-math-unittests)
-
 if(NOT LLVM_LIBC_FULL_BUILD)
   add_subdirectory(exhaustive)
   add_subdirectory(performance_testing)
diff --git a/libc/test/src/math/exhaustive/CMakeLists.txt b/libc/test/src/math/exhaustive/CMakeLists.txt
index bc5873bb31f92b..91a06aaf2f4b0d 100644
--- a/libc/test/src/math/exhaustive/CMakeLists.txt
+++ b/libc/test/src/math/exhaustive/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_libc_exhaustive_testsuite(libc_math_exhaustive_tests)
+add_libc_testsuite(libc-math-exhaustive-tests BUILD_ONLY PARENT libc-math-tests)
 
 add_header_library(
   exhaustive_test
@@ -34,10 +34,9 @@ add_header_library(
 
 add_fp_unittest(
   sqrtf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     sqrtf_test.cpp
   DEPENDS
@@ -50,10 +49,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   rsqrtf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     rsqrtf_test.cpp
   DEPENDS
@@ -65,10 +63,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   sinf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     sinf_test.cpp
   DEPENDS
@@ -82,10 +79,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   sin_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     sin_test.cpp
   DEPENDS
@@ -98,10 +94,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   sinpif_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     sinpif_test.cpp
   DEPENDS
@@ -114,10 +109,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   cosf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     cosf_test.cpp
   DEPENDS
@@ -131,10 +125,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   cos_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     cos_test.cpp
   DEPENDS
@@ -147,10 +140,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   cospif_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     cospif_test.cpp
   DEPENDS
@@ -163,10 +155,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   sincosf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     sincosf_test.cpp
   DEPENDS
@@ -179,10 +170,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   tanf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     tanf_test.cpp
   DEPENDS
@@ -196,10 +186,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   tanpif_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     tanpif_test.cpp
   DEPENDS
@@ -212,10 +201,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   erff_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     erff_test.cpp
   DEPENDS
@@ -228,10 +216,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   expf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     expf_test.cpp
   DEPENDS
@@ -248,10 +235,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   exp2f_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     exp2f_test.cpp
   DEPENDS
@@ -268,10 +254,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   exp2m1f_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     exp2m1f_test.cpp
   DEPENDS
@@ -283,10 +268,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   exp10f_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     exp10f_test.cpp
   DEPENDS
@@ -300,10 +284,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   exp10m1f_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     exp10m1f_test.cpp
   DEPENDS
@@ -315,10 +298,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   expm1f_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     expm1f_test.cpp
   DEPENDS
@@ -331,10 +313,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   fmabf16_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     fmabf16_test.cpp
   COMPILE_OPTIONS
@@ -350,10 +331,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   logf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     logf_test.cpp
   DEPENDS
@@ -366,10 +346,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   log10f_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     log10f_test.cpp
   DEPENDS
@@ -382,10 +361,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   log1pf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     log1pf_test.cpp
   DEPENDS
@@ -398,10 +376,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   log2f_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     log2f_test.cpp
   DEPENDS
@@ -414,10 +391,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   hypotbf16_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     hypotbf16_test.cpp
   COMPILE_OPTIONS
@@ -432,10 +408,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   hypotf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     hypotf_test.cpp
   COMPILE_OPTIONS
@@ -450,10 +425,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   hypotf16_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     hypotf16_test.cpp
   COMPILE_OPTIONS
@@ -468,10 +442,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   atan2f16_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     atan2f16_test.cpp
   DEPENDS
@@ -484,10 +457,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   fmod_generic_impl_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     fmod_generic_impl_test.cpp
   DEPENDS
@@ -498,10 +470,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   fmodf16_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     fmodf16_test.cpp
   DEPENDS
@@ -513,10 +484,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   fmodbf16_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     fmodbf16_test.cpp
   DEPENDS
@@ -529,10 +499,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   coshf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     coshf_test.cpp
   DEPENDS
@@ -545,10 +514,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   sinhf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     sinhf_test.cpp
   DEPENDS
@@ -561,10 +529,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   tanhf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     tanhf_test.cpp
   DEPENDS
@@ -577,10 +544,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   acoshf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     acoshf_test.cpp
   DEPENDS
@@ -593,10 +559,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   acospif_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     acospif_test.cpp
   DEPENDS
@@ -609,10 +574,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   asinhf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     asinhf_test.cpp
   DEPENDS
@@ -625,10 +589,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   asinpif_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     asinpif_test.cpp
   DEPENDS
@@ -641,10 +604,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   atanhf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     atanhf_test.cpp
   DEPENDS
@@ -657,10 +619,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   atanf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     atanf_test.cpp
   DEPENDS
@@ -673,10 +634,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   atanf_float_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     atanf_float_test.cpp
   LINK_LIBRARIES
@@ -688,10 +648,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   asinf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     asinf_test.cpp
   DEPENDS
@@ -704,10 +663,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   acosf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     acosf_test.cpp
   DEPENDS
@@ -720,10 +678,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   f16sqrtf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     f16sqrtf_test.cpp
   DEPENDS
@@ -735,10 +692,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   cbrtf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     cbrtf_test.cpp
   DEPENDS
@@ -751,10 +707,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   bfloat16_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     bfloat16_test.cpp
   DEPENDS
@@ -767,10 +722,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   bfloat16_add_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     bfloat16_add_test.cpp
   COMPILE_OPTIONS
@@ -785,10 +739,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   bfloat16_div_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     bfloat16_div_test.cpp
   COMPILE_OPTIONS
@@ -803,10 +756,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   bfloat16_mul_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     bfloat16_mul_test.cpp
   COMPILE_OPTIONS
@@ -821,10 +773,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   bfloat16_sub_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     bfloat16_sub_test.cpp
   COMPILE_OPTIONS
@@ -839,10 +790,9 @@ add_fp_unittest(
 
 add_fp_unittest(
   lgammaf_test
-  NO_RUN_POSTBUILD
   NEED_MPFR
   SUITE
-    libc_math_exhaustive_tests
+    libc-math-exhaustive-tests
   SRCS
     lgammaf_test.cpp
   DEPENDS
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index 0e3f639435afc6..675c291f56f8ba 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_libc_testsuite(libc-math-smoke-tests)
+add_libc_testsuite(libc-math-smoke-tests PARENT libc-math-tests)
 
 add_fp_unittest(
   cosf_test
@@ -286,7 +286,7 @@ add_fp_unittest(
 add_fp_unittest(
   faddl_test
   SUITE
-    libc-math-unittests
+    libc-math-smoke-tests
   SRCS
     faddl_test.cpp
   HDRS
@@ -301,7 +301,7 @@ add_fp_unittest(
 add_fp_unittest(
   faddf128_test
   SUITE
-    libc-math-unittests
+    libc-math-smoke-tests
   SRCS
     faddf128_test.cpp
   HDRS
@@ -4841,7 +4841,7 @@ add_fp_unittest(
 add_fp_unittest(
   atanpif16_test
   SUITE
-    libc-math-unittests
+    libc-math-smoke-tests
   SRCS
     atanpif16_test.cpp
   DEPENDS
@@ -4898,7 +4898,7 @@ add_fp_unittest(
 add_fp_unittest(
   asinpif16_test
   SUITE
-    libc-math-unittests
+    libc-math-smoke-tests
   SRCS
     asinpif16_test.cpp
   DEPENDS
diff --git a/libc/test/src/mathvec/CMakeLists.txt b/libc/test/src/mathvec/CMakeLists.txt
index 597845abcc9596..3a41ab0da9759f 100644
--- a/libc/test/src/mathvec/CMakeLists.txt
+++ b/libc/test/src/mathvec/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-mathvec-unittests)
+add_libc_testsuite(libc-mathvec-tests)
 
 add_header_library(
   unit_test_wrappers
@@ -11,7 +11,7 @@ add_header_library(
 add_fp_unittest(
   acosf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     acosf_test.cpp
   DEPENDS
@@ -28,7 +28,7 @@ add_fp_unittest(
 add_fp_unittest(
   acoshf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     acoshf_test.cpp
   DEPENDS
@@ -45,7 +45,7 @@ add_fp_unittest(
 add_fp_unittest(
   acospif_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     acospif_test.cpp
   DEPENDS
@@ -62,7 +62,7 @@ add_fp_unittest(
 add_fp_unittest(
   asinf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     asinf_test.cpp
   DEPENDS
@@ -79,7 +79,7 @@ add_fp_unittest(
 add_fp_unittest(
   asinhf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     asinhf_test.cpp
   DEPENDS
@@ -96,7 +96,7 @@ add_fp_unittest(
 add_fp_unittest(
   asinpif_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     asinpif_test.cpp
   DEPENDS
@@ -113,7 +113,7 @@ add_fp_unittest(
 add_fp_unittest(
   atanf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     atanf_test.cpp
   DEPENDS
@@ -130,7 +130,7 @@ add_fp_unittest(
 add_fp_unittest(
   atanhf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     atanhf_test.cpp
   DEPENDS
@@ -147,7 +147,7 @@ add_fp_unittest(
 add_fp_unittest(
   cbrtf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     cbrtf_test.cpp
   DEPENDS
@@ -164,7 +164,7 @@ add_fp_unittest(
 add_fp_unittest(
   cosf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     cosf_test.cpp
   HDRS
@@ -183,7 +183,7 @@ add_fp_unittest(
 add_fp_unittest(
   coshf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     coshf_test.cpp
   DEPENDS
@@ -200,7 +200,7 @@ add_fp_unittest(
 add_fp_unittest(
   cospif_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     cospif_test.cpp
   HDRS
@@ -219,7 +219,7 @@ add_fp_unittest(
 add_fp_unittest(
   erff_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     erff_test.cpp
   DEPENDS
@@ -236,7 +236,7 @@ add_fp_unittest(
 add_fp_unittest(
   exp2f_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     exp2f_test.cpp
   DEPENDS
@@ -253,7 +253,7 @@ add_fp_unittest(
 add_fp_unittest(
   exp2m1f_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     exp2m1f_test.cpp
   DEPENDS
@@ -270,7 +270,7 @@ add_fp_unittest(
 add_fp_unittest(
   exp10f_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     exp10f_test.cpp
   DEPENDS
@@ -287,7 +287,7 @@ add_fp_unittest(
 add_fp_unittest(
   exp10m1f_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     exp10m1f_test.cpp
   DEPENDS
@@ -304,7 +304,7 @@ add_fp_unittest(
 add_fp_unittest(
   expf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     expf_test.cpp
   DEPENDS
@@ -321,7 +321,7 @@ add_fp_unittest(
 add_fp_unittest(
   expm1f_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     expm1f_test.cpp
   DEPENDS
@@ -338,7 +338,7 @@ add_fp_unittest(
 add_fp_unittest(
   log10f_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     log10f_test.cpp
   DEPENDS
@@ -355,7 +355,7 @@ add_fp_unittest(
 add_fp_unittest(
   log1pf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     log1pf_test.cpp
   DEPENDS
@@ -372,7 +372,7 @@ add_fp_unittest(
 add_fp_unittest(
   log2f_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     log2f_test.cpp
   DEPENDS
@@ -389,7 +389,7 @@ add_fp_unittest(
 add_fp_unittest(
   logf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     logf_test.cpp
   DEPENDS
@@ -406,7 +406,7 @@ add_fp_unittest(
 add_fp_unittest(
   rsqrtf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     rsqrtf_test.cpp
   DEPENDS
@@ -425,7 +425,7 @@ if(NOT LIBC_CONF_MATH_OPTIMIZATIONS MATCHES
   add_fp_unittest(
     sinf_test
     SUITE
-      libc-mathvec-unittests
+      libc-mathvec-tests
     SRCS
       sinf_test.cpp
     HDRS
@@ -446,7 +446,7 @@ endif()
 add_fp_unittest(
   sinhf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     sinhf_test.cpp
   DEPENDS
@@ -463,7 +463,7 @@ add_fp_unittest(
 add_fp_unittest(
   sinpif_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     sinpif_test.cpp
   HDRS
@@ -482,7 +482,7 @@ add_fp_unittest(
 add_fp_unittest(
   sqrtf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     sqrtf_test.cpp
   DEPENDS
@@ -499,7 +499,7 @@ add_fp_unittest(
 add_fp_unittest(
   tanf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     tanf_test.cpp
   HDRS
@@ -518,7 +518,7 @@ add_fp_unittest(
 add_fp_unittest(
   tanhf_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     tanhf_test.cpp
   DEPENDS
@@ -535,7 +535,7 @@ add_fp_unittest(
 add_fp_unittest(
   tanpif_test
   SUITE
-    libc-mathvec-unittests
+    libc-mathvec-tests
   SRCS
     tanpif_test.cpp
   HDRS
diff --git a/libc/test/src/mathvec/exhaustive/CMakeLists.txt b/libc/test/src/mathvec/exhaustive/CMakeLists.txt
index bebbb42164d49b..099678f5121f65 100644
--- a/libc/test/src/mathvec/exhaustive/CMakeLists.txt
+++ b/libc/test/src/mathvec/exhaustive/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_libc_exhaustive_testsuite(libc-mathvec-exhaustivetests)
+add_libc_testsuite(libc-mathvec-exhaustive-tests BUILD_ONLY PARENT libc-mathvec-tests)
 
 add_header_library(
   exhaustive_test
@@ -11,9 +11,8 @@ add_header_library(
 
 add_fp_unittest(
   acosf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     acosf_test.cpp
   DEPENDS
@@ -27,9 +26,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   acoshf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     acoshf_test.cpp
   DEPENDS
@@ -43,9 +41,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   acospif_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     acospif_test.cpp
   DEPENDS
@@ -59,9 +56,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   asinf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     asinf_test.cpp
   DEPENDS
@@ -75,9 +71,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   asinhf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     asinhf_test.cpp
   DEPENDS
@@ -91,9 +86,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   asinpif_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     asinpif_test.cpp
   DEPENDS
@@ -107,9 +101,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   atanf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     atanf_test.cpp
   DEPENDS
@@ -123,9 +116,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   atanhf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     atanhf_test.cpp
   DEPENDS
@@ -139,9 +131,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   cbrtf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     cbrtf_test.cpp
   DEPENDS
@@ -155,9 +146,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   cosf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     cosf_test.cpp
   DEPENDS
@@ -171,9 +161,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   coshf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     coshf_test.cpp
   DEPENDS
@@ -187,9 +176,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   cospif_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     cospif_test.cpp
   DEPENDS
@@ -203,9 +191,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   erff_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     erff_test.cpp
   DEPENDS
@@ -219,9 +206,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   exp2f_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     exp2f_test.cpp
   DEPENDS
@@ -235,9 +221,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   exp2m1f_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     exp2m1f_test.cpp
   DEPENDS
@@ -251,9 +236,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   exp10f_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     exp10f_test.cpp
   DEPENDS
@@ -267,9 +251,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   exp10m1f_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     exp10m1f_test.cpp
   DEPENDS
@@ -283,9 +266,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   expf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     expf_test.cpp
   DEPENDS
@@ -299,9 +281,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   expm1f_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     expm1f_test.cpp
   DEPENDS
@@ -315,9 +296,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   log10f_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     log10f_test.cpp
   DEPENDS
@@ -331,9 +311,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   log1pf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     log1pf_test.cpp
   DEPENDS
@@ -347,9 +326,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   log2f_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     log2f_test.cpp
   DEPENDS
@@ -363,9 +341,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   logf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     logf_test.cpp
   DEPENDS
@@ -379,9 +356,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   rsqrtf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     rsqrtf_test.cpp
   DEPENDS
@@ -395,9 +371,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   sinf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     sinf_test.cpp
   DEPENDS
@@ -411,9 +386,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   sinhf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     sinhf_test.cpp
   DEPENDS
@@ -427,9 +401,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   sinpif_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     sinpif_test.cpp
   DEPENDS
@@ -443,9 +416,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   sqrtf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     sqrtf_test.cpp
   DEPENDS
@@ -459,9 +431,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   tanf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     tanf_test.cpp
   DEPENDS
@@ -475,9 +446,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   tanhf_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     tanhf_test.cpp
   DEPENDS
@@ -491,9 +461,8 @@ add_fp_unittest(
 
 add_fp_unittest(
   tanpif_test
-  NO_RUN_POSTBUILD
   SUITE
-    libc-mathvec-exhaustivetests
+    libc-mathvec-exhaustive-tests
   SRCS
     tanpif_test.cpp
   DEPENDS
diff --git a/libc/test/src/net/linux/CMakeLists.txt b/libc/test/src/net/linux/CMakeLists.txt
index 0b737d6f82976c..8fbee92d6c12db 100644
--- a/libc/test/src/net/linux/CMakeLists.txt
+++ b/libc/test/src/net/linux/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_net_unittests)
+add_libc_testsuite(libc-net-tests)
 
 add_libc_test(
   if_indextoname_test
   SUITE
-    libc_net_unittests
+    libc-net-tests
   SRCS
     if_indextoname_test.cpp
   DEPENDS
@@ -17,7 +17,7 @@ add_libc_test(
 add_libc_test(
   if_nametoindex_test
   SUITE
-    libc_net_unittests
+    libc-net-tests
   SRCS
     if_nametoindex_test.cpp
   DEPENDS
@@ -29,7 +29,7 @@ add_libc_test(
 add_libc_test(
   if_nameindex_test
   SUITE
-    libc_net_unittests
+    libc-net-tests
   SRCS
     if_nameindex_test.cpp
   DEPENDS
diff --git a/libc/test/src/netdb/CMakeLists.txt b/libc/test/src/netdb/CMakeLists.txt
index 9e2e9a15f9d82e..1012ef4d79f79b 100644
--- a/libc/test/src/netdb/CMakeLists.txt
+++ b/libc/test/src/netdb/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-netdb-tests)
+add_libc_testsuite(libc-netdb-tests)
 
 add_libc_test(
   gai_strerror_test
diff --git a/libc/test/src/netinet/CMakeLists.txt b/libc/test/src/netinet/CMakeLists.txt
index 79382b73d0427b..57fd067d80c046 100644
--- a/libc/test/src/netinet/CMakeLists.txt
+++ b/libc/test/src/netinet/CMakeLists.txt
@@ -1,11 +1,11 @@
-add_custom_target(libc_netinet_unittests)
+add_libc_testsuite(libc-netinet-tests)
 
 add_subdirectory(ether)
 
 add_libc_test(
   in_test
   SUITE
-    libc_netinet_unittests
+    libc-netinet-tests
   SRCS
     in_test.cpp
   DEPENDS
@@ -30,7 +30,7 @@ add_libc_test(
 add_libc_test(
   udp_test
   SUITE
-    libc_netinet_unittests
+    libc-netinet-tests
   SRCS
     udp_test.cpp
   DEPENDS
diff --git a/libc/test/src/netinet/ether/CMakeLists.txt b/libc/test/src/netinet/ether/CMakeLists.txt
index 66cd925e384161..bcb8bab6c00f88 100644
--- a/libc/test/src/netinet/ether/CMakeLists.txt
+++ b/libc/test/src/netinet/ether/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_netinet_ether_unittests)
+add_libc_testsuite(libc-netinet-ether-tests PARENT libc-netinet-tests)
 
 add_libc_test(
   ether_ntoa_test
   SUITE
-    libc_netinet_ether_unittests
+    libc-netinet-ether-tests
   SRCS
     ether_ntoa_test.cpp
   DEPENDS
@@ -14,7 +14,7 @@ add_libc_test(
 add_libc_test(
   ether_ntoa_r_test
   SUITE
-    libc_netinet_ether_unittests
+    libc-netinet-ether-tests
   SRCS
     ether_ntoa_r_test.cpp
   DEPENDS
diff --git a/libc/test/src/nl_types/CMakeLists.txt b/libc/test/src/nl_types/CMakeLists.txt
index 6bafb32f15c0bf..9a62fcb092f760 100644
--- a/libc/test/src/nl_types/CMakeLists.txt
+++ b/libc/test/src/nl_types/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-nl-types-tests)
+add_libc_testsuite(libc-nl-types-tests)
 
 add_libc_test(
   nl_types_test
diff --git a/libc/test/src/poll/CMakeLists.txt b/libc/test/src/poll/CMakeLists.txt
index 0ae920c94d9efd..f9e80db0a8fa01 100644
--- a/libc/test/src/poll/CMakeLists.txt
+++ b/libc/test/src/poll/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_poll_unittests)
+add_libc_testsuite(libc-poll-tests)
 
 add_libc_test(
   poll_test
   SUITE
-    libc_poll_unittests
+    libc-poll-tests
   SRCS
     poll_test.cpp
   DEPENDS
@@ -16,7 +16,7 @@ add_libc_test(
 add_libc_test(
   ppoll_test
   SUITE
-    libc_poll_unittests
+    libc-poll-tests
   SRCS
     ppoll_test.cpp
   DEPENDS
diff --git a/libc/test/src/pthread/CMakeLists.txt b/libc/test/src/pthread/CMakeLists.txt
index c59d30373fabbf..1bb1f5393d0825 100644
--- a/libc/test/src/pthread/CMakeLists.txt
+++ b/libc/test/src/pthread/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_pthread_unittests)
+add_libc_testsuite(libc-pthread-tests)
 
 add_libc_test(
   pthread_attr_test
   SUITE
-    libc_pthread_unittests
+    libc-pthread-tests
   SRCS
     pthread_attr_test.cpp
   DEPENDS
@@ -35,7 +35,7 @@ add_libc_test(
 add_libc_test(
   pthread_mutexattr_test
   SUITE
-    libc_pthread_unittests
+    libc-pthread-tests
   SRCS
     pthread_mutexattr_test.cpp
   DEPENDS
@@ -54,7 +54,7 @@ add_libc_test(
 add_libc_test(
   pthread_condattr_test
   SUITE
-    libc_pthread_unittests
+    libc-pthread-tests
   SRCS
     pthread_condattr_test.cpp
   DEPENDS
@@ -72,7 +72,7 @@ add_libc_test(
 add_libc_test(
   pthread_rwlockattr_test
   SUITE
-    libc_pthread_unittests
+    libc-pthread-tests
   SRCS
     pthread_rwlockattr_test.cpp
   DEPENDS
diff --git a/libc/test/src/pwd/CMakeLists.txt b/libc/test/src/pwd/CMakeLists.txt
index 11573806c602f3..a2268a8327fca0 100644
--- a/libc/test/src/pwd/CMakeLists.txt
+++ b/libc/test/src/pwd/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc_pwd_unittests)
+add_libc_testsuite(libc-pwd-tests)
 
 if(NOT TARGET libc.src.pwd.pwd_utils)
   return()
@@ -7,7 +7,7 @@ endif()
 add_libc_test(
   pwd_utils_test
   SUITE
-    libc_pwd_unittests
+    libc-pwd-tests
   SRCS
     pwd_utils_test.cpp
   DEPENDS
@@ -19,7 +19,7 @@ add_libc_test(
 add_libc_test(
   getpwent_test
   SUITE
-    libc_pwd_unittests
+    libc-pwd-tests
   HDRS
     pwd_test_utils.h
   SRCS
@@ -43,7 +43,7 @@ add_libc_test(
 add_libc_test(
   getpwent_r_test
   SUITE
-    libc_pwd_unittests
+    libc-pwd-tests
   HDRS
     pwd_test_utils.h
   SRCS
@@ -69,7 +69,7 @@ add_libc_test(
 add_libc_test(
   getpwnam_test
   SUITE
-    libc_pwd_unittests
+    libc-pwd-tests
   HDRS
     pwd_test_utils.h
   SRCS
@@ -95,7 +95,7 @@ add_libc_test(
 add_libc_test(
   getpwnam_r_test
   SUITE
-    libc_pwd_unittests
+    libc-pwd-tests
   HDRS
     pwd_test_utils.h
   SRCS
@@ -118,7 +118,7 @@ add_libc_test(
 add_libc_test(
   getpwuid_test
   SUITE
-    libc_pwd_unittests
+    libc-pwd-tests
   HDRS
     pwd_test_utils.h
   SRCS
@@ -142,7 +142,7 @@ add_libc_test(
 add_libc_test(
   getpwuid_r_test
   SUITE
-    libc_pwd_unittests
+    libc-pwd-tests
   HDRS
     pwd_test_utils.h
   SRCS
diff --git a/libc/test/src/regex/CMakeLists.txt b/libc/test/src/regex/CMakeLists.txt
index 73207994179c44..804006d6900d48 100644
--- a/libc/test/src/regex/CMakeLists.txt
+++ b/libc/test/src/regex/CMakeLists.txt
@@ -1,10 +1,10 @@
 if(LLVM_LIBC_FULL_BUILD AND LLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS)
-  add_custom_target(libc_regex_unittests)
+  add_libc_testsuite(libc-regex-tests)
 
   add_libc_test(
     regerror_test
     SUITE
-      libc_regex_unittests
+      libc-regex-tests
     SRCS
       regerror_test.cpp
     DEPENDS
@@ -15,7 +15,7 @@ if(LLVM_LIBC_FULL_BUILD AND LLVM_LIBC_ENABLE_EXPERIMENTAL_ENTRYPOINTS)
   add_libc_test(
     regex_basic_test
     SUITE
-      libc_regex_unittests
+      libc-regex-tests
     SRCS
       regex_basic_test.cpp
     DEPENDS
diff --git a/libc/test/src/sched/CMakeLists.txt b/libc/test/src/sched/CMakeLists.txt
index 0e585900aa756c..d51dd3a6225c2d 100644
--- a/libc/test/src/sched/CMakeLists.txt
+++ b/libc/test/src/sched/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc_sched_unittests)
+add_libc_testsuite(libc-sched-tests)
 
 if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS})
   add_subdirectory(${LIBC_TARGET_OS})
@@ -7,7 +7,7 @@ endif()
 add_libc_test(
   affinity_test
   SUITE
-    libc_sched_unittests
+    libc-sched-tests
   SRCS
     affinity_test.cpp
   DEPENDS
@@ -25,7 +25,7 @@ add_libc_test(
 add_libc_test(
   yield_test
   SUITE
-    libc_sched_unittests
+    libc-sched-tests
   SRCS
     yield_test.cpp
   DEPENDS
@@ -37,7 +37,7 @@ add_libc_test(
 add_libc_test(
   get_priority_test
   SUITE
-    libc_sched_unittests
+    libc-sched-tests
   SRCS
     get_priority_test.cpp
   DEPENDS
@@ -51,7 +51,7 @@ add_libc_test(
 add_libc_test(
   getcpu_test
   SUITE
-    libc_sched_unittests
+    libc-sched-tests
   SRCS
     getcpu_test.cpp
   DEPENDS
@@ -63,7 +63,7 @@ add_libc_test(
 add_libc_test(
   sched_getcpu_test
   SUITE
-    libc_sched_unittests
+    libc-sched-tests
   SRCS
     sched_getcpu_test.cpp
   DEPENDS
@@ -75,7 +75,7 @@ add_libc_test(
 add_libc_test(
   scheduler_test
   SUITE
-    libc_sched_unittests
+    libc-sched-tests
   SRCS
     param_and_scheduler_test.cpp
   DEPENDS
@@ -95,7 +95,7 @@ add_libc_test(
 add_libc_test(
   sched_rr_get_interval_test
   SUITE
-    libc_sched_unittests
+    libc-sched-tests
   SRCS
     sched_rr_get_interval_test.cpp
   DEPENDS
@@ -113,7 +113,7 @@ add_libc_test(
 add_libc_test(
   cpu_alloc_test
   SUITE
-    libc_sched_unittests
+    libc-sched-tests
   SRCS
     cpu_alloc_test.cpp
   DEPENDS
@@ -130,7 +130,7 @@ add_libc_test(
 add_libc_test(
   cpu_count_test
   SUITE
-    libc_sched_unittests
+    libc-sched-tests
   SRCS
     cpu_count_test.cpp
   DEPENDS
@@ -153,7 +153,7 @@ add_libc_test(
 add_libc_test(
   sched_andcpuset_test
   SUITE
-    libc_sched_unittests
+    libc-sched-tests
   SRCS
     sched_andcpuset_test.cpp
   DEPENDS
@@ -168,7 +168,7 @@ add_libc_test(
 add_libc_test(
   sched_cpuequal_test
   SUITE
-    libc_sched_unittests
+    libc-sched-tests
   SRCS
     sched_cpuequal_test.cpp
   DEPENDS
@@ -181,7 +181,7 @@ add_libc_test(
 add_libc_test(
   sched_orcpuset_test
   SUITE
-    libc_sched_unittests
+    libc-sched-tests
   SRCS
     sched_orcpuset_test.cpp
   DEPENDS
@@ -196,7 +196,7 @@ add_libc_test(
 add_libc_test(
   sched_xorcpuset_test
   SUITE
-    libc_sched_unittests
+    libc-sched-tests
   SRCS
     sched_xorcpuset_test.cpp
   DEPENDS
diff --git a/libc/test/src/sched/linux/CMakeLists.txt b/libc/test/src/sched/linux/CMakeLists.txt
index de9e2aaafd8231..2cce58f654b03c 100644
--- a/libc/test/src/sched/linux/CMakeLists.txt
+++ b/libc/test/src/sched/linux/CMakeLists.txt
@@ -1,7 +1,7 @@
 add_libc_test(
   clone_test
   SUITE
-    libc_sched_unittests
+    libc-sched-tests
   SRCS
     clone_test.cpp
   DEPENDS
diff --git a/libc/test/src/search/CMakeLists.txt b/libc/test/src/search/CMakeLists.txt
index abcf366bf7f012..dcef056c405740 100644
--- a/libc/test/src/search/CMakeLists.txt
+++ b/libc/test/src/search/CMakeLists.txt
@@ -1,8 +1,8 @@
-add_custom_target(libc_search_unittests)
+add_libc_testsuite(libc-search-tests)
 add_libc_test(
   hsearch_test
   SUITE
-    libc_search_unittests
+    libc-search-tests
   SRCS
     hsearch_test.cpp
   DEPENDS
@@ -18,7 +18,7 @@ add_libc_test(
 add_libc_test(
   insque_test
   SUITE
-    libc_search_unittests
+    libc-search-tests
   SRCS
     insque_test.cpp
   DEPENDS
@@ -29,7 +29,7 @@ add_libc_test(
 add_libc_test(
   lfind_test
   SUITE
-    libc_search_unittests
+    libc-search-tests
   SRCS
     lfind_test.cpp
   DEPENDS
@@ -39,7 +39,7 @@ add_libc_test(
 add_libc_test(
   lsearch_test
   SUITE
-    libc_search_unittests
+    libc-search-tests
   SRCS
     lsearch_test.cpp
   DEPENDS
@@ -49,7 +49,7 @@ add_libc_test(
 add_libc_test(
   tsearch_test
   SUITE
-    libc_search_unittests
+    libc-search-tests
   SRCS
     tsearch_test.cpp
   DEPENDS
diff --git a/libc/test/src/semaphore/CMakeLists.txt b/libc/test/src/semaphore/CMakeLists.txt
index e9943401c66397..1812799103bd2e 100644
--- a/libc/test/src/semaphore/CMakeLists.txt
+++ b/libc/test/src/semaphore/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc_semaphore_unittests)
+add_libc_testsuite(libc-semaphore-tests)
 
 if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS})
   add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS})
@@ -7,7 +7,7 @@ endif()
 add_libc_test(
   sem_init_test
   SUITE
-    libc_semaphore_unittests
+    libc-semaphore-tests
   SRCS
     sem_init_test.cpp
   DEPENDS
@@ -32,7 +32,7 @@ add_libc_test(
 add_libc_test(
   sem_wait_test
   SUITE
-    libc_semaphore_unittests
+    libc-semaphore-tests
   SRCS
     sem_wait_test.cpp
   DEPENDS
@@ -58,7 +58,7 @@ add_libc_test(
 add_libc_test(
   sem_getvalue_test
   SUITE
-    libc_semaphore_unittests
+    libc-semaphore-tests
   SRCS
     sem_getvalue_test.cpp
   DEPENDS
@@ -77,7 +77,7 @@ add_libc_test(
 add_libc_test(
   sem_open_test
   SUITE
-    libc_semaphore_unittests
+    libc-semaphore-tests
   SRCS
     sem_open_test.cpp
   DEPENDS
@@ -99,7 +99,7 @@ add_libc_test(
 add_libc_test(
   sem_unlink_test
   SUITE
-    libc_semaphore_unittests
+    libc-semaphore-tests
   SRCS
     sem_unlink_test.cpp
   DEPENDS
diff --git a/libc/test/src/semaphore/linux/CMakeLists.txt b/libc/test/src/semaphore/linux/CMakeLists.txt
index 53fce2315c0567..850476a1a203d1 100644
--- a/libc/test/src/semaphore/linux/CMakeLists.txt
+++ b/libc/test/src/semaphore/linux/CMakeLists.txt
@@ -1,7 +1,7 @@
 add_libc_test(
   semaphore_test
   SUITE
-    libc_semaphore_unittests
+    libc-semaphore-tests
   SRCS
     semaphore_test.cpp
   DEPENDS
diff --git a/libc/test/src/setjmp/CMakeLists.txt b/libc/test/src/setjmp/CMakeLists.txt
index 66c485159ea7a3..83d0470323c246 100644
--- a/libc/test/src/setjmp/CMakeLists.txt
+++ b/libc/test/src/setjmp/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc_setjmp_unittests)
+add_libc_testsuite(libc-setjmp-tests)
 
 # Skip setjmp tests under sanitizers
 if(LLVM_USE_SANITIZER)
@@ -8,7 +8,7 @@ endif()
 add_libc_test(
   setjmp_test
   SUITE
-    libc_setjmp_unittests
+    libc-setjmp-tests
   SRCS
     setjmp_test.cpp
   CXX_STANDARD
@@ -21,7 +21,7 @@ add_libc_test(
 add_libc_test(
   sigsetjmp_test
   SUITE
-    libc_setjmp_unittests
+    libc-setjmp-tests
   SRCS
     sigsetjmp_test.cpp
   CXX_STANDARD
diff --git a/libc/test/src/signal/CMakeLists.txt b/libc/test/src/signal/CMakeLists.txt
index f22a8a8f0a092c..9e7c55b75885d0 100644
--- a/libc/test/src/signal/CMakeLists.txt
+++ b/libc/test/src/signal/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_signal_unittests)
+add_libc_testsuite(libc-signal-tests)
 
 add_libc_test(
   raise_test
   SUITE
-    libc_signal_unittests
+    libc-signal-tests
   SRCS
     raise_test.cpp
   DEPENDS
@@ -14,7 +14,7 @@ add_libc_test(
 add_libc_test(
   kill_test
   SUITE
-    libc_signal_unittests
+    libc-signal-tests
   SRCS
     kill_test.cpp
   DEPENDS
@@ -28,7 +28,7 @@ add_libc_test(
 add_libc_test(
   sigaction_test
   SUITE
-    libc_signal_unittests
+    libc-signal-tests
   SRCS
     sigaction_test.cpp
   DEPENDS
@@ -42,7 +42,7 @@ add_libc_test(
 add_libc_test(
   sigprocmask_test
   SUITE
-    libc_signal_unittests
+    libc-signal-tests
   SRCS
     sigprocmask_test.cpp
   DEPENDS
@@ -58,7 +58,7 @@ add_libc_test(
 add_libc_test(
   pthread_sigmask_test
   SUITE
-    libc_signal_unittests
+    libc-signal-tests
   SRCS
     pthread_sigmask_test.cpp
   DEPENDS
@@ -73,7 +73,7 @@ add_libc_test(
 add_libc_test(
   sigaddset_test
   SUITE
-    libc_signal_unittests
+    libc-signal-tests
   SRCS
     sigaddset_test.cpp
   DEPENDS
@@ -86,7 +86,7 @@ add_libc_test(
 add_libc_test(
   signal_test
   SUITE
-    libc_signal_unittests
+    libc-signal-tests
   SRCS
     signal_test.cpp
   DEPENDS
@@ -100,7 +100,7 @@ add_libc_test(
 add_libc_test(
   sigfillset_test
   SUITE
-    libc_signal_unittests
+    libc-signal-tests
   SRCS
     sigfillset_test.cpp
   DEPENDS
@@ -115,7 +115,7 @@ add_libc_test(
 add_libc_test(
   sigdelset_test
   SUITE
-    libc_signal_unittests
+    libc-signal-tests
   SRCS
     sigdelset_test.cpp
   DEPENDS
@@ -131,7 +131,7 @@ add_libc_test(
 add_libc_test(
   sigaltstack_test
   SUITE
-    libc_signal_unittests
+    libc-signal-tests
   SRCS
     sigaltstack_test.cpp
   DEPENDS
diff --git a/libc/test/src/spawn/CMakeLists.txt b/libc/test/src/spawn/CMakeLists.txt
index 1b28df216075ee..b0e2c080381d7a 100644
--- a/libc/test/src/spawn/CMakeLists.txt
+++ b/libc/test/src/spawn/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_spawn_unittests)
+add_libc_testsuite(libc-spawn-tests)
 
 add_libc_test(
   posix_spawn_file_actions_test
   SUITE
-    libc_spawn_unittests
+    libc-spawn-tests
   SRCS
     posix_spawn_file_actions_test.cpp
   DEPENDS
diff --git a/libc/test/src/stdbit/CMakeLists.txt b/libc/test/src/stdbit/CMakeLists.txt
index c3f8059d2d9b2a..2afd0ea5620e95 100644
--- a/libc/test/src/stdbit/CMakeLists.txt
+++ b/libc/test/src/stdbit/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-stdbit-tests)
+add_libc_testsuite(libc-stdbit-tests)
 
 set(prefixes
   leading_zeros
diff --git a/libc/test/src/stdfix/CMakeLists.txt b/libc/test/src/stdfix/CMakeLists.txt
index f669c237481775..67d2a97d3a7601 100644
--- a/libc/test/src/stdfix/CMakeLists.txt
+++ b/libc/test/src/stdfix/CMakeLists.txt
@@ -2,7 +2,7 @@ if(NOT LIBC_COMPILER_HAS_FIXED_POINT)
   return()
 endif()
 
-add_custom_target(libc-stdfix-tests)
+add_libc_testsuite(libc-stdfix-tests)
 
 foreach(suffix IN ITEMS hr r lr hk k lk)
   add_libc_test(
diff --git a/libc/test/src/stdio/CMakeLists.txt b/libc/test/src/stdio/CMakeLists.txt
index b5b16abf34ae3c..519b9e9b88b744 100644
--- a/libc/test/src/stdio/CMakeLists.txt
+++ b/libc/test/src/stdio/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_stdio_unittests)
+add_libc_testsuite(libc-stdio-tests)
 
 add_libc_test(
   freopen_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     freopen_test.cpp
   DEPENDS
@@ -34,7 +34,7 @@ add_libc_test(
 add_libc_test(
   fileop_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     fileop_test.cpp
   DEPENDS
@@ -57,7 +57,7 @@ add_libc_test(
 add_libc_test(
   rewind_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     rewind_test.cpp
   DEPENDS
@@ -76,7 +76,7 @@ add_libc_test(
 add_libc_test(
   ungetc_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     ungetc_test.cpp
   DEPENDS
@@ -92,7 +92,7 @@ add_libc_test(
 add_libc_test(
   setbuf_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     setbuf_test.cpp
   DEPENDS
@@ -108,7 +108,7 @@ add_libc_test(
 add_libc_test(
   setvbuf_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     setvbuf_test.cpp
   DEPENDS
@@ -125,7 +125,7 @@ add_libc_test(
 add_libc_test(
   unlocked_fileop_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     unlocked_fileop_test.cpp
   DEPENDS
@@ -146,7 +146,7 @@ add_libc_test(
 add_libc_test(
   fmemopen_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     fmemopen_test.cpp
   DEPENDS
@@ -177,7 +177,7 @@ add_libc_test(
 add_libc_test(
   fopencookie_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     fopencookie_test.cpp
   DEPENDS
@@ -230,7 +230,7 @@ endif()
 add_fp_unittest(
   sprintf_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     sprintf_test.cpp
   DEPENDS
@@ -246,7 +246,7 @@ add_fp_unittest(
 add_libc_test(
   snprintf_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     snprintf_test.cpp
   DEPENDS
@@ -269,7 +269,7 @@ endif()
 add_libc_test(
   fprintf_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     fprintf_test.cpp
   DEPENDS
@@ -285,7 +285,7 @@ add_libc_test(
 add_libc_test(
   printf_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     printf_test.cpp
   DEPENDS
@@ -295,7 +295,7 @@ add_libc_test(
 add_libc_test(
   asprintf_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     asprintf_test.cpp
   DEPENDS
@@ -308,7 +308,7 @@ add_libc_test(
 add_fp_unittest(
   vsprintf_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     vsprintf_test.cpp
   DEPENDS
@@ -318,7 +318,7 @@ add_fp_unittest(
 add_libc_test(
   vsnprintf_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     vsnprintf_test.cpp
   DEPENDS
@@ -328,7 +328,7 @@ add_libc_test(
 add_libc_test(
   vfprintf_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     vfprintf_test.cpp
   DEPENDS
@@ -341,7 +341,7 @@ add_libc_test(
 add_libc_test(
   vprintf_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     vprintf_test.cpp
   DEPENDS
@@ -351,7 +351,7 @@ add_libc_test(
 add_libc_test(
   vasprintf_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     vasprintf_test.cpp
   DEPENDS
@@ -377,7 +377,7 @@ if(NOT LIBC_TARGET_ARCHITECTURE_IS_AMDGPU)
   add_libc_test(
     fscanf_test
     SUITE
-      libc_stdio_unittests
+      libc-stdio-tests
     SRCS
       fscanf_test.cpp
     DEPENDS
@@ -392,7 +392,7 @@ if(NOT LIBC_TARGET_ARCHITECTURE_IS_AMDGPU)
   add_libc_test(
     vfscanf_test
     SUITE
-      libc_stdio_unittests
+      libc-stdio-tests
     SRCS
       vfscanf_test.cpp
     DEPENDS
@@ -414,7 +414,7 @@ endif()
 add_libc_test(
   sscanf_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     sscanf_test.cpp
   DEPENDS
@@ -427,7 +427,7 @@ add_libc_test(
 add_libc_test(
   vsscanf_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     vsscanf_test.cpp
   DEPENDS
@@ -440,7 +440,7 @@ add_libc_test(
 add_libc_test(
   puts_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     puts_test.cpp
   DEPENDS
@@ -450,7 +450,7 @@ add_libc_test(
 add_libc_test(
   perror_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     perror_test.cpp
   DEPENDS
@@ -461,7 +461,7 @@ add_libc_test(
 add_libc_test(
   fputs_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     fputs_test.cpp
   DEPENDS
@@ -473,7 +473,7 @@ add_libc_test(
 add_libc_test(
   fputc_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     fputc_test.cpp
   DEPENDS
@@ -499,7 +499,7 @@ endif()
 add_libc_test(
   fopen_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     fopen_test.cpp
   DEPENDS
@@ -515,7 +515,7 @@ add_libc_test(
 add_libc_test(
   putc_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     putc_test.cpp
   DEPENDS
@@ -530,7 +530,7 @@ if(${LIBC_TARGET_OS} STREQUAL "linux")
   add_libc_test(
     remove_test
     SUITE
-      libc_stdio_unittests
+      libc-stdio-tests
     SRCS
       remove_test.cpp
     DEPENDS
@@ -548,7 +548,7 @@ if(${LIBC_TARGET_OS} STREQUAL "linux")
   add_libc_test(
     rename_test
     SUITE
-      libc_stdio_unittests
+      libc-stdio-tests
     SRCS
       rename_test.cpp
     DEPENDS
@@ -565,7 +565,7 @@ if(${LIBC_TARGET_OS} STREQUAL "linux")
   add_libc_test(
     renameat_test
     SUITE
-      libc_stdio_unittests
+      libc-stdio-tests
     SRCS
       renameat_test.cpp
     DEPENDS
@@ -588,7 +588,7 @@ if(${LIBC_TARGET_OS} STREQUAL "linux")
   add_libc_test(
     fdopen_test
     SUITE
-      libc_stdio_unittests
+      libc-stdio-tests
     SRCS
       fdopen_test.cpp
     DEPENDS
@@ -609,7 +609,7 @@ if(${LIBC_TARGET_OS} STREQUAL "linux")
   add_libc_test(
     popen_pclose_test
     SUITE
-      libc_stdio_unittests
+      libc-stdio-tests
     SRCS
       popen_pclose_test.cpp
     DEPENDS
@@ -633,7 +633,7 @@ endif()
 add_libc_test(
   fgetc_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     fgetc_test.cpp
   DEPENDS
@@ -654,7 +654,7 @@ add_libc_test(
 add_libc_test(
   fgetc_unlocked_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     fgetc_unlocked_test.cpp
   DEPENDS
@@ -679,7 +679,7 @@ add_libc_test(
 add_libc_test(
   fgets_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     fgets_test.cpp
   DEPENDS
@@ -699,7 +699,7 @@ add_libc_test(
 add_libc_test(
   ftell_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     ftell_test.cpp
   DEPENDS
@@ -719,7 +719,7 @@ add_libc_test(
 add_libc_test(
   tmpfile_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     tmpfile_test.cpp
   DEPENDS
@@ -734,7 +734,7 @@ add_libc_test(
 add_libc_test(
   fgetpos_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     fgetpos_test.cpp
   DEPENDS
@@ -768,7 +768,7 @@ add_libc_test(
 add_libc_test(
   fsetpos_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     fsetpos_test.cpp
   DEPENDS
@@ -805,7 +805,7 @@ add_libc_test(
 add_libc_test(
   tmpnam_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     tmpnam_test.cpp
   DEPENDS
diff --git a/libc/test/src/stdio/scanf_core/CMakeLists.txt b/libc/test/src/stdio/scanf_core/CMakeLists.txt
index 6fdee7b3d5d511..46e99ffe56fe0d 100644
--- a/libc/test/src/stdio/scanf_core/CMakeLists.txt
+++ b/libc/test/src/stdio/scanf_core/CMakeLists.txt
@@ -6,7 +6,7 @@ endif()
 add_libc_test(
   parser_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     parser_test.cpp
   DEPENDS
@@ -27,7 +27,7 @@ endif()
 add_libc_test(
   reader_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     reader_test.cpp
   DEPENDS
@@ -40,7 +40,7 @@ add_libc_test(
 add_libc_test(
   converter_test
   SUITE
-    libc_stdio_unittests
+    libc-stdio-tests
   SRCS
     converter_test.cpp
   DEPENDS
diff --git a/libc/test/src/stdlib/CMakeLists.txt b/libc/test/src/stdlib/CMakeLists.txt
index 82e52a2dfb694b..19384956d703d3 100644
--- a/libc/test/src/stdlib/CMakeLists.txt
+++ b/libc/test/src/stdlib/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-stdlib-tests)
+add_libc_testsuite(libc-stdlib-tests)
 
 add_libc_test(
   atof_test
diff --git a/libc/test/src/string/CMakeLists.txt b/libc/test/src/string/CMakeLists.txt
index 17927ea93ed1eb..821e1fb8240097 100644
--- a/libc/test/src/string/CMakeLists.txt
+++ b/libc/test/src/string/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-string-tests)
+add_libc_testsuite(libc-string-tests)
 
 add_subdirectory(memory_utils)
 
diff --git a/libc/test/src/strings/CMakeLists.txt b/libc/test/src/strings/CMakeLists.txt
index 48bde97c463cf2..a9b510f8df4e43 100644
--- a/libc/test/src/strings/CMakeLists.txt
+++ b/libc/test/src/strings/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc-strings-tests)
+add_libc_testsuite(libc-strings-tests)
 
 add_libc_test(
   bcopy_test
diff --git a/libc/test/src/sys/auxv/linux/CMakeLists.txt b/libc/test/src/sys/auxv/linux/CMakeLists.txt
index 92617049401a25..50f745f3954f06 100644
--- a/libc/test/src/sys/auxv/linux/CMakeLists.txt
+++ b/libc/test/src/sys/auxv/linux/CMakeLists.txt
@@ -1,8 +1,8 @@
-add_custom_target(libc_sys_auxv_unittests)
+add_libc_testsuite(libc-sys-auxv-tests)
 add_libc_test(
   getauxval_test
   SUITE
-    libc_sys_auxv_unittests
+    libc-sys-auxv-tests
   SRCS
     getauxval_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/epoll/linux/CMakeLists.txt b/libc/test/src/sys/epoll/linux/CMakeLists.txt
index 06a6ce23bfa573..cb169a74bd0dc1 100644
--- a/libc/test/src/sys/epoll/linux/CMakeLists.txt
+++ b/libc/test/src/sys/epoll/linux/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_epoll_unittests)
+add_libc_testsuite(libc-sys-epoll-tests)
 
 add_libc_test(
   epoll_create_test
   SUITE
-    libc_sys_epoll_unittests
+    libc-sys-epoll-tests
   SRCS
     epoll_create_test.cpp
   DEPENDS
@@ -18,7 +18,7 @@ add_libc_test(
 add_libc_test(
   epoll_create1_test
   SUITE
-    libc_sys_epoll_unittests
+    libc-sys-epoll-tests
   SRCS
     epoll_create1_test.cpp
   DEPENDS
@@ -33,7 +33,7 @@ add_libc_test(
 add_libc_test(
   epoll_ctl_test
   SUITE
-    libc_sys_epoll_unittests
+    libc-sys-epoll-tests
   SRCS
     epoll_ctl_test.cpp
   DEPENDS
@@ -51,7 +51,7 @@ add_libc_test(
 add_libc_test(
   epoll_wait_test
   SUITE
-    libc_sys_epoll_unittests
+    libc-sys-epoll-tests
   SRCS
     epoll_wait_test.cpp
   DEPENDS
@@ -70,7 +70,7 @@ add_libc_test(
 add_libc_test(
   epoll_pwait_test
   SUITE
-    libc_sys_epoll_unittests
+    libc-sys-epoll-tests
   SRCS
     epoll_pwait_test.cpp
   DEPENDS
@@ -89,7 +89,7 @@ add_libc_test(
 add_libc_test(
   epoll_pwait2_test
   SUITE
-    libc_sys_epoll_unittests
+    libc-sys-epoll-tests
   SRCS
     epoll_pwait2_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/eventfd/linux/CMakeLists.txt b/libc/test/src/sys/eventfd/linux/CMakeLists.txt
index e1ca5f6d506e2e..16f7706e99333e 100644
--- a/libc/test/src/sys/eventfd/linux/CMakeLists.txt
+++ b/libc/test/src/sys/eventfd/linux/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_eventfd_unittests)
+add_libc_testsuite(libc-sys-eventfd-tests)
 
 add_libc_test(
   eventfd_test
   SUITE
-    libc_sys_eventfd_unittests
+    libc-sys-eventfd-tests
   SRCS
     eventfd_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/file/linux/CMakeLists.txt b/libc/test/src/sys/file/linux/CMakeLists.txt
index 6e9c3d9b3d60df..1601fe307326e0 100644
--- a/libc/test/src/sys/file/linux/CMakeLists.txt
+++ b/libc/test/src/sys/file/linux/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_file_unittests)
+add_libc_testsuite(libc-sys-file-tests)
 
 add_libc_test(
   flock_test
   SUITE
-    libc_sys_file_unittests
+    libc-sys-file-tests
   SRCS
     flock_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/inotify/linux/CMakeLists.txt b/libc/test/src/sys/inotify/linux/CMakeLists.txt
index 2d21578c4e2400..858c27f79fff1b 100644
--- a/libc/test/src/sys/inotify/linux/CMakeLists.txt
+++ b/libc/test/src/sys/inotify/linux/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_inotify_unittests)
+add_libc_testsuite(libc-sys-inotify-tests)
 
 add_libc_test(
   inotify_init_test
   SUITE
-    libc_sys_inotify_unittests
+    libc-sys-inotify-tests
   SRCS
     inotify_init_test.cpp
   DEPENDS
@@ -23,7 +23,7 @@ add_libc_test(
 add_libc_test(
   inotify_init1_test
   SUITE
-    libc_sys_inotify_unittests
+    libc-sys-inotify-tests
   SRCS
     inotify_init1_test.cpp
   DEPENDS
@@ -39,7 +39,7 @@ add_libc_test(
 add_libc_test(
   inotify_add_watch_test
   SUITE
-    libc_sys_inotify_unittests
+    libc-sys-inotify-tests
   SRCS
     inotify_add_watch_test.cpp
   DEPENDS
@@ -56,7 +56,7 @@ add_libc_test(
 add_libc_test(
   inotify_rm_watch_test
   SUITE
-    libc_sys_inotify_unittests
+    libc-sys-inotify-tests
   SRCS
     inotify_rm_watch_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/ioctl/linux/CMakeLists.txt b/libc/test/src/sys/ioctl/linux/CMakeLists.txt
index fd1aeaefe99e34..60919a95d528b9 100644
--- a/libc/test/src/sys/ioctl/linux/CMakeLists.txt
+++ b/libc/test/src/sys/ioctl/linux/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_ioctl_unittests)
+add_libc_testsuite(libc-sys-ioctl-tests)
 
 add_libc_test(
   ioctl_test
   SUITE
-    libc_sys_ioctl_unittests
+    libc-sys-ioctl-tests
   SRCS
     ioctl_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/ipc/linux/CMakeLists.txt b/libc/test/src/sys/ipc/linux/CMakeLists.txt
index c635cbefd041d8..6ffc65306b8790 100644
--- a/libc/test/src/sys/ipc/linux/CMakeLists.txt
+++ b/libc/test/src/sys/ipc/linux/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_ipc_unittests)
+add_libc_testsuite(libc-sys-ipc-tests)
 
 add_libc_test(
   ftok_test
   SUITE
-    libc_sys_ipc_unittests
+    libc-sys-ipc-tests
   SRCS
     ftok_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/mman/linux/CMakeLists.txt b/libc/test/src/sys/mman/linux/CMakeLists.txt
index cc031441df31c4..8f685002cbb980 100644
--- a/libc/test/src/sys/mman/linux/CMakeLists.txt
+++ b/libc/test/src/sys/mman/linux/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_mman_unittests)
+add_libc_testsuite(libc-sys-mman-tests)
 
 add_libc_test(
   mmap_test
   SUITE
-    libc_sys_mman_unittests
+    libc-sys-mman-tests
   SRCS
     mmap_test.cpp
   DEPENDS
@@ -21,7 +21,7 @@ add_libc_test(
 add_libc_test(
   mremap_test
   SUITE
-    libc_sys_mman_unittests
+    libc-sys-mman-tests
   SRCS
     mremap_test.cpp
   DEPENDS
@@ -39,7 +39,7 @@ if(NOT LLVM_USE_SANITIZER)
   add_libc_test(
     mprotect_test
     SUITE
-      libc_sys_mman_unittests
+      libc-sys-mman-tests
     SRCS
       mprotect_test.cpp
     DEPENDS
@@ -57,7 +57,7 @@ endif()
 add_libc_test(
   madvise_test
   SUITE
-    libc_sys_mman_unittests
+    libc-sys-mman-tests
   SRCS
     madvise_test.cpp
   DEPENDS
@@ -78,7 +78,7 @@ if(NOT LLVM_USE_SANITIZER)
   add_libc_test(
     pkey_test
     SUITE
-      libc_sys_mman_unittests
+      libc-sys-mman-tests
     SRCS
       pkey_test.cpp
     DEPENDS
@@ -101,7 +101,7 @@ endif()
 add_libc_test(
   posix_madvise_test
   SUITE
-    libc_sys_mman_unittests
+    libc-sys-mman-tests
   SRCS
     posix_madvise_test.cpp
   DEPENDS
@@ -118,7 +118,7 @@ add_libc_test(
 add_libc_test(
   mincore_test
   SUITE
-    libc_sys_mman_unittests
+    libc-sys-mman-tests
   SRCS
     mincore_test.cpp
   DEPENDS
@@ -140,7 +140,7 @@ add_libc_test(
 add_libc_test(
   mlock_test
   SUITE
-    libc_sys_mman_unittests
+    libc-sys-mman-tests
   SRCS
     mlock_test.cpp
   DEPENDS
@@ -168,7 +168,7 @@ add_libc_test(
 add_libc_test(
   msync_test
   SUITE
-    libc_sys_mman_unittests
+    libc-sys-mman-tests
   SRCS
     msync_test.cpp
   DEPENDS
@@ -195,7 +195,7 @@ else()
   add_libc_test(
     remap_file_pages_test
     SUITE
-      libc_sys_mman_unittests
+      libc-sys-mman-tests
     SRCS
       remap_file_pages_test.cpp
     DEPENDS
@@ -216,7 +216,7 @@ endif()
 add_libc_test(
   shm_test
   SUITE
-    libc_sys_mman_unittests
+    libc-sys-mman-tests
   SRCS
     shm_test.cpp
   DEPENDS
@@ -240,7 +240,7 @@ add_libc_test(
 add_libc_test(
   memfd_create_test
   SUITE
-    libc_sys_mman_unittests
+    libc-sys-mman-tests
   SRCS
     memfd_create_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/personality/linux/CMakeLists.txt b/libc/test/src/sys/personality/linux/CMakeLists.txt
index 46382360a5058a..6ad484d4383ccd 100644
--- a/libc/test/src/sys/personality/linux/CMakeLists.txt
+++ b/libc/test/src/sys/personality/linux/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_personality_unittests)
+add_libc_testsuite(libc-sys-personality-tests)
 
 add_libc_test(
   personality_test
   SUITE
-    libc_sys_personality_unittests
+    libc-sys-personality-tests
   SRCS
     personality_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/prctl/linux/CMakeLists.txt b/libc/test/src/sys/prctl/linux/CMakeLists.txt
index 4b30d9f5cb20e5..54c7de1a98dc67 100644
--- a/libc/test/src/sys/prctl/linux/CMakeLists.txt
+++ b/libc/test/src/sys/prctl/linux/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc_sys_prctl_unittests)
+add_libc_testsuite(libc-sys-prctl-tests)
 
 # Temporarily disable this test while setting up arm and riscv buildbots
 # using qemu, since PR_GET_THP_DISABLE is not supported on qemu.
@@ -8,7 +8,7 @@ if(NOT (LIBC_TARGET_ARCHITECTURE_IS_ARM OR
   add_libc_test(
     prctl_test
     SUITE
-      libc_sys_prctl_unittests
+      libc-sys-prctl-tests
     SRCS
       prctl_test.cpp
     DEPENDS
diff --git a/libc/test/src/sys/random/linux/CMakeLists.txt b/libc/test/src/sys/random/linux/CMakeLists.txt
index c6600c9470ef41..e913da0914d34a 100644
--- a/libc/test/src/sys/random/linux/CMakeLists.txt
+++ b/libc/test/src/sys/random/linux/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_random_unittests)
+add_libc_testsuite(libc-sys-random-tests)
 
 add_libc_test(
   getrandom_test
   SUITE
-    libc_sys_random_unittests
+    libc-sys-random-tests
   SRCS
     getrandom_test.cpp
   DEPENDS
@@ -18,7 +18,7 @@ add_libc_test(
 add_libc_test(
   getentropy_test
   SUITE
-    libc_sys_random_unittests
+    libc-sys-random-tests
   SRCS
     getentropy_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/resource/CMakeLists.txt b/libc/test/src/sys/resource/CMakeLists.txt
index e67c456bfdbafc..92011428f6dbc6 100644
--- a/libc/test/src/sys/resource/CMakeLists.txt
+++ b/libc/test/src/sys/resource/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_resource_unittests)
+add_libc_testsuite(libc-sys-resource-tests)
 
 add_libc_test(
   getpriority_setpriority_test
   SUITE
-    libc_sys_resource_unittests
+    libc-sys-resource-tests
   SRCS
     getpriority_setpriority_test.cpp
   DEPENDS
@@ -18,7 +18,7 @@ add_libc_test(
 add_libc_test(
   getrlimit_setrlimit_test
   SUITE
-    libc_sys_resource_unittests
+    libc-sys-resource-tests
   SRCS
     getrlimit_setrlimit_test.cpp
   DEPENDS
@@ -39,7 +39,7 @@ add_libc_test(
 add_libc_test(
   getrusage_test
   SUITE
-    libc_sys_resource_unittests
+    libc-sys-resource-tests
   SRCS
     getrusage_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/select/CMakeLists.txt b/libc/test/src/sys/select/CMakeLists.txt
index 7d9fa2e28628fc..c1065b0d0aefab 100644
--- a/libc/test/src/sys/select/CMakeLists.txt
+++ b/libc/test/src/sys/select/CMakeLists.txt
@@ -1,10 +1,10 @@
-add_custom_target(libc_sys_select_unittests)
+add_libc_testsuite(libc-sys-select-tests)
 
 add_libc_test(
   select_ui_test
-  NO_RUN_POSTBUILD
+  BUILD_ONLY
   SUITE
-    libc_sys_select_unittests
+    libc-sys-select-tests
   SRCS
     select_ui_test.cpp
   DEPENDS
@@ -19,7 +19,7 @@ add_libc_test(
 add_libc_test(
   select_failure_test
   SUITE
-    libc_sys_select_unittests
+    libc-sys-select-tests
   SRCS
     select_failure_test.cpp
   DEPENDS
@@ -34,7 +34,7 @@ add_libc_test(
 add_libc_test(
   pselect_test
   SUITE
-    libc_sys_select_unittests
+    libc-sys-select-tests
   SRCS
     pselect_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/sem/linux/CMakeLists.txt b/libc/test/src/sys/sem/linux/CMakeLists.txt
index 4a72a9c564ae56..02f2f7a64fd067 100644
--- a/libc/test/src/sys/sem/linux/CMakeLists.txt
+++ b/libc/test/src/sys/sem/linux/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_sem_unittests)
+add_libc_testsuite(libc-sys-sem-tests)
 
 add_libc_test(
   sem_test
   SUITE
-    libc_sys_sem_unittests
+    libc-sys-sem-tests
   SRCS
     sem_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/sendfile/CMakeLists.txt b/libc/test/src/sys/sendfile/CMakeLists.txt
index 18b792b2333ebc..b77a76fcb858e9 100644
--- a/libc/test/src/sys/sendfile/CMakeLists.txt
+++ b/libc/test/src/sys/sendfile/CMakeLists.txt
@@ -1,11 +1,11 @@
-add_custom_target(libc_sys_sendfile_unittests)
+add_libc_testsuite(libc-sys-sendfile-tests)
 
 add_subdirectory(testdata)
 
 add_libc_test(
   sendfile_test
   SUITE
-    libc_sys_sendfile_unittests
+    libc-sys-sendfile-tests
   SRCS
     sendfile_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/socket/linux/CMakeLists.txt b/libc/test/src/sys/socket/linux/CMakeLists.txt
index dce03b8c2d46ea..005e5191848434 100644
--- a/libc/test/src/sys/socket/linux/CMakeLists.txt
+++ b/libc/test/src/sys/socket/linux/CMakeLists.txt
@@ -18,12 +18,12 @@ add_header_library(
     libc.src.unistd.fchdir
 )
 
-add_custom_target(libc_sys_socket_unittests)
+add_libc_testsuite(libc-sys-socket-tests)
 
 add_libc_test(
   socket_test
   SUITE
-    libc_sys_socket_unittests
+    libc-sys-socket-tests
   SRCS
     socket_test.cpp
   DEPENDS
@@ -38,7 +38,7 @@ add_libc_test(
 add_libc_test(
   bind_test
   SUITE
-    libc_sys_socket_unittests
+    libc-sys-socket-tests
   SRCS
     bind_test.cpp
   DEPENDS
@@ -65,7 +65,7 @@ add_libc_test(
 add_libc_test(
   connect_accept_test
   SUITE
-    libc_sys_socket_unittests
+    libc-sys-socket-tests
   SRCS
     connect_accept_test.cpp
   DEPENDS
@@ -95,7 +95,7 @@ add_libc_test(
 add_libc_test(
   listen_test
   SUITE
-    libc_sys_socket_unittests
+    libc-sys-socket-tests
   SRCS
     listen_test.cpp
   DEPENDS
@@ -117,7 +117,7 @@ add_libc_test(
 add_libc_test(
   socketopt_test
   SUITE
-    libc_sys_socket_unittests
+    libc-sys-socket-tests
   SRCS
     socketopt_test.cpp
   DEPENDS
@@ -145,7 +145,7 @@ add_libc_test(
 add_libc_test(
   socketpair_test
   SUITE
-    libc_sys_socket_unittests
+    libc-sys-socket-tests
   SRCS
     socketpair_test.cpp
   DEPENDS
@@ -160,7 +160,7 @@ add_libc_test(
 add_libc_test(
   sockatmark_test
   SUITE
-    libc_sys_socket_unittests
+    libc-sys-socket-tests
   SRCS
     sockatmark_test.cpp
   DEPENDS
@@ -179,7 +179,7 @@ add_libc_test(
 add_libc_test(
   sockname_test
   SUITE
-    libc_sys_socket_unittests
+    libc-sys-socket-tests
   SRCS
     sockname_test.cpp
   DEPENDS
@@ -206,7 +206,7 @@ add_libc_test(
 add_libc_test(
   send_recv_test
   SUITE
-    libc_sys_socket_unittests
+    libc-sys-socket-tests
   SRCS
     send_recv_test.cpp
   DEPENDS
@@ -224,7 +224,7 @@ add_libc_test(
 add_libc_test(
   sendto_recvfrom_test
   SUITE
-    libc_sys_socket_unittests
+    libc-sys-socket-tests
   SRCS
     sendto_recvfrom_test.cpp
   DEPENDS
@@ -242,7 +242,7 @@ add_libc_test(
 add_libc_test(
   sendrecvmmsg_test
   SUITE
-    libc_sys_socket_unittests
+    libc-sys-socket-tests
   SRCS
     sendrecvmmsg_test.cpp
   DEPENDS
@@ -264,7 +264,7 @@ add_libc_test(
 add_libc_test(
   sendmsg_recvmsg_test
   SUITE
-    libc_sys_socket_unittests
+    libc-sys-socket-tests
   SRCS
     sendmsg_recvmsg_test.cpp
   DEPENDS
@@ -288,7 +288,7 @@ add_libc_test(
 add_libc_test(
   shutdown_test
   SUITE
-    libc_sys_socket_unittests
+    libc-sys-socket-tests
   SRCS
     shutdown_test.cpp
   DEPENDS
@@ -308,7 +308,7 @@ add_libc_test(
 add_libc_test(
   sockaddr_storage_test
   SUITE
-    libc_sys_socket_unittests
+    libc-sys-socket-tests
   SRCS
     sockaddr_storage_test.cpp
     sockaddr_storage_helper.cpp
diff --git a/libc/test/src/sys/stat/CMakeLists.txt b/libc/test/src/sys/stat/CMakeLists.txt
index 72f44c68d03576..21f2ba4ff824b8 100644
--- a/libc/test/src/sys/stat/CMakeLists.txt
+++ b/libc/test/src/sys/stat/CMakeLists.txt
@@ -1,11 +1,11 @@
-add_custom_target(libc_sys_stat_unittests)
+add_libc_testsuite(libc-sys-stat-tests)
 
 add_subdirectory(testdata)
 
 add_libc_test(
   chmod_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     chmod_test.cpp
   DEPENDS
@@ -31,7 +31,7 @@ add_libc_test(
 add_libc_test(
   fchmodat_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     fchmodat_test.cpp
   DEPENDS
@@ -51,7 +51,7 @@ add_libc_test(
 add_libc_test(
   fchmod_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     fchmod_test.cpp
   DEPENDS
@@ -70,7 +70,7 @@ add_libc_test(
 add_libc_test(
   mkdirat_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     mkdirat_test.cpp
   DEPENDS
@@ -86,7 +86,7 @@ add_libc_test(
 add_libc_test(
   mkfifo_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     mkfifo_test.cpp
   DEPENDS
@@ -106,7 +106,7 @@ add_libc_test(
 add_libc_test(
   mkfifoat_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     mkfifoat_test.cpp
   DEPENDS
@@ -130,7 +130,7 @@ add_libc_test(
 add_libc_test(
   mknod_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     mknod_test.cpp
   DEPENDS
@@ -153,7 +153,7 @@ add_libc_test(
 add_libc_test(
   mknodat_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     mknodat_test.cpp
   DEPENDS
@@ -178,7 +178,7 @@ add_libc_test(
 add_libc_test(
   stat_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     stat_test.cpp
   DEPENDS
@@ -197,7 +197,7 @@ add_libc_test(
 add_libc_test(
   lstat_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     lstat_test.cpp
   DEPENDS
@@ -216,7 +216,7 @@ add_libc_test(
 add_libc_test(
   fstat_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     fstat_test.cpp
   DEPENDS
@@ -235,7 +235,7 @@ add_libc_test(
 add_libc_test(
   fstatat_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     fstatat_test.cpp
   DEPENDS
@@ -256,7 +256,7 @@ add_libc_test(
 add_libc_test(
   utimensat_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     utimensat_test.cpp
   DEPENDS
@@ -278,7 +278,7 @@ add_libc_test(
 add_libc_test(
   futimens_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     futimens_test.cpp
   DEPENDS
@@ -301,7 +301,7 @@ add_libc_test(
 add_libc_test(
   umask_test
   SUITE
-    libc_sys_stat_unittests
+    libc-sys-stat-tests
   SRCS
     umask_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/statfs/linux/CMakeLists.txt b/libc/test/src/sys/statfs/linux/CMakeLists.txt
index 1b80b1f6db7b83..abeef5bd57386c 100644
--- a/libc/test/src/sys/statfs/linux/CMakeLists.txt
+++ b/libc/test/src/sys/statfs/linux/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_statfs_unittests)
+add_libc_testsuite(libc-sys-statfs-tests)
 
 add_libc_test(
   statfs_test
   SUITE
-    libc_sys_statfs_unittests
+    libc-sys-statfs-tests
   SRCS
     statfs_test.cpp
   DEPENDS
@@ -19,7 +19,7 @@ add_libc_test(
 add_libc_test(
   fstatfs_test
   SUITE
-    libc_sys_statfs_unittests
+    libc-sys-statfs-tests
   SRCS
     fstatfs_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/statvfs/linux/CMakeLists.txt b/libc/test/src/sys/statvfs/linux/CMakeLists.txt
index fde91a6986a413..6892826955fc32 100644
--- a/libc/test/src/sys/statvfs/linux/CMakeLists.txt
+++ b/libc/test/src/sys/statvfs/linux/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_statvfs_unittests)
+add_libc_testsuite(libc-sys-statvfs-tests)
 
 add_libc_test(
   statvfs_test
   SUITE
-    libc_sys_statvfs_unittests
+    libc-sys-statvfs-tests
   SRCS
     statvfs_test.cpp
   DEPENDS
@@ -19,7 +19,7 @@ add_libc_test(
 add_libc_test(
   fstatvfs_test
   SUITE
-    libc_sys_statvfs_unittests
+    libc-sys-statvfs-tests
   SRCS
     fstatvfs_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/sysinfo/CMakeLists.txt b/libc/test/src/sys/sysinfo/CMakeLists.txt
index e975f58a7505ee..1b20625d3a4dad 100644
--- a/libc/test/src/sys/sysinfo/CMakeLists.txt
+++ b/libc/test/src/sys/sysinfo/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_sysinfo_unittests)
+add_libc_testsuite(libc-sys-sysinfo-tests)
 
 add_libc_test(
   sysinfo_test
   SUITE
-    libc_sys_sysinfo_unittests
+    libc-sys-sysinfo-tests
   SRCS
     sysinfo_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/sysmacros/linux/CMakeLists.txt b/libc/test/src/sys/sysmacros/linux/CMakeLists.txt
index c866cdab097873..b1c8c8a845acb5 100644
--- a/libc/test/src/sys/sysmacros/linux/CMakeLists.txt
+++ b/libc/test/src/sys/sysmacros/linux/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_sysmacros_unittests)
+add_libc_testsuite(libc-sys-sysmacros-tests)
 
 add_libc_test(
   sysmacros_test
   SUITE
-    libc_sys_sysmacros_unittests
+    libc-sys-sysmacros-tests
   SRCS
     sysmacros_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/time/CMakeLists.txt b/libc/test/src/sys/time/CMakeLists.txt
index b09632996d1366..28a8510dd273ac 100644
--- a/libc/test/src/sys/time/CMakeLists.txt
+++ b/libc/test/src/sys/time/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_time_unittests)
+add_libc_testsuite(libc-sys-time-tests)
 
 add_libc_test(
   utimes_test
   SUITE
-    libc_sys_time_unittests
+    libc-sys-time-tests
   SRCS
     utimes_test.cpp
   DEPENDS
@@ -23,7 +23,7 @@ add_libc_test(
 add_libc_test(
   setitimer_test
   SUITE
-    libc_sys_time_unittests
+    libc-sys-time-tests
   SRCS
     setitimer_test.cpp
   DEPENDS
@@ -41,7 +41,7 @@ add_libc_test(
 add_libc_test(
   getitimer_test
   SUITE
-    libc_sys_time_unittests
+    libc-sys-time-tests
   SRCS
     getitimer_test.cpp
   DEPENDS
@@ -56,7 +56,7 @@ add_libc_test(
 add_libc_test(
   gettimeofday_test
   SUITE
-    libc_sys_time_unittests
+    libc-sys-time-tests
   SRCS
     gettimeofday_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/uio/CMakeLists.txt b/libc/test/src/sys/uio/CMakeLists.txt
index 9d8beec1fe5bee..0350cf79d7998b 100644
--- a/libc/test/src/sys/uio/CMakeLists.txt
+++ b/libc/test/src/sys/uio/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_uio_unittests)
+add_libc_testsuite(libc-sys-uio-tests)
 
 add_libc_test(
   writev_test
   SUITE
-    libc_sys_uio_unittests
+    libc-sys-uio-tests
   SRCS
     writev_test.cpp
   DEPENDS
@@ -20,7 +20,7 @@ add_libc_test(
 add_libc_test(
   readv_test
   SUITE
-    libc_sys_uio_unittests
+    libc-sys-uio-tests
   SRCS
     readv_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/utsname/CMakeLists.txt b/libc/test/src/sys/utsname/CMakeLists.txt
index e32108ec914929..510d30da8e440c 100644
--- a/libc/test/src/sys/utsname/CMakeLists.txt
+++ b/libc/test/src/sys/utsname/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_utsname_unittests)
+add_libc_testsuite(libc-sys-utsname-tests)
 
 add_libc_test(
   uname_test
   SUITE
-    libc_sys_utsname_unittests
+    libc-sys-utsname-tests
   SRCS
     uname_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/wait/CMakeLists.txt b/libc/test/src/sys/wait/CMakeLists.txt
index 8ed17fb7ec7ac7..2a94070a2c9d44 100644
--- a/libc/test/src/sys/wait/CMakeLists.txt
+++ b/libc/test/src/sys/wait/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_wait_unittests)
+add_libc_testsuite(libc-sys-wait-tests)
 
 add_libc_test(
   waitpid_test
   SUITE
-    libc_sys_wait_unittests
+    libc-sys-wait-tests
   SRCS
     waitpid_test.cpp
   DEPENDS
@@ -17,7 +17,7 @@ add_libc_test(
 add_libc_test(
   wait4_test
   SUITE
-    libc_sys_wait_unittests
+    libc-sys-wait-tests
   SRCS
     wait4_test.cpp
   DEPENDS
@@ -31,7 +31,7 @@ add_libc_test(
 add_libc_test(
   waitid_test
   SUITE
-    libc_sys_wait_unittests
+    libc-sys-wait-tests
   SRCS
     waitid_test.cpp
   DEPENDS
diff --git a/libc/test/src/sys/xattr/CMakeLists.txt b/libc/test/src/sys/xattr/CMakeLists.txt
index 43d9956de50c7b..44d537e542a5e5 100644
--- a/libc/test/src/sys/xattr/CMakeLists.txt
+++ b/libc/test/src/sys/xattr/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_sys_xattr_unittests)
+add_libc_testsuite(libc-sys-xattr-tests)
 
 add_libc_test(
   fxattr_test
   SUITE
-    libc_sys_xattr_unittests
+    libc-sys-xattr-tests
   SRCS
     fxattr_test.cpp
   DEPENDS
@@ -28,7 +28,7 @@ add_libc_test(
 add_libc_test(
   lxattr_test
   SUITE
-    libc_sys_xattr_unittests
+    libc-sys-xattr-tests
   SRCS
     lxattr_test.cpp
   DEPENDS
@@ -54,7 +54,7 @@ add_libc_test(
 add_libc_test(
   xattr_test
   SUITE
-    libc_sys_xattr_unittests
+    libc-sys-xattr-tests
   SRCS
     xattr_test.cpp
   DEPENDS
diff --git a/libc/test/src/termios/CMakeLists.txt b/libc/test/src/termios/CMakeLists.txt
index 19486532bc2f9c..b85203367b603d 100644
--- a/libc/test/src/termios/CMakeLists.txt
+++ b/libc/test/src/termios/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_termios_unittests)
+add_libc_testsuite(libc-termios-tests)
 
 add_libc_test(
   termios_test
   SUITE
-    libc_termios_unittests
+    libc-termios-tests
   SRCS
     termios_test.cpp
   DEPENDS
@@ -27,7 +27,7 @@ add_libc_test(
 add_libc_test(
   tcgetwinsize_test
   SUITE
-    libc_termios_unittests
+    libc-termios-tests
   SRCS
     tcgetwinsize_test.cpp
   DEPENDS
@@ -46,7 +46,7 @@ add_libc_test(
 add_libc_test(
   tcsetwinsize_test
   SUITE
-    libc_termios_unittests
+    libc-termios-tests
   SRCS
     tcsetwinsize_test.cpp
   DEPENDS
diff --git a/libc/test/src/time/CMakeLists.txt b/libc/test/src/time/CMakeLists.txt
index 3f231c5fd793fa..e00d3768ff9358 100644
--- a/libc/test/src/time/CMakeLists.txt
+++ b/libc/test/src/time/CMakeLists.txt
@@ -1,4 +1,4 @@
-add_custom_target(libc_time_unittests)
+add_libc_testsuite(libc-time-tests)
 
 add_header_library(
   time_test_utils
@@ -15,7 +15,7 @@ add_header_library(
 add_libc_test(
   asctime_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     asctime_test.cpp
   CXX_STANDARD
@@ -32,7 +32,7 @@ add_libc_test(
 add_libc_test(
   asctime_r_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     asctime_r_test.cpp
   CXX_STANDARD
@@ -49,7 +49,7 @@ add_libc_test(
 add_libc_test(
   ctime_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     ctime_test.cpp
   CXX_STANDARD
@@ -67,7 +67,7 @@ add_libc_test(
 add_libc_test(
   ctime_r_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     ctime_r_test.cpp
   CXX_STANDARD
@@ -85,7 +85,7 @@ add_libc_test(
 add_libc_test(
   localtime_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     localtime_test.cpp
   DEPENDS
@@ -96,7 +96,7 @@ add_libc_test(
 add_libc_test(
   localtime_r_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     localtime_r_test.cpp
   DEPENDS
@@ -108,7 +108,7 @@ add_libc_test(
 add_libc_test(
   clock_gettime_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     clock_gettime_test.cpp
   DEPENDS
@@ -121,7 +121,7 @@ add_libc_test(
 add_libc_test(
   clock_getcpuclockid_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     clock_getcpuclockid_test.cpp
   DEPENDS
@@ -138,7 +138,7 @@ add_libc_test(
 add_libc_test(
   clock_getres_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     clock_getres_test.cpp
   DEPENDS
@@ -150,7 +150,7 @@ add_libc_test(
 add_libc_test(
   clock_settime_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     clock_settime_test.cpp
   DEPENDS
@@ -165,7 +165,7 @@ add_libc_test(
 add_libc_test(
   timer_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     timer_test.cpp
   DEPENDS
@@ -189,7 +189,7 @@ add_libc_test(
 add_libc_test(
   difftime_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     difftime_test.cpp
   DEPENDS
@@ -201,7 +201,7 @@ add_libc_test(
 add_libc_test(
   gmtime_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     gmtime_test.cpp
   DEPENDS
@@ -218,7 +218,7 @@ add_libc_test(
 add_libc_test(
   gmtime_r_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     gmtime_r_test.cpp
   DEPENDS
@@ -232,7 +232,7 @@ add_libc_test(
 add_libc_test(
   mktime_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     mktime_test.cpp
   CXX_STANDARD
@@ -248,7 +248,7 @@ add_libc_test(
 add_libc_test(
   nanosleep_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     nanosleep_test.cpp
   DEPENDS
@@ -262,7 +262,7 @@ add_libc_test(
 add_libc_test(
   strftime_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     strftime_test.cpp
   DEPENDS
@@ -273,7 +273,7 @@ add_libc_test(
 add_libc_test(
   strptime_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     strptime_test.cpp
   DEPENDS
@@ -284,7 +284,7 @@ add_libc_test(
 add_libc_test(
   time_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     time_test.cpp
   DEPENDS
@@ -296,7 +296,7 @@ add_libc_test(
 add_libc_test(
   timespec_get_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     timespec_get_test.cpp
   DEPENDS
@@ -307,7 +307,7 @@ add_libc_test(
 add_libc_test(
   clock_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     clock_test.cpp
   DEPENDS
@@ -320,7 +320,7 @@ add_libc_test(
 add_libc_test(
   tzset_test
   SUITE
-    libc_time_unittests
+    libc-time-tests
   SRCS
     tzset_test.cpp
   DEPENDS
diff --git a/libc/test/src/ucontext/CMakeLists.txt b/libc/test/src/ucontext/CMakeLists.txt
index e0e82b13d0e0c5..c773a151f37e5e 100644
--- a/libc/test/src/ucontext/CMakeLists.txt
+++ b/libc/test/src/ucontext/CMakeLists.txt
@@ -1,10 +1,10 @@
-add_custom_target(libc_ucontext_unittests)
+add_libc_testsuite(libc-ucontext-tests)
 
 if(TARGET libc.src.ucontext.getcontext)
   add_libc_test(
     ucontext_test
     SUITE
-      libc_ucontext_unittests
+      libc-ucontext-tests
     SRCS
       ucontext_test.cpp
     DEPENDS
diff --git a/libc/test/src/unistd/CMakeLists.txt b/libc/test/src/unistd/CMakeLists.txt
index 08e42e3fe4c643..d9ec87c429a6f1 100644
--- a/libc/test/src/unistd/CMakeLists.txt
+++ b/libc/test/src/unistd/CMakeLists.txt
@@ -1,11 +1,11 @@
-add_custom_target(libc_unistd_unittests)
+add_libc_testsuite(libc-unistd-tests)
 
 add_subdirectory(testdata)
 
 add_libc_test(
   alarm_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     alarm_test.cpp
   DEPENDS
@@ -20,7 +20,7 @@ add_libc_test(
 add_libc_test(
   access_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     access_test.cpp
   DEPENDS
@@ -38,7 +38,7 @@ add_libc_test(
 add_libc_test(
   chdir_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     chdir_test.cpp
   DEPENDS
@@ -55,7 +55,7 @@ add_libc_test(
 add_libc_test(
   chown_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     chown_test.cpp
   DEPENDS
@@ -76,7 +76,7 @@ add_libc_test(
 add_libc_test(
   chroot_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     chroot_test.cpp
   DEPENDS
@@ -92,7 +92,7 @@ add_libc_test(
 add_libc_test(
   dup_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     dup_test.cpp
   DEPENDS
@@ -112,7 +112,7 @@ add_libc_test(
 add_libc_test(
   dup2_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     dup2_test.cpp
   DEPENDS
@@ -132,7 +132,7 @@ add_libc_test(
 add_libc_test(
   dup3_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     dup3_test.cpp
   DEPENDS
@@ -152,7 +152,7 @@ add_libc_test(
 add_libc_test(
   faccessat_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     faccessat_test.cpp
   DEPENDS
@@ -170,7 +170,7 @@ add_libc_test(
 add_libc_test(
   fchdir_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     fchdir_test.cpp
   DEPENDS
@@ -186,7 +186,7 @@ add_libc_test(
 add_libc_test(
   fchown_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     fchown_test.cpp
   DEPENDS
@@ -207,7 +207,7 @@ add_libc_test(
 add_libc_test(
   fchownat_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     fchownat_test.cpp
   DEPENDS
@@ -229,7 +229,7 @@ add_libc_test(
 add_libc_test(
   fdatasync_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     fdatasync_test.cpp
   DEPENDS
@@ -248,7 +248,7 @@ add_libc_test(
 add_libc_test(
   fexecve_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     fexecve_test.cpp
   DEPENDS
@@ -261,7 +261,7 @@ add_libc_test(
 add_libc_test(
   ftruncate_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     ftruncate_test.cpp
   DEPENDS
@@ -282,7 +282,7 @@ add_libc_test(
 add_libc_test(
   pread_pwrite_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     pread_pwrite_test.cpp
   DEPENDS
@@ -303,7 +303,7 @@ add_libc_test(
 add_libc_test(
   read_write_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     read_write_test.cpp
   DEPENDS
@@ -320,7 +320,7 @@ add_libc_test(
 add_libc_test(
   lchown_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     lchown_test.cpp
   DEPENDS
@@ -343,7 +343,7 @@ add_libc_test(
 add_libc_test(
   link_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     link_test.cpp
   DEPENDS
@@ -361,7 +361,7 @@ add_libc_test(
 add_libc_test(
   linkat_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     linkat_test.cpp
   DEPENDS
@@ -379,7 +379,7 @@ add_libc_test(
 add_libc_test(
   lseek_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     lseek_test.cpp
   DEPENDS
@@ -396,7 +396,7 @@ add_libc_test(
 add_libc_test(
   nice_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     nice_test.cpp
   DEPENDS
@@ -407,7 +407,7 @@ add_libc_test(
 add_libc_test(
   pipe_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     pipe_test.cpp
   DEPENDS
@@ -422,7 +422,7 @@ add_libc_test(
 add_libc_test(
   pipe2_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     pipe2_test.cpp
   DEPENDS
@@ -437,7 +437,7 @@ add_libc_test(
 add_libc_test(
   rmdir_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     rmdir_test.cpp
   DEPENDS
@@ -453,7 +453,7 @@ add_libc_test(
 add_libc_test(
   swab_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     swab_test.cpp
   DEPENDS
@@ -463,7 +463,7 @@ add_libc_test(
 add_libc_test(
   readlink_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     readlink_test.cpp
   DEPENDS
@@ -481,7 +481,7 @@ add_libc_test(
 add_libc_test(
   readlinkat_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     readlinkat_test.cpp
   DEPENDS
@@ -500,7 +500,7 @@ add_libc_test(
 add_libc_test(
   setegid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     setegid_test.cpp
   DEPENDS
@@ -515,7 +515,7 @@ add_libc_test(
 add_libc_test(
   seteuid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     seteuid_test.cpp
   DEPENDS
@@ -530,7 +530,7 @@ add_libc_test(
 add_libc_test(
   setgid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     setgid_test.cpp
   DEPENDS
@@ -544,7 +544,7 @@ add_libc_test(
 add_libc_test(
   setpgid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     setpgid_test.cpp
   DEPENDS
@@ -557,7 +557,7 @@ add_libc_test(
 add_libc_test(
   setregid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     setregid_test.cpp
   DEPENDS
@@ -572,7 +572,7 @@ add_libc_test(
 add_libc_test(
   setreuid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     setreuid_test.cpp
   DEPENDS
@@ -587,7 +587,7 @@ add_libc_test(
 add_libc_test(
   setsid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     setsid_test.cpp
   DEPENDS
@@ -597,7 +597,7 @@ add_libc_test(
 add_libc_test(
   setuid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     setuid_test.cpp
   DEPENDS
@@ -611,7 +611,7 @@ add_libc_test(
 add_libc_test(
   sleep_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     sleep_test.cpp
   DEPENDS
@@ -624,7 +624,7 @@ add_libc_test(
 add_libc_test(
   symlink_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     symlink_test.cpp
   DEPENDS
@@ -642,7 +642,7 @@ add_libc_test(
 add_libc_test(
   symlinkat_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     symlinkat_test.cpp
   DEPENDS
@@ -660,7 +660,7 @@ add_libc_test(
 add_libc_test(
   sync_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     sync_test.cpp
   DEPENDS
@@ -670,7 +670,7 @@ add_libc_test(
 add_libc_test(
   syncfs_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     syncfs_test.cpp
   DEPENDS
@@ -690,7 +690,7 @@ add_libc_test(
 add_libc_test(
   tcgetpgrp_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     tcgetpgrp_test.cpp
   DEPENDS
@@ -708,7 +708,7 @@ add_libc_test(
 add_libc_test(
   tcsetpgrp_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     tcsetpgrp_test.cpp
   DEPENDS
@@ -726,7 +726,7 @@ add_libc_test(
 add_libc_test(
   truncate_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     truncate_test.cpp
   DEPENDS
@@ -747,7 +747,7 @@ add_libc_test(
 add_libc_test(
   unlink_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     unlink_test.cpp
   DEPENDS
@@ -764,7 +764,7 @@ add_libc_test(
 add_libc_test(
   unlinkat_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     unlinkat_test.cpp
   DEPENDS
@@ -782,7 +782,7 @@ add_libc_test(
 add_libc_test(
   usleep_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     usleep_test.cpp
   DEPENDS
@@ -796,7 +796,7 @@ add_libc_test(
 add_libc_test(
   gethostname_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     gethostname_test.cpp
   DEPENDS
@@ -808,7 +808,7 @@ add_libc_test(
 add_libc_test(
   getpagesize_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     getpagesize_test.cpp
   DEPENDS
@@ -819,7 +819,7 @@ add_libc_test(
 add_libc_test(
   getegid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     getegid_test.cpp
   DEPENDS
@@ -829,7 +829,7 @@ add_libc_test(
 add_libc_test(
   getgid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     getgid_test.cpp
   DEPENDS
@@ -839,7 +839,7 @@ add_libc_test(
 add_libc_test(
   getpid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     getpid_test.cpp
   DEPENDS
@@ -849,7 +849,7 @@ add_libc_test(
 add_libc_test(
   getpgid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     getpgid_test.cpp
   DEPENDS
@@ -863,7 +863,7 @@ add_libc_test(
 add_libc_test(
   getpgrp_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     getpgrp_test.cpp
   DEPENDS
@@ -875,7 +875,7 @@ add_libc_test(
 add_libc_test(
   getppid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     getppid_test.cpp
   DEPENDS
@@ -885,7 +885,7 @@ add_libc_test(
 add_libc_test(
   getsid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     getsid_test.cpp
   DEPENDS
@@ -897,7 +897,7 @@ add_libc_test(
 add_libc_test(
   getuid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     getuid_test.cpp
   DEPENDS
@@ -907,7 +907,7 @@ add_libc_test(
 add_libc_test(
   isatty_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     isatty_test.cpp
   DEPENDS
@@ -923,7 +923,7 @@ add_libc_test(
 add_libc_test(
   geteuid_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     geteuid_test.cpp
   DEPENDS
@@ -933,7 +933,7 @@ add_libc_test(
 add_libc_test(
   syscall_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     syscall_test.cpp
   DEPENDS
@@ -951,7 +951,7 @@ add_libc_test(
 add_libc_test(
   confstr_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     confstr_test.cpp
   DEPENDS
@@ -965,7 +965,7 @@ add_libc_test(
 add_libc_test(
   sysconf_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     sysconf_test.cpp
   DEPENDS
@@ -980,7 +980,7 @@ add_libc_test(
 add_libc_test(
   fpathconf_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     fpathconf_test.cpp
   DEPENDS
@@ -997,7 +997,7 @@ add_libc_test(
 add_libc_test(
   pathconf_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     pathconf_test.cpp
   DEPENDS
@@ -1014,7 +1014,7 @@ add_libc_test(
 add_libc_test(
   pause_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     pause_test.cpp
   DEPENDS
@@ -1035,7 +1035,7 @@ add_libc_test(
 add_libc_test(
   getopt_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     getopt_test.cpp
   DEPENDS
@@ -1048,7 +1048,7 @@ add_libc_test(
 add_libc_test(
   getentropy_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     getentropy_test.cpp
   DEPENDS
@@ -1061,7 +1061,7 @@ add_libc_test(
 add_libc_test(
   lockf_test
   SUITE
-    libc_unistd_unittests
+    libc-unistd-tests
   SRCS
     lockf_test.cpp
   DEPENDS
@@ -1082,7 +1082,7 @@ if(LLVM_LIBC_FULL_BUILD)
   add_libc_test(
     _exit_test
     SUITE
-      libc_unistd_unittests
+      libc-unistd-tests
     SRCS
       _exit_test.cpp
     DEPENDS
diff --git a/libc/test/src/wchar/CMakeLists.txt b/libc/test/src/wchar/CMakeLists.txt
index d511a1f0f4541f..558b2739930aba 100644
--- a/libc/test/src/wchar/CMakeLists.txt
+++ b/libc/test/src/wchar/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_wchar_unittests)
+add_libc_testsuite(libc-wchar-tests)
 
 add_libc_test(
   wcslen_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcslen_test.cpp
   DEPENDS
@@ -15,7 +15,7 @@ add_libc_test(
 add_libc_test(
   wcsnlen_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcsnlen_test.cpp
   DEPENDS
@@ -27,7 +27,7 @@ add_libc_test(
 add_libc_test(
   wcsdup_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcsdup_test.cpp
   DEPENDS
@@ -38,7 +38,7 @@ add_libc_test(
 add_libc_test(
   btowc_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     btowc_test.cpp
   DEPENDS
@@ -49,7 +49,7 @@ add_libc_test(
 add_libc_test(
   mbrtowc_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     mbrtowc_test.cpp
   DEPENDS
@@ -66,7 +66,7 @@ add_libc_test(
 add_libc_test(
   mbsrtowcs_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     mbsrtowcs_test.cpp
   DEPENDS
@@ -82,7 +82,7 @@ add_libc_test(
 add_libc_test(
   mbrlen_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     mbrlen_test.cpp
   DEPENDS
@@ -98,7 +98,7 @@ add_libc_test(
 add_libc_test(
   mbsnrtowcs_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     mbsnrtowcs_test.cpp
   DEPENDS
@@ -114,7 +114,7 @@ add_libc_test(
 add_libc_test(
   mbsinit_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     mbsinit_test.cpp
   DEPENDS
@@ -128,7 +128,7 @@ add_libc_test(
 add_libc_test(
   wctob_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wctob_test.cpp
   DEPENDS
@@ -138,7 +138,7 @@ add_libc_test(
 add_libc_test(
   wcrtomb_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcrtomb_test.cpp
   DEPENDS
@@ -154,7 +154,7 @@ add_libc_test(
 add_libc_test(
   wcsrtombs_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcsrtombs_test.cpp
   DEPENDS
@@ -168,7 +168,7 @@ add_libc_test(
 add_libc_test(
   wcsnrtombs_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcsnrtombs_test.cpp
   DEPENDS
@@ -182,7 +182,7 @@ add_libc_test(
 add_libc_test(
   wmemset_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wmemset_test.cpp
   DEPENDS
@@ -194,7 +194,7 @@ add_libc_test(
 add_libc_test(
   wcschr_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcschr_test.cpp
   DEPENDS
@@ -204,7 +204,7 @@ add_libc_test(
 add_libc_test(
   wcstok_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcstok_test.cpp
   DEPENDS
@@ -214,7 +214,7 @@ add_libc_test(
 add_libc_test(
   wcsncmp_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcsncmp_test.cpp
   DEPENDS
@@ -224,7 +224,7 @@ add_libc_test(
 add_libc_test(
   wcscasecmp_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcscasecmp_test.cpp
   DEPENDS
@@ -235,7 +235,7 @@ add_libc_test(
 add_libc_test(
   wcsncasecmp_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcsncasecmp_test.cpp
   DEPENDS
@@ -246,7 +246,7 @@ add_libc_test(
 add_libc_test(
   wcscmp_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcscmp_test.cpp
   DEPENDS
@@ -256,7 +256,7 @@ add_libc_test(
 add_libc_test(
   wcscoll_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcscoll_test.cpp
   DEPENDS
@@ -266,7 +266,7 @@ add_libc_test(
 add_libc_test(
   wcspbrk_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcspbrk_test.cpp
   DEPENDS
@@ -276,7 +276,7 @@ add_libc_test(
 add_libc_test(
   wcsrchr_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcsrchr_test.cpp
   DEPENDS
@@ -286,7 +286,7 @@ add_libc_test(
 add_libc_test(
   wcsspn_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcsspn_test.cpp
   DEPENDS
@@ -296,7 +296,7 @@ add_libc_test(
 add_libc_test(
   wcscspn_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcscspn_test.cpp
   DEPENDS
@@ -306,7 +306,7 @@ add_libc_test(
 add_libc_test(
   wmemchr_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wmemchr_test.cpp
   DEPENDS
@@ -316,7 +316,7 @@ add_libc_test(
 add_libc_test(
   wmemcmp_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wmemcmp_test.cpp
   DEPENDS
@@ -326,7 +326,7 @@ add_libc_test(
 add_libc_test(
   wmempcpy_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wmempcpy_test.cpp
   DEPENDS
@@ -336,7 +336,7 @@ add_libc_test(
 add_libc_test(
   wmemcpy_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wmemcpy_test.cpp
   DEPENDS
@@ -346,7 +346,7 @@ add_libc_test(
 add_libc_test(
   wmemmove_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wmemmove_test.cpp
   DEPENDS
@@ -356,7 +356,7 @@ add_libc_test(
 add_libc_test(
   wcsncpy_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcsncpy_test.cpp
   DEPENDS
@@ -366,7 +366,7 @@ add_libc_test(
 add_libc_test(
   wcscat_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcscat_test.cpp
   DEPENDS
@@ -376,7 +376,7 @@ add_libc_test(
 add_libc_test(
   wcsstr_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcsstr_test.cpp
   DEPENDS
@@ -386,7 +386,7 @@ add_libc_test(
 add_libc_test(
   wcsncat_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcsncat_test.cpp
   DEPENDS
@@ -396,7 +396,7 @@ add_libc_test(
 add_libc_test(
   wcslcat_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcslcat_test.cpp
   DEPENDS
@@ -407,7 +407,7 @@ add_libc_test(
 add_libc_test(
   wcscpy_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcscpy_test.cpp
   DEPENDS
@@ -417,7 +417,7 @@ add_libc_test(
 add_libc_test(
   wcpcpy_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcpcpy_test.cpp
   DEPENDS
@@ -427,7 +427,7 @@ add_libc_test(
 add_libc_test(
   wcslcpy_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcslcpy_test.cpp
   DEPENDS
@@ -438,7 +438,7 @@ add_libc_test(
 add_libc_test(
   wcpncpy_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcpncpy_test.cpp
   DEPENDS
@@ -459,7 +459,7 @@ add_header_library(
 add_libc_test(
   wcstol_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcstol_test.cpp
   DEPENDS
@@ -470,7 +470,7 @@ add_libc_test(
 add_libc_test(
   wcstoll_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcstoll_test.cpp
   DEPENDS
@@ -481,7 +481,7 @@ add_libc_test(
 add_libc_test(
   wcstoul_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcstoul_test.cpp
   DEPENDS
@@ -492,7 +492,7 @@ add_libc_test(
 add_libc_test(
   wcstoull_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcstoull_test.cpp
   DEPENDS
@@ -503,7 +503,7 @@ add_libc_test(
 add_libc_test(
   wcstof_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcstof_test.cpp
   DEPENDS
@@ -515,7 +515,7 @@ add_libc_test(
 add_libc_test(
   wcstod_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcstod_test.cpp
   DEPENDS
@@ -527,7 +527,7 @@ add_libc_test(
 add_libc_test(
   wcstold_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcstold_test.cpp
   DEPENDS
@@ -540,7 +540,7 @@ add_libc_test(
 add_libc_test(
   wcsxfrm_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     wcsxfrm_test.cpp
   DEPENDS
@@ -550,7 +550,7 @@ add_libc_test(
 add_libc_test(
   fwide_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     fwide_test.cpp
   DEPENDS
@@ -563,7 +563,7 @@ add_libc_test(
 add_libc_test(
   fputwc_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     fputwc_test.cpp
   DEPENDS
@@ -584,7 +584,7 @@ add_libc_test(
 add_libc_test(
   fgetwc_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     fgetwc_test.cpp
   DEPENDS
@@ -604,7 +604,7 @@ add_libc_test(
 add_libc_test(
   fputws_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     fputws_test.cpp
   DEPENDS
@@ -622,7 +622,7 @@ add_libc_test(
 add_libc_test(
   fgetws_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     fgetws_test.cpp
   DEPENDS
@@ -642,7 +642,7 @@ add_libc_test(
 add_libc_test(
   ungetwc_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     ungetwc_test.cpp
   DEPENDS
@@ -663,7 +663,7 @@ add_libc_test(
 add_libc_test(
   getwc_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     getwc_test.cpp
   DEPENDS
@@ -683,7 +683,7 @@ add_libc_test(
 add_libc_test(
   getwchar_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     getwchar_test.cpp
   DEPENDS
@@ -705,7 +705,7 @@ add_libc_test(
 add_libc_test(
   putwc_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     putwc_test.cpp
   DEPENDS
@@ -724,7 +724,7 @@ add_libc_test(
 add_libc_test(
   putwchar_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     putwchar_test.cpp
   DEPENDS
@@ -744,7 +744,7 @@ add_libc_test(
 add_libc_test(
   swprintf_test
   SUITE
-    libc_wchar_unittests
+    libc-wchar-tests
   SRCS
     swprintf_test.cpp
   DEPENDS
diff --git a/libc/test/src/wctype/CMakeLists.txt b/libc/test/src/wctype/CMakeLists.txt
index 229e63ec966c47..e802d9c0729fb0 100644
--- a/libc/test/src/wctype/CMakeLists.txt
+++ b/libc/test/src/wctype/CMakeLists.txt
@@ -1,9 +1,9 @@
-add_custom_target(libc_wctype_unittests)
+add_libc_testsuite(libc-wctype-tests)
 
 add_libc_test(
   iswalpha_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     iswalpha_test.cpp
   DEPENDS
@@ -14,7 +14,7 @@ add_libc_test(
 add_libc_test(
   iswdigit_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     iswdigit_test.cpp
   DEPENDS
@@ -25,7 +25,7 @@ add_libc_test(
 add_libc_test(
   iswcntrl_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     iswcntrl_test.cpp
   DEPENDS
@@ -35,7 +35,7 @@ add_libc_test(
 add_libc_test(
   iswgraph_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     iswgraph_test.cpp
   DEPENDS
@@ -45,7 +45,7 @@ add_libc_test(
 add_libc_test(
   iswlower_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     iswlower_test.cpp
   DEPENDS
@@ -55,7 +55,7 @@ add_libc_test(
 add_libc_test(
   iswspace_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     iswspace_test.cpp
   DEPENDS
@@ -65,7 +65,7 @@ add_libc_test(
 add_libc_test(
   iswblank_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     iswblank_test.cpp
   DEPENDS
@@ -75,7 +75,7 @@ add_libc_test(
 add_libc_test(
   iswxdigit_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     iswxdigit_test.cpp
   DEPENDS
@@ -85,7 +85,7 @@ add_libc_test(
 add_libc_test(
   iswalnum_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     iswalnum_test.cpp
   DEPENDS
@@ -95,7 +95,7 @@ add_libc_test(
 add_libc_test(
   iswupper_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     iswupper_test.cpp
   DEPENDS
@@ -105,7 +105,7 @@ add_libc_test(
 add_libc_test(
   iswpunct_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     iswpunct_test.cpp
   DEPENDS
@@ -115,7 +115,7 @@ add_libc_test(
 add_libc_test(
   iswprint_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     iswprint_test.cpp
   DEPENDS
@@ -125,7 +125,7 @@ add_libc_test(
 add_libc_test(
   iswctype_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     iswctype_test.cpp
   DEPENDS
@@ -136,7 +136,7 @@ add_libc_test(
 add_libc_test(
   wctype_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     wctype_test.cpp
   DEPENDS
@@ -146,7 +146,7 @@ add_libc_test(
 add_libc_test(
   towlower_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     towlower_test.cpp
   DEPENDS
@@ -158,7 +158,7 @@ add_libc_test(
 add_libc_test(
   towupper_test
   SUITE
-    libc_wctype_unittests
+    libc-wctype-tests
   SRCS
     towupper_test.cpp
   DEPENDS
diff --git a/libc/test/utils/UnitTest/CMakeLists.txt b/libc/test/utils/UnitTest/CMakeLists.txt
index aafb2ed9243617..7882bdf8057929 100644
--- a/libc/test/utils/UnitTest/CMakeLists.txt
+++ b/libc/test/utils/UnitTest/CMakeLists.txt
@@ -2,12 +2,12 @@ if(LIBC_TARGET_OS_IS_GPU)
   return()
 endif()
 
-add_custom_target(libc_unittest_tests)
+add_libc_testsuite(libc-unittest-tests)
 
 add_libc_test(
   testfilter_test
   SUITE
-    libc_unittest_tests
+    libc-unittest-tests
   SRCS
     testfilter_test.cpp
   DEPENDS



More information about the libc-commits mailing list