set(TARGET_LIBC_ENTRYPOINTS
    # ctype.h entrypoints
    libc.src.ctype.isalnum
    libc.src.ctype.isalpha
    libc.src.ctype.isascii
    libc.src.ctype.isblank
    libc.src.ctype.iscntrl
    libc.src.ctype.isdigit
    libc.src.ctype.isgraph
    libc.src.ctype.islower
    libc.src.ctype.isprint
    libc.src.ctype.ispunct
    libc.src.ctype.isspace
    libc.src.ctype.isupper
    libc.src.ctype.isxdigit
    libc.src.ctype.toascii
    libc.src.ctype.tolower
    libc.src.ctype.toupper

    # errno.h entrypoints
    libc.src.errno.__errno_location

    # string.h entrypoints
    libc.src.string.bcmp
    libc.src.string.bzero
    libc.src.string.memccpy
    libc.src.string.memchr
    libc.src.string.memcmp
    libc.src.string.memcpy
    libc.src.string.memmove
    libc.src.string.mempcpy
    libc.src.string.memrchr
    libc.src.string.memset
    libc.src.string.stpcpy
    libc.src.string.stpncpy
    libc.src.string.strcat
    libc.src.string.strchr
    libc.src.string.strcmp
    libc.src.string.strcpy
    libc.src.string.strcspn
    libc.src.string.strlen
    libc.src.string.strncat
    libc.src.string.strncmp
    libc.src.string.strncpy
    libc.src.string.strnlen
    libc.src.string.strpbrk
    libc.src.string.strrchr
    libc.src.string.strspn
    libc.src.string.strstr
    libc.src.string.strtok
    libc.src.string.strtok_r

    # inttypes.h entrypoints
    libc.src.inttypes.imaxdiv
    libc.src.inttypes.strtoimax
    libc.src.inttypes.strtoumax

    # stdlib.h entrypoints
    libc.src.stdlib.abs
    libc.src.stdlib.atoi
    libc.src.stdlib.atof
    libc.src.stdlib.atol
    libc.src.stdlib.atoll
    libc.src.stdlib.bsearch
    libc.src.stdlib.div
    libc.src.stdlib.labs
    libc.src.stdlib.ldiv
    libc.src.stdlib.llabs
    libc.src.stdlib.lldiv
    libc.src.stdlib.qsort
    libc.src.stdlib.strtod
    libc.src.stdlib.strtof
    libc.src.stdlib.strtol
    libc.src.stdlib.strtoll
    libc.src.stdlib.strtoul
    libc.src.stdlib.strtoull
)

