Browse Source

* autoconf/aclocal.m4 (CL_GMP_SET_UINTD): New macro...

* configure.in: ...used here.
        * include/cln/config.h.in: Put in macros defined by CL_GMP_SET_UINTD...
        * include/cln/types.h: ...used here.
        * autoconf/acgeneral.m4, autoconf/aclocal.m4: Adhere to FHS.
master
Richard Kreckel 24 years ago
parent
commit
bae52a8fac
  1. 8
      ChangeLog
  2. 7
      NEWS
  3. 5
      autoconf/acgeneral.m4
  4. 23
      autoconf/aclocal.m4
  5. 4
      configure.in
  6. 4
      doc/Makefile.in
  7. 6
      include/cln/config.h.in
  8. 79
      include/cln/types.h

8
ChangeLog

@ -1,3 +1,11 @@
2000-11-16 Richard Kreckel <kreckel@ginac.de>
* autoconf/aclocal.m4 (CL_GMP_SET_UINTD): New macro...
* configure.in: ...used here.
* include/cln/config.h.in: Put in macros defined by CL_GMP_SET_UINTD...
* include/cln/types.h: ...used here.
* autoconf/acgeneral.m4, autoconf/aclocal.m4: Adhere to FHS.
2000-11-13 Richard Kreckel <kreckel@ginac.de> 2000-11-13 Richard Kreckel <kreckel@ginac.de>
* src/base/digitseq/cl_asm.h: Test if (intDsize==32) for MIPS and HPPA, * src/base/digitseq/cl_asm.h: Test if (intDsize==32) for MIPS and HPPA,

7
NEWS

@ -1,4 +1,4 @@
2000-06-xx, version 1.1.0
2000-11-xx, version 1.1.0
========================= =========================
Functional changes Functional changes
@ -22,7 +22,10 @@ Implementation changes
* Adjusted several break-even points to make better use of a faster libgmp and * Adjusted several break-even points to make better use of a faster libgmp and
better match present-day CPUs. better match present-day CPUs.
* Fix compilation errors with gcc-2.96.
* Fix several errors for architectures with 64-bit wide words.
(Others than Alpha.)
* Fix compilation errors with current GCC3.0 snapshots.
2000-01-13, version 1.0.3 2000-01-13, version 1.0.3

5
autoconf/acgeneral.m4

@ -50,6 +50,7 @@ dnl Franc,ois Pinard, Karl Berry, Richard Pixley, Ian Lance Taylor,
dnl Roland McGrath, Noah Friedman, david d zuhn, and many others. dnl Roland McGrath, Noah Friedman, david d zuhn, and many others.
dnl dnl
dnl Changed by Bruno Haible, 18 January 1999 dnl Changed by Bruno Haible, 18 January 1999
dnl Changed more by Richard Kreckel, 16 November 2000
dnl dnl
divert(-1)dnl Throw away output until AC_INIT is called. divert(-1)dnl Throw away output until AC_INIT is called.
changequote([, ]) changequote([, ])
@ -204,8 +205,8 @@ localstatedir='${prefix}/var'
libdir='${exec_prefix}/lib' libdir='${exec_prefix}/lib'
includedir='${prefix}/include' includedir='${prefix}/include'
oldincludedir='/usr/include' oldincludedir='/usr/include'
infodir='${prefix}/info'
mandir='${prefix}/man'
infodir='${datadir}/info'
mandir='${datadir}/man'
# Initialize some other variables. # Initialize some other variables.
subdirs= subdirs=

23
autoconf/aclocal.m4

