diff --git a/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake b/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake index 8dcee1ec42246..1795639011936 100644 --- a/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake +++ b/libc/cmake/modules/LLVMLibCCompileOptionRules.cmake @@ -213,85 +213,3 @@ function(_get_common_compile_options output_var flags) endif() set(${output_var} ${compile_options} PARENT_SCOPE) endfunction() - -function(_get_common_test_compile_options output_var c_test flags) - _get_compile_options_from_flags(compile_flags ${flags}) - - set(compile_options - ${LIBC_COMPILE_OPTIONS_DEFAULT} - ${LIBC_TEST_COMPILE_OPTIONS_DEFAULT} - ${compile_flags}) - - if(LLVM_LIBC_COMPILER_IS_GCC_COMPATIBLE) - list(APPEND compile_options "-fpie") - - if(LLVM_LIBC_FULL_BUILD) - list(APPEND compile_options "-DLIBC_FULL_BUILD") - # Only add -ffreestanding flag in full build mode. - list(APPEND compile_options "-ffreestanding") - list(APPEND compile_options "-fno-exceptions") - list(APPEND compile_options "-fno-unwind-tables") - list(APPEND compile_options "-fno-asynchronous-unwind-tables") - if(NOT c_test) - list(APPEND compile_options "-fno-rtti") - endif() - endif() - - if(LIBC_COMPILER_HAS_FIXED_POINT) - list(APPEND compile_options "-ffixed-point") - endif() - - # list(APPEND compile_options "-Wall") - # list(APPEND compile_options "-Wextra") - # -DLIBC_WNO_ERROR=ON if you can't build cleanly with -Werror. - if(NOT LIBC_WNO_ERROR) - # list(APPEND compile_options "-Werror") - endif() - # list(APPEND compile_options "-Wconversion") - # list(APPEND compile_options "-Wno-sign-conversion") - # list(APPEND compile_options "-Wimplicit-fallthrough") - # list(APPEND compile_options "-Wwrite-strings") - # list(APPEND compile_options "-Wextra-semi") - # Silence this warning because _Complex is a part of C99. - if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") - if(NOT c_test) - list(APPEND compile_options "-fext-numeric-literals") - endif() - else() - list(APPEND compile_options "-Wno-c99-extensions") - list(APPEND compile_options "-Wno-gnu-imaginary-constant") - endif() - list(APPEND compile_options "-Wno-pedantic") - # if(NOT CMAKE_COMPILER_IS_GNUCXX) - # list(APPEND compile_options "-Wnewline-eof") - # list(APPEND compile_options "-Wnonportable-system-include-path") - # list(APPEND compile_options "-Wstrict-prototypes") - # list(APPEND compile_options "-Wthread-safety") - # list(APPEND compile_options "-Wglobal-constructors") - # endif() - endif() - set(${output_var} ${compile_options} PARENT_SCOPE) -endfunction() - -function(_get_hermetic_test_compile_options output_var flags) - _get_common_test_compile_options(compile_options "" "${flags}") - - list(APPEND compile_options "-fpie") - list(APPEND compile_options "-ffreestanding") - list(APPEND compile_options "-fno-exceptions") - list(APPEND compile_options "-fno-rtti") - - # The GPU build requires overriding the default CMake triple and architecture. - if(LIBC_TARGET_ARCHITECTURE_IS_AMDGPU) - list(APPEND compile_options - -Wno-multi-gpu -nogpulib -mcpu=${LIBC_GPU_TARGET_ARCHITECTURE} -flto - -mcode-object-version=${LIBC_GPU_CODE_OBJECT_VERSION}) - elseif(LIBC_TARGET_ARCHITECTURE_IS_NVPTX) - list(APPEND compile_options - "SHELL:-mllvm -nvptx-emit-init-fini-kernel=false" - -Wno-multi-gpu --cuda-path=${LIBC_CUDA_ROOT} - -nogpulib -march=${LIBC_GPU_TARGET_ARCHITECTURE} -fno-use-cxa-atexit) - endif() - - set(${output_var} ${compile_options} PARENT_SCOPE) -endfunction() diff --git a/libc/cmake/modules/LLVMLibCTestRules.cmake b/libc/cmake/modules/LLVMLibCTestRules.cmake index 84f3125d557ea..4dbe5e046cc68 100644 --- a/libc/cmake/modules/LLVMLibCTestRules.cmake +++ b/libc/cmake/modules/LLVMLibCTestRules.cmake @@ -1,3 +1,80 @@ +function(_get_common_test_compile_options output_var c_test flags) + _get_compile_options_from_flags(compile_flags ${flags}) + + set(compile_options + ${LIBC_COMPILE_OPTIONS_DEFAULT} + ${LIBC_TEST_COMPILE_OPTIONS_DEFAULT} + ${compile_flags}) + + if(LLVM_LIBC_COMPILER_IS_GCC_COMPATIBLE) + list(APPEND compile_options "-fpie") + + if(LLVM_LIBC_FULL_BUILD) + list(APPEND compile_options "-DLIBC_FULL_BUILD") + # Only add -ffreestanding flag in full build mode. + list(APPEND compile_options "-ffreestanding") + list(APPEND compile_options "-fno-exceptions") + list(APPEND compile_options "-fno-unwind-tables") + list(APPEND compile_options "-fno-asynchronous-unwind-tables") + if(NOT c_test) + list(APPEND compile_options "-fno-rtti") + endif() + endif() + + if(LIBC_COMPILER_HAS_FIXED_POINT) + list(APPEND compile_options "-ffixed-point") + endif() + + # list(APPEND compile_options "-Wall") + # list(APPEND compile_options "-Wextra") + # -DLIBC_WNO_ERROR=ON if you can't build cleanly with -Werror. + if(NOT LIBC_WNO_ERROR) + # list(APPEND compile_options "-Werror") + endif() + # list(APPEND compile_options "-Wconversion") + # list(APPEND compile_options "-Wno-sign-conversion") + # list(APPEND compile_options "-Wimplicit-fallthrough") + # list(APPEND compile_options "-Wwrite-strings") + # list(APPEND compile_options "-Wextra-semi") + # Silence this warning because _Complex is a part of C99. + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + if(NOT c_test) + list(APPEND compile_options "-fext-numeric-literals") + endif() + else() + list(APPEND compile_options "-Wno-c99-extensions") + list(APPEND compile_options "-Wno-gnu-imaginary-constant") + endif() + list(APPEND compile_options "-Wno-pedantic") + # if(NOT CMAKE_COMPILER_IS_GNUCXX) + # list(APPEND compile_options "-Wnewline-eof") + # list(APPEND compile_options "-Wnonportable-system-include-path") + # list(APPEND compile_options "-Wstrict-prototypes") + # list(APPEND compile_options "-Wthread-safety") + # list(APPEND compile_options "-Wglobal-constructors") + # endif() + endif() + set(${output_var} ${compile_options} PARENT_SCOPE) +endfunction() + +function(_get_hermetic_test_compile_options output_var) + _get_common_test_compile_options(compile_options "" "") + + # The GPU build requires overriding the default CMake triple and architecture. + if(LIBC_TARGET_ARCHITECTURE_IS_AMDGPU) + list(APPEND compile_options + -Wno-multi-gpu -nogpulib -mcpu=${LIBC_GPU_TARGET_ARCHITECTURE} -flto + -mcode-object-version=${LIBC_GPU_CODE_OBJECT_VERSION}) + elseif(LIBC_TARGET_ARCHITECTURE_IS_NVPTX) + list(APPEND compile_options + "SHELL:-mllvm -nvptx-emit-init-fini-kernel=false" + -Wno-multi-gpu --cuda-path=${LIBC_CUDA_ROOT} + -nogpulib -march=${LIBC_GPU_TARGET_ARCHITECTURE} -fno-use-cxa-atexit) + endif() + + set(${output_var} ${compile_options} PARENT_SCOPE) +endfunction() + # This is a helper function and not a build rule. It is to be used by the # various test rules to generate the full list of object files # recursively produced by "add_entrypoint_object" and "add_object_library" @@ -100,7 +177,6 @@ function(get_object_files_for_test result skipped_entrypoints_list) endfunction(get_object_files_for_test) - # Rule to add a libc unittest. # Usage # add_libc_unittest(