# elf2flt options

if ARCH_BINFMT_FLAT

comment "elf2flt"

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

config ELF2FLT_CVSHEAD
    bool
    prompt "CVS Head"
    help
      Grab the latest version of elf2flt from the CVS repository

config ELF2FLT_CUSTOM
    bool
    prompt "Custom elf2flt"
    depends on EXPERIMENTAL

endchoice

if ELF2FLT_CUSTOM

config ELF2FLT_CUSTOM_LOCATION
    string
    prompt "Full path to custom elf2flt source"
    default ""
    help
      Enter the path to the directory (or tarball) of your source for elf2flt,
      or leave blank to use default CT_CUSTOM_LOCATION_ROOT_DIR/elf2flt

endif # ELF2FLT_CUSTOM

config ELF2FLT_VERSION
    string
    default "cvs" if ELF2FLT_CVSHEAD
    default "custom" if ELF2FLT_CUSTOM
# Don't remove next line
# CT_INSERT_VERSION_STRING_BELOW

config ELF2FLT_EXTRA_CONFIG_ARRAY
    string
    prompt "elf2flt extra config"
    default ""
    help
      Extra flags passed onto ./configure when configuring
      
      You can enter multiple arguments here, and arguments can contain spaces
      if they are properly quoted (or escaped, but prefer quotes). Eg.:
          --with-foo="1st arg with 4 spaces" --with-bar=2nd-arg-without-space

endif
