Browse Source

Optional support for configure --with-gmp=GMP-PREFIX.

master
Richard Kreckel 17 years ago
parent
commit
8fd842180c
  1. 35
      ChangeLog
  2. 24
      configure.ac
  3. 37
      doc/cln.texi
  4. 63
      m4/gmp.m4

35
ChangeLog

@ -1,10 +1,17 @@
2007-02-23 Bruno Haible <bruno@clisp.org>
2008-03-15 Richard B. Kreckel <kreckel@ginac.de>
* m4/gmp.m4 (CL_LIBGMP): New macro brings support for --with-gmp=DIR...
* configure.ac: ...used here.
* doc/cln.texi: Document that new feature.
Suggested by Paul Zimmermann <paul.zimmermann@loria.fr>.
2008-02-23 Bruno Haible <bruno@clisp.org>
Support for gcc-4.3 snapshots. Support for gcc-4.3 snapshots.
* autoconf/floatparam.c (check): Change argument types to * autoconf/floatparam.c (check): Change argument types to
'volatile type*'. This defeats optimizations of gcc 4.3.0 snapshots. 'volatile type*'. This defeats optimizations of gcc 4.3.0 snapshots.
2007-02-23 Bruno Haible <bruno@clisp.org>
2008-02-23 Bruno Haible <bruno@clisp.org>
Change "make alls" and "make allo" to recurse into subdirectories. Change "make alls" and "make allo" to recurse into subdirectories.
* src/Makefile.in (alls-local): Renamed from alls. * src/Makefile.in (alls-local): Renamed from alls.
@ -13,7 +20,7 @@
(alls, allo): New rules. (alls, allo): New rules.
(SUBDIRS_TARGET_ALLS, SUBDIRS_TARGET_ALLO): New variables. (SUBDIRS_TARGET_ALLS, SUBDIRS_TARGET_ALLO): New variables.
2007-02-22 Richard B. Kreckel <kreckel@ginac.de>
2008-02-22 Richard B. Kreckel <kreckel@ginac.de>
* include/cln/integer_io.h (read_integer): Make index args uintC. * include/cln/integer_io.h (read_integer): Make index args uintC.
* src/integer/input/cl_I_readparsed.cc: Likewise. * src/integer/input/cl_I_readparsed.cc: Likewise.
@ -25,19 +32,19 @@
* src/vector/output/cl_SV_aprint.cc: Likewise. * src/vector/output/cl_SV_aprint.cc: Likewise.
* src/vector/output/cl_SV_number_aprint.cc: Likewise. * src/vector/output/cl_SV_number_aprint.cc: Likewise.
2007-02-15 Richard B. Kreckel <kreckel@ginac.de>
2008-02-15 Richard B. Kreckel <kreckel@ginac.de>
* m4/cc.m4 (CL_HAVE_ATTRIBUTE_FLATTEN): More robust definition allows... * m4/cc.m4 (CL_HAVE_ATTRIBUTE_FLATTEN): More robust definition allows...
* src/base/cl_maybe_inline.h (CL_FLATTEN): ...simplification here. * src/base/cl_maybe_inline.h (CL_FLATTEN): ...simplification here.
2007-02-10 Richard B. Kreckel <kreckel@ginac.de>
2008-02-10 Richard B. Kreckel <kreckel@ginac.de>
* autoconf/ltmain.sh: Update to libtool-1.5.26. * autoconf/ltmain.sh: Update to libtool-1.5.26.
* autoconf/config.guess: Likewise. * autoconf/config.guess: Likewise.
* autoconf/config.sub: Likewise. * autoconf/config.sub: Likewise.
* m4/libtool.m4: Likewise. * m4/libtool.m4: Likewise.
2007-02-09 Alexei Sheplyakov <varg@theor.jinr.ru>
2008-02-09 Alexei Sheplyakov <varg@theor.jinr.ru>
Richard B. Kreckel <kreckel@ginac.de> Richard B. Kreckel <kreckel@ginac.de>
Avoid compiler warning about ignored 'flatten' attribute directive: Avoid compiler warning about ignored 'flatten' attribute directive:
@ -46,7 +53,7 @@
* include/cln/config.h.in: ...defining CL_HAVE_ATTRIBUTE_FLATTEN,... * include/cln/config.h.in: ...defining CL_HAVE_ATTRIBUTE_FLATTEN,...
* src/base/cl_maybe_inline.h: ...used to prevent a warning here. * src/base/cl_maybe_inline.h: ...used to prevent a warning here.
2007-02-07 Richard B. Kreckel <kreckel@ginac.de>
2008-02-07 Richard B. Kreckel <kreckel@ginac.de>
* include/cln/integer.h: Enable modifying operators by default. * include/cln/integer.h: Enable modifying operators by default.
* include/cln/rational.h: Likewise. * include/cln/rational.h: Likewise.
@ -59,26 +66,26 @@
* include/cln/complex.h: Likewise. * include/cln/complex.h: Likewise.
* doc/cln.texi: Document that. * doc/cln.texi: Document that.
2007-02-06 Richard B. Kreckel <kreckel@ginac.de>
2008-02-06 Richard B. Kreckel <kreckel@ginac.de>
Fix crash in output of huge numbers: Fix crash in output of huge numbers:
* src/integer/conv/cl_I_to_digits.cc: Make erglen uintC. * src/integer/conv/cl_I_to_digits.cc: Make erglen uintC.
* src/integer/output/cl_I_print_string.cc: Make B_baselen uintC. * src/integer/output/cl_I_print_string.cc: Make B_baselen uintC.
2007-02-04 Richard B. Kreckel <kreckel@ginac.de>
2008-02-04 Richard B. Kreckel <kreckel@ginac.de>
Fix cl_F output of more than 2^32 decimal digits: Fix cl_F output of more than 2^32 decimal digits:
* src/base/string/cl_sstring.cc (cl_sstring): make len uintC. * src/base/string/cl_sstring.cc (cl_sstring): make len uintC.
* src/base/string/cl_sstring.h: Likewise. * src/base/string/cl_sstring.h: Likewise.
2007-01-23 Bruno Haible <bruno@clisp.org>
2008-01-23 Bruno Haible <bruno@clisp.org>
Allow 64-bit builds on MacOS X 10.5. Allow 64-bit builds on MacOS X 10.5.
* m4/general.m4 (CL_CANONICAL_HOST_CPU): Test for x86_64 CPU if * m4/general.m4 (CL_CANONICAL_HOST_CPU): Test for x86_64 CPU if
"uname -m" returns "i386". "uname -m" returns "i386".
Reported by Ron Garret <ron@flownet.com>. Reported by Ron Garret <ron@flownet.com>.
2007-01-20 Bruno Haible <bruno@clisp.org>
2008-01-20 Bruno Haible <bruno@clisp.org>
Avoid some gcc warnings. Avoid some gcc warnings.
* autoconf/floatparam.c (flipped_double): Use a union instead of a * autoconf/floatparam.c (flipped_double): Use a union instead of a
@ -105,17 +112,17 @@
* src/float/transcendental/cl_LF_zeta_int.cc (compute_zeta_cvz2): * src/float/transcendental/cl_LF_zeta_int.cc (compute_zeta_cvz2):
Remove unused local variable. Remove unused local variable.
2007-01-19 Richard B. Kreckel <kreckel@ginac.de>
2008-01-19 Richard B. Kreckel <kreckel@ginac.de>
* Version 1.2.0 released. * Version 1.2.0 released.
2007-01-19 Richard B. Kreckel <kreckel@ginac.de>
2008-01-19 Richard B. Kreckel <kreckel@ginac.de>
* doc/Makefile.in: texi2html -split_chapter doesn't generate * doc/Makefile.in: texi2html -split_chapter doesn't generate
cln_toc.html any more. cln_toc.html any more.
* doc/cln.texi: Add table of contents in TeX output. * doc/cln.texi: Add table of contents in TeX output.
2007-01-18 Alexei Sheplyakov <varg@theor.jinr.ru>
2008-01-18 Alexei Sheplyakov <varg@theor.jinr.ru>
Fix linking problems on some platforms caused by inline/non-inline Fix linking problems on some platforms caused by inline/non-inline
versions of same functions (obsoletes MAYBE_INLINE): versions of same functions (obsoletes MAYBE_INLINE):

