diff options
author | lntue <35648136+lntue@users.noreply.github.com> | 2024-06-21 23:29:15 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-06-21 23:29:15 -0400 |
commit | c2735d2d5a66e42f004323c715bdefd5ef09882a (patch) | |
tree | 096c6d1416983893ef173013a74641fe149aaa00 /libc/src/stdlib | |
parent | d69050d614cc3348fb639f4a1862e8b9a9ad9885 (diff) | |
download | llvm-c2735d2d5a66e42f004323c715bdefd5ef09882a.zip llvm-c2735d2d5a66e42f004323c715bdefd5ef09882a.tar.gz llvm-c2735d2d5a66e42f004323c715bdefd5ef09882a.tar.bz2 |
[libc][stdlib] Bring all GPU's alloc/free entrypoints under the same conditional. (#96373)
Diffstat (limited to 'libc/src/stdlib')
-rw-r--r-- | libc/src/stdlib/CMakeLists.txt | 208 |
1 files changed, 104 insertions, 104 deletions
diff --git a/libc/src/stdlib/CMakeLists.txt b/libc/src/stdlib/CMakeLists.txt index a5d5ac5..61c05f0 100644 --- a/libc/src/stdlib/CMakeLists.txt +++ b/libc/src/stdlib/CMakeLists.txt @@ -317,97 +317,121 @@ add_entrypoint_object( libc.include.stdlib ) -if(LLVM_LIBC_INCLUDE_SCUDO) - set(SCUDO_DEPS "") +if(NOT LIBC_TARGET_OS_IS_GPU) + if(LLVM_LIBC_INCLUDE_SCUDO) + set(SCUDO_DEPS "") + + include(${LIBC_SOURCE_DIR}/../compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake) + + # scudo distinguishes riscv32 and riscv64, so we need to translate the architecture + set(LIBC_TARGET_ARCHITECTURE_FOR_SCUDO ${LIBC_TARGET_ARCHITECTURE}) + if(LIBC_TARGET_ARCHITECTURE_IS_RISCV64) + set(LIBC_TARGET_ARCHITECTURE_FOR_SCUDO riscv64) + elseif(LIBC_TARGET_ARCHITECTURE_IS_RISCV32) + set(LIBC_TARGET_ARCHITECTURE_FOR_SCUDO riscv32) + endif() + + if(NOT (LIBC_TARGET_ARCHITECTURE_FOR_SCUDO IN_LIST ALL_SCUDO_STANDALONE_SUPPORTED_ARCH)) + message(FATAL_ERROR "Architecture ${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} is not supported by SCUDO. + Either disable LLVM_LIBC_INCLUDE_SCUDO or change your target architecture.") + endif() + + list(APPEND SCUDO_DEPS RTScudoStandalone.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} + RTScudoStandaloneCWrappers.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}) + + list(APPEND SCUDO_DEPS + RTGwpAsan.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} + RTGwpAsanBacktraceLibc.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} + RTGwpAsanSegvHandler.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} + ) - include(${LIBC_SOURCE_DIR}/../compiler-rt/cmake/Modules/AllSupportedArchDefs.cmake) - - # scudo distinguishes riscv32 and riscv64, so we need to translate the architecture - set(LIBC_TARGET_ARCHITECTURE_FOR_SCUDO ${LIBC_TARGET_ARCHITECTURE}) - if(LIBC_TARGET_ARCHITECTURE_IS_RISCV64) - set(LIBC_TARGET_ARCHITECTURE_FOR_SCUDO riscv64) - elseif(LIBC_TARGET_ARCHITECTURE_IS_RISCV32) - set(LIBC_TARGET_ARCHITECTURE_FOR_SCUDO riscv32) - endif() + add_entrypoint_external( + malloc + DEPENDS + ${SCUDO_DEPS} + ) + add_entrypoint_external( + calloc + DEPENDS + ${SCUDO_DEPS} + ) + add_entrypoint_external( + realloc + DEPENDS + ${SCUDO_DEPS} + ) + add_entrypoint_external( + aligned_alloc + DEPENDS + ${SCUDO_DEPS} + ) + add_entrypoint_external( + free + DEPENDS + ${SCUDO_DEPS} + ) + else() + # Only use freelist malloc for baremetal targets. + add_entrypoint_object( + freelist_malloc + SRCS + freelist_malloc.cpp + HDRS + malloc.h + DEPENDS + libc.src.__support.freelist_heap + COMPILE_OPTIONS + -DLIBC_FREELIST_MALLOC_SIZE=${LIBC_CONF_FREELIST_MALLOC_BUFFER_SIZE} + ) + get_target_property(freelist_malloc_is_skipped libc.src.stdlib.freelist_malloc "SKIPPED") + if(LIBC_TARGET_OS_IS_BAREMETAL AND NOT freelist_malloc_is_skipped) + add_entrypoint_object( + malloc + ALIAS + DEPENDS + .freelist_malloc + ) + else() + add_entrypoint_external( + malloc + ) + endif() - if(NOT (LIBC_TARGET_ARCHITECTURE_FOR_SCUDO IN_LIST ALL_SCUDO_STANDALONE_SUPPORTED_ARCH)) - message(FATAL_ERROR "Architecture ${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} is not supported by SCUDO. - Either disable LLVM_LIBC_INCLUDE_SCUDO or change your target architecture.") + add_entrypoint_external( + free + ) + add_entrypoint_external( + calloc + ) + add_entrypoint_external( + realloc + ) + add_entrypoint_external( + aligned_alloc + ) endif() +endif() - list(APPEND SCUDO_DEPS RTScudoStandalone.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} - RTScudoStandaloneCWrappers.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO}) +if(NOT LLVM_LIBC_FULL_BUILD) + return() +endif() - list(APPEND SCUDO_DEPS - RTGwpAsan.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} - RTGwpAsanBacktraceLibc.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} - RTGwpAsanSegvHandler.${LIBC_TARGET_ARCHITECTURE_FOR_SCUDO} - ) +if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS}) + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS}) +endif() - add_entrypoint_external( +if(LIBC_TARGET_OS_IS_GPU) + add_entrypoint_object( malloc + ALIAS DEPENDS - ${SCUDO_DEPS} - ) - add_entrypoint_external( - calloc - DEPENDS - ${SCUDO_DEPS} - ) - add_entrypoint_external( - realloc - DEPENDS - ${SCUDO_DEPS} - ) - add_entrypoint_external( - aligned_alloc - DEPENDS - ${SCUDO_DEPS} - ) - add_entrypoint_external( - free - DEPENDS - ${SCUDO_DEPS} - ) -elseif(LIBC_TARGET_OS_IS_GPU) - add_entrypoint_external( - calloc - ) - add_entrypoint_external( - realloc - ) - add_entrypoint_external( - aligned_alloc + .${LIBC_TARGET_OS}.malloc ) -else() - # Only use freelist malloc for baremetal targets. add_entrypoint_object( - freelist_malloc - SRCS - freelist_malloc.cpp - HDRS - malloc.h - DEPENDS - libc.src.__support.freelist_heap - COMPILE_OPTIONS - -DLIBC_FREELIST_MALLOC_SIZE=${LIBC_CONF_FREELIST_MALLOC_BUFFER_SIZE} - ) - get_target_property(freelist_malloc_is_skipped libc.src.stdlib.freelist_malloc "SKIPPED") - if(LIBC_TARGET_OS_IS_BAREMETAL AND NOT freelist_malloc_is_skipped) - add_entrypoint_object( - malloc - ALIAS - DEPENDS - .freelist_malloc - ) - else() - add_entrypoint_external( - malloc - ) - endif() - - add_entrypoint_external( free + ALIAS + DEPENDS + .${LIBC_TARGET_OS}.free ) add_entrypoint_external( calloc @@ -420,14 +444,6 @@ else() ) endif() -if(NOT LLVM_LIBC_FULL_BUILD) - return() -endif() - -if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS}) - add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/${LIBC_TARGET_OS}) -endif() - add_entrypoint_object( _Exit SRCS @@ -499,19 +515,3 @@ add_entrypoint_object( DEPENDS .${LIBC_TARGET_OS}.abort ) - -if(LIBC_TARGET_OS_IS_GPU) - add_entrypoint_object( - malloc - ALIAS - DEPENDS - .${LIBC_TARGET_OS}.malloc - ) - - add_entrypoint_object( - free - ALIAS - DEPENDS - .${LIBC_TARGET_OS}.free - ) -endif() |