# mingw32 config options

## depends on EXPERIMENTAL && ( ARCH_x86 && ARCH_32 )
##
## select MINGW32
##
## help Build a toolchain targeting systems running Windows as host

choice
    bool
    prompt "Windows api version"

# Don't remove next line
# CT_INSERT_VERSION_BELOW
config W32API_V_3_14
    bool
    prompt "3.14"

config W32API_V_select
    bool
    prompt "Other version"

endchoice

config W32API_VERSION
    string
    prompt "W32 api version" if W32API_V_select
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW
    default "3.14" if W32API_V_3_14
    help
      Enter the version number of the windows api files to use

