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

    # search.h entrypoints
    libc.src.search.lfind

    # string.h entrypoints
    libc.src.string.memccpy
    libc.src.string.memchr
    libc.src.string.memcmp
    libc.src.string.memcpy
    libc.src.string.memmem
    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.strchrnul
    libc.src.string.strcmp
    libc.src.string.strcpy
    libc.src.string.strcspn
    libc.src.string.strlcat
    libc.src.string.strlcpy
    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

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

    # strings.h entrypoints
    libc.src.strings.bcmp
    libc.src.strings.bzero

    # inttypes.h entrypoints
    libc.src.inttypes.imaxabs
    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.memalignment
    libc.src.stdlib.qsort
    libc.src.stdlib.strtod
    libc.src.stdlib.strtof
    libc.src.stdlib.strtol
    libc.src.stdlib.strtold
    libc.src.stdlib.strtoll
    libc.src.stdlib.strtoul
    libc.src.stdlib.strtoull

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

set(TARGET_LIBM_ENTRYPOINTS
    # fenv disabled on x86_64 MacOS for now.
    # # 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.fesetexcept
    # libc.src.fenv.fesetexceptflag
    # libc.src.fenv.fesetround
    # libc.src.fenv.feraiseexcept
    # libc.src.fenv.fetestexcept
    # libc.src.fenv.fetestexceptflag
    # libc.src.fenv.feupdateenv

    ## Currently disabled for failing tests.
    # 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.coshf
    #libc.src.math.cosf
    #libc.src.math.daddl
    #libc.src.math.ddivl
    #libc.src.math.dfmal
    #libc.src.math.dsqrtl
    #libc.src.math.dsubl
    #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.fdiv
    #libc.src.math.fdivl
    #libc.src.math.ffma
    #libc.src.math.ffmal
    #libc.src.math.floor
    #libc.src.math.floorf
    #libc.src.math.floorl
    #libc.src.math.fma
    #libc.src.math.fmaf
    #libc.src.math.fmax
    #libc.src.math.fmaxf
    #libc.src.math.fmaxl
    #libc.src.math.fmin
    #libc.src.math.fminf
    #libc.src.math.fminl
    #libc.src.math.fmod
    #libc.src.math.fmodf
    #libc.src.math.frexp
    #libc.src.math.frexpf
    #libc.src.math.frexpl
    #libc.src.math.fsub
    #libc.src.math.fsubl
    #libc.src.math.hypot
    #libc.src.math.hypotf
    #libc.src.math.ilogb
    #libc.src.math.ilogbf
    #libc.src.math.ilogbl
    #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.lrint
    #libc.src.math.lrintf
    #libc.src.math.lrintl
    #libc.src.math.lround
    #libc.src.math.lroundf
    #libc.src.math.lroundl
    #libc.src.math.ldexp
    #libc.src.math.ldexpf
    #libc.src.math.ldexpl
    #libc.src.math.log10f
    #libc.src.math.log1pf
    #libc.src.math.log2f
    #libc.src.math.logf
    #libc.src.math.logb
    #libc.src.math.logbf
    #libc.src.math.logbl
    #libc.src.math.modf
    #libc.src.math.modff
    #libc.src.math.modfl
    #libc.src.math.nan
    #libc.src.math.nanf
    #libc.src.math.nanl
    #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.nexttoward
    #libc.src.math.nexttowardf
    #libc.src.math.nexttowardl
    #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.sincosf
    #libc.src.math.sinhf
    #libc.src.math.sinf
    #libc.src.math.sqrt
    #libc.src.math.sqrtf
    #libc.src.math.sqrtl
    #libc.src.math.tanf
    #libc.src.math.tanhf
    #libc.src.math.totalordermag
    #libc.src.math.totalordermagf
    #libc.src.math.totalordermagl
    #libc.src.math.trunc
    #libc.src.math.truncf
    #libc.src.math.truncl
)

list(APPEND TARGET_LIBM_ENTRYPOINTS
  # bfloat16 entrypoints
  libc.src.math.fabsbf16
)

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