# strace

## depends on ! BACKEND

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

config STRACE_V_4_5_20
    bool
    prompt "4.5.20 (EXPERIMENTAL)"
    depends on EXPERIMENTAL

config STRACE_V_4_5_19
    bool
    prompt "4.5.19"

config STRACE_V_4_5_18
    bool
    prompt "4.5.18"

config STRACE_V_4_5_17
    bool
    prompt "4.5.17 (OBSOLETE)"
    depends on OBSOLETE

config STRACE_V_4_5_16
    bool
    prompt "4.5.16 (OBSOLETE)"
    depends on OBSOLETE

config STRACE_V_4_5_15
    bool
    prompt "4.5.15 (OBSOLETE)"
    depends on OBSOLETE

endchoice

config STRACE_VERSION
    string
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
    default "4.5.20" if STRACE_V_4_5_20
    default "4.5.19" if STRACE_V_4_5_19
    default "4.5.18" if STRACE_V_4_5_18
    default "4.5.17" if STRACE_V_4_5_17
    default "4.5.16" if STRACE_V_4_5_16
    default "4.5.15" if STRACE_V_4_5_15