24
configure.ac

@ -154,32 +154,12 @@ dnl checks for compiler characteristics
dnl dnl
AC_C_CHAR_UNSIGNED AC_C_CHAR_UNSIGNED
dnl DEFS __CHAR_UNSIGNED__ if char is unsigned dnl DEFS __CHAR_UNSIGNED__ if char is unsigned
test -d 'include/cln' || mkdir -p 'include/cln'
CL_MACHINE([integer types and behaviour],${srcdir}/autoconf/intparam.c,[CL_INTPARAM_CROSS],include/cln/intparam.h,cl_cv_file_intparam_h) CL_MACHINE([integer types and behaviour],${srcdir}/autoconf/intparam.c,[CL_INTPARAM_CROSS],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,[CL_FLOATPARAM_CROSS],include/cln/floatparam.h,cl_cv_file_floatparam_h) CL_MACHINE([floating-point types and behaviour],${srcdir}/autoconf/floatparam.c,[CL_FLOATPARAM_CROSS],include/cln/floatparam.h,cl_cv_file_floatparam_h)
dnl builds include/cln/floatparam.h dnl builds include/cln/floatparam.h
dnl
dnl interfacing to GNU gmp (must be at least version 3)
dnl
AC_ARG_WITH(gmp, AS_HELP_STRING([--with-gmp],
[use external fast low-level functions from GNU MP (default: yes).]),
with_gmp="$withval",
with_gmp="yes")
if test "$with_gmp" = yes; then
CL_GMP_H_VERSION
if test "$cl_cv_new_gmp_h" = no; then with_gmp="no"; fi
if test "$with_gmp" = yes; then
CL_GMP_CHECK
if test "$cl_cv_new_libgmp" = no; then with_gmp="no"; fi
fi
fi
if test "$with_gmp" = yes; then
CL_GMP_SET_UINTD
AC_DEFINE(CL_USE_GMP)
else
AC_MSG_WARN([disabling external GNU MP library])
fi
CL_LIBGMP
dnl DEFS CL_USE_GMP, GMP_DEMANDS_UINTD_*
dnl dnl
dnl That's it. dnl That's it.
dnl dnl

