Executive Summary ================= Maxima can now be built under Windows without recourse to any Unix-like utilities. To do so, follow the purely lisp-based build procedure in INSTALL.lisp. Maxima can be simply compiled and installed under MSYS or Cygwin by following the GNU Autotools instructions in INSTALL. With a few more steps, Maxima will create a windows installer executable. The instructions for doing so are contained in this file. Note, however, that this process is not as polished as the Unix-like install process. In order to create the Maxima Windows installer from the maxima tarball distribution, I do the following in a MSYS window: ---------------------------------------------------- ./configure --prefix=c:/maxima \ --enable-chm \ --enable-xmaxima-exe \ --with-hhc= \ --enable-lang-es --enable-lang-pt --enable-lang-pt_BR make make install make iss ---------------------------------------------------- Then run Inno Setup on the generated maxima.iss file. That is all it takes. External Requirements ===================== 1) MSYS+MinGW, including mktemp 2) msysDTK 3) GCL 4) Tcl/Tk (8.5 or later recommended) 5) Starkit, TclKit and img.kit 6) Vtk 7) InnoSetup 8) gnuplot 9) wxMaxima 10) Microsoft HTML Help Workshop 11) Perl 5.8 (ActivePerl) 12) Python Detailed Instructions ===================== The instructions below apply to the maxima release tarball. In order to build from the git repository, git, autoconf and automake are also required. Follow the directions in INSTALL.git before proceeding. 1) Get a working msys+mingw installation from www.mingw.org. Option A - gcc-3.3.1 based system From 2006 until 2012, it was essential to install the versions of gcc and binutils listed here to obtain a working gcl. The files are available from : a) Get and install MinGW-3.1.0-1.exe b) Install MSYS-1.0.10.exe The installer should magically find your mingw installation and add it to your path. c) Install tcltk-8.4.1-1.exe Install it into directory where MSYS/MinGW can find it, for example mingw/bin directory. d) Install gcc-3.3.1 e) Install binutils-2.14.90 from ftp://ftp.sf.net/m/mi/mingw/binutils-2.14.90-20030807-1.tar.gz f) Install msysDTK-1.0.1.exe It provides Perl and autotools (autoconf/automake). msysDTK-1.0.1 comes with Perl version 5.6. This is now too old. Since Maxima 5.11 we require version 5.8. or install - automake msys-autoconf-2.59.tar.bz2 - autoconf msys-automake-1.8.2.tar.bz2 - libtool msys-libtool-1.5.tar.bz2 g) Download the MinGW implementation of mktemp from: http://downloads.sourceforge.net/mingw/mktemp-1.5-MSYS.tar.bz2 (4 Kb) Install by (cd /; tar xjf /path/to/mktemp-1.5-MSYS.tar.bz2) NOTE: gcc 3.3.3 and gcc 3.4.0 do NOT work; likewise binutils 2.13.90 and 2.15.90, but 2.17.50-20060824 is OK. This is output of msysinfo command for MSYS system with all required components: ----------------------------------------------------------------- MSYS 1.0.10(0.46/3/2) 2004-03-15 07:17 i686 unknown; targ=MINGW32 GNU bash, version 2.04.0(1)-release (i686-pc-msys); ENV=.profile GNU Make version 3.79.1,Built for i686-pc-msys; MAKE_MODE=unix gcc.exe (GCC) 3.3.1 (mingw special 20030804-1); targ=MINGW32 GNU ld version 2.14.90 20040120 789320 Tue Mar 16 10:32:49 2004 /bin/msys-1.0.dll 52064 Thu Jan 02 05:05:27 2003 /bin/msysltdl-3.dll 135680 Tue Mar 16 10:32:48 2004 /bin/make.exe 84992 Thu Aug 07 23:29:00 2003 /mingw/bin/gcc.exe 617472 Tue Jan 20 21:57:52 2004 /mingw/bin/ld.exe ----------------------------------------------------------------- Option B - gcc-4.6.2 based system From early 2012 it has been possible to build maxima using current msys, mingw and gcc-4.6. a) Download mingw installer mingw-get-inst from http://www.mingw.org/ b) Run the installer to install mingw and msys c) Use the installed mingw-get to add the build dependencies, including - mingw-gcc - mingw-binutils - mingw-make - mingw32-autotools maxima-5.27.0 was successfully built using MSYS 1.0.17(0.48/3/2) GNU bash, version 3.1.17 GNU Make 3.81 gcc.exe (GCC) 4.6.2 GNU ld (GNU Binutils) 2.22 2) Get a working GCL Get the GCL 2.6.8pre from CVS. See . Then compile and install under mingw/msys with ./configure --enable-ansi make make install Check that gcl works by typing gcl at MSYS command line ----------------------------------------------------------------------- $ gcl GCL (GNU Common Lisp) 2.6.8 ANSI Nov 11 2006 23:08:49 Source License: LGPL(gcl,gmp), GPL(unexec,bfd,xgcl) Binary License: GPL due to GPL'ed components: (UNEXEC) Modifications of this banner must retain notice of a compatible license Dedicated to the memory of W. Schelter Use (help) to get some basic information on how to use GCL. Temporary directory for compiler files set to C:/DOCUME~1/user/LOCALS~1/Temp/ >(quit) ----------------------------------------------------------------------- 3) Download tclkitsh-8.6.3-win32-ix86.exe and tclkit-8.6.3-win32-ix86.exe from and put them in c:/programs/star. 4) Get and install Inno Setup from . 5) Download the gnuplot windows binary from . It is recommended to use version 4.6 patchlevel 3 or more recent (If you do have to use an older version, read the Maxima documentation for variable gnuplot_view_args). Install gnuplot in your MSYS user home directory in ~/programs/gnuplot 6) Compile wxMaxima for windows from . Use wxMaxima 0.6.5 with Maxima 5.9.3 or earlier, wxMaxima 0.7.0 with Maxima 5.10.0, and wxMaxima 0.7.1 with Maxima 5.11.0. Install it to default location, say C:\Program Files\wxMaxima. Then copy contents of wxMaxima directory excluding \uninst subdirectory to your MSYS user home directory ~/programs/wxMaxima NOTE: Location of Starkit/TclKit, gnuplot and wxMaxima is controlled by the override-able variables and their defaults are: TCLKITSH = tclkitsh.exe TCLKITDIR = ../../../../programs/star SDXDIR = $(TCLKITDIR) GCCPREFIX=/mingw GNUPLOTDIR = ../../../../programs/gnuplot WXMAXIMADIR = ../../../../programs/wxMaxima To see how they are used, look in interfaces/xmaxima/win32/Makefile.in and Makefile.am in the top level maxima directory. You may change their values according to your preferences. 7) Install Microsoft HTML Help Workshop from . Make sure that HHW directory is within PATH (edit PATH environment variable with either Windows or MSYS approach), so the HTML Help Workshop compiler command "hhc.exe" is available at the MSYS command prompt. For reference, to change PATH within MSYS only, edit the file c:\msys\1.0\etc\profile and add the following line after the initial setting of PATH: export PATH="/c/gcl/bin:$PATH" 8) Install Perl 5.8. ActivePerl binaries provided by http://www.activestate.com work. Again add the perl bin directory to PATH. Alternatively use a wrapper script like $ cat /usr/local/bin/perl #!/bin/sh exec /c/perl/bin/perl $@ 9) Install Python 2.6. ActivePython binaries provided by http://www.activestate.com work. 10) Following components a) tcltk (e.g. wish84 command), b) gcl (gcl command), c) HTML Help Workshop compiler (hhc command) d) perl e) python should also be available at the MSYS command prompt. If this is not the case, edit your PATH variable or add wrapper scripts. 11) You should now be ready to compile and install maxima. Configure maxima so that it will install in some sort of temporary directory. The directory does not need to exist ahead of time. ./configure --prefix="c:/maxima" \ --enable-lang-es --enable-lang-pt --enable-lang-pt_BR make make check make install make iss The "check" should pass all tests except those listed as known failures. 11) Once "make iss" is complete, run Inno Setup on the maxima.iss file. It is recommended to remove the temporary maxima install directory (c:/maxima above) before testing the installation. 12) Test the installed package (see the following part:) Testing the installation package: ================================= After building it, you can (and should) test the new Maxima installation package. Install it on Windows and check that the installation (and later the deinstallation) works properly. To test Maxima, try the following: o Run the maxima testsuite: run_testsuite() o Try compiling a function. This has been a problem in the past - f(x):=x+2; - compile(f); - f(2); o Test the graphics systems in both xmaxima and wxmaxima plot2d(sin(x),[x,0,10]); plot2d(sin(x),[x,0,10],[plot_format,xmaxima]); plot3d(x*y,[x,-1,1],[y,-1,1]); scene(cone); plotdf([-y,x],[trajectory_at,5,0]); load(draw)$ draw3d(xu_grid = 30, yv_grid = 60, surface_hide = true, parametric_surface(cos(phi) * sin(theta), sin(phi) * sin(theta), cos(theta), theta, 0, %pi, phi, 0, 2 * %pi))$ o Check that plotting to Postscript works plot2d(sin(x),[x,0,10],[ps_file,"ps_test.ps"]); o Try out the on-line help: describe(sin) o Try out, if external packages (e.g. lapack) work: load(lapack); fpprintprec : 6; M : matrix ([9.5, 1.75], [3.25, 10.45]); dgeev (M); should return the eigenvalues of M (and false, false since we did not compute eigenvectors: [[7.54331, 12.4067], false, false] o Check that the windows help files work from the Start menu and from within xmaxima and wxmaxima o Try if double-clicking on a .wxmx file opens it o The wxMaxima source comes with a file (test/testbench_simple.wxmx) that tries to trigger everything that has gone wrong in previous wxMaxima builds. They include the commands that will test the graphics system in the next step. Open that file and then select "Cells/Evaluate all cells" in this file and check if the file is processed correctly. Troubleshooting =============== If compilation fails -------------------- The Windows installer for gcl-based maxima requires gcc and as. The gcc files required depend on the version of gcc used. If compilation fails then some troubleshooting is required. One way to do this is to save the .c file generated by gcl: f(x):=x+2$ :lisp (setq compiler::*keep-gaz* t) compile(f); then open a cmd window and run gcc from the command line. If plotting fails ----------------- If plotting fails on a new platform (win64, arm or similar) it might be that some of the tests for the operating system ( (and sbcl win32) or (string= *autoconf-windows* "true") ) might not detect the current flavour of the OS.