From: borutr Date: Tue, 25 Jul 2006 12:56:37 +0000 (+0000) Subject: * configure.in, configure, sdccconf_in.h: fixed bug X-Git-Url: https://git.gag.com/?a=commitdiff_plain;h=a33e37e3afe5391236def67e506c9a8dec7ce436;p=fw%2Fsdcc * configure.in, configure, sdccconf_in.h: fixed bug [ 1519095 ] regression test onebyte.c fails on ppc64 host git-svn-id: https://sdcc.svn.sourceforge.net/svnroot/sdcc/trunk/sdcc@4299 4a8a32a2-be11-0410-ad9d-d568d2c75423 --- diff --git a/configure b/configure index 3076501c..08cbd251 100755 --- a/configure +++ b/configure @@ -6281,30 +6281,99 @@ _ACEOF +echo "$as_me:$LINENO: checking whether char is unsigned" >&5 +echo $ECHO_N "checking whether char is unsigned... $ECHO_C" >&6 +if test "${ac_cv_c_char_unsigned+set}" = set; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +int +main () +{ +static int test_array [1 - 2 * !(((char) -1) < 0)]; +test_array [0] = 0 + + ; + return 0; +} +_ACEOF +rm -f conftest.$ac_objext +if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 + (eval $ac_compile) 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" + || test ! -s conftest.err' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 + (eval $ac_try) 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_cv_c_char_unsigned=no +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +ac_cv_c_char_unsigned=yes +fi +rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +fi +echo "$as_me:$LINENO: result: $ac_cv_c_char_unsigned" >&5 +echo "${ECHO_T}$ac_cv_c_char_unsigned" >&6 +if test $ac_cv_c_char_unsigned = yes && test "$GCC" != yes; then + cat >>confdefs.h <<\_ACEOF +#define __CHAR_UNSIGNED__ 1 +_ACEOF + +fi + +ac_cv_c_char_unsigned=yes + type_name() { - if expr "$ac_cv_sizeof_char" '>=' "$1" >/dev/null; then - echo "char" - exit - fi - if expr "$ac_cv_sizeof_short" '>=' "$1" >/dev/null; then - echo "short" - exit - fi - if expr "$ac_cv_sizeof_int" '>=' "$1" >/dev/null; then - echo "int" - exit - fi - if expr "$ac_cv_sizeof_long" '>=' "$1" >/dev/null; then - echo "long" - exit - fi + if expr "$ac_cv_sizeof_char" '>=' "$1" >/dev/null; then + echo "char" + exit + fi + if expr "$ac_cv_sizeof_short" '>=' "$1" >/dev/null; then + echo "short" + exit + fi + if expr "$ac_cv_sizeof_int" '>=' "$1" >/dev/null; then + echo "int" + exit + fi + if expr "$ac_cv_sizeof_long" '>=' "$1" >/dev/null; then echo "long" + exit + fi + echo "long" } echo "$as_me:$LINENO: checking type name for byte" >&5 echo $ECHO_N "checking type name for byte... $ECHO_C" >&6 -TYPE_BYTE=`type_name 1` +TYPE_CHAR=`type_name 1` +if test "$ac_cv_c_char_unsigned" = "yes"; then + TYPE_BYTE="signed $TYPE_CHAR" +else + TYPE_BYTE=$TYPE_CHAR +fi echo "$as_me:$LINENO: result: $TYPE_BYTE" >&5 echo "${ECHO_T}$TYPE_BYTE" >&6 echo "$as_me:$LINENO: checking type name for word" >&5 @@ -6317,6 +6386,7 @@ echo $ECHO_N "checking type name for dword... $ECHO_C" >&6 TYPE_DWORD=`type_name 4` echo "$as_me:$LINENO: result: $TYPE_DWORD" >&5 echo "${ECHO_T}$TYPE_DWORD" >&6 + cat >>confdefs.h <<_ACEOF #define TYPE_BYTE $TYPE_BYTE _ACEOF @@ -6330,6 +6400,19 @@ cat >>confdefs.h <<_ACEOF _ACEOF +cat >>confdefs.h <<_ACEOF +#define TYPE_UBYTE unsigned $TYPE_CHAR +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define TYPE_UWORD unsigned $TYPE_WORD +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define TYPE_UDWORD unsigned $TYPE_DWORD +_ACEOF + + echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5 echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6 if test "${ac_cv_c_bigendian+set}" = set; then diff --git a/configure.in b/configure.in index 993a3520..c3ecc6b6 100755 --- a/configure.in +++ b/configure.in @@ -344,30 +344,36 @@ AC_CHECK_SIZEOF(char) AC_CHECK_SIZEOF(short) AC_CHECK_SIZEOF(int) AC_CHECK_SIZEOF(long) +AC_C_CHAR_UNSIGNED type_name() { - if expr "$ac_cv_sizeof_char" '>=' "$1" >/dev/null; then - echo "char" - exit - fi - if expr "$ac_cv_sizeof_short" '>=' "$1" >/dev/null; then - echo "short" - exit - fi - if expr "$ac_cv_sizeof_int" '>=' "$1" >/dev/null; then - echo "int" - exit - fi - if expr "$ac_cv_sizeof_long" '>=' "$1" >/dev/null; then - echo "long" - exit - fi + if expr "$ac_cv_sizeof_char" '>=' "$1" >/dev/null; then + echo "char" + exit + fi + if expr "$ac_cv_sizeof_short" '>=' "$1" >/dev/null; then + echo "short" + exit + fi + if expr "$ac_cv_sizeof_int" '>=' "$1" >/dev/null; then + echo "int" + exit + fi + if expr "$ac_cv_sizeof_long" '>=' "$1" >/dev/null; then echo "long" + exit + fi + echo "long" } AC_MSG_CHECKING(type name for byte) -TYPE_BYTE=`type_name 1` +TYPE_CHAR=`type_name 1` +if test "$ac_cv_c_char_unsigned" = "yes"; then + TYPE_BYTE="signed $TYPE_CHAR" +else + TYPE_BYTE=$TYPE_CHAR +fi AC_MSG_RESULT($TYPE_BYTE) AC_MSG_CHECKING(type name for word) TYPE_WORD=`type_name 2` @@ -375,10 +381,15 @@ AC_MSG_RESULT($TYPE_WORD) AC_MSG_CHECKING(type name for dword) TYPE_DWORD=`type_name 4` AC_MSG_RESULT($TYPE_DWORD) + AC_DEFINE_UNQUOTED(TYPE_BYTE, $TYPE_BYTE) AC_DEFINE_UNQUOTED(TYPE_WORD, $TYPE_WORD) AC_DEFINE_UNQUOTED(TYPE_DWORD, $TYPE_DWORD) +AC_DEFINE_UNQUOTED(TYPE_UBYTE, unsigned $TYPE_CHAR) +AC_DEFINE_UNQUOTED(TYPE_UWORD, unsigned $TYPE_WORD) +AC_DEFINE_UNQUOTED(TYPE_UDWORD, unsigned $TYPE_DWORD) + AC_C_BIGENDIAN # Set standard installation paths diff --git a/sdccconf_in.h b/sdccconf_in.h index aa501882..ac5ca923 100644 --- a/sdccconf_in.h +++ b/sdccconf_in.h @@ -52,9 +52,9 @@ #undef TYPE_BYTE #undef TYPE_WORD #undef TYPE_DWORD -#define TYPE_UBYTE unsigned TYPE_BYTE -#define TYPE_UWORD unsigned TYPE_WORD -#define TYPE_UDWORD unsigned TYPE_DWORD +#undef TYPE_UBYTE +#undef TYPE_UWORD +#undef TYPE_UDWORD #undef WORDS_BIGENDIAN