1 |
158 |
chris |
#
|
2 |
208 |
chris |
# $Id: README.configure,v 1.2 2001-09-27 11:59:04 chris Exp $
|
3 |
158 |
chris |
#
|
4 |
|
|
|
5 |
|
|
1. Autoconf support
|
6 |
|
|
===================
|
7 |
|
|
|
8 |
|
|
This version of RTEMS is configured with GNU autoconf. RTEMS can be
|
9 |
|
|
configured and built either standalone or together with the compiler
|
10 |
|
|
tools in the Cygnus one-tree structure. Using autoconf also means
|
11 |
|
|
that RTEMS now can be built in a separate build directory.
|
12 |
|
|
|
13 |
|
|
2. Installation
|
14 |
|
|
===============
|
15 |
|
|
|
16 |
|
|
2.1 Standalone build
|
17 |
|
|
|
18 |
|
|
To configure RTEMS for a specific target, run configure in the build
|
19 |
|
|
directory. In addition to the standard configure options, the following
|
20 |
|
|
RTEMS-specific option are supported:
|
21 |
|
|
|
22 |
|
|
--disable-rtems-inlines
|
23 |
|
|
--disable-posix
|
24 |
|
|
--disable-itron
|
25 |
|
|
--disable-networking
|
26 |
|
|
--enable-cxx
|
27 |
|
|
--enable-bare-cpu-model=
|
28 |
|
|
--enable-bare-cpu-cflags=
|
29 |
|
|
--enable-gcc28 (also use enable-libcdir when disabled)
|
30 |
|
|
--enable-libcdir= (do not use if gcc 2.8 is enabled)
|
31 |
|
|
--enable-multiprocessing
|
32 |
|
|
--enable-rtemsbsp="bsp1 bsp2 ..."
|
33 |
|
|
--enable-tests
|
34 |
|
|
--enable-rdbg (only valid for i386 and some PowerPC BSPs)
|
35 |
|
|
|
36 |
|
|
In addition, the following standard autoconf options are frequently
|
37 |
|
|
used when configuring RTEMS installations:
|
38 |
|
|
|
39 |
|
|
--prefix=INSTALL_DIRECTORY
|
40 |
|
|
--program-prefix=
|
41 |
|
|
|
42 |
|
|
By default, inline routines are used instead of macros where possible.
|
43 |
|
|
Macros can be selected using the --disable-inlines option. [NOTE:
|
44 |
|
|
Some APIs may not support macro versions of their inline routines.]
|
45 |
|
|
|
46 |
|
|
By default, the RTEMS POSIX 1003.1b interface is built for targets that support
|
47 |
|
|
it. It can be disabled with the --disable-posix option.
|
48 |
|
|
|
49 |
|
|
By default, the RTEMS uITRON interface is built for targets that support
|
50 |
|
|
it. It can be disabled with the --disable-itron option.
|
51 |
|
|
|
52 |
|
|
By default, the RTEMS networking support is built for targets which
|
53 |
|
|
support it. It can be specifically disabled for those targets
|
54 |
|
|
with the --disable-networking option.
|
55 |
|
|
|
56 |
|
|
By default, the RTEMS remote debugger server support is not built.
|
57 |
|
|
It can be specifically enabled for the targets that support it.
|
58 |
|
|
with the --enable-rdbg option. NB : the RTEMS networking support
|
59 |
|
|
must be enabled to support the remote debugger server.
|
60 |
|
|
|
61 |
|
|
By default, the RTEMS support of C++ is disabled. It can be enabled
|
62 |
|
|
with the --enable-cxx option. If the rtems++ C++ library is installed
|
63 |
|
|
it will also be build.
|
64 |
|
|
|
65 |
|
|
By default, the RTEMS test suites are NOT configured -- only the
|
66 |
|
|
sample tests are built. The --enable-tests will not configure
|
67 |
|
|
the RTEMS test suite. The default speeds up the build
|
68 |
|
|
and configure process when the tests are not desired.
|
69 |
|
|
|
70 |
|
|
By default, RTEMS is built using arguments and build rules which are
|
71 |
|
|
NOT compatible with gcc 2.7.2.2. If using a gcc which supports the
|
72 |
|
|
-specs option, then the --enable-gcc28 option may be used to enable
|
73 |
|
|
this feature. You should use the --enable-gcc28 option when using
|
74 |
|
|
either the egcs source tree, testgcc snapshots, or gcc 2.8.0 or newer.
|
75 |
|
|
If you --disable-gcc28, then you MUST specify the location of the
|
76 |
|
|
Standard C Library with the --enable-libcdir option. [NOTE: These
|
77 |
|
|
options are considered obsolete and may be removed in a future
|
78 |
|
|
RTEMS release.]
|
79 |
|
|
|
80 |
|
|
By default, multiprocessing is is not built. It can be enabled
|
81 |
|
|
for those BSPs supporting it by the --enable-multiprocessing option.
|
82 |
|
|
|
83 |
|
|
By default, all bsps for a target are built. The bare BSP is not built
|
84 |
|
|
unless directlty specified. There are two ways of changing this:
|
85 |
|
|
|
86 |
|
|
+ use the --enable-rtemsbsp otion which will set the specified
|
87 |
|
|
bsps as the default bsps, or
|
88 |
|
|
+ set the RTEMS_BSP variable during make (see below).
|
89 |
|
|
|
90 |
|
|
The --enable-rtemsbsp= option configures RTEMS for a specific target
|
91 |
|
|
architecture. The following targets are supported:
|
92 |
|
|
|
93 |
|
|
(none) will build the host-based version on Linux,
|
94 |
|
|
Solaris and HPUX.
|
95 |
|
|
|
96 |
|
|
a29k-rtems only standalone, uses non-gnu compiler
|
97 |
|
|
i386-rtems
|
98 |
|
|
i960-rtems
|
99 |
|
|
hppa1.1-rtems
|
100 |
|
|
m68k-rtems
|
101 |
|
|
mips64orion-rtems
|
102 |
|
|
no_cpu-rtems
|
103 |
|
|
powerpc-rtems
|
104 |
|
|
sparc-rtems
|
105 |
|
|
bare see notes
|
106 |
|
|
|
107 |
|
|
The cross-compiler is set to $(target)-gcc by default. This can be
|
108 |
|
|
overriden by:
|
109 |
|
|
|
110 |
|
|
+ using the --program-prefix option to configure to specify the
|
111 |
|
|
string which will prepended to the tool names. Be sure to include
|
112 |
|
|
a trailing "-". For example, to use a m68k-coff toolset, use the
|
113 |
|
|
--program-prefix=m68k-coff- option.
|
114 |
|
|
|
115 |
|
|
To build, run make in the build directory. To specify which bsps to build,
|
116 |
|
|
add the RTEMS_BSP="bsp1 bsp2 .." to the make command. Specifying multiple
|
117 |
|
|
BSPs to build only works from the top level build directory.
|
118 |
|
|
|
119 |
|
|
Installation is done under $(prefix)/rtems.
|
120 |
|
|
|
121 |
|
|
As an example, to build and install the mvme136 and dmv152 bsps for m68k do:
|
122 |
|
|
|
123 |
|
|
(path_to_rtems_src)/configure --target=m68k-rtems
|
124 |
|
|
|
125 |
|
|
make RTEMS_BSP="mvme136 dmv152"
|
126 |
|
|
|
127 |
|
|
make install RTEMS_BSP="mvme136 dmv152"
|
128 |
|
|
|
129 |
|
|
The sample tests are built by 'make all', do a 'make test' to build the full
|
130 |
|
|
test suite.
|
131 |
|
|
|
132 |
|
|
2.2 Build with Cygnus one-tree release
|
133 |
|
|
|
134 |
|
|
To build and install RTEMS with the one-tree structure, just copy the rtems
|
135 |
|
|
directory to the tree. The one-tree configure.in and Makefile.in has to be
|
136 |
|
|
replaced with the RTEMS-aware versions. The build options are the same as
|
137 |
|
|
for the standalone build.
|
138 |
|
|
|
139 |
|
|
2.3 Target Dependent Notes
|
140 |
|
|
|
141 |
|
|
bare:
|
142 |
|
|
|
143 |
|
|
1. See the README in the bare bsp source directory. This should
|
144 |
|
|
contain all info you need.
|
145 |
|
|
2. The bare bsp source contains a script to show how to build it.
|
146 |
|
|
3. The configure flags must be used to get the bare bsp to work.
|
147 |
|
|
The --enable-bare-cpu-model and --enable-bare-cpu-cflags are the
|
148 |
|
|
only pieces of information. The module is usually a gcc module
|
149 |
|
|
such as m68302 or mcpu32. The flags are passed directly to gcc.
|
150 |
|
|
Use "" if more than one option is specified.
|
151 |
|
|
|
152 |
|
|
3. To use the installed RTEMS library
|
153 |
|
|
=====================================
|
154 |
|
|
|
155 |
|
|
To use the installed RTEMS bsps to build applications, the application
|
156 |
|
|
makefile has to include a bsp-specific makefile that will define the
|
157 |
|
|
RTEMS variables necessary to find include files and libraries. The
|
158 |
|
|
bsp-specific makefile is installed at
|
159 |
|
|
|
160 |
|
|
$(RTEMS_MAKEFILE_PATH)/Makefile.inc
|
161 |
|
|
|
162 |
|
|
For the erc32 bsp installed at /usr/local/cross, the environment
|
163 |
|
|
variable RTEMS_MAKEFILE_PATH would be set as follows to the
|
164 |
|
|
following:
|
165 |
|
|
|
166 |
|
|
/usr/local/cross/sparc-rtems/rtems/erc32/Makefile.inc
|
167 |
|
|
|
168 |
|
|
4. Supported target bsps
|
169 |
|
|
========================
|
170 |
|
|
|
171 |
|
|
The following bsps are supported:
|
172 |
|
|
|
173 |
|
|
host-based : posix (on linux, solaris and hpux)
|
174 |
|
|
|
175 |
|
|
a29k : portsw
|
176 |
|
|
i386 : i386ex pc386
|
177 |
|
|
i960 : cvme961
|
178 |
|
|
hppa1.1 : simhppa
|
179 |
|
|
m68k : dmv152 efi332 efi68k gen68302 gen68340 gen68360
|
180 |
|
|
gen68360_040 idp mvme136 mvme147 mvme147s mvme162 ods68302
|
181 |
|
|
no_cpu : no_bsp
|
182 |
|
|
mips64orion : p4600 p4650 (p4000 port with either R4600 or R4650)
|
183 |
|
|
powerpc : papyrus psim helas403
|
184 |
|
|
sh : gensh1
|
185 |
|
|
sparc : erc32
|
186 |
|
|
any : bare
|
187 |
|
|
|
188 |
|
|
5. Makefile structure
|
189 |
|
|
=====================
|
190 |
|
|
|
191 |
|
|
The makefiles have been re-organised. Most gnu-based bsps now use three
|
192 |
|
|
main makefiles:
|
193 |
|
|
+ custom/default.cfg,
|
194 |
|
|
+ custom/bsp.cfg and
|
195 |
|
|
+ ompilers/gcc-target-default.cfg.
|
196 |
|
|
|
197 |
|
|
Default.cfg sets the deafult values of certain common build options.
|
198 |
|
|
|
199 |
|
|
Bsp.cfg set bsp-specific build options and can also override the
|
200 |
|
|
default settings.
|
201 |
|
|
|
202 |
|
|
Gcc-target-default.cfg contains the common gcc definitions. Some targets
|
203 |
|
|
(a29k, no_cpu, and posix) still use the old structure.
|
204 |
|
|
|
205 |
|
|
6. Adding a bsp
|
206 |
|
|
===============
|
207 |
|
|
|
208 |
|
|
The top-level configure.in has to be modified if a new target is added
|
209 |
|
|
or if a new bsp is to be built by default. The additions required is
|
210 |
|
|
basically to add which makefiles are to be created by configure and
|
211 |
|
|
to add the target to the selection statement. To re-generate
|
212 |
|
|
configure, autoconf-2.12 is needed.
|
213 |
|
|
|
214 |
|
|
7. Tested configurations
|
215 |
|
|
========================
|
216 |
|
|
|
217 |
|
|
All gnu-based bsps have been built on Linux.
|
218 |
|
|
The native (posix) ports have been built and run only on Linux.
|
219 |
|
|
|
220 |
|
|
The following configurations have NOT been tested:
|
221 |
|
|
|
222 |
|
|
+ Anything on Nextstep, HPUX and Irix.
|
223 |
|
|
+ The a29k port.
|
224 |
|
|
|
225 |
|
|
8. Pre-requisites
|
226 |
|
|
=================
|
227 |
|
|
|
228 |
|
|
Gawk version 2 or higher.
|
229 |
|
|
GNU make version 3.72 or higher.
|
230 |
|
|
Bash.
|
231 |
|
|
gcc version ???
|
232 |
|
|
|
233 |
|
|
TODO
|
234 |
|
|
====
|
235 |
|
|
|
236 |
|
|
The install-if-change script requires bash. On solaris systems, this should
|
237 |
|
|
be changed to ksh, since ksh is provided with solaris (bash not).
|
238 |
|
|
|
239 |
|
|
A fairly rescent version of gawk is needed to build RTEMS. This should be
|
240 |
|
|
changed so that a plain vanilla awk also works. [NOTE: This dependency
|
241 |
|
|
should disappear when the "gcc 2.8 -specs" is finished.]
|
242 |
|
|
|
243 |
|
|
'make install' should only install necessary files, not the full
|
244 |
|
|
PROJECT_RELEASE directory as now.
|
245 |
|
|
|
246 |
|
|
Posix port on solaris-2.5 fails due to undefined built-in functions
|
247 |
|
|
(gcc-2.7.2, might be my installation).
|
248 |
|
|
|
249 |
|
|
Improve support for 'make CFLAGS=xxx'.
|
250 |
|
|
|