On Mon, Jul 31, 2006 at 11:34:59PM +0200, Richard B. Kreckel wrote:
In order to build from CVS I had to modify configure.ac and different m4 macros, see the second attached file.
Okay, but these are new compared to <http://www.ginac.de/pipermail/ginac-list/2006-July/000863>. :-)
As you have noticed, that patch was not for CVS version. I couldn't use it because of numerious auto* tools errors: $ autoreconf -iv autoreconf: Entering directory `.' autoreconf: configure.ac: not using Gettext autoreconf: configure.ac: tracing autoreconf: running: libtoolize --copy Using `AC_PROG_RANLIB' is rendered obsolete by `AC_PROG_LIBTOOL' Putting files in AC_CONFIG_AUX_DIR, `autoconf'. libtoolize: `config.guess' exists: use `--force' to overwrite libtoolize: `config.sub' exists: use `--force' to overwrite libtoolize: `ltmain.sh' exists: use `--force' to overwrite autoreconf: running: /usr/bin/autoconf autoreconf: running: /usr/bin/autoheader autoheader: warning: missing template: CL_USE_GMP autoheader: Use AC_DEFINE([CL_USE_GMP], [], [Description]) autoheader: warning: missing template: CL_VERSION autoheader: warning: missing template: CL_VERSION_MAJOR autoheader: warning: missing template: CL_VERSION_MINOR autoheader: warning: missing template: CL_VERSION_PATCHLEVEL autoreconf: /usr/bin/autoheader failed with exit status: 1
------------------------------------------------------------------------
diff --git a/src/base/random/cl_random_from.cc b/src/base/random/cl_random_from.cc index 0470a4e..e858473 100644 --- a/src/base/random/cl_random_from.cc +++ b/src/base/random/cl_random_from.cc @@ -1,4 +1,7 @@ // random_state constructor. +#if defined(_WIN32) +#include <windows.h> // for GetCurrentProcessId() +#endif
// General includes. #include "cl_sysdep.h" @@ -9,10 +12,6 @@ #include "cln/random.h"
// Implementation.
-#if defined(_WIN32) -#include <windows.h> // for GetCurrentProcessId() -#endif - #include "cl_base_config.h" #include "cl_low.h" #include <cstdlib> // declares rand() @@ -47,14 +46,12 @@ #endif #include <sys/times.h> extern "C" clock_t times (struct tms * buffer);
-namespace cln { inline uint32 get_seed (void) { var struct tms tmsbuf; var uint32 seed_lo = times(&tmsbuf); return seed_lo + tmsbuf.tms_utime + tmsbuf.tms_stime; } -} // namespace cln
#endif
@@ -62,14 +59,12 @@ #elif defined(_WIN32) #include <sys/time.h> #include <sys/timeb.h>
-namespace cln { inline uint32 get_seed (void) { struct timeb timebuf; ftime(&timebuf); return cln::highlow32(timebuf.time, (long)(timebuf.millitm)*1000); } -} // namespace cln
#endif
I assume these are not the reason for it failing.
No, this is exactly the reason of compilation errors. First of all, <windows.h> *must* be the very first of the included files.
I've deliberately put get_seed into namespace cln. Then you should have done s/::get_seed/get_seed/g I've attached yet another variant of patch, it puts *all* definitions of get_seed into namespace cln.
------------------------------------------------------------------------
diff --git a/configure.ac b/configure.ac index a47ef2e..c2e0f7c 100644 --- a/configure.ac +++ b/configure.ac @@ -69,6 +69,14 @@ dnl check for build configurat dnl PACKAGE=cln dnl libtool wants PACKAGE +case $host_os in + *mingw32*) + AC_LIBTOOL_WIN32_DLL + ;; + *) + ;; +esac + dnl convince libtool to build win32 dll
Is this really the right place?
From the libtool manual: \begin{quote} -- Macro: AC_LIBTOOL_WIN32_DLL This macro should be used if the package has been ported to build clean dlls on win32 platforms. Usually this means that any library data items are exported with `__declspec(dllexport)' and imported with `__declspec(dllimport)'. If this macro is not used, libtool will assume that the package libraries are not dll clean and will build only static libraries on win32 hosts. This macro must be called *before* `AC_PROG_LIBTOOL', and provision must be made to pass `-no-undefined' to `libtool' in link mode from the package `Makefile'. Naturally, if you pass `-no-undefined', you must ensure that all the library symbols *really are* defined at link time! \end{quote} Note that CLN is *not* clean win32 dll [yet]...
Maybe updating libtool would be more appropiate? Updating libtool won't hurt. BTW, private copy of libtool.m4 is *evil*, isn't it?
AC_PROG_LIBTOOL dnl sets variable LIBTOOL
@@ -94,12 +102,12 @@ CL_VERSION_MAJOR=1 CL_VERSION_MINOR=1 CL_VERSION_PATCHLEVEL=12 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_MINOR, $CL_VERSION_MINOR) -AC_DEFINE_UNQUOTED(CL_VERSION_PATCHLEVEL, $CL_VERSION_PATCHLEVEL) +AC_DEFINE_UNQUOTED(CL_VERSION_MAJOR, $CL_VERSION_MAJOR, [CLN major version]) +AC_DEFINE_UNQUOTED(CL_VERSION_MINOR, $CL_VERSION_MINOR, [CLN minor version]) +AC_DEFINE_UNQUOTED(CL_VERSION_PATCHLEVEL, $CL_VERSION_PATCHLEVEL, [CLN patchlevel version]) dnl concatenated release version 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, [CLN version]) AC_SUBST(CL_VERSION)
dnl @@ -151,8 +159,10 @@ CL_MACHINE([floating-point types and beh dnl dnl interfacing to GNU gmp (must be at least version 3) dnl -AC_ARG_WITH(gmp, [ --with-gmp use external fast low-level functions from GNU MP 3. - [default=yes]], ,with_gmp="yes") +AC_ARG_WITH(gmp, AS_HELP_STRING([--with-gmp], + [use external fast low-level functions from GNU MP 3 (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 @@ -163,7 +173,7 @@ if test "$with_gmp" = yes; then fi if test "$with_gmp" = yes; then CL_GMP_SET_UINTD - AC_DEFINE(CL_USE_GMP) + AC_DEFINE(CL_USE_GMP, ,[Define if GNU MP library is available]) else AC_MSG_WARN([disabling external GNU MP library]) fi diff --git a/m4/c++-constructors.m4 b/m4/c++-constructors.m4 index 2eb9889..48df183 100644 --- a/m4/c++-constructors.m4 +++ b/m4/c++-constructors.m4 @@ -37,7 +37,7 @@ rm -f conftest* ]) if test "$cl_cv_cplusplus_ctorprefix" '!=' unknown; then ac_value='"'"$cl_cv_cplusplus_ctorprefix"'"' - AC_DEFINE_UNQUOTED(CL_GLOBAL_CONSTRUCTOR_PREFIX,$ac_value) + AC_DEFINE_UNQUOTED(CL_GLOBAL_CONSTRUCTOR_PREFIX,$ac_value, [Global ctor prefix]) AC_CACHE_CHECK(for the global destructors function prefix, cl_cv_cplusplus_dtorprefix, [ cat > conftest.cc << EOF @@ -63,7 +63,7 @@ rm -f conftest* ]) if test "$cl_cv_cplusplus_dtorprefix" '!=' none; then ac_value='"'"$cl_cv_cplusplus_ctorprefix"'"' - AC_DEFINE_UNQUOTED(CL_GLOBAL_DESTRUCTOR_PREFIX,$ac_value) + AC_DEFINE_UNQUOTED(CL_GLOBAL_DESTRUCTOR_PREFIX,$ac_value, [Global dtor prefix]) fi dnl Check whether the global constructors/destructors functions are file-scope dnl only by default. This is the case in egcs-1.1.2 or newer. @@ -93,7 +93,7 @@ fi rm -f conftest* ]) if test "$cl_cv_cplusplus_ctorexport" = yes; then - AC_DEFINE(CL_NEED_GLOBALIZE_CTORDTOR) + AC_DEFINE(CL_NEED_GLOBALIZE_CTORDTOR, ,[Define if global ctor/dtors are file-scope by default]) fi fi fi diff --git a/m4/general.m4 b/m4/general.m4 index 0c550af..3a0b403 100644 --- a/m4/general.m4 +++ b/m4/general.m4 @@ -129,6 +129,64 @@ AC_CANONICAL_HOST
AC_DEFUN([CL_CANONICAL_HOST_CPU], [AC_REQUIRE([CL_CANONICAL_HOST])AC_REQUIRE([AC_PROG_CC]) +AH_TOP([ +#ifndef _CL_CONFIG_H +#define _CL_CONFIG_H +/* CLN's idea about CPU model */ +#ifndef __i386__ +#undef __i386__ +#endif +#ifndef __m68k__ +#undef __m68k__ +#endif +/* NB: GCC def's __mips__ both on big-endian and little-endian systems. */ +#ifndef __mips__ +#undef __mips__ +#endif +#ifndef __mipsel__ +#undef __mipsel__ +#endif +#ifndef __mips64__ +#undef __mips64__ +#endif +#ifndef __sparc__ +#undef __sparc__ +#endif +#ifndef __sparc64__ +#undef __sparc64__ +#endif +#ifndef __alpha__ +#undef __alpha__ +#endif +#ifndef __hppa__ +#undef __hppa__ +#endif +#ifndef __arm__ +#undef __arm__ +#endif +#ifndef __rs6000__ +#undef __rs6000__ +#endif +#ifndef __m88k__ +#undef __m88k__ +#endif +#ifndef __convex__ +#undef __convex__ +#endif +#ifndef __ia64__ +#undef __ia64__ +#endif +#ifndef __x86_64__ +#undef __x86_64__ +#endif +#ifndef __s390__ +#undef __s390__ +#endif +]) +AH_BOTTOM([ +#endif /* _CL_CONFIG_H */ +]) + case "$host_cpu" in changequote(,)dnl i[4567]86 ) @@ -182,6 +240,7 @@ else fi ;; esac + dnl was AC_DEFINE_UNQUOTED(__${host_cpu}__) but KAI C++ 3.2d doesn't like this cat >> confdefs.h <<EOF #ifndef __${host_cpu}__ diff --git a/m4/gmp.m4 b/m4/gmp.m4 index 93bdc5d..5fc110b 100644 --- a/m4/gmp.m4 +++ b/m4/gmp.m4 @@ -62,5 +62,5 @@ #endif AC_MSG_ERROR([Don't know which C-type has sizeof $gmp_retval.]), AC_MSG_ERROR([cross-compiling - cannot determine])) ]) -AC_DEFINE_UNQUOTED($cl_gmp_demands) +AC_DEFINE_UNQUOTED($cl_gmp_demands, ,[sizeof(uintD) == sizeof(mp_limb_t)]) ]) diff --git a/m4/longdouble.m4 b/m4/longdouble.m4 index 069de22..72cecce 100644 --- a/m4/longdouble.m4 +++ b/m4/longdouble.m4 @@ -23,6 +23,6 @@ AC_TRY_COMPILE([ ], , cl_cv_c_longdouble=yes, cl_cv_c_longdouble=no)]) ]) if test $cl_cv_c_longdouble = yes; then - AC_DEFINE(HAVE_LONGDOUBLE) + AC_DEFINE(HAVE_LONGDOUBLE, ,[Define if compiler support long double type]) fi ]) diff --git a/m4/param.m4 b/m4/param.m4 index 2a6b07d..21a7b84 100644 --- a/m4/param.m4 +++ b/m4/param.m4 @@ -31,9 +31,9 @@ CC=`echo "$CC " | sed -e 's/-O //g'` fi AC_TRY_EVAL(ac_link) CC="$ORIGCC" -if test -s conftest; then +if test -s conftest${ac_exeext}; then echo "creating $cl_machine_file_h" - ./conftest > conftest.h + ./conftest${ac_exeext} > conftest.h if cmp -s "$cl_machine_file_h" conftest.h 2>/dev/null; then # The file exists and we would not be changing it rm -f conftest.h
Am I right assuming that the last hunk is the only non-cosmetic one? No. All of hunks (except the last one) are necessary to make auto* tools happy. The last hunk is the only win32-specific.
Best regards, Alexei. -- All science is either physics or stamp collecting.