]>
www.ginac.de Git - cln.git/log
Richard Kreckel [Mon, 1 Feb 2021 18:48:10 +0000 (19:48 +0100)]
Remove some unused configuration macros.
* Don't test stack direction.
* Don't test endianness of chars.
* Assume HAVE_LONGLONG.
Richard Kreckel [Mon, 1 Feb 2021 18:42:35 +0000 (19:42 +0100)]
Move GETVAL macro from acinclude.m4 to m4/getval.m4.
Alexey Sheplyakov [Thu, 7 Jan 2021 15:51:30 +0000 (19:51 +0400)]
INSTALL.CMake: proper installation command
`make install` is not going to work with Ninja
Alexey Sheplyakov [Wed, 6 Jan 2021 20:00:32 +0000 (00:00 +0400)]
build/CMake: defined `long_long_(big|little)_endian` to intparam.h
... for consistency with autotools build.
Alexey Sheplyakov [Wed, 6 Jan 2021 19:52:06 +0000 (23:52 +0400)]
build/autotools: fixed CL_VERSION substitution in cln.pc.in
Alexey Sheplyakov [Thu, 7 Jan 2021 13:21:29 +0000 (17:21 +0400)]
build/autotools: repaired make dist
version.h.in does not exist any more, don't distribute it
Alexey Sheplyakov [Sun, 3 Jan 2021 06:52:03 +0000 (10:52 +0400)]
cmake build: moved cl_config.h.cmake to `autoconf`
So both cl_config.h.in (generated by autoconf) and cl_config.h.cmake
reside in the same directory
Alexey Sheplyakov [Sat, 2 Jan 2021 17:45:28 +0000 (21:45 +0400)]
cmake: cl_config.h: avoid redefining GMP_DEMANDS_UINTD_* macros
Alexey Sheplyakov [Sat, 2 Jan 2021 16:34:34 +0000 (20:34 +0400)]
cmake: defined `short_little_endian`, `int_little_endian` macros
... so CL_CPU_BIG_ENDIAN_P is set in src/base/cl_sysdep.h both for
autotools and CMake builds.
Note 1.
Checking for endianness of both `short` and `int` is necessary only
for 16-bit systems (where `short` can be 8-bit). I doubt anyone is
going to run CLN on such systems in the 21st century. Nevertheless
CMake does the right thing even for such targets (i.e. it tries to
find a 16-bit integer type and figure out its endianness).
Note 2.
These days (circa 2021) the vast majority of CPU architectures are
little endian, so the problem is mostly irrelevant.
Alexey Sheplyakov [Sun, 3 Jan 2021 07:33:42 +0000 (11:33 +0400)]
cmake: bail out if the source tree has been configured...
.. and print a helpful message.
Before:
./configure
mkdir ../cln_build
cd ../cln_build && cmake -GNinja ../cln && cmake --build .
[cryptic error due to a redefined macro or something]
After:
./configure
mkdir ../cln_build
cd ../cln_build && cmake -GNinja ../cln && cmake --build .
-- The C compiler identification is GNU 10.2.0
-- The CXX compiler identification is GNU 10.2.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Error at CMakeLists.txt:24 (message):
Source directory has been already configured by configure script. Please
run `make distclean` in /home/asheplyakov/work/sw/cln and try again.
-- Configuring incomplete, errors occurred!
Alexey Sheplyakov [Sat, 2 Jan 2021 09:21:01 +0000 (13:21 +0400)]
cmake: tell the compiler how to handle cl_asm_.cc
Pass `-x assembler-with-cpp` to GCC/Clang. Don't use asm loops with
other compilers.
Alexey Sheplyakov [Fri, 1 Jan 2021 21:43:40 +0000 (01:43 +0400)]
Revert "[build] Rename cl_asm files to make CMake happy"
This reverts commit
e67df7a533c7f768f48a591ec3b6f1e4cf4cdbe4 .
Apparently it causes `make distclean` (autotools) to remove asm sources.
Alexey Sheplyakov [Sun, 28 Aug 2011 20:05:31 +0000 (23:05 +0300)]
CLN can be built with CMake
See INSTALL.CMake for the details
Alexey Sheplyakov [Sat, 10 Mar 2012 16:09:07 +0000 (18:09 +0200)]
[build] Rename cl_asm files to make CMake happy
CMake insists on compiling *.cc files with a C++ compiler.
Alexey Sheplyakov [Mon, 27 Feb 2012 21:47:18 +0000 (23:47 +0200)]
[build] Move CLN version info into the include/cln/version.h file...
The point is to have a single definition of version for autotools and
CMake builds.
Alexey Sheplyakov [Mon, 3 Oct 2011 07:22:28 +0000 (10:22 +0300)]
[build] Use autoconf to find out cl_word_alignment.
This way there's no need to define cl_word_alignment for every CPU. Also we
can stop exposing __$cpu__ macros in the public headers (for one our macros
conflict with compiler defined ones).
Alexey Sheplyakov [Sun, 26 Feb 2012 19:55:08 +0000 (21:55 +0200)]
[compile fix] Remove incorrect forward-declaration of perror().
First of all, the return type is void, not int (according to C89).
Secondly, perror is required by C89, so there's no need to check for it.
Fixes (cross-) compilation with MinGW.
Alexey Sheplyakov [Tue, 30 Aug 2011 20:28:37 +0000 (23:28 +0300)]
[build] Don't try to find out the exact prototype of gettimeofday().
First of all, according to POSIX gettimeofday() has the following protype:
int gettimeofday(struct timeval *restrict tp, void restrict* tzp);
so GETTIMEOFDAY_DOTS is not really necessary.
Secondly, we always pass NULL as the second argument, so its type does not
really matter.
Richard Kreckel [Thu, 19 Nov 2020 16:40:23 +0000 (17:40 +0100)]
Avoid "'register' storage class specifier is deprecated" warnings.
The 'register' storage class specifier has been deprecated in C++11 and
is incompatible with C++17. GCC and Clang have long been ignoring it.
Richard Kreckel [Mon, 19 Oct 2020 18:36:33 +0000 (20:36 +0200)]
Remove internal inline versions of numerator/denominator(cl_RA).
These functions were not used internally, but they broke LTO because
they were declared extern publicly.
See <https://www.ginac.de/pipermail/cln-list/2020-September/000772.html>.
Richard Kreckel [Mon, 19 Oct 2020 08:36:57 +0000 (10:36 +0200)]
Replace unused macro with cl_unused.
It has become customary to use 'unused' within bitfields. Better avoid
this conflict. This fixes cross-compilation issues on several ARM-based
host platforms.
Richard Kreckel [Sat, 17 Oct 2020 22:23:28 +0000 (00:23 +0200)]
Assume types 'long long int' and 'long double' exist.
The C++11 standard requires in 3.9.1-2 that type 'long long int' exists
and in -8 that type 'long double' exists. So, remove macros HAVE_LONGLONG
and HAVE_LONGDOUBLE. Also, shamelessly update m4/param.m4, m4/intparam.m4,
and m4/floatparam.m4 with code from CLisp.
All this fixes several cross-compilation issues discovered by
Helmut Grohne <helmut@subdivi.de>.
Richard Kreckel [Sun, 11 Oct 2020 10:20:44 +0000 (12:20 +0200)]
Fix configury (intptr_t test) for cross-compilation.
Reported by Helmut Grohne <helmut@subdivi.de> (cf. Debian bug#971939).
Richard Kreckel [Wed, 1 Jan 2020 11:38:02 +0000 (12:38 +0100)]
Move factorial check from test section to exam section...
...since it has no randomness and no iterations, cf. tests/FILES.
Alexey Sheplyakov [Wed, 1 Jan 2020 11:22:31 +0000 (12:22 +0100)]
Fixed factorial calculation on 64-bit windows.
Richard Kreckel [Thu, 5 Dec 2019 20:56:09 +0000 (21:56 +0100)]
Finalize CLN 1.3.6 release.
Alexey Sheplyakov [Wed, 4 Dec 2019 22:57:14 +0000 (23:57 +0100)]
Commit
2f799401454292 (`Replace typedef int[<negative>] trick with static_assert.`)
breaks cross compilation due to invalid `include/cln/intparam.h` header
produced by the configure script.
CL_INTPARAM_BITSIZE relies on integer multiplication overflow to find out
the bit size of various integer types. However singed integer overflow
is an undefined behavior. Apparently in some contexts GCC uses mod 2^N
arithmetics to evaluate the signed integer expressions. As a result
`typedef int[2*((T)((T)2 * ... * (T)2) == 0) - 1]` trick works with both
signed and unsigned integers (and gives the correct result).
Howerver GCC considers an expression involving an integer overflow as
a non-constant, and refuses to use it in `static_assert`:
$ cat signed_overflow.cc
void f() {
static_assert((int)((int)(1 << 30) * (int)2 * (int)2) == 0, "");
}
$ g++ -c signed_overflow.cc
signed_overflow.cc: In function ‘void f()’:
signed_overflow.cc:2:37: warning: integer overflow in expression [-Woverflow]
static_assert((int)((int)(1 << 30) * (int)2 * (int)2) == 0, "");
~~~~~~~~~~~~~~~^~~~~~~~
signed_overflow.cc:2:2: error: non-constant condition for static assertion
static_assert((int)((int)(1 << 30) * (int)2 * (int)2) == 0, "");
^~~~~~~~~~~~~
As a result `static_assert((T)((T)2 * ... * (T)2) == 0, "")` never holds
since either 1) the condition can't possibly hold without an overflow,
or 2) GCC rejects the expression when the overflow occurs.
Keep using the old good `typedef int[negative]` in CL_INTPARAM_BITSIZE
to avoid the problem.
Richard Kreckel [Mon, 18 Nov 2019 09:11:57 +0000 (10:11 +0100)]
[DOC] Shorten copyright years, also on PDF.
Bruno Haible [Mon, 18 Nov 2019 00:32:13 +0000 (01:32 +0100)]
Fix long-standing bug in the "signed" variants of fprinthexadecimal.
Bruno Haible [Sun, 27 Oct 2019 22:03:41 +0000 (23:03 +0100)]
test_I_io now succeeds on native Windows.
Richard Kreckel [Sun, 17 Nov 2019 21:28:11 +0000 (22:28 +0100)]
Finalize CLN 1.3.5 release.
Richard Kreckel [Sun, 17 Nov 2019 21:19:14 +0000 (22:19 +0100)]
Restore ABI from version 1.3.4.
Make all signatures of fprintdecimal and fprinthexadecimal non-inline
functions, as they were before.
Richard Kreckel [Tue, 5 Nov 2019 22:30:28 +0000 (23:30 +0100)]
Ship INSTALL.windows.
Richard Kreckel [Fri, 1 Nov 2019 22:45:11 +0000 (23:45 +0100)]
Avoid "this statement may fall through" warnings.
Richard Kreckel [Fri, 1 Nov 2019 22:21:51 +0000 (23:21 +0100)]
Delete allocation and deallocation operators that are forbidden.
This also avoids compiler warnings about non-throwing exception
specifications.
Richard Kreckel [Fri, 1 Nov 2019 21:55:39 +0000 (22:55 +0100)]
Avoid "suggest explicit braces to avoid ambiguous 'else'" warnings.
Richard Kreckel [Fri, 1 Nov 2019 19:37:24 +0000 (20:37 +0100)]
Make scale_float() not throw a floating_point_underflow_exception...
...if cl_inhibit_floating_point_underflow was set to true.
Reported by Jan Rheinländer <jrheinlaender@gmx.de>.
Bruno Haible [Mon, 28 Oct 2019 00:43:30 +0000 (01:43 +0100)]
Installation instruction for Microsoft Windows.
* INSTALL.windows: New file, copied from GNU gettext.
Bruno Haible [Sun, 27 Oct 2019 21:58:26 +0000 (22:58 +0100)]
Retrieve the real time through gettimeofday(), not times().
Bruno Haible [Mon, 28 Oct 2019 00:25:21 +0000 (01:25 +0100)]
Fix compilation error with MSVC in 64-bit mode.
* include/cln/types.h: Test _M_AMD64 in addition to __x86_64__.
Bruno Haible [Sun, 27 Oct 2019 21:51:43 +0000 (22:51 +0100)]
Fix compilation error on MSVC.
Based on code that I wrote for gnulib.
Bruno Haible [Sun, 27 Oct 2019 21:20:44 +0000 (22:20 +0100)]
Fix #if directives that test for native Windows.
Bruno Haible [Sun, 27 Oct 2019 21:01:09 +0000 (22:01 +0100)]
Restore ability to use a C++ compiler that does not claim to support C++11.
Bruno Haible [Sun, 27 Oct 2019 19:37:46 +0000 (20:37 +0100)]
Fetch imported m4 files during autogen.sh invocation.
Bruno Haible [Sun, 27 Oct 2019 18:47:07 +0000 (19:47 +0100)]
64-bit mingw port: Fix undefined references to cl_I_constructor_from_[U]L.
Bruno Haible [Sun, 27 Oct 2019 18:47:06 +0000 (19:47 +0100)]
64-bit mingw port: size_t may be larger than 'unsigned long'.
Bruno Haible [Sun, 27 Oct 2019 18:47:04 +0000 (19:47 +0100)]
64-bit mingw port: Extend fprintdecimal and fprinthexadecimal up to 'long long'.
Robert Szalai [Sun, 27 Oct 2019 18:47:03 +0000 (19:47 +0100)]
64-bit mingw port: Change return type of 'offsetof' to intptr_t.
Robert Szalai [Sun, 27 Oct 2019 18:47:01 +0000 (19:47 +0100)]
64-bit mingw port: Use intptr_t, not long, to guarantee alignment.
Robert Szalai [Sun, 27 Oct 2019 18:47:00 +0000 (19:47 +0100)]
64-bit mingw port: In hash table routines, use 'intptr_t' instead of 'long'.
Bruno Haible [Sun, 27 Oct 2019 18:46:59 +0000 (19:46 +0100)]
64-bit mingw port: Avoid ambiguous overload error due to cl_[su]int change.
Bruno Haible [Sun, 27 Oct 2019 18:46:57 +0000 (19:46 +0100)]
64-bit mingw port: Define intV in terms of intP.
Bruno Haible [Sun, 27 Oct 2019 18:46:56 +0000 (19:46 +0100)]
64-bit mingw port: Define cl_tag_mask, cl_value_mask w.r.t. cl_uint.
Based on a patch by Robert Szalai <robicjedi@gmail.com>.
Bruno Haible [Sun, 27 Oct 2019 18:46:55 +0000 (19:46 +0100)]
64-bit mingw port: Define sintP, uintP in terms of 'intptr_t', not 'long'.
Based on a patch by Robert Szalai <robicjedi@gmail.com>.
Bruno Haible [Sun, 27 Oct 2019 18:46:53 +0000 (19:46 +0100)]
64-bit mingw port: Fix compilation error of intparam.c.
Bruno Haible [Sun, 27 Oct 2019 18:46:51 +0000 (19:46 +0100)]
64-bit mingw port: Verify that pointers fit in 'intptr_t', not 'long'.
Bruno Haible [Sun, 27 Oct 2019 15:40:39 +0000 (16:40 +0100)]
Add ASSERT_n macros for n up to 8.
Bruno Haible [Sun, 27 Oct 2019 14:39:49 +0000 (15:39 +0100)]
autogen.sh: Always fetch the files; don't let old copies stick around forever.
Bruno Haible [Sun, 27 Oct 2019 15:06:45 +0000 (16:06 +0100)]
Avoid "integer overflow in expression" warning.
Richard Kreckel [Sun, 27 Oct 2019 13:57:36 +0000 (14:57 +0100)]
Replace typedef int[<negative>] trick with static_assert.
Richard Kreckel [Sun, 27 Oct 2019 13:21:50 +0000 (14:21 +0100)]
Update version dependencies of automake, autoconf.
Bruno Haible [Sun, 27 Oct 2019 13:08:00 +0000 (14:08 +0100)]
Avoid "multi-line comment" warning.
Bruno Haible [Sun, 27 Oct 2019 13:07:49 +0000 (14:07 +0100)]
Avoid "suggest parentheses around ‘-’ inside ‘>>’" warning.
Bruno Haible [Sun, 27 Oct 2019 13:07:44 +0000 (14:07 +0100)]
Avoid some "suggest explicit braces to avoid ambiguous ‘else’" warnings.
Bruno Haible [Sun, 27 Oct 2019 13:07:18 +0000 (14:07 +0100)]
Avoid "statement has no effect" warnings.
Bruno Haible [Sun, 27 Oct 2019 13:07:01 +0000 (14:07 +0100)]
Avoid "typedef ... locally defined but not used" warnings.
Bruno Haible [Sun, 27 Oct 2019 13:06:06 +0000 (14:06 +0100)]
Extend .gitignore to also ignore built files.
Richard Kreckel [Sun, 27 Oct 2019 10:16:34 +0000 (11:16 +0100)]
Make underlying type sintE of cln::float_format_t explicit.
Suggested by Jan Rheinländer <jrheinlaender@gmx.de>.
Richard Kreckel [Sun, 27 Oct 2019 10:00:23 +0000 (11:00 +0100)]
Require C++11 compiler.
Richard Kreckel [Sun, 27 Oct 2019 08:39:12 +0000 (09:39 +0100)]
Update to currently largest known Mersenne prime.
Bruno Haible [Sat, 26 Oct 2019 15:02:49 +0000 (17:02 +0200)]
Remove obsolete CVSROOT directory.
Bruno Haible [Sat, 26 Oct 2019 14:54:12 +0000 (16:54 +0200)]
Remove left-over .deps directories.
Bruno Haible [Sat, 26 Oct 2019 14:53:38 +0000 (16:53 +0200)]
Distribute INSTALL.generic.
Bruno Haible [Sat, 26 Oct 2019 14:52:28 +0000 (16:52 +0200)]
Revamp and simplify autoconfiguration.
- New file autogen.sh.
- Put build scripts in build-aux/ not autoconf/.
- Install lib-*.m4 and config.rpath through gnulib module 'havelib'.
- Install 'test-driver' through automake.
Michael Shigorin [Mon, 2 Sep 2019 08:08:55 +0000 (11:08 +0300)]
Added e2k arch support.
About the CPU: https://en.wikipedia.org/wiki/Elbrus_2000
About the Linux port: https://www.altlinux.org/Ports/e2k
Bruno Haible [Mon, 7 Jan 2019 06:52:12 +0000 (07:52 +0100)]
Fix warnings from gcc's -Wshift-overflow.
Reported by David van der Spoel <spoel@xray.bmc.uu.se>.
* src/base/cl_macros.h (bit, bitm, minus_bit, minus_bitm): Shift an unsigned
value, not a signed value.
Manuel A. Fernandez Montecelo [Thu, 3 May 2018 21:28:36 +0000 (23:28 +0200)]
Add support for riscv64 platform.
Richard Kreckel [Sun, 18 Mar 2018 11:12:26 +0000 (12:12 +0100)]
Update to recently found large Mersenne prime.
YunQiang Su [Sun, 18 Mar 2018 11:05:51 +0000 (12:05 +0100)]
Support MIPS release 6.
MIPS release 6 is not full compatible with the previous releases, it removes
some instructions and changes encoding of some instruction.
the `multu' is included.
MIPS r6 drops `lo' and `hi' registers, and then removes `multu'/`mfhi'/`mflo'.
Instead it uses `mulu' to compute the low part and `muhu' to compute
the high part.
Richard Kreckel [Thu, 4 May 2017 22:17:07 +0000 (00:17 +0200)]
Update known-to-work-with compilers.
And while at it, remove some workarounds for ancient compilers.
Richard Kreckel [Thu, 11 Feb 2016 22:23:57 +0000 (23:23 +0100)]
Update to recently found large Mersenne prime.
Richard Kreckel [Thu, 16 Oct 2014 06:12:32 +0000 (06:12 +0000)]
Finalize CLN 1.3.4 release.
Richard Kreckel [Mon, 13 Oct 2014 19:42:11 +0000 (19:42 +0000)]
Remove workarounds for obsolete compilers.
Richard Kreckel [Sat, 11 Oct 2014 22:40:03 +0000 (22:40 +0000)]
Fix support for Mips*.
Patch by YunQiang Su <wzssyqa@gmail.com> (cf. Debian bug#748325).
Richard Kreckel [Sat, 11 Oct 2014 22:24:25 +0000 (22:24 +0000)]
Janitorial clean-up.
Remove some unused variables and convert files with CRNL line endings
to files with NL line endings.
Richard Kreckel [Sat, 11 Oct 2014 22:15:37 +0000 (22:15 +0000)]
Make float_format(uintE) more precise.
Due to a typo in the binary representation lfo ln(10)/ln(2), this
function could preduce slightly wrong sizes for really huge arguments.
Richard Kreckel [Sat, 11 Oct 2014 22:03:21 +0000 (22:03 +0000)]
Fix floating-point input from decimal string.
A bug was introduced in
3480230e : The divide-and-conquer method multiplies
with a power of the base, but this power is one too much if there is a
decimal point. This may happen because digits_to_I(...) is also called
from read_float(...). As a result, the number containd spurious zeros
(in the base used for reading it).
Thanks to Thomas Luthe <tluthe@physik.uni-bielefeld.de>.
Richard Kreckel [Fri, 19 Sep 2014 20:40:20 +0000 (20:40 +0000)]
Use 8-byte word alignment on arm64.
The previous patch
cb76b5eb used 4-byte word alignment.
Thanks to Peter Green and Hector Oron for pointing out that
8-byte alignment should be used (cf. Debian bug #757623).
Richard Kreckel [Thu, 22 May 2014 07:52:56 +0000 (07:52 +0000)]
Fix support for Mips64.
Yunquiang Su <wzssyqa@gmail.com> proposed to use 64 bit [su]intD and
long [su]intC on mips64 and mips64el.
While at it, cleaned up the AArch64 definitions from
cb76b5eb .
Marcin Juszkiewicz [Wed, 23 Apr 2014 20:00:38 +0000 (20:00 +0000)]
Add AArch64 support.
While building Fedora 21 for AArch64 we found out that your software is
not building for us. Attached is a fix which adds this architecture in
all required places.
Richard Kreckel [Thu, 16 Jan 2014 22:00:42 +0000 (22:00 +0000)]
Revert "Convert complex numbers to real numbers if imaginary part is floating-point 0.0."
This reverts commit
536a0ac50f6c90198982267943af4d551612a9d9 .
Cf. <http://www.ginac.de/pipermail/ginac-devel/2014-January/002086.html/>.
Richard Kreckel [Mon, 13 Jan 2014 21:49:04 +0000 (21:49 +0000)]
Convert complex numbers to real numbers if imaginary part is floating-point 0.0.
This conversion worked only for rational imaginary parts.
Richard Kreckel [Sat, 19 Oct 2013 07:19:57 +0000 (07:19 +0000)]
Minor fixes for recent CLang.
Needed for CLang 3.2.
Richard Kreckel [Fri, 11 Oct 2013 21:18:53 +0000 (21:18 +0000)]
Add subdir-objects to Automake options.
This option is needed to keep automake 1.14 happy.
Richard Kreckel [Sun, 21 Jul 2013 21:01:24 +0000 (21:01 +0000)]
Finalize CLN 1.3.3 release.
* Removed some obsolete Makefile.devel.
* Updated autoconf tools.
* Updated version and copyright information.
Richard Kreckel [Sat, 20 Jul 2013 12:29:41 +0000 (12:29 +0000)]
Avoid compiler warning.
Richard Kreckel [Fri, 19 Jul 2013 21:44:30 +0000 (21:44 +0000)]
Support for Texinfo-5.0.
Changed some @itemx into @item. Surround the "Detailed Node Listing"
section of the info page menu with @detailmenu flag.
Daniel Schepler [Fri, 15 Feb 2013 21:59:24 +0000 (22:59 +0100)]
Support x32 ABI.
Fix autoconf test checking whether mp_limb_t needs to be long long,
which is needed on x32.
Richard Kreckel [Fri, 8 Feb 2013 21:06:00 +0000 (22:06 +0100)]
Update to recently found large Mersenne prime.
Richard Kreckel [Tue, 9 Oct 2012 06:24:29 +0000 (08:24 +0200)]
Fix some conversions to cl_SF, cl_FF, and cl_DF.
Some conversions failed to properly overflow/underflow with very large
exponents because of premature exponent truncation.