summaryrefslogtreecommitdiffstats
path: root/configure
diff options
context:
space:
mode:
authorKaz Kylheku <kaz@kylheku.com>2012-03-19 02:00:45 -0700
committerKaz Kylheku <kaz@kylheku.com>2012-03-19 02:00:45 -0700
commit16414f430caa17fccb2e15611a367bb9236ac0ee (patch)
treea7245ff2952647a5106406f99c0dcf243a9a9d58 /configure
parent9d06c8e9b36e94295c62eb0598cff7afae0c5a45 (diff)
downloadtxr-16414f430caa17fccb2e15611a367bb9236ac0ee.tar.gz
txr-16414f430caa17fccb2e15611a367bb9236ac0ee.tar.bz2
txr-16414f430caa17fccb2e15611a367bb9236ac0ee.zip
* configure (uintptr): New variable. Indicates whether unsigned
version of intptr_t is available and should be generated in config.h as uintptr_t. * eval.c (eval_init): New intrinsic functions floatp, integerp, flo-str. * gc.c (finalize): Handle FLNUM case. Rearranged cases so that all trivially returning cases are together. (mark): Handle FLNUM case. * hash.c (hash_double): New function. (equal_hash): Handle FLNUM via hash_double. (eql_hash): Likewise. * lib.c: <math.h> is included. (float_s): New symbol variable. (code2type, equal): Handle FLNUM case in switch. (integerp): New function; does the same thing as integerp before. (numberp): Returns t for floats. (flo, floatp, flo_str): New functions. (obj_init): Initialize new float_s variable. (obj_print, obj_pprint): Handle FLNUM case in switch. Printing does not work yet; needs work in stream.c. * lib.h (enum type): New enumeration FLNUM. (struct flonum): New struct type. (union obj): New member, fl. (float_s, flo, floatp, integerp, flo_str): Declared. * parser.l (FLO): New token pattern definition. Scans to a NUMBER token. Corrected uses of yylval.num to yylval.val. * parser.y (%union): Removed num member from yystype.
Diffstat (limited to 'configure')
-rwxr-xr-xconfigure8
1 files changed, 8 insertions, 0 deletions
diff --git a/configure b/configure
index 042a736a..76c47d47 100755
--- a/configure
+++ b/configure
@@ -757,12 +757,16 @@ char SIZEOF_SUPERLONG_T[sizeof (superlong_t)];
if [ $SIZEOF_PTR -eq $SIZEOF_SHORT ] ; then
intptr="short"
+ uintptr=y
elif [ $SIZEOF_PTR -eq $SIZEOF_INT ] ; then
intptr="int"
+ uintptr=y
elif [ $SIZEOF_PTR -eq $SIZEOF_LONG ] ; then
intptr="long"
+ uintptr=y
elif [ $SIZEOF_PTR -eq $SIZEOF_LONG_LONG_T ] ; then
intptr="longlong_t"
+ uintptr=$ulonglong
fi
if [ -z "$intptr" ] ; then
@@ -773,6 +777,10 @@ fi
printf '"%s"\n' "$intptr"
printf "typedef $intptr int_ptr_t;\n" >> config.h
+if [ -n "$uintptr" ] ; then
+ printf "#define HAVE_UINTPTR_T 1\n" >> config.h
+ printf "typedef unsigned $intptr uint_ptr_t;\n" >> config.h
+fi
intptr_max_expr="((((($intptr) 1 << $((SIZEOF_PTR * 8 - 2))) - 1) << 1) + 1)"
printf "#define INT_PTR_MAX %s\n" "$intptr_max_expr" >> config.h
printf "#define INT_PTR_MIN (-INT_PTR_MAX)\n" >> config.h