set(TARGET_LIBM_ENTRYPOINTS
    # fenv.h entrypoints
    libc.src.fenv.feclearexcept
    libc.src.fenv.fedisableexcept
    libc.src.fenv.feenableexcept
    libc.src.fenv.fegetenv
    libc.src.fenv.fegetexcept
    libc.src.fenv.fegetexceptflag
    libc.src.fenv.fegetround
    libc.src.fenv.feholdexcept
    libc.src.fenv.fesetenv
    libc.src.fenv.fesetexceptflag
    libc.src.fenv.fesetround
    libc.src.fenv.feraiseexcept
    libc.src.fenv.fetestexcept
    libc.src.fenv.feupdateenv

    # math.h entrypoints
    libc.src.math.copysign
    libc.src.math.copysignf
    libc.src.math.copysignl
    libc.src.math.ceil
    libc.src.math.ceilf
    libc.src.math.ceill
    libc.src.math.cos
    libc.src.math.cosf
    libc.src.math.expf
    libc.src.math.exp2f
    libc.src.math.expm1f
    libc.src.math.fabs
    libc.src.math.fabsf
    libc.src.math.fabsl
    libc.src.math.fdim
    libc.src.math.fdimf
    libc.src.math.fdiml
    libc.src.math.floor
    libc.src.math.floorf
    libc.src.math.floorl
    libc.src.math.fma
    libc.src.math.fmaf
    libc.src.math.fmin
    libc.src.math.fminf
    libc.src.math.fminl
    libc.src.math.fmax
    libc.src.math.fmaxf
    libc.src.math.fmaxl
    libc.src.math.frexp
    libc.src.math.frexpf
    libc.src.math.frexpl
    libc.src.math.hypot
    libc.src.math.hypotf
    libc.src.math.ilogb
    libc.src.math.ilogbf
    libc.src.math.ilogbl
    libc.src.math.ldexp
    libc.src.math.ldexpf
    libc.src.math.ldexpl
    libc.src.math.llrint
    libc.src.math.llrintf
    libc.src.math.llrintl
    libc.src.math.llround
    libc.src.math.llroundf
    libc.src.math.llroundl
    libc.src.math.logb
    libc.src.math.logbf
    libc.src.math.logbl
    libc.src.math.lrint
    libc.src.math.lrintf
    libc.src.math.lrintl
    libc.src.math.lround
    libc.src.math.lroundf
    libc.src.math.lroundl
    libc.src.math.modf
    libc.src.math.modff
    libc.src.math.modfl
    libc.src.math.nearbyint
    libc.src.math.nearbyintf
    libc.src.math.nearbyintl
    libc.src.math.nextafter
    libc.src.math.nextafterf
    libc.src.math.nextafterl
    libc.src.math.remainderf
    libc.src.math.remainder
    libc.src.math.remainderl
    libc.src.math.remquof
    libc.src.math.remquo
    libc.src.math.remquol
    libc.src.math.rint
    libc.src.math.rintf
    libc.src.math.rintl
    libc.src.math.round
    libc.src.math.roundf
    libc.src.math.roundl
    libc.src.math.sin
    libc.src.math.sincosf
    libc.src.math.sinf
    libc.src.math.sqrt
    libc.src.math.sqrtf
    libc.src.math.sqrtl
    libc.src.math.tan
    libc.src.math.trunc
    libc.src.math.truncf
    libc.src.math.truncl
)

if(LLVM_LIBC_FULL_BUILD)
  list(APPEND TARGET_LIBC_ENTRYPOINTS
    # assert.h entrypoints
    libc.src.assert.__assert_fail

    # stdlib.h entrypoints
    libc.src.stdlib._Exit
    libc.src.stdlib.abort

    # signal.h entrypoints
    libc.src.signal.raise
    libc.src.signal.sigaction
    libc.src.signal.sigdelset
    libc.src.signal.sigaddset
    libc.src.signal.sigemptyset
    libc.src.signal.sigprocmask
    libc.src.signal.sigfillset
    libc.src.signal.signal

    # sys/mman.h entrypoints
    libc.src.sys.mman.mmap
    libc.src.sys.mman.munmap

    # threads.h entrypoints
    libc.src.threads.call_once
    libc.src.threads.cnd_broadcast
    libc.src.threads.cnd_destroy
    libc.src.threads.cnd_init
    libc.src.threads.cnd_signal
    libc.src.threads.cnd_wait
    libc.src.threads.mtx_destroy
    libc.src.threads.mtx_init
    libc.src.threads.mtx_lock
    libc.src.threads.mtx_unlock
    libc.src.threads.thrd_create
    libc.src.threads.thrd_join

    # time.h entrypoints
    libc.src.time.asctime
    libc.src.time.asctime_r
    libc.src.time.gmtime
    libc.src.time.gmtime_r
    libc.src.time.mktime

    # unistd.h entrypoints
    libc.src.unistd.write
  )
endif()

if(LLVM_LIBC_INCLUDE_SCUDO)
  list(APPEND TARGET_LIBC_ENTRYPOINTS

    # stdlib.h external entrypoints
    libc.src.stdlib.malloc
    libc.src.stdlib.calloc
    libc.src.stdlib.realloc
    libc.src.stdlib.free

    # string.h entrypoints that depend on malloc
    libc.src.string.strdup
    libc.src.string.strndup
  )
endif()

set(TARGET_LLVMLIBC_ENTRYPOINTS
  ${TARGET_LIBC_ENTRYPOINTS}
  ${TARGET_LIBM_ENTRYPOINTS}
)
