annotate README.MSVC @ 11117:3cbc0d77db48 ss-3-3-53

update version info for snapshot
author John W. Eaton <jwe@octave.org>
date Tue, 19 Oct 2010 02:25:32 -0400
parents d36f8c473dff
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6136
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
1 Compiling Octave with MSVC
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
2
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
3 Starting with Octave 2.9.9, Octave source tree contains support for
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
4 MSVC (Microsoft C/C++ compiler). This file explains how to
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
5 successfully compile Octave under such a system.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
6
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
7
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
8 1. Requirements
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
9 ===============
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
10
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
11 Depending whether you are compiling Octave from a release package or
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
12 from CVS source tree, various additional tools are required.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
13
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
14 1.1 Shell
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
15 ---------
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
16
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
17 The compilation process requires a working UNIX-like shell under
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
18 Windows. Such shell is provided either by Cygwin or MSYS (MinGW).
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
19 The choice of the actual shell will have an impact on the rest of the
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
20 procedure. Altough both shell can be used, the procedure has been
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
21 mainly tested under the MSYS shell.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
22
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
23 1.1.1 Cygwin shell
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
24
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
25 The use of the Cygwin shell has the advantage of installation
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
26 simplicity, as all required packages can be easily installed through
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
27 the setup program. However it presents some annoying compile-time
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
28 problems. The Cygwin shell can be installed via the setup program
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
29 http://www.cygwin.com/setup.exe. You should at least select the
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
30 following packages
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
31
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
32 bash grep sed make
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
33
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
34 If you are building the CVS sources of Octave, you will also need
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
35
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
36 gawk bison flex autoconf tetex texinfo ghostscript
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
37
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
38 When building from CVS, you need also gperf. However, the version
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
39 available under Cygwin is too old, so you should grab a more recent
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
40 one. You can either build gperf from the sources found at
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
41 ftp://ftp.gnu.org or use the package from the GunWin32 project
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
42 (http://gnuwin32.sourceforge.net). Either way, get the gperf package,
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
43 install it and make sure the executable is in your PATH under the
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
44 Cygwin shell.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
45
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
46 1.1.2 MSYS shell
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
47
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
48 The use of the MSYS shell requires more manual installation, but
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
49 currently results in fewer compile-time problem. Download and install
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
50 the following packages from the MinGW download page
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
51 (http://www.mingw.org):
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
52
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
53 MSYS-1.0.10.exe
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
54 msysDTK-1.0.1.exe
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
55
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
56 If you are building the CVS sources of Octave, you will also need
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
57
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
58 msys-autoconf-2.59.tar.bz2
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
59
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
60 from the MinGW site.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
61
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
62 NOTE: the autoconf version included in msysDTK is too old (2.56).
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
63 Grab the newer one and simply uncompress it in the root
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
64 directory of the MSYS installation directory.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
65
6653
673686daec87 [project @ 2007-05-22 15:36:09 by jwe]
jwe
parents: 6275
diff changeset
66 If you are building from CVS, you will need the following
6136
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
67 additional tools that are not part of the MSYS packages
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
68
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
69 bison flex gperf
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
70
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
71 You can find these packages as part of the GnuWin32 project
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
72 (http://gnuwin32.sourceforge.net) or you can build them from sources
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
73 found at ftp://ftp.gnu.org. Download and install these packages and
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
74 make sure the executables are in your PATH under the MSYS shell.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
75
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
76 Building the documentation from CVS also requires additional tools,
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
77 mainly TeX, texinfo and ghostscript. MiKTeX (http://www.miktex.org)
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
78 provides a user-friendly TeX implementation under Windows, with an
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
79 easy-to-use installer. Download and install MiKTeX if you're building
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
80 from CVS, and make sure the executables (located in
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
81 <MiKTeX_install>\Main\miktex\bin) are in your PATH under the MSYS shell.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
82
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
83 MiKTeX also provides texinfo. However, the msysDTK package provides
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
84 an out-dated version that cannot be used to build Octave
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
85 documentation. So you should make sure that you're using the MiKTeX
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
86 implementation, by either playing with your PATH variable or renaming
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
87 the makeinfo.exe, texi2dvi and texi2pdf files located in the directory
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
88 <MSYS_install>\bin.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
89
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
90 Ghostscript is available from http://www.cs.wisc.edu/~ghost/.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
91 Download and install the package gsxxxw32.exe, where xxx stands for
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
92 the actual release or ghostscript (as of writing this documentation,
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
93 version is 8.54; hence the package is named gs854w32.exe). Again,
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
94 make sure the gswin32.exe executable is in your PATH under the MSYS
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
95 shell.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
96
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
97 1.2 Gnuplot
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
98 -----------
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
99
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
100 Octave relies on gnuplot for plotting. It is not necessary to install
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
101 gnuplot just to build the Octave executable, but it is needed to
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
102 create some figures for the documentation if you are building the CVS
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
103 sources of Octave.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
104
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
105 A Windows version of Gnuplot can be found at http://www.gnuplot.info.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
106 Download and install it, and make sure the pgnuplot.exe executable is
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
107 in your PATH under the shell.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
108
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
109 1.3 MSVC compiler
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
110 -----------------
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
111
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
112 You'll need a recent MSVC compiler. This compiler is available for
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
113 free (as in beer) from Microsoft MSDN web site. Octave has been
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
114 successfully compiled using version 8 of the compiler (AKA Visual
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
115 Studio 2005). To start a command prompt with the correct compilation
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
116 environment, use the corresponding menu entry in your start menu.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
117
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
118 If you're using the free version of Visual Studio (Express edition),
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
119 you'll need to install the Platform SDK package, also available from
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
120 MSDN. In that case, you'll also need to run the "SetEnv.cmd" script
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
121 found in the SDK installation directory for the required additional
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
122 setup.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
123
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
124 1.4 Unix-to-MSVC compilation scripts
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
125 ------------------------------------
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
126
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
127 These scripts provide a UNIX-like compilation interface, based on the
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
128 Microsoft compilation tools. The package is available from the Octave
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
129 web site. Download and install the package, and make sure the scripts
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
130 are in your PATH under the shell.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
131
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
132 As those scripts calls the Microsoft compilation tools, those tools
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
133 should also be in your PATH. I've found that the easiest way to get a
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
134 correct environment is to start the shell from the command prompt that
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
135 is already configured for MSVC.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
136
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
137 Hence the following steps:
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
138
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
139 * start command prompt from Visual Studio menu entry
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
140
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
141 * run "SetEnv.cmd" if required
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
142
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
143 * additional setup (like adding Gnuplot, GnuWin32 bin
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
144 directory... to the PATH)
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
145
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
146 * start the shell:
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
147
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
148 - MSYS: start <MSYS_install>\bin\rxvt.exe -e /bin/sh --login -i
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
149 - Cygwin: start <Cygwin_install>\cygwin.bat
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
150
9989
d36f8c473dff use glob and fnmatch from gnulib
John W. Eaton <jwe@octave.org>
parents: 9031
diff changeset
151 1.5 Readline library
6136
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
152 --------------------
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
153
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
154 While not mandatory to compile Octave, the readline library is very
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
155 useful to make Octave really usable. A patched version of the
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
156 readline library can be found in the Octave website. This patched
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
157 version is intended to be compiled from the shell using the
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
158 Unix-to-MSVC compilation scripts:
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
159
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
160 * download and decompress the sources (and apply the patch, if required)
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
161 * follow the instructions in the file README.msvc
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
162
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
163 As for the glob library, adapt the INCLUDE and LIB environment
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
164 variables. Note that as Octave will be linked to the readline DLL,
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
165 you should also add the path of readline.dll to your PATH variable.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
166
9989
d36f8c473dff use glob and fnmatch from gnulib
John W. Eaton <jwe@octave.org>
parents: 9031
diff changeset
167 1.6 F2C
6136
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
168 -------
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
169
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
170 As there exist no free MSVC-like fortran compiler, the compilation
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
171 process makes use of the f2c utility and the libf2c library. Those
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
172 components can be downloaded from http://www.netlib.org/f2c/msdos/ and
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
173 http://www.netlib.org/f2c/libf2c.zip.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
174
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
175 To compile libf2c, use makefile.vc and NMAKE.EXE. To be usable within
6275
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
176 Octave, the following modifications needs to be done:
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
177 1) edit makefile.vc and add "-MD" as compilation flag (to
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
178 the CFLAGS variable).
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
179 2) edit fio.h and comment the declaration of isatty (around line 112).
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
180 This means replacing the line:
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
181
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
182 extern int isatty(int);
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
183
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
184 with
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
185
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
186 /* extern int isatty(int); */
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
187
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
188 After compilation, install f2c.h and vcf2c.lib at locations where they
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
189 can be found by the MSVC tools (adjust the INCLUDE and LIB variables).
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
190 Note that you must rename vcf2c.lib into f2c.lib so that Octave's
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
191 configure script will find it.
6136
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
192
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
193
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
194 2. Compilation
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
195 ==============
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
196
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
197 Copy the following lines into a shell script and execute it (note that
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
198 you can use whatever you want as installation directory):
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
199
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
200 --- BEGIN (cut me)
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
201 #!/bin/sh
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
202 if ! grep "__declspec(noreturn dllimport)" configure 2>&1 > /dev/null; then
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
203 echo "Pre-processing configure script..."
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
204 sed -e "s/'extern \"C\" void exit (int);'/'extern \"C\" __declspec(noreturn dllimport) void exit (int);' 'extern \"C\" void exit (int);'/g" configure \
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
205 > configure.tmp
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
206 mv configure.tmp configure
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
207 fi
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
208
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
209 CC=cc-msvc CXX=cc-msvc NM="dumpbin -symbols" AR=ar-msvc RANLIB=ranlib-msvc \
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
210 ./configure --build=i686-pc-msdosmsvc --prefix=/usr/local/octave-vc8-debug --with-f2c
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
211 --- END (cut me)
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
212
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
213 Then run the usual:
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
214
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
215 make
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
216 make install
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
217
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
218 2.1 MSYS
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
219 --------
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
220
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
221 When building from the MSYS shell and CVS, everything should run fine
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
222 until building the doc. At some point, TeX might ask you for the
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
223 location of the file conf.texi. If this happens, simply type
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
224 "../conf.texi" and the process should continue.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
225
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
226 2.2 Cygwin
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
227 ----------
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
228
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
229 Building from the Cygwin shell and CVS produces more compile-time
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
230 errors when generating the documentation. Here are some fixes that
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
231 should work around most problems:
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
232
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
233 * edit "run-octave" and add the 2 lines right after the definition of
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
234 LOADPATH and IMAGEPATH:
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
235
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
236 LOADPATH=`cygpath -d -p $LOADPATH`
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
237 IMAGEPATH=`cygpath -d $IMAGEPATH`
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
238
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
239 * if texi2dvi fails with the error "Fatal error: I'm stymied", defines TEX
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
240 variable to "tex" as in: "TEX=tex make"
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
241
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
242 * if pdftex fails in doc/refcard with the same error as above, edit
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
243 the Makefile and replace "pdftex" calls with "pdfetex"
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
244
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
245
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
246 3. Installation
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
247 ===============
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
248
9031
1052a66078cf Documentation cleanup of top-level Octave directory (READMEs, INSTALL)
Rik <rdrider0-list@yahoo.com>
parents: 6653
diff changeset
249 The compiled Octave is relocatable. This means that whatever
6136
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
250 installation dir you chose at configure time, you can move the whole
9031
1052a66078cf Documentation cleanup of top-level Octave directory (READMEs, INSTALL)
Rik <rdrider0-list@yahoo.com>
parents: 6653
diff changeset
251 installation directory to another location without any problem. Octave
6136
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
252 should still run OK.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
253
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
254
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
255 4. Notes
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
256 ========
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
257
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
258 This procedure has been successfully tested under Windows XP with
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
259 Visual Studio 2005 Express edition, Platform SDK for Windows Server
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
260 2003 R2, patched readline version 5.2, APFL ghostscript 8.54, Gnuplot
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
261 4.0, MSYS-1.0.10, msysDTK-1.0.1, MiKTeX-2.4. Depending on your
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
262 configuration, it may or may not work for you.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
263
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
264
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
265 Please send questions, comments or suggestions to
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
266
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
267 Michael Goffioul
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
268 michael dot goffioul at swing dot be
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
269
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
270 Thu Nov 2 11:30:50 2006