# musl options

## depends on ! WINDOWS && ! BARE_METAL
##
## select LIBC_SUPPORT_THREADS_NATIVE
## select CC_CORE_PASSES_NEEDED
##
## help Musl is a new standard library to power a new generation of Linux-based
## help devices. musl is lightweight, fast, simple, free, and strives to be
## help correct in the sense of standards-conformance and safety.

config THREADS
    default "musl"

choice
    bool
    prompt "musl version"
# Don't remove next line
# CT_INSERT_VERSION_BELOW

config LIBC_MUSL_V_1_1_4
    bool
    prompt "1.1.4 (Mainline)"
    depends on EXPERIMENTAL

config LIBC_MUSL_V_1_0_4
    bool
    prompt "1.0.4 (Stable)"

config LIBC_MUSL_V_CUSTOM
    bool
    prompt "Custom musl"
    depends on EXPERIMENTAL

endchoice

config LIBC_VERSION
    string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
    default "1.1.4" if LIBC_MUSL_V_1_1_4
    default "1.0.4" if LIBC_MUSL_V_1_0_4
    default "custom" if LIBC_MUSL_V_CUSTOM
