diff --git a/libc/cmake/modules/LLVMLibCObjectRules.cmake b/libc/cmake/modules/LLVMLibCObjectRules.cmake --- a/libc/cmake/modules/LLVMLibCObjectRules.cmake +++ b/libc/cmake/modules/LLVMLibCObjectRules.cmake @@ -21,7 +21,12 @@ set(compile_options ${LIBC_COMPILE_OPTIONS_DEFAULT} ${ARGN}) if(LLVM_COMPILER_IS_GCC_COMPATIBLE) list(APPEND compile_options "-fpie") - list(APPEND compile_options "-ffreestanding") + + if(LLVM_LIBC_FULL_BUILD) + # Only add -ffreestanding flag in full build mode. + list(APPEND compile_options "-ffreestanding") + endif() + list(APPEND compile_options "-fno-builtin") list(APPEND compile_options "-fno-exceptions") list(APPEND compile_options "-fno-lax-vector-conversions") diff --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake --- a/libc/cmake/modules/LLVMLibCTestRules.cmake +++ b/libc/cmake/modules/LLVMLibCTestRules.cmake @@ -156,8 +156,14 @@ ) target_compile_options( ${fq_build_target_name} - PRIVATE -fpie -ffreestanding ${LIBC_COMPILE_OPTIONS_DEFAULT} + PRIVATE -fpie ${LIBC_COMPILE_OPTIONS_DEFAULT} ) + if(LLVM_LIBC_FULL_BUILD) + target_compile_options( + ${fq_build_target_name} + PRIVATE -ffreestanding + ) + endif() if(LIBC_UNITTEST_COMPILE_OPTIONS) target_compile_options( ${fq_build_target_name}