[libc][NFC] Move utils/CPP to src/__support/CPP.

The idea is to move all pieces related to the actual libc sources to the
"src" directory. This allows downstream users to ship and build just the
"src" directory.

Reviewed By: michaelrj

Differential Revision: https://reviews.llvm.org/D112653

GitOrigin-RevId: f362aea42d29da2c8620c6eb8902f31d01613edc
diff --git a/fuzzing/math/CMakeLists.txt b/fuzzing/math/CMakeLists.txt
index a3d3081..b1e130e 100644
--- a/fuzzing/math/CMakeLists.txt
+++ b/fuzzing/math/CMakeLists.txt
@@ -46,7 +46,7 @@
     libc.src.math.truncf
     libc.src.math.truncl
     libc.src.__support.FPUtil.fputil
-    libc.utils.CPP.standalone_cpp
+    libc.src.__support.CPP.standalone_cpp
 )
 
 add_libc_fuzzer(
diff --git a/fuzzing/math/Compare.h b/fuzzing/math/Compare.h
index 28ca904..8a794c4 100644
--- a/fuzzing/math/Compare.h
+++ b/fuzzing/math/Compare.h
@@ -9,8 +9,8 @@
 #ifndef LLVM_LIBC_FUZZING_MATH_COMPARE_H
 #define LLVM_LIBC_FUZZING_MATH_COMPARE_H
 
+#include "src/__support/CPP/TypeTraits.h"
 #include "src/__support/FPUtil/FPBits.h"
-#include "utils/CPP/TypeTraits.h"
 
 template <typename T>
 __llvm_libc::cpp::EnableIfType<__llvm_libc::cpp::IsFloatingPointType<T>::Value,
diff --git a/src/__support/CMakeLists.txt b/src/__support/CMakeLists.txt
index 1d45206..871c3a4 100644
--- a/src/__support/CMakeLists.txt
+++ b/src/__support/CMakeLists.txt
@@ -1,3 +1,5 @@
+add_subdirectory(CPP)
+
 add_header_library(
   common
   HDRS
@@ -29,7 +31,7 @@
     .high_precision_decimal
     libc.include.errno
     libc.src.errno.__errno_location
-    libc.utils.CPP.standalone_cpp
+    libc.src.__support.CPP.standalone_cpp
     libc.src.__support.FPUtil.fputil
 )
 
diff --git a/utils/CPP/Array.h b/src/__support/CPP/Array.h
similarity index 91%
rename from utils/CPP/Array.h
rename to src/__support/CPP/Array.h
index c774a9f..e198943 100644
--- a/utils/CPP/Array.h
+++ b/src/__support/CPP/Array.h
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_LIBC_UTILS_CPP_ARRAY_H
-#define LLVM_LIBC_UTILS_CPP_ARRAY_H
+#ifndef LLVM_LIBC_SRC_SUPPORT_CPP_ARRAY_H
+#define LLVM_LIBC_SRC_SUPPORT_CPP_ARRAY_H
 
 #include <stddef.h> // For size_t.
 
@@ -49,4 +49,4 @@
 } // namespace cpp
 } // namespace __llvm_libc
 
-#endif // LLVM_LIBC_UTILS_CPP_ARRAY_H
+#endif // LLVM_LIBC_SRC_SUPPORT_CPP_ARRAY_H
diff --git a/utils/CPP/ArrayRef.h b/src/__support/CPP/ArrayRef.h
similarity index 96%
rename from utils/CPP/ArrayRef.h
rename to src/__support/CPP/ArrayRef.h
index cad7db9..a9a0910 100644
--- a/utils/CPP/ArrayRef.h
+++ b/src/__support/CPP/ArrayRef.h
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_LIBC_UTILS_CPP_ARRAYREF_H
-#define LLVM_LIBC_UTILS_CPP_ARRAYREF_H
+#ifndef LLVM_LIBC_SRC_SUPPORT_CPP_ARRAYREF_H
+#define LLVM_LIBC_SRC_SUPPORT_CPP_ARRAYREF_H
 
 #include "Array.h"
 #include "TypeTraits.h" //RemoveCVType
@@ -136,4 +136,4 @@
 } // namespace cpp
 } // namespace __llvm_libc
 
-#endif // LLVM_LIBC_UTILS_CPP_ARRAYREF_H
+#endif // LLVM_LIBC_SRC_SUPPORT_CPP_ARRAYREF_H
diff --git a/utils/CPP/Bitset.h b/src/__support/CPP/Bitset.h
similarity index 89%
rename from utils/CPP/Bitset.h
rename to src/__support/CPP/Bitset.h
index 304a6fe..e6f5ace 100644
--- a/utils/CPP/Bitset.h
+++ b/src/__support/CPP/Bitset.h
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_LIBC_UTILS_CPP_BITSET_H
-#define LLVM_LIBC_UTILS_CPP_BITSET_H
+#ifndef LLVM_LIBC_SRC_SUPPORT_CPP_BITSET_H
+#define LLVM_LIBC_SRC_SUPPORT_CPP_BITSET_H
 
 #include <stddef.h> // For size_t.
 #include <stdint.h> // For uintptr_t.
@@ -36,4 +36,4 @@
 } // namespace cpp
 } // namespace __llvm_libc
 