@ -956,3 +956,26 @@ AC_DEFUN(CL_GMP_CHECK,
AC_TRY_LINK([#include <gmp.h>],[mpn_divexact_by3(0,0,0)], AC_TRY_LINK([#include <gmp.h>],[mpn_divexact_by3(0,0,0)],
cl_cv_new_libgmp="yes", cl_cv_new_libgmp="no"; LIBS=$SAVELIBS) cl_cv_new_libgmp="yes", cl_cv_new_libgmp="no"; LIBS=$SAVELIBS)
])]) ])])
# What is sizeof(mp_limb_t)? (It has to match sizeof(uintD) later.)
AC_DEFUN(CL_GMP_SET_UINTD,
[AC_CACHE_CHECK([how large gmp demands uintD to be], cl_cv_gmp_set_uintd, [
AC_TRY_RUN([#include <stdio.h>
#include <gmp.h>
int main() {
FILE *f=fopen("conftestval", "w");
if (!f) return(1);
if (sizeof(mp_limb_t) > sizeof(long))
fprintf(f, "long long");
else if (sizeof(mp_limb_t) == sizeof(long))
fprintf(f, "long");
else if (sizeof(mp_limb_t) == sizeof(int))
fprintf(f, "int");
else return(1);
return(0);
}], cl_cv_gmp_set_uintd=`cat conftestval`; \
cl_gmp_demands="GMP_DEMANDS_UINTD_`echo ${cl_cv_gmp_set_uintd} | sed -e 'y/ gilnot/_GILNOT/'`";
AC_DEFINE_UNQUOTED($cl_gmp_demands),
AC_MSG_ERROR([CLN can't handle the result]),dnl
AC_MSG_ERROR([cross-compiling - cannot determine]))
])])

4
configure.in

@ -95,7 +95,7 @@ dnl release version for cln/config.h, so it can be tested by the preprocessor
AC_DEFINE_UNQUOTED(CL_VERSION_MAJOR, $CL_VERSION_MAJOR) AC_DEFINE_UNQUOTED(CL_VERSION_MAJOR, $CL_VERSION_MAJOR)
AC_DEFINE_UNQUOTED(CL_VERSION_MINOR, $CL_VERSION_MINOR) AC_DEFINE_UNQUOTED(CL_VERSION_MINOR, $CL_VERSION_MINOR)
AC_DEFINE_UNQUOTED(CL_VERSION_PATCHLEVEL, $CL_VERSION_PATCHLEVEL) AC_DEFINE_UNQUOTED(CL_VERSION_PATCHLEVEL, $CL_VERSION_PATCHLEVEL)
dnl concateneted release version
dnl concatenated release version
CL_VERSION=$CL_VERSION_MAJOR.$CL_VERSION_MINOR.$CL_VERSION_PATCHLEVEL CL_VERSION=$CL_VERSION_MAJOR.$CL_VERSION_MINOR.$CL_VERSION_PATCHLEVEL
AC_DEFINE_UNQUOTED(CL_VERSION, $CL_VERSION) AC_DEFINE_UNQUOTED(CL_VERSION, $CL_VERSION)
AC_SUBST(CL_VERSION) AC_SUBST(CL_VERSION)
@ -145,7 +145,6 @@ dnl checks for compiler characteristics
dnl dnl
CL_CHAR_UNSIGNED CL_CHAR_UNSIGNED
dnl DEFS __CHAR_UNSIGNED__ if char is unsigned dnl DEFS __CHAR_UNSIGNED__ if char is unsigned
test -d 'include' || mkdir 'include'
CL_MACHINE([integer types and behaviour],${srcdir}/autoconf/intparam.c,include/cln/intparam.h,cl_cv_file_intparam_h) CL_MACHINE([integer types and behaviour],${srcdir}/autoconf/intparam.c,include/cln/intparam.h,cl_cv_file_intparam_h)
dnl builds include/cln/intparam.h dnl builds include/cln/intparam.h
CL_MACHINE([floating-point types and behaviour],${srcdir}/autoconf/floatparam.c,include/cln/floatparam.h,cl_cv_file_floatparam_h) CL_MACHINE([floating-point types and behaviour],${srcdir}/autoconf/floatparam.c,include/cln/floatparam.h,cl_cv_file_floatparam_h)
@ -164,6 +163,7 @@ if test "$with_gmp" = yes; then
fi fi
fi fi
if test "$with_gmp" = yes; then if test "$with_gmp" = yes; then
CL_GMP_SET_UINTD
AC_DEFINE(CL_USE_GMP) AC_DEFINE(CL_USE_GMP)
else else
AC_MSG_WARN([disabling external GNU MP library]) AC_MSG_WARN([disabling external GNU MP library])

4
doc/Makefile.in

@ -78,17 +78,17 @@ $(PACKAGE)_toc.html : $(srcdir)/$(PACKAGE).texi
install : all force install : all force
if [ ! -d $(datadir) ] ; then mkdir $(datadir) ; fi
if [ ! -d $(infodir) ] ; then mkdir $(infodir) ; fi if [ ! -d $(infodir) ] ; then mkdir $(infodir) ; fi
$(INSTALL_DATA) $(srcdir)/$(PACKAGE).info $(infodir)/$(PACKAGE).info $(INSTALL_DATA) $(srcdir)/$(PACKAGE).info $(infodir)/$(PACKAGE).info
if [ ! -d $(datadir) ] ; then mkdir $(datadir) ; fi
if [ ! -d $(htmldir) ] ; then mkdir $(htmldir) ; fi if [ ! -d $(htmldir) ] ; then mkdir $(htmldir) ; fi
$(INSTALL_DATA) $(srcdir)/$(PACKAGE)_*.html $(htmldir) $(INSTALL_DATA) $(srcdir)/$(PACKAGE)_*.html $(htmldir)
if [ ! -d $(dvidir) ] ; then mkdir $(dvidir) ; fi if [ ! -d $(dvidir) ] ; then mkdir $(dvidir) ; fi
$(INSTALL_DATA) $(srcdir)/$(PACKAGE).dvi $(dvidir)/$(PACKAGE).dvi $(INSTALL_DATA) $(srcdir)/$(PACKAGE).dvi $(dvidir)/$(PACKAGE).dvi
installdirs : force installdirs : force
if [ ! -d $(infodir) ] ; then mkdir $(infodir) ; fi
if [ ! -d $(datadir) ] ; then mkdir $(datadir) ; fi if [ ! -d $(datadir) ] ; then mkdir $(datadir) ; fi
if [ ! -d $(infodir) ] ; then mkdir $(infodir) ; fi
if [ ! -d $(htmldir) ] ; then mkdir $(htmldir) ; fi if [ ! -d $(htmldir) ] ; then mkdir $(htmldir) ; fi
if [ ! -d $(dvidir) ] ; then mkdir $(dvidir) ; fi if [ ! -d $(dvidir) ] ; then mkdir $(dvidir) ; fi

6
include/cln/config.h.in

@ -90,6 +90,12 @@
/* Define if you have <unistd.h>. */ /* Define if you have <unistd.h>. */
#undef HAVE_UNISTD_H #undef HAVE_UNISTD_H
/* CL_GMP_SET_UINTD */
/* Define one of the following so sizeof(uintD) matches sizeof(mp_limb_t). */
#undef GMP_DEMANDS_UINTD_LONG_LONG
#undef GMP_DEMANDS_UINTD_LONG
#undef GMP_DEMANDS_UINTD_INT
/* functions and declarations */ /* functions and declarations */

79
include/cln/types.h

@ -101,42 +101,48 @@
typedef long sintP; typedef long sintP;
typedef unsigned long uintP; typedef unsigned long uintP;
// Largest integer type which can be manipulated as efficiently as a pointer.
// This is normally the same as the hardware register size.
// Assumption: cl_word_size >= intPsize
#ifdef HAVE_FAST_LONGLONG
#define cl_word_size 64
#else
#define cl_word_size 32
#endif
// Numbers in the heap are stored as "digit" sequences. // Numbers in the heap are stored as "digit" sequences.
// A digit is an unsigned int with intDsize bits. // A digit is an unsigned int with intDsize bits.
// intDsize should be 8 or 16 or 32 or 64.
#if (defined(HAVE_FAST_LONGLONG) && (defined(__alpha__) || defined(__ia64__)))
#define intDsize 64
#define intDDsize 128 // = 2*intDsize
#define log2_intDsize 6 // = log2(intDsize)
#else
#define intDsize 32
#define intDDsize 64 // = 2*intDsize
#define log2_intDsize 5 // = log2(intDsize)
#endif
#if (intDsize==8)
typedef sint8 sintD;
typedef uint8 uintD;
#endif
#if (intDsize==16)
typedef sint16 sintD;
typedef uint16 uintD;
#endif
#if (intDsize==32)
typedef sint32 sintD;
typedef uint32 uintD;
// intDsize should be 8 or 16 or 32 or 64 and it should match mp_limb_t,
// if CLN is sitting on top of GMP.
#if defined(GMP_DEMANDS_UINTD_LONG_LONG)
#define HAVE_FAST_LONGLONG
#define intDsize long_long_bitsize
typedef long long sintD;
typedef unsigned long long uintD;
#elif defined(GMP_DEMANDS_UINTD_LONG)
#define intDsize long_bitsize
typedef long sintD;
typedef unsigned long uintD;
#elif defined(GMP_DEMANDS_UINTD_INT)
#define intDsize int_bitsize
typedef int sintD;
typedef unsigned int uintD;
#else // we are not using GMP, so just guess something reasonable
#if (defined(HAVE_FAST_LONGLONG) && (defined(__alpha__) || defined(__ia64__)))
#define intDsize 64
typedef sint64 sintD;
typedef uint64 uintD;
#else
#define intDsize 32
typedef sint32 sintD;
typedef uint32 uintD;
#endif
#endif #endif
#if (intDsize==64) #if (intDsize==64)
typedef sint64 sintD;
typedef uint64 uintD;
#define intDDsize 128 // = 2*intDsize
#define log2_intDsize 6 // = log2(intDsize)
#elif (intDsize==32)
#define intDDsize 64 // = 2*intDsize
#define log2_intDsize 5 // = log2(intDsize)
#elif (intDsize==16)
#define intDDsize 32 // = 2*intDsize
#define log2_intDsize 4 // = log2(intDsize)
#elif (intDsize==8)
#define intDDsize 16 // = 2*intDsize
#define log2_intDsize 3 // = log2(intDsize)
#else
#error "What is intDsize again?"
#endif #endif
// HAVE_DD means that there are unsigned ints with 2*intDsize bits. // HAVE_DD means that there are unsigned ints with 2*intDsize bits.
#if (intDDsize <= (defined(HAVE_FAST_LONGLONG) ? 64 : 32)) #if (intDDsize <= (defined(HAVE_FAST_LONGLONG) ? 64 : 32))
@ -157,4 +163,13 @@
#define HAVE_DD 0 #define HAVE_DD 0
#endif #endif
// Largest integer type which can be manipulated as efficiently as a pointer.
// This is normally the same as the hardware register size.
// Assumption: cl_word_size >= intPsize
#ifdef HAVE_FAST_LONGLONG
#define cl_word_size 64
#else
#define cl_word_size 32
#endif
#endif /* _CL_TYPES_H */ #endif /* _CL_TYPES_H */
Loading…
Cancel
Save