37
doc/cln.texi

@ -471,6 +471,9 @@ Flags to be given to the C++ compiler when compiling programs (not when linking)
@item CPPFLAGS @item CPPFLAGS
Flags to be given to the C/C++ preprocessor. Flags to be given to the C/C++ preprocessor.
@item LDFLAGS
Flags to be given to the linker.
@end table @end table
Examples: Examples:
@ -538,25 +541,31 @@ libraries so runtime-critical applications should be linked statically.
@subsection Using the GNU MP Library @subsection Using the GNU MP Library
@cindex GMP @cindex GMP
Starting with version 1.1, CLN may be configured to make use of a
preinstalled @code{gmp} library for some low-level routines. Please
make sure that you have at least @code{gmp} version 3.0 installed
since earlier versions are unsupported and likely not to work. This
feature is known to be quite a boost for CLN's performance.
CLN may be configured to make use of a preinstalled @code{gmp} library
for some low-level routines. Please make sure that you have at least
@code{gmp} version 3.0 installed since earlier versions are unsupported
and likely not to work. Using @code{gmp} is known to be quite a boost
for CLN's performance.
By default, CLN will autodetect @code{gmp} and use it. If you do not
want CLN to make use of a preinstalled @code{gmp} library, then you can
explicitly specify so by calling @code{configure} with the option
@samp{--without-gmp}.
By default, CLN will autodetect @code{gmp} and use it. But if you have
installed the @code{gmp} library and its header file in some place where
your compiler cannot find it by default, you must help @code{configure}
by setting @code{CPPFLAGS} and @code{LDFLAGS}. Here is an example:
If you have installed the @code{gmp} library and its header files in
some place where the compiler cannot find it by default, you must help
@code{configure} and specify the prefix that was used when @code{gmp}
was configured. Here is an example:
@example @example
$ CFLAGS="-O2" CXXFLAGS="-O2" CPPFLAGS="-I/opt/gmp/include" \
LDFLAGS="-L/opt/gmp/lib" ./configure --with-gmp
$ ./configure --with-gmp=/opt/gmp-4.2.2
@end example @end example
If you do not want CLN to make use of a preinstalled @code{gmp}
library, then you can explicitly specify so by calling
@code{configure} with the option @samp{--without-gmp}.
This assumes that the @code{gmp} header files have been installed in
@file{/opt/gmp-4.2.2/include/} and the library in
@file{/opt/gmp-4.2.2/lib/}. More uncommon GMP installations can be
handled by setting CPPFLAGS and LDFLAGS appropriately prior to running
@code{configure}.
@node Installing the library @node Installing the library

