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.strnlen_s
    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.fmabf16
    #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.atanbf16
  libc.src.math.asinbf16
  libc.src.math.bf16add
  libc.src.math.bf16addf
  libc.src.math.bf16addl
  libc.src.math.bf16div
  libc.src.math.bf16divf
  libc.src.math.bf16divl
  libc.src.math.bf16fma
  libc.src.math.bf16fmaf
  libc.src.math.bf16fmal
  libc.src.math.bf16mul
  libc.src.math.bf16mulf
  libc.src.math.bf16mull
  libc.src.math.bf16sub
  libc.src.math.bf16subf
  libc.src.math.bf16subl
  libc.src.math.canonicalizebf16
  libc.src.math.ceilbf16
  libc.src.math.copysignbf16
  libc.src.math.fabsbf16
  libc.src.math.fdimbf16
  libc.src.math.floorbf16
  libc.src.math.fmaxbf16
  libc.src.math.fmaximumbf16
  libc.src.math.fmaximum_magbf16
  libc.src.math.fmaximum_mag_numbf16
  libc.src.math.fmaximum_numbf16
  libc.src.math.fminbf16
  libc.src.math.fminimumbf16
  libc.src.math.fminimum_magbf16
  libc.src.math.fminimum_mag_numbf16
  libc.src.math.fminimum_numbf16
  libc.src.math.fmodbf16
  libc.src.math.frexpbf16
  libc.src.math.fromfpbf16
  libc.src.math.fromfpxbf16
  libc.src.math.getpayloadbf16
  libc.src.math.hypotbf16
  libc.src.math.ilogbbf16
  libc.src.math.iscanonicalbf16
  libc.src.math.issignalingbf16
  libc.src.math.ldexpbf16
  libc.src.math.llogbbf16
  libc.src.math.llrintbf16
  libc.src.math.llroundbf16
  libc.src.math.log_bf16
  libc.src.math.cbrtbf16
  libc.src.math.logbbf16
  libc.src.math.lrintbf16
  libc.src.math.lroundbf16
  libc.src.math.modfbf16
  libc.src.math.nanbf16
  libc.src.math.nearbyintbf16
  libc.src.math.nextafterbf16
  libc.src.math.nextdownbf16
  libc.src.math.nexttowardbf16
  libc.src.math.nextupbf16
  libc.src.math.remainderbf16
  libc.src.math.remquobf16
  libc.src.math.rintbf16
  libc.src.math.roundbf16
  libc.src.math.roundevenbf16
  libc.src.math.scalblnbf16
  libc.src.math.scalbnbf16
  libc.src.math.setpayloadbf16
  libc.src.math.setpayloadsigbf16
  libc.src.math.sqrtbf16
  libc.src.math.truncbf16
  libc.src.math.totalorderbf16
  libc.src.math.totalordermagbf16
  libc.src.math.ufromfpbf16
  libc.src.math.ufromfpxbf16
)

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