source: rtems/doc/started/require.t @ 48cd0b8e

4.104.114.84.95
Last change on this file since 48cd0b8e was 48cd0b8e, checked in by Joel Sherrill <joel.sherrill@…>, on 10/02/03 at 18:01:48

2003-10-02 Joel Sherrill <joel@…>

  • Makefile.am, binaries.t, buildc.t, intro.t, nextstep.t, require.t, sample.t, started.texi: General improvements and merge enough Ada information to justify dropping the Ada specific manual. There is likely still Ada specific information to merge though.
  • Property mode set to 100644
File size: 6.9 KB
Line 
1@c
2@c  COPYRIGHT (c) 1988-2002.
3@c  On-Line Applications Research Corporation (OAR).
4@c  All rights reserved.
5@c
6@c  $Id$
7@c
8
9@chapter Requirements
10
11This chapter describes the build-host system requirements and initial steps
12in installing the GNU Cross Compiler Tools and RTEMS on a build-host.
13
14@section Disk Space
15
16A fairly large amount of disk space is required to perform the build of the
17GNU C/C++ Cross Compiler Tools for RTEMS. The following table may help in
18assessing the amount of disk space required for your installation:
19
20@example
21+------------------------------------+--------------------------+
22|              Component             |   Disk Space Required    |
23+------------------------------------+--------------------------+
24|        archive directory           |        35 Mbytes         |
25|        tools src unarchived        |       150 Mbytes         |
26|  each individual build directory   |     up to 500 Mbytes     |
27|     each installation directory    |      20-200 Mbytes       |
28+------------------------------------+--------------------------+
29@end example
30
31It is important to understand that the above requirements only address
32the GNU C/C++ Cross Compiler Tools themselves.  Adding additional
33languages such as Fortran or Objective-C can increase the size
34of the build and installation directories.  Also, the unarchived
35source and build directories can be removed after the tools are
36installed.
37
38After the tools themselves are installed, RTEMS must be built
39and installed for each Board Support Package that you wish
40to use.  Thus the precise amount of disk space required
41for each installation directory depends highly on the number
42of RTEMS BSPs which are to be installed.  If a single BSP is
43installed, then the additional size of each install directory
44will tend to be in the 40-60 Mbyte range.
45
46There are a number of factors which must be taken into
47account in order to estimate the amount of disk space required
48to build RTEMS itself.  Attempting to build multiple BSPs in
49a single step increases the disk space requirements.  Similarly
50enabling optional features increases the build and install
51space requirements.  In particular, enabling and building
52the RTEMS tests results in a significant increase in build
53space requirements but since the tests are not installed has,
54enabling them has no impact on installation requirements.
55
56@section General Host Software Requirements
57
58The instructions in this manual should work on any computer running
59a UNIX variant.  Some native GNU tools are used by this procedure
60including:
61
62@itemize @bullet
63@item GCC
64@item GNU make
65@item GNU makeinfo
66@end itemize
67
68In addition, some native utilities may be deficient for building
69the GNU tools.
70
71@subsection GCC
72
73Although RTEMS itself is intended to execute on an embedded target,
74there is source code for some native programs included with the RTEMS
75distribution.  Some of these programs are used to assist in the building
76of RTEMS itself, while others are BSP specific tools.  Regardless,
77no attempt has been made to compile these programs with a non-GNU
78compiler.
79
80@subsection GNU Make
81
82Both NEWLIB and RTEMS use GNU make specific features and can only be built
83using GNU make.  Many systems include a make utility that is not GNU make.
84The safest way to meet this requirement is to ensure that when you invoke
85the command @code{make}, it is GNU make.  This can be verified by
86attempting to print the GNU make version information:
87
88@example
89make --version
90@end example
91
92If you have GNU make and another make on your system, it is common to put
93the directory containing GNU make before the directory containing other
94implementations of make.
95
96@subsection GNU makeinfo Version Requirements
97
98In order to build gcc 2.9.x or newer versions, the GNU @code{makeinfo} program
99installed on your system must be at least version 1.68.  The appropriate
100version of @code{makeinfo} is distributed with @code{gcc}.
101
102The following demonstrates how to determine the version of @code{makeinfo}
103on your machine:
104
105@example
106makeinfo --version
107@end example
108
109@c
110@c  Host Specific Notes
111@c
112
113@section Host Specific Notes
114
115@subsection Solaris 2.x
116
117The following problems have been reported by Solaris 2.x users:
118
119@itemize @bullet
120
121@item The build scripts are written in "shell".  The program @code{/bin/sh}
122on Solaris 2.x is not robust enough to execute these scripts.  If you
123are on a Solaris 2.x host, then use the @code{/bin/ksh} or
124@code{/bin/bash} shell instead.
125
126@item The native @code{patch} program is broken.  Install the GNU version.
127
128@item The native @code{m4} program is deficient.  Install the GNU version.
129
130@end itemize
131
132@subsection Linux
133
134The following problems have been reported by Linux users:
135
136@itemize @bullet
137
138@item Certain versions of GNU fileutils include a version of
139@code{install} which does not work properly.  Please perform
140the following test to see if you need to upgrade:
141
142@example
143install -c -d /tmp/foo/bar
144@end example
145
146If this does not create the specified directories your install
147program will not install RTEMS properly.   You will need to upgrade
148to at least GNU fileutils version 3.16 to resolve this problem.
149
150@end itemize
151
152@section Archive and Build Directories
153
154If you are using RPM or another packaging format that supports
155building a package from source, then there is probably a directory
156structure assumed by that packaging format.  Otherwise, you
157are free to use whatever organization you like.  However, this
158document will use the directory organization described
159in @ref{Archive and Build Directory Format}.
160
161@subsection RPM Archive and Build Directory Format
162
163For RPM, it is assumed that the following subdirectories
164are under a root directory such as @code{/usr/src/redhat}:
165
166@example
167BUILD
168RPMS
169SOURCES
170SPECS
171SRPMS
172@end example
173
174For the purposes of this document, the RPM @code{SOURCES} directory
175is the directory into which all tool source and patches are
176assumed to reside.  The @code{BUILD} directory is where the actual
177build is performed when building binaries from a source RPM.
178The @code{SOURCES} and @code{BUILD} are logically equivalent to
179the @code{archive} and @code{tools} directory discussed in the
180next section.
181
182@subsection Archive and Build Directory Format
183
184When no packaging format requirements are present, the root directory for
185the storage of source archives and patches as well as for building the
186tools is up to the user.  The only concern is that there be enough
187disk space to complete the build.
188
189Make an @code{archive} directory to contain the downloaded
190source code and a @code{tools} directory to be used as a build
191directory.  The command sequence to do this is shown
192below:
193
194@example
195mkdir archive
196mkdir tools
197@end example
198
199This will result in an initial directory structure similar to the
200one shown in the following figure:
201
202@example
203@group
204/whatever/prefix/you/choose/
205        archive/
206        tools/
207
208@end group
209@end example
210
211@c @ifset use-html
212@c @html
213@c <IMG SRC="sfile12c.jpg" WIDTH=417 HEIGHT=178
214@c      ALT="Starting Directory Organization">
215@c @end html
216@c @end ifset
217
218
Note: See TracBrowser for help on using the repository browser.