-#endif // LLVM_LIBC_UTILS_CPP_BITSET_H
+#endif // LLVM_LIBC_SRC_SUPPORT_CPP_BITSET_H
diff --git a/utils/CPP/CMakeLists.txt b/src/__support/CPP/CMakeLists.txt
similarity index 100%
rename from utils/CPP/CMakeLists.txt
rename to src/__support/CPP/CMakeLists.txt
diff --git a/utils/CPP/Functional.h b/src/__support/CPP/Functional.h
similarity index 84%
rename from utils/CPP/Functional.h
rename to src/__support/CPP/Functional.h
index da73e4c..51f6331 100644
--- a/utils/CPP/Functional.h
+++ b/src/__support/CPP/Functional.h
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_LIBC_UTILS_CPP_FUNCTIONAL_H
-#define LLVM_LIBC_UTILS_CPP_FUNCTIONAL_H
+#ifndef LLVM_LIBC_SRC_SUPPORT_CPP_FUNCTIONAL_H
+#define LLVM_LIBC_SRC_SUPPORT_CPP_FUNCTIONAL_H
 
 namespace __llvm_libc {
 namespace cpp {
@@ -27,4 +27,4 @@
 } // namespace cpp
 } // namespace __llvm_libc
 
-#endif // LLVM_LIBC_UTILS_CPP_FUNCTIONAL_H
+#endif // LLVM_LIBC_SRC_SUPPORT_CPP_FUNCTIONAL_H
diff --git a/utils/CPP/Limits.h b/src/__support/CPP/Limits.h
similarity index 93%
rename from utils/CPP/Limits.h
rename to src/__support/CPP/Limits.h
index 393c3b6..7e5de10 100644
--- a/utils/CPP/Limits.h
+++ b/src/__support/CPP/Limits.h
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_LIBC_UTILS_CPP_LIMITS_H
-#define LLVM_LIBC_UTILS_CPP_LIMITS_H
+#ifndef LLVM_LIBC_SRC_SUPPORT_CPP_LIMITS_H
+#define LLVM_LIBC_SRC_SUPPORT_CPP_LIMITS_H
 
 #include <limits.h>
 
@@ -66,4 +66,4 @@
 } // namespace cpp
 } // namespace __llvm_libc
 
-#endif // LLVM_LIBC_UTILS_CPP_LIMITS_H
+#endif // LLVM_LIBC_SRC_SUPPORT_CPP_LIMITS_H
diff --git a/utils/CPP/README.md b/src/__support/CPP/README.md
similarity index 100%
rename from utils/CPP/README.md
rename to src/__support/CPP/README.md
diff --git a/utils/CPP/StringView.h b/src/__support/CPP/StringView.h
similarity index 94%
rename from utils/CPP/StringView.h
rename to src/__support/CPP/StringView.h
index 52f61a0..31efc5a 100644
--- a/utils/CPP/StringView.h
+++ b/src/__support/CPP/StringView.h
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_LIBC_UTILS_CPP_STRINGVIEW_H
-#define LLVM_LIBC_UTILS_CPP_STRINGVIEW_H
+#ifndef LLVM_LIBC_SRC_SUPPORT_CPP_STRINGVIEW_H
+#define LLVM_LIBC_SRC_SUPPORT_CPP_STRINGVIEW_H
 
 #include <stddef.h>
 
@@ -96,4 +96,4 @@
 } // namespace cpp
 } // namespace __llvm_libc
 
-#endif // LLVM_LIBC_UTILS_CPP_STRINGVIEW_H
+#endif // LLVM_LIBC_SRC_SUPPORT_CPP_STRINGVIEW_H
diff --git a/utils/CPP/TypeTraits.h b/src/__support/CPP/TypeTraits.h
similarity index 94%
rename from utils/CPP/TypeTraits.h
rename to src/__support/CPP/TypeTraits.h
index 060d36e..0c542f1 100644
--- a/utils/CPP/TypeTraits.h
+++ b/src/__support/CPP/TypeTraits.h
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
-#ifndef LLVM_LIBC_UTILS_CPP_TYPETRAITS_H
-#define LLVM_LIBC_UTILS_CPP_TYPETRAITS_H
+#ifndef LLVM_LIBC_SRC_SUPPORT_CPP_TYPETRAITS_H
+#define LLVM_LIBC_SRC_SUPPORT_CPP_TYPETRAITS_H
 
 namespace __llvm_libc {
 namespace cpp {
@@ -74,4 +74,4 @@
 } // namespace cpp
 } // namespace __llvm_libc
 
