summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2019-01-26 14:17:49 -0800
committerKaz Kylheku <kaz@kylheku.com>2019-01-26 14:17:49 -0800
commitd1640a17861fd94cbf19c59b4f3d0f0a3f6633fe (patch)
tree871bebf288bc17d9091b5533aaadc9f81dea124d
parentda9fbb49983a000dee12918fad9a2c8bbcdf2448 (diff)
downloadtxr-d1640a17861fd94cbf19c59b4f3d0f0a3f6633fe.tar.gz
txr-d1640a17861fd94cbf19c59b4f3d0f0a3f6633fe.tar.bz2
txr-d1640a17861fd94cbf19c59b4f3d0f0a3f6633fe.zip
configure: problems with 128 bit integer detection.
* configure: we can't assume that we can just edit "int" to "uint" in forming the superulong_t type. Let's consolidate the detection of the signed and unsigned superlong. Only if both are available, then emit material into config.h, along with a single constant: HAVE_SUPERLONG_T. * mpi/mpi-types.h: Don't refer to removed HAVE_USUPERLONG_T. Change superulong_t to usuperlong_t.
-rwxr-xr-xconfigure21
-rw-r--r--mpi/mpi-types.h4
2 files changed, 13 insertions, 12 deletions
diff --git a/configure b/configure
index 02c3f55c..d9bf1e80 100755
--- a/configure
+++ b/configure
@@ -1100,19 +1100,16 @@ fi
if [ -n "$superlong" ] ; then
printf '"%s"\n' "$superlong"
- printf "#define HAVE_SUPERLONG_T 1\n" >> config.h
- printf "typedef $superlong superlong_t;\n" >> config.h
- printf "typedef $(echo $superlong | sed -e s/int/uint/) superulong_t;\n" >> config.h
else
printf "none\n"
fi
printf "Checking what C type we have for u. integers wider than \"long long\" ... "
-usuperlong=
+superulong=
if [ -z "$broken128" ] ; then
- for try_type in uint128 uint128_t __uint128 __uint128_t ; do
+ for try_type in uint128 uint128_t __uint128 __uint128_t 'unsigned int128'; do
cat > conftest.c <<!
#include "config.h"
int main(void)
@@ -1124,20 +1121,24 @@ int main(void)
longlong_t a, b;
!
if conftest_o ; then
- usuperlong=$try_type
+ superulong=$try_type
break
fi
done
fi
-if [ -n "$usuperlong" ] ; then
- printf '"%s"\n' "$usuperlong"
- printf "#define HAVE_USUPERLONG_T 1\n" >> config.h
- printf "typedef $usuperlong usuperlong_t;\n" >> config.h
+if [ -n "$superulong" ] ; then
+ printf '"%s"\n' "$superulong"
else
printf "none\n"
fi
+if [ -n "$superlong" -a -n "$superulong" ] ; then
+ printf "#define HAVE_SUPERLONG_T 1\n" >> config.h
+ printf "typedef $superlong superlong_t;\n" >> config.h
+ printf "typedef $superulong superulong_t;\n" >> config.h
+fi
+
printf "Checking what C integer type can hold a pointer ... "
read_syms()
diff --git a/mpi/mpi-types.h b/mpi/mpi-types.h
index a55174fb..098efe15 100644
--- a/mpi/mpi-types.h
+++ b/mpi/mpi-types.h
@@ -11,11 +11,11 @@ typedef unsigned mp_size;
*/
typedef int mp_err;
-#if HAVE_USUPERLONG_T && HAVE_ULONGLONG_T && \
+#if HAVE_SUPERLONG_T && HAVE_ULONGLONG_T && \
SIZEOF_SUPERLONG_T / 2 == SIZEOF_LONGLONG_T && \
SIZEOF_PTR >= SIZEOF_LONGLONG_T
typedef ulonglong_t mp_digit;
- typedef usuperlong_t mp_word;
+ typedef superulong_t mp_word;
#define MP_DIGIT_SIZE SIZEOF_LONGLONG_T
#define DIGIT_FMT "%" #SIZEOF_SUPERLONG_T "llx"
#elif HAVE_ULONGLONG_T && SIZEOF_LONGLONG_T / 2 == SIZEOF_LONG && \