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.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.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.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}
)
