summaryrefslogtreecommitdiffstats
path: root/doc/started/nt.t
blob: 87da96da094038bf3942b2ff016c311e59102817 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
@c
@c  COPYRIGHT (c) 1988-1998.
@c  On-Line Applications Research Corporation (OAR).
@c  All rights reserved.
@c
@c  $Id$
@c

@set CYGWIN-VERSION B19

@chapter Using MS-Windows as a Development Host

This chapter discusses the installation of the GNU tool chain
on a computer running either the Microsoft Windows95 
or WindowsNT operating system.

This chapter is based on a draft provided by 
Geoffroy Montel <g_montel@@yahoo.com>.  Geoffroy's 
procedure was based on information from 
David Fiddes <D.J.Fiddes@@hw.ac.uk>.
Their input and feedback is greatly appreciated.

@b{STATUS:}  This chapter should be considered preliminary.
Please be careful when following these instructions.

@section Version Information

This installation process works well under Windows NT. 
It is said to also work under Windows95 (although it
did not work with B18). Anyway, the resulting code works
under both NT and 95.

This procedure should also work with newer version of 
the tool versions listed in this chapter, but this has
not been verified.  If you have success with a particular
version of the toolset or notice problems in this chapter,
please let the RTEMS maintainers know so they can be
addressed in future revisions of this document.

@section MS-Windows Host Specific Requirements

This section details the components required to install
and build a Windows hosted GNU cross development toolset.

@subsection Unzipping Archives

You will have to uncompress many archives during this
process.  You must @b{NOT} use @code{WinZip} or
@code{PKZip}.  Instead the un-achiving process uses
the GNU @code{zip} and @code{tar} programs as shown below:

@example
tar -xzvf archive.gzip 
@end example

XXX Is tar provided with Cygwin32?  If not, recommend a url.

@subsection Text Editor

