# Compiler options

config CC_gcc
    select CC_SUPPORT_CXX
    select CC_SUPPORT_FORTRAN
    select CC_SUPPORT_JAVA
    select CC_SUPPORT_ADA
    select CC_SUPPORT_OBJC
    select CC_SUPPORT_OBJCXX
    help
      gcc is the full-blown GNU compiler. This is what most people will choose.
      
      gcc supports many languages, a powerful code parser, optimised binary
      output, and lots of other features.

choice
    bool
    prompt "gcc version"

config CC_V_3_2_3
    bool
    prompt "3.2.3 (OBSOLETE)"
    depends on OBSOLETE

config CC_V_3_3_6
    bool
    prompt "3.3.6 (OBSOLETE)"
    depends on OBSOLETE

config CC_V_3_4_6
    bool
    prompt "3.4.6 (OBSOLETE)"
    depends on OBSOLETE

config CC_V_4_0_0
    bool
    prompt "4.0.0 (OBSOLETE)"
    depends on OBSOLETE

config CC_V_4_0_1
    bool
    prompt "4.0.1 (OBSOLETE)"
    depends on OBSOLETE

config CC_V_4_0_2
    bool
    prompt "4.0.2 (OBSOLETE)"
    depends on OBSOLETE

config CC_V_4_0_3
    bool
    prompt "4.0.3 (OBSOLETE)"
    depends on OBSOLETE

config CC_V_4_0_4
    bool
    prompt "4.0.4"

config CC_V_4_1_0
    bool
    prompt "4.1.0 (OBSOLETE)"
    depends on OBSOLETE

config CC_V_4_1_1
    bool
    prompt "4.1.1 (OBSOLETE)"
    depends on OBSOLETE

config CC_V_4_1_2
    bool
    prompt "4.1.2"

config CC_V_4_2_0
    bool
    prompt "4.2.0"

config CC_V_4_2_1
    bool
    prompt "4.2.1"

config CC_V_4_2_2
    bool
    prompt "4.2.2"

config CC_V_4_2_3
    bool
    prompt "4.2.3"

config CC_V_4_2_4
    bool
    prompt "4.2.4"

config CC_V_4_3_0
    bool
    prompt "4.3.0 (EXPERIMENTAL)"
    depends on EXPERIMENTAL
    select CC_GCC_4_3_or_later

config CC_V_4_3_1
    bool
    prompt "4.3.1"
    select CC_GCC_4_3_or_later

config CC_V_4_3_2
    bool
    prompt "4.3.2"
    select CC_GCC_4_3_or_later

config CC_V_4_3_3
    bool
    prompt "4.3.3"
    select CC_GCC_4_3_or_later

config CC_V_4_4_0
    bool
    prompt "4.4.0 (EXPERIMENTAL)"
    depends on EXPERIMENTAL
    select CC_GCC_4_3_or_later
    select CC_GCC_4_4_or_later

# CT_INSERT_VERSION_ABOVE
# Don't remove above line!
endchoice

config CC_GCC_4_3_or_later
    bool
    default n
    select GMP_MPFR

config CC_GCC_4_4_or_later
    bool
    default n

config CC_VERSION
    string
    default "3.2.3" if CC_V_3_2_3
    default "3.3.6" if CC_V_3_3_6
    default "3.4.6" if CC_V_3_4_6
    default "4.0.0" if CC_V_4_0_0
    default "4.0.1" if CC_V_4_0_1
    default "4.0.2" if CC_V_4_0_2
    default "4.0.3" if CC_V_4_0_3
    default "4.0.4" if CC_V_4_0_4
    default "4.1.0" if CC_V_4_1_0
    default "4.1.1" if CC_V_4_1_1
    default "4.1.2" if CC_V_4_1_2
    default "4.2.0" if CC_V_4_2_0
    default "4.2.1" if CC_V_4_2_1
    default "4.2.2" if CC_V_4_2_2
    default "4.2.3" if CC_V_4_2_3
    default "4.2.4" if CC_V_4_2_4
    default "4.3.0" if CC_V_4_3_0
    default "4.3.1" if CC_V_4_3_1
    default "4.3.2" if CC_V_4_3_2
    default "4.3.3" if CC_V_4_3_3
    default "4.4.0" if CC_V_4_4_0
# CT_INSERT_VERSION_STRING_ABOVE
# Don't remove above line!

config CC_CXA_ATEXIT
    bool
    prompt "Use __cxa_atexit"
    default y
    depends on ! BARE_METAL
    help
      If you get the missing symbol "__cxa_atexit" when building C++ programs,
      you might want to try disabling this option.

choice
    bool
    prompt "Use sjlj for exceptions"
    default CC_SJLJ_EXCEPTIONS_CONFIGURE
    depends on ! BARE_METAL

# This config option is used nowhere in the code on purpose.
# It only serves as a choice entry to force neither using nor not using sjlj
config CC_SJLJ_EXCEPTIONS_CONFIGURE
    bool
    prompt "Let configure decide"
    help
      Let configure decide if setjmp/longjmp should be used to handle
      exceptions.
      
      Choose that if you trust configure to detect the correct settings.
      This is the default choice.

config CC_SJLJ_EXCEPTIONS_USE
    bool
    prompt "Force using sjlj"
    help
      Do use setjmp/longjmp for exceptions.
      This is gcc's --enable-sjlj-exceptions configure switch.
      
      Choose that if you want to use setjmp/longjmp to handle exceptions.

config CC_SJLJ_EXCEPTIONS_DONT_USE
    bool
    prompt "Force not using sjlj"
    help
      Do not use setjmp/longjmp for exceptions.
      This is gcc's --disable-sjlj-exceptions configure switch.
      
      Choose that if you want to not use setjmp/longjmp to handle exceptions.

endchoice

config CC_CORE_EXTRA_CONFIG
    string
    prompt "Core gcc extra config"
    default ""
    help
      Extra flags to pass onto ./configure when configuring the core gcc.
      
      The core gcc is a stripped down, C-only compiler needed to build
      the C library. Kinda bootstrap gcc, if you wish.

config CC_EXTRA_CONFIG
    string
    prompt "gcc extra config"
    default ""
    depends on ! BARE_METAL
    help
      Extra flags to pass onto ./configure when configuring gcc.

config CC_PKGVERSION
    string
    prompt "gcc ID string"
    depends on CC_GCC_4_3_or_later
    default "crosstool-NG-${CT_VERSION}"
    help
      Specify a string that identifies your package. You may wish to include
      a build number or build date. This version string will be included in
      the output of gcc --version.

      This is passed to the configure flag --with-pkgversion.

config CC_BUGURL
    string
    prompt "gcc bug URL"
    depends on CC_GCC_4_3_or_later
    default ""
    help
      Specify the URL that users should visit if they wish to report a bug.

config CC_LANG_JAVA_USE_ECJ
    bool
    default y
    depends on CC_LANG_JAVA
    depends on CC_GCC_4_3_or_later
