[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