diff --git a/libc/CMakeLists.txt b/libc/CMakeLists.txt index 5196735bef4e7..db34af8e23b43 100644 --- a/libc/CMakeLists.txt +++ b/libc/CMakeLists.txt @@ -8,6 +8,13 @@ endif() include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake NO_POLICY_SCOPE) +# If we are not building as a part of LLVM, build libc as an +# standalone project, using LLVM as an external library: +if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + project(libc) + set(LIBC_BUILT_STANDALONE TRUE) +endif() + if (LIBC_CMAKE_VERBOSE_LOGGING) get_directory_property(LIBC_OLD_PREPROCESSOR_DEFS COMPILE_DEFINITIONS) foreach(OLD_DEF ${LIBC_OLD_PREPROCESSOR_DEFS}) @@ -30,6 +37,14 @@ endif() # Default to C++17 set(CMAKE_CXX_STANDARD 17) +if(LIBC_BUILT_STANDALONE) + # Python 3 is required and needs to be manually imported in + # a standalone build. + # NOTE: We specifically need pyyaml in order for hdrgen to work. + find_package(Python3 ${LLVM_MINIMUM_PYTHON_VERSION} REQUIRED + COMPONENTS Interpreter) +endif() + list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules") # The top-level source directory.