You absolutely have to use a text editor which can 
save files with Unix format (so don't use Notepad 
nor Wordpad). If you do not have an appropriate
text editor, try @b{Programmers File Editor}, it is
free and very convenient (see 
http://www.lancs.ac.uk/people/cpaap/pfe/).

@subsection Bug in Patch Utility

There is a bug in the @code{patch} utility
provided in Cygwin32 B19. The files modified end up 
having MS-DOS style line termination. They must have
Unix format, so a @code{dos2unix}-like command must
be used to put them back into Unix format as shown below:

@example
dos2unix XXX
@end example

@subsection Files Needed

This section lists the files required to build and install
a Windows hosted GNU cross development toolset and their
home WWW site.  In addition to the sources required 
for the cross environment listed earlier in @ref{Get All the Pieces}, 
you will need to  download the following
files from their respective sites using your favorite
Web browser or ftp client.

@table @b

@item cdk.exe
http://www.cygnus.com/misc/gnu-win32

@item usertools.exe
http://www.cygnus.com/misc/gnu-win32

@end table

@section Installing Cygwin32 B19

This section describes the process of installing the 
version @value{CYGWIN-VERSION} of the Cygwin32 environment.  It assumes
that this toolset is installed in a directory 
referred to as @code{<RTOS>}.

@enumerate

@item Execute cdk.exe. These instructions assume that you 
install Cygwin32 under the <RTOS>\GnuWin32\b19 directory.

@item Execute usertools.exe.  These instructions assume that you 
install Cygwin32 under the <RTOS>\GnuWin32\b19 directory.

@item Execute Cygwin.bat (either on the start menu or 
under <RTOS>\GnuWin32\b19).

@item At this point, you are at the command line of @code{bash},
a Unix-like shell. You have to mount the "/" directory. Type:

@example 
umount /
mount -b <RTOS> /
@end example

For example, the following sequence creates an MS-DOS virtual
drive @code{O:} using an MS-DOS command window and then mounts
that virtual drive as the root directory for the Cygwin32 environment:

@example
subst o: <RTOS>
umount /
mount -b o: /
@end example

@item Create the /bin, /tmp, /build and /usr directories.

@example
mkdir /bin
mkdir /tmp
mkdir /build
mkdir /usr
@end example

@item Copy "sh.exe" in /bin. @b{XXX to where, WHY?}

@item Open the file 
@code{/gnuwin32/b19/H-i386-cygwin32/lib/gcc-lib/i386-cygwin32/2.7-b19/specs},
and change the following line:

@example
-lcygwin %@{mwindows:-luser32 -lgdi32 -lcomdlg32@} -lkernel32
@end example

to:

@example
-lcygwin %@{mwindows:-luser32 -lgdi32 -lcomdlg32@} -lkernel32 -ladvapi32
@end example

@end enumerate

At this point, you have a native installation of Cygwin32 and
are ready to proceed to building a cross-compiler.

@c
@c  BINUTILS
@c

@section Installing binutils

@enumerate

@item Unarchive @value{BINUTILS-TAR} following the 
instructions in @ref{Unarchiving the Tools}.   Apply the
appropriate RTEMS specific patch as detailed in
@ref{Apply RTEMS Patch to binutils}.

@b{NOTE}: See @ref{Bug in Patch Utility}.

@item In the @code{/build} directory, execute the following
command to configure @value{BINUTILS-VERSION}:

@example
@value{BINUTILS-UNTAR}/configure --verbose --target=m68k-rtems \
    --prefix=/gcc-m68k-rtems --with-gnu-as \
    --with-gnu-ld --with-targets=all --with-newlib
@end example

Replace @code{m68k-rtems} with the target configuration
of your choice.  See @ref{Running the bit Script} for a
list of the targets available.

@item Execute the following command to compile the toolset:

@example
make
@end example

@item With B19, an error will occur. Remove the ".exe" suffix 
from the tools by finding them all and renaming them
as shown below:

@example
find . -name *.exe -print
mv XXX/gas.exe XXX/gas
       ....
@end example

@item Install the full package with the following command:

@example
make install
@end example

@item There is a problem with the gnu info package 
which may prevent it from building correctly.  To
get around this try again with:

@example
make -k install
@end example

@item Once the executables are installed, 
you can restore the ".exe" suffix to the files in 
the @code{/gcc-m68k-rtems/bin} and 
@code{/gcc-m68k-rtems/m68k-rtems/bin} directories again.

@item In the @code{cygnus.bat} file, add the directory
to the cross-compiler executables to your search path
by adding the following line:

@example
PATH=\gcc-m68k-rtems\bin;%PATH%
@end example

@item You can erase the /build directory content.

@item Exit bash and run @code{cygnus.bat} to restart
the Cygwin32 environment.

@end enumerate

@c
@c  EGCS
@c

@section Installing EGCS AND NEWLIB

@enumerate
@item Unarchive and patch @value{EGCS-TAR} and @value{NEWLIB-TAR}
following the instructions in @ref{Unarchiving the Tools}. 
Apply the appropriate RTEMS specific patches as detailed in
@ref{Apply RTEMS Patch to EGCS} and @ref{Apply RTEMS Patch to newlib}.

@b{NOTE}: See @ref{Bug in Patch Utility}.

@item Remove the following directories (we do not need Fortran
or Objective-C):

@example
 /build/@value{EGCS-UNTAR}/libf2c
 /build/@value{EGCS-UNTAR}/gcc/objc
 /build/@value{EGCS-UNTAR}/gcc/f
@end example

@b{NOTE}: See @ref{Bug in Patch Utility}.

@item Copy to /build/@value{EGCS-UNTAR}/ the following directories:

@itemize @bullet
@item /build/newlib-1.0.8/newlib
@item /build/newlib-1.0.8/libgloss
@end itemize

@item Go under /build directory and run:

@example
../@value{EGCS-UNTAR}/configure --verbose --target=m68k-rtems \
    --prefix=/gcc-m68k --with-gnu-as --with-gnu-ld \
    --with-targets=all --with-newlib
@end example

Replace @code{m68k-rtems} with the target configuration
of your choice.  See @ref{Running the bit Script} for a
list of the targets available.

@item Then run your favourite Unix format compaatible file editor,
and edit @code{/build/@value{EGCS-UNTAR}/gcc/Makefile}
Search for the section:

@example
# libgcc1-test target (must also be overridable for a target)
LIBGCC1_TEST = libgcc1-test
@end example

and change it to read:

@example
LIBGCC1_TEST = 
@end example

@item Search for the section:

@example
# Set this to `ld' to enable use of collect2.
USE_COLLECT2 = 
MAYBE_USE_COLLECT2 = 
# It is convenient for configure to add the assignment at the beginning,
# so don't override it here.
USE_COLLECT2 = ld
@end example

and change it to read:

@example
USE_COLLECT2 =
@end example

This changes are needed due to a @code{collect2} problem in B19.

@item Compile the toolset as follows:

@example
make cross
@end example

You must do a @code{make cross} (not a simple @code{make})
to insure that the different packages are built in the correct
order.   This command could take a long time to run depending on
the speed of the computer you are using.

@item Install with the following command:

@example
make -k install
@end example

@item Just as with binutils package, a problem with the gnu
info package not building correctly may occur, so try again with:

@example
make -k install
@end example

@end enumerate

With any luck, at this point you having a working cross-compiler.  So
as Geoffroy said:

@center @b{That's it! Celebrate!}