[GiNaC-list] about CLN versus win32 patch
Richard B. Kreckel
kreckel at ginac.de
Mon Jul 31 23:34:59 CEST 2006
Sheplyakov Alexei wrote:
>Hello!
>
>On Mon, Jul 24, 2006 at 12:04:16AM +0200, Richard B. Kreckel wrote:
>
>
>>Your patch didn't apply because it wasn't from CVS, so I had to apply it
>>manually.
>>
>>
>It looks like you failed to do this properly.
>
>I've attached patch for cln_1-1 branch.
>
>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>. :-)
>------------------------------------------------------------------------
>
>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. I've deliberately put
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? Maybe updating libtool would be more
appropiate?
> 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? If
that's the case I'm going to apply it to the branch (to be released RSN)
and the rest to MAIN. Makes sense?
-richy.
--
Richard B. Kreckel
<http://www.ginac.de/~kreckel/>
More information about the GiNaC-list
mailing list