Mercurial > hg > octave-nkf
view README.MSVC @ 10454:79a56d0a6a0d ss-3-3-51
version is now 3.3.51
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 24 Mar 2010 16:27:05 -0400 |
parents | d36f8c473dff |
children |
line wrap: on
line source
Compiling Octave with MSVC Starting with Octave 2.9.9, Octave source tree contains support for MSVC (Microsoft C/C++ compiler). This file explains how to successfully compile Octave under such a system. 1. Requirements =============== Depending whether you are compiling Octave from a release package or from CVS source tree, various additional tools are required. 1.1 Shell --------- The compilation process requires a working UNIX-like shell under Windows. Such shell is provided either by Cygwin or MSYS (MinGW). The choice of the actual shell will have an impact on the rest of the procedure. Altough both shell can be used, the procedure has been mainly tested under the MSYS shell. 1.1.1 Cygwin shell The use of the Cygwin shell has the advantage of installation simplicity, as all required packages can be easily installed through the setup program. However it presents some annoying compile-time problems. The Cygwin shell can be installed via the setup program http://www.cygwin.com/setup.exe. You should at least select the following packages bash grep sed make If you are building the CVS sources of Octave, you will also need gawk bison flex autoconf tetex texinfo ghostscript When building from CVS, you need also gperf. However, the version available under Cygwin is too old, so you should grab a more recent one. You can either build gperf from the sources found at ftp://ftp.gnu.org or use the package from the GunWin32 project (http://gnuwin32.sourceforge.net). Either way, get the gperf package, install it and make sure the executable is in your PATH under the Cygwin shell. 1.1.2 MSYS shell The use of the MSYS shell requires more manual installation, but currently results in fewer compile-time problem. Download and install the following packages from the MinGW download page (http://www.mingw.org): MSYS-1.0.10.exe msysDTK-1.0.1.exe If you are building the CVS sources of Octave, you will also need msys-autoconf-2.59.tar.bz2 from the MinGW site. NOTE: the autoconf version included in msysDTK is too old (2.56). Grab the newer one and simply uncompress it in the root directory of the MSYS installation directory. If you are building from CVS, you will need the following additional tools that are not part of the MSYS packages bison flex gperf You can find these packages as part of the GnuWin32 project (http://gnuwin32.sourceforge.net) or you can build them from sources found at ftp://ftp.gnu.org. Download and install these packages and make sure the executables are in your PATH under the MSYS shell. Building the documentation from CVS also requires additional tools, mainly TeX, texinfo and ghostscript. MiKTeX (http://www.miktex.org) provides a user-friendly TeX implementation under Windows, with an easy-to-use installer. Download and install MiKTeX if you're building from CVS, and make sure the executables (located in <MiKTeX_install>\Main\miktex\bin) are in your PATH under the MSYS shell. MiKTeX also provides texinfo. However, the msysDTK package provides an out-dated version that cannot be used to build Octave documentation. So you should make sure that you're using the MiKTeX implementation, by either playing with your PATH variable or renaming the makeinfo.exe, texi2dvi and texi2pdf files located in the directory <MSYS_install>\bin. Ghostscript is available from http://www.cs.wisc.edu/~ghost/. Download and install the package gsxxxw32.exe, where xxx stands for the actual release or ghostscript (as of writing this documentation, version is 8.54; hence the package is named gs854w32.exe). Again, make sure the gswin32.exe executable is in your PATH under the MSYS shell. 1.2 Gnuplot ----------- Octave relies on gnuplot for plotting. It is not necessary to install gnuplot just to build the Octave executable, but it is needed to create some figures for the documentation if you are building the CVS sources of Octave. A Windows version of Gnuplot can be found at http://www.gnuplot.info. Download and install it, and make sure the pgnuplot.exe executable is in your PATH under the shell. 1.3 MSVC compiler ----------------- You'll need a recent MSVC compiler. This compiler is available for free (as in beer) from Microsoft MSDN web site. Octave has been successfully compiled using version 8 of the compiler (AKA Visual Studio 2005). To start a command prompt with the correct compilation environment, use the corresponding menu entry in your start menu. If you're using the free version of Visual Studio (Express edition), you'll need to install the Platform SDK package, also available from MSDN. In that case, you'll also need to run the "SetEnv.cmd" script found in the SDK installation directory for the required additional setup. 1.4 Unix-to-MSVC compilation scripts ------------------------------------ These scripts provide a UNIX-like compilation interface, based on the Microsoft compilation tools. The package is available from the Octave web site. Download and install the package, and make sure the scripts are in your PATH under the shell. As those scripts calls the Microsoft compilation tools, those tools should also be in your PATH. I've found that the easiest way to get a correct environment is to start the shell from the command prompt that is already configured for MSVC. Hence the following steps: * start command prompt from Visual Studio menu entry * run "SetEnv.cmd" if required * additional setup (like adding Gnuplot, GnuWin32 bin directory... to the PATH) * start the shell: - MSYS: start <MSYS_install>\bin\rxvt.exe -e /bin/sh --login -i - Cygwin: start <Cygwin_install>\cygwin.bat 1.5 Readline library -------------------- While not mandatory to compile Octave, the readline library is very useful to make Octave really usable. A patched version of the readline library can be found in the Octave website. This patched version is intended to be compiled from the shell using the Unix-to-MSVC compilation scripts: * download and decompress the sources (and apply the patch, if required) * follow the instructions in the file README.msvc As for the glob library, adapt the INCLUDE and LIB environment variables. Note that as Octave will be linked to the readline DLL, you should also add the path of readline.dll to your PATH variable. 1.6 F2C ------- As there exist no free MSVC-like fortran compiler, the compilation process makes use of the f2c utility and the libf2c library. Those components can be downloaded from http://www.netlib.org/f2c/msdos/ and http://www.netlib.org/f2c/libf2c.zip. To compile libf2c, use makefile.vc and NMAKE.EXE. To be usable within Octave, the following modifications needs to be done: 1) edit makefile.vc and add "-MD" as compilation flag (to the CFLAGS variable). 2) edit fio.h and comment the declaration of isatty (around line 112). This means replacing the line: extern int isatty(int); with /* extern int isatty(int); */ After compilation, install f2c.h and vcf2c.lib at locations where they can be found by the MSVC tools (adjust the INCLUDE and LIB variables). Note that you must rename vcf2c.lib into f2c.lib so that Octave's configure script will find it. 2. Compilation ============== Copy the following lines into a shell script and execute it (note that you can use whatever you want as installation directory): --- BEGIN (cut me) #!/bin/sh if ! grep "__declspec(noreturn dllimport)" configure 2>&1 > /dev/null; then echo "Pre-processing configure script..." sed -e "s/'extern \"C\" void exit (int);'/'extern \"C\" __declspec(noreturn dllimport) void exit (int);' 'extern \"C\" void exit (int);'/g" configure \ > configure.tmp mv configure.tmp configure fi CC=cc-msvc CXX=cc-msvc NM="dumpbin -symbols" AR=ar-msvc RANLIB=ranlib-msvc \ ./configure --build=i686-pc-msdosmsvc --prefix=/usr/local/octave-vc8-debug --with-f2c --- END (cut me) Then run the usual: make make install 2.1 MSYS -------- When building from the MSYS shell and CVS, everything should run fine until building the doc. At some point, TeX might ask you for the location of the file conf.texi. If this happens, simply type "../conf.texi" and the process should continue. 2.2 Cygwin ---------- Building from the Cygwin shell and CVS produces more compile-time errors when generating the documentation. Here are some fixes that should work around most problems: * edit "run-octave" and add the 2 lines right after the definition of LOADPATH and IMAGEPATH: LOADPATH=`cygpath -d -p $LOADPATH` IMAGEPATH=`cygpath -d $IMAGEPATH` * if texi2dvi fails with the error "Fatal error: I'm stymied", defines TEX variable to "tex" as in: "TEX=tex make" * if pdftex fails in doc/refcard with the same error as above, edit the Makefile and replace "pdftex" calls with "pdfetex" 3. Installation =============== The compiled Octave is relocatable. This means that whatever installation dir you chose at configure time, you can move the whole installation directory to another location without any problem. Octave should still run OK. 4. Notes ======== This procedure has been successfully tested under Windows XP with Visual Studio 2005 Express edition, Platform SDK for Windows Server 2003 R2, patched readline version 5.2, APFL ghostscript 8.54, Gnuplot 4.0, MSYS-1.0.10, msysDTK-1.0.1, MiKTeX-2.4. Depending on your configuration, it may or may not work for you. Please send questions, comments or suggestions to Michael Goffioul michael dot goffioul at swing dot be Thu Nov 2 11:30:50 2006