blob: a4d51fb9a11eef19d5fe512b552b8ccfd63516e1 [file] [log] [blame]
add_entrypoint_object(
atoi
SRCS
atoi.cpp
HDRS
atoi.h
DEPENDS
libc.src.errno.errno
libc.src.__support.str_to_integer
)
add_entrypoint_object(
atof
SRCS
atof.cpp
HDRS
atof.h
DEPENDS
libc.src.errno.errno
libc.src.__support.str_to_float
)
add_entrypoint_object(
atol
SRCS
atol.cpp
HDRS
atol.h
DEPENDS
libc.src.errno.errno
libc.src.__support.str_to_integer
)
add_entrypoint_object(
atoll
SRCS
atoll.cpp
HDRS
atoll.h
DEPENDS
libc.src.errno.errno
libc.src.__support.str_to_integer
)
add_entrypoint_object(
getenv
SRCS
getenv.cpp
HDRS
getenv.h
DEPENDS
libc.config.linux.app_h
)
add_entrypoint_object(
strtof
SRCS
strtof.cpp
HDRS
strtof.h
DEPENDS
libc.src.errno.errno
libc.src.__support.str_to_float
)
add_entrypoint_object(
strtod
SRCS
strtod.cpp
HDRS
strtod.h
DEPENDS
libc.src.errno.errno
libc.src.__support.str_to_float
)
add_entrypoint_object(
strtold
SRCS
strtold.cpp
HDRS
strtold.h
DEPENDS
libc.src.errno.errno
libc.src.__support.str_to_float
)
add_entrypoint_object(
strtol
SRCS
strtol.cpp
HDRS
strtol.h
DEPENDS
libc.src.errno.errno
libc.src.__support.str_to_integer
)
add_entrypoint_object(
strtoll
SRCS
strtoll.cpp
HDRS
strtoll.h
DEPENDS
libc.src.errno.errno
libc.src.__support.str_to_integer
)
add_entrypoint_object(
strtoul
SRCS
strtoul.cpp
HDRS
strtoul.h
DEPENDS
libc.src.errno.errno
libc.src.__support.str_to_integer
)
add_entrypoint_object(
strtoull
SRCS
strtoull.cpp
HDRS
strtoull.h
DEPENDS
libc.src.errno.errno
libc.src.__support.str_to_integer
)
add_entrypoint_object(
abs
SRCS
abs.cpp
HDRS
abs.h
DEPENDS
libc.src.__support.integer_operations
)
add_entrypoint_object(
labs
SRCS
labs.cpp
HDRS
labs.h
DEPENDS
libc.src.__support.integer_operations
)
add_entrypoint_object(
llabs
SRCS
llabs.cpp
HDRS
llabs.h
DEPENDS
libc.src.__support.integer_operations
)
add_entrypoint_object(
div
SRCS
div.cpp
HDRS
div.h
DEPENDS
libc.include.stdlib
libc.src.__support.integer_operations
)
add_entrypoint_object(
ldiv
SRCS
ldiv.cpp
HDRS
ldiv.h
DEPENDS
libc.include.stdlib
libc.src.__support.integer_operations
)
add_entrypoint_object(
lldiv
SRCS
lldiv.cpp
HDRS
lldiv.h
DEPENDS
libc.include.stdlib
libc.src.__support.integer_operations
)
add_entrypoint_object(
bsearch
SRCS
bsearch.cpp
HDRS
bsearch.h
DEPENDS
libc.include.stdlib
)
add_header_library(
qsort_util
HDRS
qsort_util.h
DEPENDS
libc.include.stdlib
)
add_entrypoint_object(
qsort
SRCS
qsort.cpp
HDRS
qsort.h
DEPENDS
.qsort_util
libc.include.stdlib
)
add_entrypoint_object(
qsort_r
SRCS
qsort_r.cpp
HDRS
qsort_r.h
DEPENDS
.qsort_util
libc.include.stdlib
)
add_object_library(
rand_util
SRCS
rand_util.cpp
HDRS
rand_util.h
DEPENDS
libc.src.__support.common
)
add_entrypoint_object(
rand
SRCS
rand.cpp
HDRS
rand.h
DEPENDS
.rand_util
libc.include.stdlib
)
add_entrypoint_object(
srand
SRCS
srand.cpp
HDRS
srand.h
DEPENDS
.rand_util
libc.include.stdlib
)
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}
)
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}
)
elseif(LIBC_TARGET_ARCHITECTURE_IS_GPU)
add_entrypoint_external(
calloc
)
add_entrypoint_external(
realloc
)
add_entrypoint_external(
aligned_alloc
)
else()
add_entrypoint_external(
malloc
)
add_entrypoint_external(
free
)
add_entrypoint_external(
calloc
)
add_entrypoint_external(
realloc
)
add_entrypoint_external(
aligned_alloc
)
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
_Exit.cpp
HDRS
_Exit.h
DEPENDS
libc.include.stdlib
libc.src.__support.OSUtil.osutil
)
add_entrypoint_object(
atexit
SRCS
atexit.cpp
HDRS
atexit.h
CXX_STANDARD
20 # For constinit of the atexit callback list.
DEPENDS
libc.src.__support.fixedvector
libc.src.__support.blockstore
libc.src.__support.threads.mutex
libc.src.__support.CPP.new
)
add_entrypoint_object(
exit
SRCS
exit.cpp
HDRS
exit.h
DEPENDS
._Exit
.atexit
libc.src.__support.OSUtil.osutil
)
add_entrypoint_object(
abort
ALIAS
DEPENDS
.${LIBC_TARGET_OS}.abort
)
if(LIBC_TARGET_ARCHITECTURE_IS_GPU)
add_entrypoint_object(
malloc
ALIAS
DEPENDS
.${LIBC_TARGET_OS}.malloc
)
add_entrypoint_object(
free
ALIAS
DEPENDS
.${LIBC_TARGET_OS}.free
)
endif()