# PPL options

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

config PPL_V_0_11_2
    bool
    prompt "0.11.2 (EXPERIMENTAL)"
    depends on EXPERIMENTAL
    select PPL_0_11

config PPL_V_0_11_1
    bool
    prompt "0.11.1 (EXPERIMENTAL)"
    depends on EXPERIMENTAL
    select PPL_0_11

config PPL_V_0_11
    bool
    prompt "0.11 (EXPERIMENTAL)"
    depends on EXPERIMENTAL
    select PPL_0_11

config PPL_V_0_10_2
    bool
    prompt "0.10.2"

endchoice

config PPL_VERSION
    string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
    default "0.11.2" if PPL_V_0_11_2
    default "0.11.1" if PPL_V_0_11_1
    default "0.11" if PPL_V_0_11
    default "0.10.2" if PPL_V_0_10_2

# For PPL 0.11, we need to pull libpwl if configured static
config PPL_0_11
    bool
    select PPL_NEEDS_LIBPWL if ! COMPLIBS_SHARED

config PPL_NEEDS_LIBPWL
    bool
