maxima for windows with modern gcc/gcl



On 17/01/2012 7:21 PM, Stefano Ferri wrote:
> I was also trying to build a Maxima installer when Robert asked for 
> that, but I was stuck with the compilation of gcl. I've read the 
> install.win32 but I've installed the latest version of Minsys/Mingw to 
> see if they worked.
>
> First, the ./confgure  was extremely slow (I have a slow pc, but while 
> on a Linux box it takes 1-2 minutes to complete, on windows it takes 
> about 20 minutes), but maybe this is a Mingw/Minsys-related issue.
>
> The problem is that configure complains about a missing xdr_double and 
> stops with an error. I've not found a solution for that, how have you 
> set up the build environment? I've made a complete installation via 
> installer, and not manually downloaded and installed files and 
> suggested in install.win32. Do I need some other package?
>
> Thanks
> Stefano
>
Here are some rough notes.  Happy to explain further as required.  I may 
have missed a step or two.  This works for me in WinXP 32-bit but not on 
Window 7 64-bit, where gcl configure chokes.  If you are getting the xdr 
error then you are past the tests that fail for me.

It is slow, and anti-virus software will make it even worse

To compile gcl

    * latest mingw installation with gcc-4.6.2.  Not sure exactly which
      packages are installed, but I just added them using mingw-get as
      required.  I don't recall any problems here.
    * gcl-2.6.8pre from CVS
    * xdr isn't needed for maxima.  I couldn't disable it in configure,
      and the test seems broken, so I just removed the tests using the
      patch below.
    * /configure --enable-ansi --enable-dynsysgmp; make; make install

It would be better to provide xdr or fix gcl configure so that 
--disable-xdr or enable-xdr=no works.

To compile maxima

    * ActiveState perl and python (32-bit) with wrapper scripts for perl
      and python in /usr/local/bin.  Can also do this with PATH but
      wrappers work better for me.
    * some other tools as given in INSTALL.win32, but using latest
      versions I could find.  You don't need many of them until you
      build an installer
    * sh bootstrap; configure; make; make check
    * if you are building an installer then you need the configure line
      as given in INSTALL.win32

To install maxima and make installer

    * wxMaxima binary from Andrej (as I haven't tried to build it from
      source yet).  Just copy the whole folder from latest installer,
      and put it where "make iss" can find it - see
      interfaces/xmaxima/win32/Makefile
    * ActiveState tcl
    * Other tools as given in INSTALL.win32, but using latest versions I
      could find.
    * Changes to interfaces/xmaxima/win32/Makefile (attached) after
      running configure.
          o use tcl header, library and dll from c:/tcl
          o install parts of gcc needed to compile maxima using gcl
    * make install; make iss
    * run the maxima.iss file through InnoSetup


$ diff -u configure.orig configure
--- configure.orig      2012-01-16 21:59:22 +1100
+++ configure   2012-01-17 21:12:25 +1100
@@ -2546,11 +2546,11 @@


  # Check whether --enable-xdr was given.
-if test "${enable_xdr+set}" = set; then :
-  enableval=$enable_xdr; try_xdr=$enableval
-else
+#if test "${enable_xdr+set}" = set; then :
+#  enableval=$enable_xdr; try_xdr=$enableval
+#else
    try_xdr="no"
-fi
+#fi


  # Check whether --enable-xgcl was given.
@@
@@ -5691,56 +5691,6 @@
  fi


-ac_fn_c_check_func "$LINENO" "xdr_double" "ac_cv_func_xdr_double"
-if test "x$ac_cv_func_xdr_double" = xyes; then :
-
-else
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for xdr_double in 
-ltirpc" >&5
-$as_echo_n "checking for xdr_double in -ltirpc... " >&6; }
-if ${ac_cv_lib_tirpc_xdr_double+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  ac_check_lib_save_LIBS=$LIBS
-LIBS="-ltirpc  $LIBS"
-cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-/* Override any GCC internal prototype to avoid an error.
-   Use char because int might match the return type of a GCC
-   builtin and then its argument prototype would still apply.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-char xdr_double ();
-int
-main ()
-{
-return xdr_double ();
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_link "$LINENO"; then :
-  ac_cv_lib_tirpc_xdr_double=yes
-else
-  ac_cv_lib_tirpc_xdr_double=no
-fi
-rm -f core conftest.err conftest.$ac_objext \
-    conftest$ac_exeext conftest.$ac_ext
-LIBS=$ac_check_lib_save_LIBS
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: 
$ac_cv_lib_tirpc_xdr_double" >&5
-$as_echo "$ac_cv_lib_tirpc_xdr_double" >&6; }
-if test "x$ac_cv_lib_tirpc_xdr_double" = xyes; then :
-  TLIBS="$TLIBS -ltirpc"
-else
-  as_fn_error $? "Need xdr_double" "$LINENO" 5
-fi
-
-fi
-
-
-

-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: Makefile
URL: <http://www.math.utexas.edu/pipermail/maxima/attachments/20120117/aa2d2476/attachment-0001.ksh>;