-#endif // LLVM_LIBC_UTILS_CPP_TYPETRAITS_H
+#endif // LLVM_LIBC_SRC_SUPPORT_CPP_TYPETRAITS_H
diff --git a/src/__support/FPUtil/BasicOperations.h b/src/__support/FPUtil/BasicOperations.h
index 95debe7..08d7222 100644
--- a/src/__support/FPUtil/BasicOperations.h
+++ b/src/__support/FPUtil/BasicOperations.h
@@ -11,7 +11,7 @@
 
 #include "FPBits.h"
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 namespace __llvm_libc {
 namespace fputil {
diff --git a/src/__support/FPUtil/CMakeLists.txt b/src/__support/FPUtil/CMakeLists.txt
index 589b9b5..f47b545 100644
--- a/src/__support/FPUtil/CMakeLists.txt
+++ b/src/__support/FPUtil/CMakeLists.txt
@@ -33,7 +33,7 @@
     libc.include.errno
     libc.include.fenv
     libc.src.__support.common
-    libc.utils.CPP.standalone_cpp
+    libc.src.__support.CPP.standalone_cpp
 )
 
 add_library(
@@ -48,6 +48,6 @@
 add_dependencies(
   LibcFPTestHelpers
   LibcUnitTest
-  libc.utils.CPP.standalone_cpp
+  libc.src.__support.CPP.standalone_cpp
   libc.src.__support.FPUtil.fputil
 )
diff --git a/src/__support/FPUtil/DivisionAndRemainderOperations.h b/src/__support/FPUtil/DivisionAndRemainderOperations.h
index abdc388..412ea96 100644
--- a/src/__support/FPUtil/DivisionAndRemainderOperations.h
+++ b/src/__support/FPUtil/DivisionAndRemainderOperations.h
@@ -13,7 +13,7 @@
 #include "ManipulationFunctions.h"
 #include "NormalFloat.h"
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 namespace __llvm_libc {
 namespace fputil {
diff --git a/src/__support/FPUtil/FMA.h b/src/__support/FPUtil/FMA.h
index 4161554..c109b34 100644
--- a/src/__support/FPUtil/FMA.h
+++ b/src/__support/FPUtil/FMA.h
@@ -9,7 +9,7 @@
 #ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_FMA_H
 #define LLVM_LIBC_SRC_SUPPORT_FPUTIL_FMA_H
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 #ifdef __x86_64__
 #include "x86_64/FMA.h"
diff --git a/src/__support/FPUtil/FPBits.h b/src/__support/FPUtil/FPBits.h
index 7361bba..b761dd7 100644
--- a/src/__support/FPUtil/FPBits.h
+++ b/src/__support/FPUtil/FPBits.h
@@ -11,7 +11,7 @@
 
 #include "PlatformDefs.h"
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 #include "FloatProperties.h"
 #include <stdint.h>
diff --git a/src/__support/FPUtil/Hypot.h b/src/__support/FPUtil/Hypot.h
index 425a42c..448dc1c 100644
--- a/src/__support/FPUtil/Hypot.h
+++ b/src/__support/FPUtil/Hypot.h
@@ -11,7 +11,7 @@
 
 #include "BasicOperations.h"
 #include "FPBits.h"
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 namespace __llvm_libc {
 namespace fputil {
diff --git a/src/__support/FPUtil/ManipulationFunctions.h b/src/__support/FPUtil/ManipulationFunctions.h
index c2504aa..053eae3 100644
--- a/src/__support/FPUtil/ManipulationFunctions.h
+++ b/src/__support/FPUtil/ManipulationFunctions.h
@@ -14,7 +14,7 @@
 #include "NormalFloat.h"
 #include "PlatformDefs.h"
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 #include <limits.h>
 #include <math.h>
diff --git a/src/__support/FPUtil/NearestIntegerOperations.h b/src/__support/FPUtil/NearestIntegerOperations.h
index a7c67c9..99e2ba7 100644
--- a/src/__support/FPUtil/NearestIntegerOperations.h
+++ b/src/__support/FPUtil/NearestIntegerOperations.h
@@ -12,7 +12,7 @@
 #include "FEnvUtils.h"
 #include "FPBits.h"
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 #include <math.h>
 #if math_errhandling & MATH_ERRNO
diff --git a/src/__support/FPUtil/NormalFloat.h b/src/__support/FPUtil/NormalFloat.h
index 0445403..2c83b81 100644
--- a/src/__support/FPUtil/NormalFloat.h
+++ b/src/__support/FPUtil/NormalFloat.h
@@ -11,7 +11,7 @@
 
 #include "FPBits.h"
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 #include <stdint.h>
 
diff --git a/src/__support/FPUtil/PolyEval.h b/src/__support/FPUtil/PolyEval.h
index 95311ed..ccf4d60 100644
--- a/src/__support/FPUtil/PolyEval.h
+++ b/src/__support/FPUtil/PolyEval.h
@@ -9,7 +9,7 @@
 #ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_POLYEVAL_H
 #define LLVM_LIBC_SRC_SUPPORT_FPUTIL_POLYEVAL_H
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 // Evaluate polynomial using Horner's Scheme:
 // With polyeval(x, a_0, a_1, ..., a_n) = a_n * x^n + ... + a_1 * x + a_0, we
diff --git a/src/__support/FPUtil/Sqrt.h b/src/__support/FPUtil/Sqrt.h
index 041031f..b6c7cc4 100644
--- a/src/__support/FPUtil/Sqrt.h
+++ b/src/__support/FPUtil/Sqrt.h
@@ -12,7 +12,7 @@
 #include "FPBits.h"
 #include "PlatformDefs.h"
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 namespace __llvm_libc {
 namespace fputil {
diff --git a/src/__support/FPUtil/SqrtLongDoubleX86.h b/src/__support/FPUtil/SqrtLongDoubleX86.h
index f4d89b5..98875ba 100644
--- a/src/__support/FPUtil/SqrtLongDoubleX86.h
+++ b/src/__support/FPUtil/SqrtLongDoubleX86.h
@@ -12,7 +12,7 @@
 #include "FPBits.h"
 #include "Sqrt.h"
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 namespace __llvm_libc {
 namespace fputil {
diff --git a/src/__support/FPUtil/aarch64/FMA.h b/src/__support/FPUtil/aarch64/FMA.h
index 7e4c726..bb92144 100644
--- a/src/__support/FPUtil/aarch64/FMA.h
+++ b/src/__support/FPUtil/aarch64/FMA.h
@@ -9,7 +9,7 @@
 #ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_AARCH64_FMA_H
 #define LLVM_LIBC_SRC_SUPPORT_FPUTIL_AARCH64_FMA_H
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 namespace __llvm_libc {
 namespace fputil {
diff --git a/src/__support/FPUtil/generic/FMA.h b/src/__support/FPUtil/generic/FMA.h
index 6d19ba9..c543a49 100644
--- a/src/__support/FPUtil/generic/FMA.h
+++ b/src/__support/FPUtil/generic/FMA.h
@@ -9,7 +9,7 @@
 #ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_GENERIC_FMA_H
 #define LLVM_LIBC_SRC_SUPPORT_FPUTIL_GENERIC_FMA_H
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 namespace __llvm_libc {
 namespace fputil {
diff --git a/src/__support/FPUtil/x86_64/FMA.h b/src/__support/FPUtil/x86_64/FMA.h
index 3229b21..59f55a2 100644
--- a/src/__support/FPUtil/x86_64/FMA.h
+++ b/src/__support/FPUtil/x86_64/FMA.h
@@ -9,7 +9,7 @@
 #ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_FMA_H
 #define LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_FMA_H
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 namespace __llvm_libc {
 namespace fputil {
diff --git a/src/__support/integer_operations.h b/src/__support/integer_operations.h
index c27a263..e7588f5 100644
--- a/src/__support/integer_operations.h
+++ b/src/__support/integer_operations.h
@@ -9,7 +9,7 @@
 #ifndef LLVM_LIBC_SRC_STDLIB_ABS_UTILS_H
 #define LLVM_LIBC_SRC_STDLIB_ABS_UTILS_H
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 
 namespace __llvm_libc {
 
diff --git a/src/__support/str_conv_utils.h b/src/__support/str_conv_utils.h
index 649e3ee..13c800a 100644
--- a/src/__support/str_conv_utils.h
+++ b/src/__support/str_conv_utils.h
@@ -9,8 +9,8 @@
 #ifndef LIBC_SRC_STDLIB_STDLIB_UTILS_H
 #define LIBC_SRC_STDLIB_STDLIB_UTILS_H
 
+#include "src/__support/CPP/Limits.h"
 #include "src/__support/ctype_utils.h"
-#include "utils/CPP/Limits.h"
 #include <errno.h>
 #include <limits.h>
 
diff --git a/src/__support/str_to_float.h b/src/__support/str_to_float.h
index 67ebf3e..5574858 100644
--- a/src/__support/str_to_float.h
+++ b/src/__support/str_to_float.h
@@ -9,12 +9,12 @@
 #ifndef LIBC_SRC_SUPPORT_STR_TO_FLOAT_H
 #define LIBC_SRC_SUPPORT_STR_TO_FLOAT_H
 
+#include "src/__support/CPP/Limits.h"
 #include "src/__support/FPUtil/FPBits.h"
 #include "src/__support/ctype_utils.h"
 #include "src/__support/detailed_powers_of_ten.h"
 #include "src/__support/high_precision_decimal.h"
 #include "src/__support/str_conv_utils.h"
-#include "utils/CPP/Limits.h"
 #include <errno.h>
 
 namespace __llvm_libc {
diff --git a/src/math/generic/math_utils.h b/src/math/generic/math_utils.h
index 4afddb0..ef86e88 100644
--- a/src/math/generic/math_utils.h
+++ b/src/math/generic/math_utils.h
@@ -9,8 +9,8 @@
 #ifndef LLVM_LIBC_SRC_MATH_MATH_UTILS_H
 #define LLVM_LIBC_SRC_MATH_MATH_UTILS_H
 
+#include "src/__support/CPP/TypeTraits.h"
 #include "src/__support/common.h"
-#include "utils/CPP/TypeTraits.h"
 #include <errno.h>
 #include <math.h>
 
diff --git a/src/string/CMakeLists.txt b/src/string/CMakeLists.txt
index 86c8f0f..923ba09 100644
--- a/src/string/CMakeLists.txt
+++ b/src/string/CMakeLists.txt
@@ -5,7 +5,7 @@
   HDRS
     string_utils.h
   DEPENDS
-    libc.utils.CPP.standalone_cpp
+    libc.src.__support.CPP.standalone_cpp
 )
 
 add_entrypoint_object(
@@ -188,7 +188,7 @@
   HDRS
     strspn.h
   DEPENDS
-    libc.utils.CPP.standalone_cpp
+    libc.src.__support.CPP.standalone_cpp
 )
 
 add_entrypoint_object(
diff --git a/src/string/string_utils.h b/src/string/string_utils.h
index 4f179bb..699f65f 100644
--- a/src/string/string_utils.h
+++ b/src/string/string_utils.h
@@ -9,8 +9,8 @@
 #ifndef LIBC_SRC_STRING_STRING_UTILS_H
 #define LIBC_SRC_STRING_STRING_UTILS_H
 
+#include "src/__support/CPP/Bitset.h"
 #include "src/__support/common.h"
-#include "utils/CPP/Bitset.h"
 #include <stddef.h> // size_t
 
 namespace __llvm_libc {
diff --git a/src/string/strspn.cpp b/src/string/strspn.cpp
index 893b2c9..8798505 100644
--- a/src/string/strspn.cpp
+++ b/src/string/strspn.cpp
@@ -8,8 +8,8 @@
 
 #include "src/string/strspn.h"
 
+#include "src/__support/CPP/Bitset.h"
 #include "src/__support/common.h"
-#include "utils/CPP/Bitset.h"
 #include <stddef.h>
 
 namespace __llvm_libc {
diff --git a/test/config/linux/x86_64/syscall_test.cpp b/test/config/linux/x86_64/syscall_test.cpp
index a6746a4..971b571 100644
--- a/test/config/linux/x86_64/syscall_test.cpp
+++ b/test/config/linux/x86_64/syscall_test.cpp
@@ -9,7 +9,7 @@
 #include "config/linux/syscall.h"
 #include "utils/UnitTest/Test.h"
 
-#include "utils/CPP/Functional.h"
+#include "src/__support/CPP/Functional.h"
 
 TEST(LlvmLibcX86_64_SyscallTest, APITest) {
   // We only do a signature test here. Actual functionality tests are
diff --git a/test/src/CMakeLists.txt b/test/src/CMakeLists.txt
index 790bb85..e4f9e49 100644
--- a/test/src/CMakeLists.txt
+++ b/test/src/CMakeLists.txt
@@ -90,7 +90,7 @@
 target_include_directories(
   libc-integration-test BEFORE
   PRIVATE
-    "${LIBC_SOURCE_DIR}/utils/CPP"
+    "${LIBC_SOURCE_DIR}/src/__support/CPP"
     "${LIBC_BUILD_DIR}/include"
 )
 target_compile_options(
diff --git a/test/src/math/CMakeLists.txt b/test/src/math/CMakeLists.txt
index 5a7a145..8b1c146 100644
--- a/test/src/math/CMakeLists.txt
+++ b/test/src/math/CMakeLists.txt
@@ -12,7 +12,7 @@
   DEPENDS
     libc.include.errno
     libc.src.math.cosf
-    libc.utils.CPP.standalone_cpp
+    libc.src.__support.CPP.standalone_cpp
     libc.src.__support.FPUtil.fputil
 )
 
@@ -40,7 +40,7 @@
   DEPENDS
     libc.include.errno
     libc.src.math.sinf
-    libc.utils.CPP.standalone_cpp
+    libc.src.__support.CPP.standalone_cpp
     libc.src.__support.FPUtil.fputil
 )
 
@@ -68,7 +68,7 @@
   DEPENDS
     libc.include.errno
     libc.src.math.sincosf
-    libc.utils.CPP.standalone_cpp
+    libc.src.__support.CPP.standalone_cpp
     libc.src.__support.FPUtil.fputil
 )
 
diff --git a/test/src/math/NextAfterTest.h b/test/src/math/NextAfterTest.h
index b101e7f..262fcb8 100644
--- a/test/src/math/NextAfterTest.h
+++ b/test/src/math/NextAfterTest.h
@@ -9,10 +9,10 @@
 #ifndef LLVM_LIBC_TEST_SRC_MATH_NEXTAFTERTEST_H
 #define LLVM_LIBC_TEST_SRC_MATH_NEXTAFTERTEST_H
 
+#include "src/__support/CPP/TypeTraits.h"
 #include "src/__support/FPUtil/BasicOperations.h"
 #include "src/__support/FPUtil/FPBits.h"
 #include "src/__support/FPUtil/TestHelpers.h"
-#include "utils/CPP/TypeTraits.h"
 #include "utils/UnitTest/Test.h"
 #include <math.h>
 
diff --git a/test/src/math/cosf_test.cpp b/test/src/math/cosf_test.cpp
index ea34f31..de7d5db 100644
--- a/test/src/math/cosf_test.cpp
+++ b/test/src/math/cosf_test.cpp
@@ -6,11 +6,11 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "src/__support/CPP/Array.h"
 #include "src/__support/FPUtil/FPBits.h"
 #include "src/__support/FPUtil/TestHelpers.h"
 #include "src/math/cosf.h"
 #include "test/src/math/sdcomp26094.h"
-#include "utils/CPP/Array.h"
 #include "utils/MPFRWrapper/MPFRUtils.h"
 #include "utils/UnitTest/Test.h"
 #include <math.h>
diff --git a/test/src/math/sdcomp26094.h b/test/src/math/sdcomp26094.h
index 9c7d464..c42c12c 100644
--- a/test/src/math/sdcomp26094.h
+++ b/test/src/math/sdcomp26094.h
@@ -9,7 +9,7 @@
 #ifndef LLVM_LIBC_TEST_SRC_MATH_SDCOMP26094_H
 #define LLVM_LIBC_TEST_SRC_MATH_SDCOMP26094_H
 
-#include "utils/CPP/Array.h"
+#include "src/__support/CPP/Array.h"
 
 #include <stdint.h>
 
diff --git a/test/src/math/sincosf_test.cpp b/test/src/math/sincosf_test.cpp
index 4e626e8..77fe377 100644
--- a/test/src/math/sincosf_test.cpp
+++ b/test/src/math/sincosf_test.cpp
@@ -6,11 +6,11 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "src/__support/CPP/Array.h"
 #include "src/__support/FPUtil/FPBits.h"
 #include "src/__support/FPUtil/TestHelpers.h"
 #include "src/math/sincosf.h"
 #include "test/src/math/sdcomp26094.h"
-#include "utils/CPP/Array.h"
 #include "utils/MPFRWrapper/MPFRUtils.h"
 #include "utils/UnitTest/Test.h"
 #include <math.h>
diff --git a/test/src/math/sinf_test.cpp b/test/src/math/sinf_test.cpp
index 344766f..a3620ef 100644
--- a/test/src/math/sinf_test.cpp
+++ b/test/src/math/sinf_test.cpp
@@ -6,11 +6,11 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "src/__support/CPP/Array.h"
 #include "src/__support/FPUtil/FPBits.h"
 #include "src/__support/FPUtil/TestHelpers.h"
 #include "src/math/sinf.h"
 #include "test/src/math/sdcomp26094.h"
-#include "utils/CPP/Array.h"
 #include "utils/MPFRWrapper/MPFRUtils.h"
 #include "utils/UnitTest/Test.h"
 #include <math.h>
diff --git a/test/src/stdio/fwrite_test.cpp b/test/src/stdio/fwrite_test.cpp
index a65555d..9d38d84 100644
--- a/test/src/stdio/fwrite_test.cpp
+++ b/test/src/stdio/fwrite_test.cpp
@@ -6,9 +6,9 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "src/__support/CPP/Array.h"
 #include "src/stdio/FILE.h"
 #include "src/stdio/fwrite.h"
-#include "utils/CPP/Array.h"
 #include "utils/UnitTest/Test.h"
 
 TEST(LlvmLibcStdio, FWriteBasic) {
diff --git a/test/src/string/bzero_test.cpp b/test/src/string/bzero_test.cpp
index d56af88..a997cbc 100644
--- a/test/src/string/bzero_test.cpp
+++ b/test/src/string/bzero_test.cpp
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "src/__support/CPP/ArrayRef.h"
 #include "src/string/bzero.h"
-#include "utils/CPP/ArrayRef.h"
 #include "utils/UnitTest/Test.h"
 
 using __llvm_libc::cpp::Array;
diff --git a/test/src/string/memccpy_test.cpp b/test/src/string/memccpy_test.cpp
index 980c3a0..ac11e33 100644
--- a/test/src/string/memccpy_test.cpp
+++ b/test/src/string/memccpy_test.cpp
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "src/__support/CPP/ArrayRef.h"
 #include "src/string/memccpy.h"
-#include "utils/CPP/ArrayRef.h"
 #include "utils/UnitTest/Test.h"
 #include <stddef.h> // For size_t.
 
diff --git a/test/src/string/memcpy_test.cpp b/test/src/string/memcpy_test.cpp
index fc9b8f3..9a7c9ba 100644
--- a/test/src/string/memcpy_test.cpp
+++ b/test/src/string/memcpy_test.cpp
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "src/__support/CPP/ArrayRef.h"
 #include "src/string/memcpy.h"
-#include "utils/CPP/ArrayRef.h"
 #include "utils/UnitTest/Test.h"
 
 using __llvm_libc::cpp::Array;
diff --git a/test/src/string/memmove_test.cpp b/test/src/string/memmove_test.cpp
index 22e0b3b..b922fb4 100644
--- a/test/src/string/memmove_test.cpp
+++ b/test/src/string/memmove_test.cpp
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "src/__support/CPP/ArrayRef.h"
 #include "src/string/memmove.h"
-#include "utils/CPP/ArrayRef.h"
 #include "utils/UnitTest/Test.h"
 
 class LlvmLibcMemmoveTest : public __llvm_libc::testing::Test {
diff --git a/test/src/string/memory_utils/CMakeLists.txt b/test/src/string/memory_utils/CMakeLists.txt
index 9f2950d..31276f1 100644
--- a/test/src/string/memory_utils/CMakeLists.txt
+++ b/test/src/string/memory_utils/CMakeLists.txt
@@ -8,7 +8,7 @@
     utils_test.cpp
   DEPENDS
     libc.src.string.memory_utils.memory_utils
-    libc.utils.CPP.standalone_cpp
+    libc.src.__support.CPP.standalone_cpp
   COMPILE_OPTIONS
     ${LIBC_COMPILE_OPTIONS_NATIVE}
     -ffreestanding
diff --git a/test/src/string/memory_utils/elements_test.cpp b/test/src/string/memory_utils/elements_test.cpp
index 120cd6f..0f5f460 100644
--- a/test/src/string/memory_utils/elements_test.cpp
+++ b/test/src/string/memory_utils/elements_test.cpp
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "src/__support/CPP/Array.h"
 #include "src/string/memory_utils/elements.h"
-#include "utils/CPP/Array.h"
 #include "utils/UnitTest/Test.h"
 
 namespace __llvm_libc {
diff --git a/test/src/string/memory_utils/memory_access_test.cpp b/test/src/string/memory_utils/memory_access_test.cpp
index 4a0bff2..966863d 100644
--- a/test/src/string/memory_utils/memory_access_test.cpp
+++ b/test/src/string/memory_utils/memory_access_test.cpp
@@ -8,9 +8,9 @@
 
 #define LLVM_LIBC_UNITTEST_OBSERVE 1
 
+#include "src/__support/CPP/Array.h"
+#include "src/__support/CPP/ArrayRef.h"
 #include "src/string/memory_utils/elements.h"
-#include "utils/CPP/Array.h"
-#include "utils/CPP/ArrayRef.h"
 #include "utils/UnitTest/Test.h"
 
 #include <stdio.h>
diff --git a/test/src/string/memory_utils/utils_test.cpp b/test/src/string/memory_utils/utils_test.cpp
index bb830d3..6b9ece4 100644
--- a/test/src/string/memory_utils/utils_test.cpp
+++ b/test/src/string/memory_utils/utils_test.cpp
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "src/__support/CPP/Array.h"
 #include "src/string/memory_utils/utils.h"
-#include "utils/CPP/Array.h"
 #include "utils/UnitTest/Test.h"
 
 namespace __llvm_libc {
diff --git a/test/src/string/memset_test.cpp b/test/src/string/memset_test.cpp
index 147ab1f..c3f65cf 100644
--- a/test/src/string/memset_test.cpp
+++ b/test/src/string/memset_test.cpp
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "src/__support/CPP/ArrayRef.h"
 #include "src/string/memset.h"
-#include "utils/CPP/ArrayRef.h"
 #include "utils/UnitTest/Test.h"
 
 using __llvm_libc::cpp::Array;
diff --git a/test/src/string/strncpy_test.cpp b/test/src/string/strncpy_test.cpp
index 83f24d5..7bb70e9 100644
--- a/test/src/string/strncpy_test.cpp
+++ b/test/src/string/strncpy_test.cpp
@@ -6,8 +6,8 @@
 //
 //===----------------------------------------------------------------------===//
 
+#include "src/__support/CPP/ArrayRef.h"
 #include "src/string/strncpy.h"
-#include "utils/CPP/ArrayRef.h"
 #include "utils/UnitTest/Test.h"
 #include <stddef.h> // For size_t.
 
diff --git a/test/utils/CPP/CMakeLists.txt b/test/utils/CPP/CMakeLists.txt
index 09c43d6..a4a0eed 100644
--- a/test/utils/CPP/CMakeLists.txt
+++ b/test/utils/CPP/CMakeLists.txt
@@ -7,7 +7,7 @@
   SRCS
     bitset_test.cpp
   DEPENDS
-    libc.utils.CPP.standalone_cpp
+    libc.src.__support.CPP.standalone_cpp
 )
 
 add_libc_unittest(
@@ -17,7 +17,7 @@
   SRCS
     stringview_test.cpp
   DEPENDS
-    libc.utils.CPP.standalone_cpp
+    libc.src.__support.CPP.standalone_cpp
 )
 
 add_libc_unittest(
@@ -27,7 +27,7 @@
   SRCS
     limits_test.cpp
   DEPENDS
-    libc.utils.CPP.standalone_cpp
+    libc.src.__support.CPP.standalone_cpp
 )
 
 add_libc_unittest(
@@ -37,5 +37,5 @@
   SRCS
     arrayref_test.cpp
   DEPENDS
-    libc.utils.CPP.standalone_cpp
+    libc.src.__support.CPP.standalone_cpp
 )
diff --git a/test/utils/CPP/arrayref_test.cpp b/test/utils/CPP/arrayref_test.cpp
index 83dda96..79466c7 100644
--- a/test/utils/CPP/arrayref_test.cpp
+++ b/test/utils/CPP/arrayref_test.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "utils/CPP/ArrayRef.h"
+#include "src/__support/CPP/ArrayRef.h"
 #include "utils/UnitTest/Test.h"
 
 namespace __llvm_libc {
diff --git a/test/utils/CPP/bitset_test.cpp b/test/utils/CPP/bitset_test.cpp
index 66e608c..4bcddad 100644
--- a/test/utils/CPP/bitset_test.cpp
+++ b/test/utils/CPP/bitset_test.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "utils/CPP/Bitset.h"
+#include "src/__support/CPP/Bitset.h"
 #include "utils/UnitTest/Test.h"
 
 TEST(LlvmLibcBitsetTest, SetBitForSizeEqualToOne) {
diff --git a/test/utils/CPP/limits_test.cpp b/test/utils/CPP/limits_test.cpp
index 6904a72..fa0ae38 100644
--- a/test/utils/CPP/limits_test.cpp
+++ b/test/utils/CPP/limits_test.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "utils/CPP/Limits.h"
+#include "src/__support/CPP/Limits.h"
 #include "utils/UnitTest/Test.h"
 
 // This just checks against the C spec, almost all implementations will surpass
diff --git a/test/utils/CPP/stringview_test.cpp b/test/utils/CPP/stringview_test.cpp
index b88bcc3..a62cde9 100644
--- a/test/utils/CPP/stringview_test.cpp
+++ b/test/utils/CPP/stringview_test.cpp
@@ -6,7 +6,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-#include "utils/CPP/StringView.h"
+#include "src/__support/CPP/StringView.h"
 #include "utils/UnitTest/Test.h"
 
 TEST(LlvmLibcStringViewTest, InitializeCheck) {
diff --git a/test/utils/UnitTest/CMakeLists.txt b/test/utils/UnitTest/CMakeLists.txt
index 68b127a..d677260 100644
--- a/test/utils/UnitTest/CMakeLists.txt
+++ b/test/utils/UnitTest/CMakeLists.txt
@@ -7,5 +7,5 @@
   SRCS
     testfilter_test.cpp
   DEPENDS
-    libc.utils.CPP.standalone_cpp
+    libc.src.__support.CPP.standalone_cpp
 )
diff --git a/utils/CMakeLists.txt b/utils/CMakeLists.txt
index a43094c..df79da3 100644
--- a/utils/CMakeLists.txt
+++ b/utils/CMakeLists.txt
@@ -1,4 +1,3 @@
-add_subdirectory(CPP)
 add_subdirectory(MPFRWrapper)
 add_subdirectory(testutils)
 add_subdirectory(UnitTest)
diff --git a/utils/MPFRWrapper/CMakeLists.txt b/utils/MPFRWrapper/CMakeLists.txt
index 46621fb..2ef3731 100644
--- a/utils/MPFRWrapper/CMakeLists.txt
+++ b/utils/MPFRWrapper/CMakeLists.txt
@@ -3,7 +3,7 @@
     MPFRUtils.cpp
     MPFRUtils.h
   )
-  add_dependencies(libcMPFRWrapper libc.utils.CPP.standalone_cpp libc.src.__support.FPUtil.fputil LibcUnitTest)
+  add_dependencies(libcMPFRWrapper libc.src.__support.CPP.standalone_cpp libc.src.__support.FPUtil.fputil LibcUnitTest)
   if(EXISTS ${LLVM_LIBC_MPFR_INSTALL_PATH})
     target_include_directories(libcMPFRWrapper PUBLIC ${LLVM_LIBC_MPFR_INSTALL_PATH}/include)
     target_link_directories(libcMPFRWrapper PUBLIC ${LLVM_LIBC_MPFR_INSTALL_PATH}/lib)
diff --git a/utils/MPFRWrapper/MPFRUtils.cpp b/utils/MPFRWrapper/MPFRUtils.cpp
index 86305af..8bcaa13 100644
--- a/utils/MPFRWrapper/MPFRUtils.cpp
+++ b/utils/MPFRWrapper/MPFRUtils.cpp
@@ -8,9 +8,9 @@
 
 #include "MPFRUtils.h"
 
+#include "src/__support/CPP/StringView.h"
 #include "src/__support/FPUtil/FPBits.h"
 #include "src/__support/FPUtil/TestHelpers.h"
-#include "utils/CPP/StringView.h"
 
 #include <cmath>
 #include <memory>
diff --git a/utils/MPFRWrapper/MPFRUtils.h b/utils/MPFRWrapper/MPFRUtils.h
index 4e8dd38..d2ca761 100644
--- a/utils/MPFRWrapper/MPFRUtils.h
+++ b/utils/MPFRWrapper/MPFRUtils.h
@@ -9,7 +9,7 @@
 #ifndef LLVM_LIBC_UTILS_TESTUTILS_MPFRUTILS_H
 #define LLVM_LIBC_UTILS_TESTUTILS_MPFRUTILS_H
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 #include "utils/UnitTest/Test.h"
 
 #include <stdint.h>
diff --git a/utils/UnitTest/CMakeLists.txt b/utils/UnitTest/CMakeLists.txt
index 3dd79d0..4140c6d 100644
--- a/utils/UnitTest/CMakeLists.txt
+++ b/utils/UnitTest/CMakeLists.txt
@@ -5,7 +5,7 @@
   LibcTest.h
 )
 target_include_directories(LibcUnitTest PUBLIC ${LIBC_SOURCE_DIR})
-add_dependencies(LibcUnitTest libc.utils.CPP.standalone_cpp)
+add_dependencies(LibcUnitTest libc.src.__support.CPP.standalone_cpp)
 target_link_libraries(LibcUnitTest PUBLIC libc_test_utils)
 
 add_library(
@@ -14,6 +14,6 @@
 )
 
 target_include_directories(LibcUnitTestMain PUBLIC ${LIBC_SOURCE_DIR})
-add_dependencies(LibcUnitTestMain LibcUnitTest libc.utils.CPP.standalone_cpp)
+add_dependencies(LibcUnitTestMain LibcUnitTest libc.src.__support.CPP.standalone_cpp)
 target_link_libraries(LibcUnitTestMain PUBLIC LibcUnitTest libc_test_utils)
 
diff --git a/utils/UnitTest/LibcTest.h b/utils/UnitTest/LibcTest.h
index 8e2eec9..a9dfbcb 100644
--- a/utils/UnitTest/LibcTest.h
+++ b/utils/UnitTest/LibcTest.h
@@ -9,12 +9,12 @@
 #ifndef LLVM_LIBC_UTILS_UNITTEST_LIBCTEST_H
 #define LLVM_LIBC_UTILS_UNITTEST_LIBCTEST_H
 
-// This file can only include headers from utils/CPP/ or utils/testutils. No
-// other headers should be included.
+// This file can only include headers from src/__support/CPP/ or
+// utils/testutils. No other headers should be included.
 
 #include "PlatformDefs.h"
 
-#include "utils/CPP/TypeTraits.h"
+#include "src/__support/CPP/TypeTraits.h"
 #include "utils/testutils/ExecuteFunction.h"
 #include "utils/testutils/StreamWrapper.h"