cc/gcc: make sjlj config option a tristate

A tristate fits better here than a choice.
This commit is contained in:
Yann E. MORIN" 2010-07-28 23:53:09 +02:00
parent e5f3082b3d
commit 61ebaa97ca
2 changed files with 21 additions and 34 deletions

View File

@ -30,40 +30,24 @@ config CC_GCC_DISABLE_PCH
need to be disabled. Please see: need to be disabled. Please see:
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40974 http://gcc.gnu.org/bugzilla/show_bug.cgi?id=40974
choice config CC_GCC_SJLJ_EXCEPTIONS
bool tristate
prompt "Use sjlj for exceptions" prompt "Use sjlj for exceptions"
default CC_SJLJ_EXCEPTIONS_CONFIGURE default m
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 help
Let configure decide if setjmp/longjmp should be used to handle 'sjlj' is short for setjmp/longjmp.
exceptions.
Choose that if you trust configure to detect the correct settings. On some architectures, stack unwinding during exception handling
This is the default choice. works perfectly well without using sjlj, while on some others,
use of sjlj is required for proper stack unwinding.
config CC_SJLJ_EXCEPTIONS_USE Option | sjlj use | Associated ./configure switch
bool ---------+--------------------+--------------------------------
prompt "Force using sjlj" Y | forcibly used | --enable-sjlj-exceptions
help M | auto | (none, ./configure decides)
Do use setjmp/longjmp for exceptions. N | forcibly not used | --disable-sjlj-exceptions
This is gcc's --enable-sjlj-exceptions configure switch.
Choose that if you want to use setjmp/longjmp to handle exceptions. It should be safe to say 'M' or 'N'.
config CC_SJLJ_EXCEPTIONS_DONT_USE It can happen that ./configure is wrong in some cases. Known
bool case is for ARM big endian, where you should say 'N'.
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

View File

@ -327,8 +327,11 @@ do_cc() {
[ "${CT_SHARED_LIBS}" = "y" ] || extra_config+=("--disable-shared") [ "${CT_SHARED_LIBS}" = "y" ] || extra_config+=("--disable-shared")
[ -n "${CT_CC_PKGVERSION}" ] && extra_config+=("--with-pkgversion=${CT_CC_PKGVERSION}") [ -n "${CT_CC_PKGVERSION}" ] && extra_config+=("--with-pkgversion=${CT_CC_PKGVERSION}")
[ -n "${CT_CC_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_CC_BUGURL}") [ -n "${CT_CC_BUGURL}" ] && extra_config+=("--with-bugurl=${CT_CC_BUGURL}")
[ "${CT_CC_SJLJ_EXCEPTIONS_USE}" = "y" ] && extra_config+=("--enable-sjlj-exceptions") case "${CT_CC_GCC_SJLJ_EXCEPTIONS}" in
[ "${CT_CC_SJLJ_EXCEPTIONS_DONT_USE}" = "y" ] && extra_config+=("--disable-sjlj-exceptions") y) extra_config+=("--enable-sjlj-exceptions");;
m) ;;
"") extra_config+=("--disable-sjlj-exceptions");;
esac
if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then if [ "${CT_CC_CXA_ATEXIT}" = "y" ]; then
extra_config+=("--enable-__cxa_atexit") extra_config+=("--enable-__cxa_atexit")
else else