annotate README.MSVC @ 6136:bbbe04bacea2

[project @ 2006-11-02 16:54:27 by jwe]
author jwe
date Thu, 02 Nov 2006 16:54:27 +0000
parents
children 6e5835ef21f8
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
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
66 If you are building from CVS, you will need the the following
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
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
151 1.5 Glob library
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 Octave also requires a filename globbing library. This library is
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
155 typically part of the C library on UNIX systems, but is not part of
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
156 the Windows or MSVC run-time libraries. You can find a glob package
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
157 on the Octave website. This package provides the missing features and
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
158 is intended to be compiled in a fully setup shell with the
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
159 Unix-to-MSVC compilation scripts:
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
160
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
161 * download and decompress the sources
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
162 * run "./configure.vc" (you can edit it to change the installation dir)
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
163 * run "make"
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
164 * run "make install"
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
165
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
166 Then you'll have to tell MSVC where to find the headers and library
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
167 files by adjusting the INCLUDE and LIB environment variables. This
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
168 can be done before starting the shell, in the "additional setup" step
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
169 (see above).
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
170
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
171 1.6 Readline library
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
172 --------------------
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
173
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
174 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
175 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
176 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
177 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
178 Unix-to-MSVC compilation scripts:
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
179
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
180 * 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
181 * follow the instructions in the file README.msvc
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
182
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
183 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
184 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
185 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
186
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
187 1.7 F2C
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
188 -------
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
189
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
190 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
191 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
192 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
193 http://www.netlib.org/f2c/libf2c.zip.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
194
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
195 To compile libf2c, use makefile.vc and NMAKE.EXE. To be usable within
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
196 Octave, first edit makefile.vc and add "-MD" as compilation flag (to
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
197 the CFLAGS variable). Finally, install f2c.h and vcf2c.lib at
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
198 locations where they can be found by the MSVC tools (adjust the
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
199 INCLUDE and LIB variables). Note that you must rename vcf2c.lib into
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
200 f2c.lib so that Octave's configure script will find it.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
201
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
202
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
203 2. Compilation
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
204 ==============
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
205
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
206 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
207 you can use whatever you want as installation directory):
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 --- BEGIN (cut me)
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
210 #!/bin/sh
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
211 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
212 echo "Pre-processing configure script..."
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
213 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
214 > configure.tmp
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
215 mv configure.tmp configure
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
216 fi
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 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
219 ./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
220 --- END (cut me)
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
221
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
222 Then run the usual:
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
223
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
224 make
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
225 make install
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
226
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
227 2.1 MSYS
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
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
230 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
231 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
232 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
233 "../conf.texi" and the process should continue.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
234
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
235 2.2 Cygwin
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
236 ----------
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
237
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
238 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
239 errors when generating the documentation. Here are some fixes that
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
240 should work around most problems:
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 * 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
243 LOADPATH and IMAGEPATH:
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 LOADPATH=`cygpath -d -p $LOADPATH`
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
246 IMAGEPATH=`cygpath -d $IMAGEPATH`
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 * 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
249 variable to "tex" as in: "TEX=tex make"
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
250
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
251 * 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
252 the Makefile and replace "pdftex" calls with "pdfetex"
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 3. Installation
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 The compiled Octave is relocatable. This means that whetever
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
259 installation dir you chose at configure time, you can move the whole
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
260 installation directory to another location without any problem. Octave
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
261 should still run OK.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
262
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 4. Notes
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
265 ========
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 This procedure has been successfully tested under Windows XP with
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
268 Visual Studio 2005 Express edition, Platform SDK for Windows Server
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
269 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
270 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
271 configuration, it may or may not work for you.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
272
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
273
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
274 Please send questions, comments or suggestions to
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
275
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
276 Michael Goffioul
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
277 michael dot goffioul at swing dot be
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
278
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
279 Thu Nov 2 11:30:50 2006