annotate README.MSVC @ 7948:af10baa63915 ss-3-1-50

3.1.50 snapshot
author John W. Eaton <jwe@octave.org>
date Fri, 18 Jul 2008 17:42:48 -0400
parents 673686daec87
children 1052a66078cf
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
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
6275
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
196 Octave, the following modifications needs to be done:
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
197 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
198 the CFLAGS variable).
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
199 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
200 This means replacing the line:
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
201
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
202 extern int isatty(int);
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
203
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
204 with
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
205
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
206 /* extern int isatty(int); */
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
207
6e5835ef21f8 [project @ 2007-02-07 07:29:46 by jwe]
jwe
parents: 6136
diff changeset
208 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
209 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
210 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
211 configure script will find it.
6136
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
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
214 2. Compilation
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
215 ==============
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
216
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
217 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
218 you can use whatever you want as installation directory):
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 --- BEGIN (cut me)
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
221 #!/bin/sh
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
222 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
223 echo "Pre-processing configure script..."
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
224 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
225 > configure.tmp
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
226 mv configure.tmp configure
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
227 fi
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 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
230 ./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
231 --- END (cut me)
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 Then run the usual:
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 make
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
236 make install
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 2.1 MSYS
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
239 --------
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
240
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
241 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
242 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
243 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
244 "../conf.texi" and the process should continue.
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 2.2 Cygwin
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
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
249 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
250 errors when generating the documentation. Here are some fixes that
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
251 should work around most problems:
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
252
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
253 * 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
254 LOADPATH and IMAGEPATH:
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
255
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
256 LOADPATH=`cygpath -d -p $LOADPATH`
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
257 IMAGEPATH=`cygpath -d $IMAGEPATH`
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
258
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
259 * 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
260 variable to "tex" as in: "TEX=tex make"
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
261
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
262 * 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
263 the Makefile and replace "pdftex" calls with "pdfetex"
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
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
266 3. Installation
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
267 ===============
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
268
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
269 The compiled Octave is relocatable. This means that whetever
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
270 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
271 installation directory to another location without any problem. Octave
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
272 should still run OK.
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
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
275 4. Notes
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
276 ========
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
277
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
278 This procedure has been successfully tested under Windows XP with
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
279 Visual Studio 2005 Express edition, Platform SDK for Windows Server
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
280 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
281 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
282 configuration, it may or may not work for you.
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
283
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
284
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
285 Please send questions, comments or suggestions to
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
286
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
287 Michael Goffioul
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
288 michael dot goffioul at swing dot be
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
289
bbbe04bacea2 [project @ 2006-11-02 16:54:27 by jwe]
jwe
parents:
diff changeset
290 Thu Nov 2 11:30:50 2006