63
m4/gmp.m4

@ -1,5 +1,5 @@
dnl -*- Autoconf -*- dnl -*- Autoconf -*-
dnl Copyright (C) 1993-2003 Free Software Foundation, Inc.
dnl Copyright (C) 1993-2008 Free Software Foundation, Inc.
dnl This file is free software, distributed under the terms of the GNU dnl This file is free software, distributed under the terms of the GNU
dnl General Public License. As a special exception to the GNU General dnl General Public License. As a special exception to the GNU General
dnl Public License, this file may be distributed as part of a program dnl Public License, this file may be distributed as part of a program
@ -28,7 +28,7 @@ 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") cl_cv_new_libgmp="yes", cl_cv_new_libgmp="no")
LIBS=$SAVELIBS]) LIBS=$SAVELIBS])
if test x"$cl_cv_new_libgmp" = xyes; then
if test "$cl_cv_new_libgmp" = yes; then
LIBS="$LIBS -lgmp" LIBS="$LIBS -lgmp"
fi fi
]) ])
@ -64,3 +64,62 @@ int main() {
]) ])
AC_DEFINE_UNQUOTED($cl_gmp_demands) AC_DEFINE_UNQUOTED($cl_gmp_demands)
]) ])
dnl Whether or not to use GMP. Sets CL_USE_GMP.
dnl Also sets CPPFLAGS, LDFLAGS if --with-gmp=DIR was specified.
AC_DEFUN([CL_LIBGMP],
[AC_ARG_WITH(gmp, AS_HELP_STRING([--with-gmp@<:@=DIR@:>@],
[use external low-level functions from GNU MP (installed in prefix DIR) @<:@default=yes@:>@.]),[
with_gmp="$withval"
],
with_gmp="yes")
case $with_gmp in
yes)
dnl --with-gmp
CL_GMP_H_VERSION
if test "$cl_cv_new_gmp_h" = yes; then
CL_GMP_CHECK
if test "$cl_cv_new_libgmp" = yes; then
CL_GMP_SET_UINTD
AC_DEFINE(CL_USE_GMP)
else
AC_MSG_WARN([The GNU MP library is too old to be used.])
fi
else
AC_MSG_WARN([The header file <gmp.h> is too old to be used.])
fi
;;
no)
dnl --without-gmp
;;
*)
dnl --with-gmp=DIR
case $withval in
[[\\/$]]* | ?:[[\\/]]* )
;;
*) AC_MSG_ERROR([expected an absolute directory name for --with-gmp: $withval])
;;
esac
saved_CPPFLAGS="$CPPFLAGS"
CPPFLAGS="$CPPFLAGS -I${withval}/include"
saved_LDFLAGS="$LDFLAGS"
LDFLAGS="$LDFLAGS -L${withval}/lib"
CL_GMP_H_VERSION
if test "$cl_cv_new_gmp_h" = yes; then
CL_GMP_CHECK
if test "$cl_cv_new_libgmp" = yes; then
CL_GMP_SET_UINTD
AC_DEFINE(CL_USE_GMP)
else
AC_MSG_WARN([The GNU MP library is too old to be used.])
CPPFLAGS="$saved_CPPFLAGS"
LDFLAGS="$saved_LDFLAGS"
fi
else
AC_MSG_WARN([The header file <gmp.h> is too old to be used.])
CPPFLAGS="$saved_CPPFLAGS"
LDFLAGS="$saved_LDFLAGS"
fi
;;
esac
])
Loading…
Cancel
Save