summaryrefslogtreecommitdiffstats
path: root/README.configure
blob: 6ca355e3b1862a17c51d6dbb060aa40a9a62ce34 (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
1. Autoconf support
===================

This version of RTEMS is configured with GNU autoconf. RTEMS can be
configured and built either standalone or together with the compiler
tools in the Cygnus one-tree structure. Using autoconf also means
that RTEMS now can be built in a separate build directory.

To re-generate auto*tool generated files (configure, Makefile.in etc),
autoconf-2.68 and automake-1.11.1 are required.

2. Installation
===============

To configure RTEMS for a specific target, run configure in the build
directory. In addition to the standard configure options, the following
RTEMS-specific option are supported:

      --disable-rtems-inlines
      --disable-posix
      --disable-networking
      --enable-cxx
      --enable-multiprocessing
      --enable-rtemsbsp="bsp1 bsp2 ..."
      --enable-tests
      --enable-rdbg            (only valid for i386 and some PowerPC BSPs)
      --enable-docs

In addition, the following standard autoconf options are frequently
used when configuring RTEMS installations:

      --prefix=INSTALL_DIRECTORY

By default, inline routines are used instead of macros where possible.
Macros can be selected using the --disable-inlines option.  [NOTE:
Some APIs may not support macro versions of their inline routines.]

By default, the RTEMS POSIX 1003.1b interface is built for targets that support
it. It can be disabled with the --disable-posix option.

By default, the RTEMS networking support is built for targets which
support it.  It can be specifically disabled for those targets
with the --disable-networking option.

By default, the RTEMS remote debugger server support is not built.
It can be specifically enabled for the targets that support it.
with the --enable-rdbg option. NB : the RTEMS networking support
must be enabled to support the remote debugger server.

By default, the RTEMS support of C++ is disabled.  It can be enabled
with the --enable-cxx option. If the rtems++ C++ library is installed
it will also be build.

By default, the RTEMS test suites are NOT configured -- only the 
sample tests are built.  --enable-tests will configure
the RTEMS test suite. The default speeds up the build
and configure process when the tests are not desired.

By default, RTEMS is built using arguments and build rules which require a
gcc supporting the -specs option, ie. a gcc >= 2.8.
[The --disable-gcc28 option, which has been present in former releases, has
been removed.]

By default, multiprocessing is is not built.  It can be enabled
for those BSPs supporting it by the --enable-multiprocessing option.

By default, all bsps for a target are built. The bare BSP is not built
unless directly specified. There are  two ways of changing this:

+ use the --enable-rtemsbsp option which will set the specified
  bsps as the default bsps, or 
+ set the RTEMS_BSP variable during make (see below).

The --enable-rtemsbsp= option configures RTEMS for a specific board
within a target architecture.  Remember that the target specifies the
CPU family while the BSP specifies the precise board you will be using. 
The following targets are supported:

      arm-rtems4.10
      avr-rtems4.10
      bfin-rtems4.10
      h8300-rtems4.10
      i386-rtems4.10
      lm32-rtems4.10
      m32c-rtems4.10
      m32r-rtems4.10
      m68k-rtems4.10
      mips-rtems4.10
      no_cpu-rtems4.10
      powerpc-rtems4.10
      sh-rtems4.10
      sparc-rtems4.10

The cross-compiler is set to $(target)-gcc by default.

To build, run make in the build directory. To specify which bsps to build,
add the RTEMS_BSP="bsp1 bsp2 .." to the make command.  Specifying multiple
BSPs to build only works from the top level build directory.

Installation is done under $(prefix)/rtems.

As an example, to build and install the mvme136 and mvme162 bsps for m68k do:

      (path_to_rtems_src)/configure --target=m68k-rtems4.11

      make RTEMS_BSP="mvme136 mvme162"
      
      make install RTEMS_BSP="mvme136 mvme162"

The sample tests are built by 'make all' when configured with
--enable-tests=samples.  Use --enable-tests=all to build the full
test suite.

Documentation is built separately from the source code.

3. To use the installed RTEMS library
=====================================

To use the installed RTEMS bsps to build applications, the application
makefile has to include a bsp-specific makefile that will define the
RTEMS variables necessary to find include files and libraries. The
bsp-specific makefile is installed at 

      $(RTEMS_MAKEFILE_PATH)/Makefile.inc

For the erc32 bsp installed at /usr/local/cross, the environment
variable RTEMS_MAKEFILE_PATH would be set as follows to the
following:

/usr/local/cross/sparc-rtems/rtems/erc32/Makefile.inc

4. Supported target bsps
========================

The following bsps are supported:

arm             : csb336 csb337 edb7312 gba gp32 nds rtl22x rtl22xx_t
                  smdk2410

avr:            : avrtest

bfin            : eZKit533 bf537Stamp

h8300           : h8sim

i386		: i386ex pc386 pc386dx pc486 pc586 pc686 pck6 ts_386ex
		NOTE: The "pc386" BSP can be compiled to support a 
		      variety of PC configurations including PC-104
		      based solutions.

lm32:		: lm32_evr

m32c		: m32csim

m32r		: m32rsim

m68k		: av5282 csb360 gen68302 gen68360 gen68360_040 
		genmcf548x idp mcf5206elite mcf52235 mcf5235 mcf5239
		m5484FireEngine mrm332 mvme136 mvme147s mvme162 mvme162lx
		mvme167 ods68302 pgh360 sim68000 simcpu32 uC5282 COBRA5475 

no_cpu          : no_bsp  (porting example)

mips            : csb350 genmongoosev hurricane jmr3904 rbtx4925 rbtx4938
		p4600 p4650

powerpc		: brs5l ep1a gen5200 gen83xx haleakala hsc_cm01 icecube
		mbx821_001 mbx821_002 mbx821_002b mbx860_001b mbx860_002
		mbx860_005b mcp750 mvme2100 mvme2307 mtx603e
		mvme5500 mpc55xxevb mpc8260ads mpc8313erdb mpc8349eamds 
		pghplus pm520_cr825 pm520_ze30 psim score603e ss555
		tqm8xx_stk8xx virtex

                  NOTE: The "motorola_powerpc" BSP is a single BSP which
                  can be conditionally compiled to support most Motorola
                  VMEbus, CompactPCI, and MTX boards.)

                  NOTE: The mbx8xx, gen5200, gen83xx, and tqm8xx BSPs are
		  designed to handle a variety of boards based on the same
		  family of system on chips CPUs

sh              : gensh1 gensh2 gensh4 simsh1 simsh2 simsh4

sparc 		: erc32 sis leon2 leon3

5. Makefile structure
=====================

The makefiles have been re-organized. Most gnu-based bsps now use three
main makefiles:
    + custom/default.cfg,
    + custom/bsp.cfg and
    + compilers/gcc-target-default.cfg.

Default.cfg sets the default values of certain common build options.

Bsp.cfg set bsp-specific build options and can also override the
default settings.

Gcc-target-default.cfg contains the common gcc definitions.

6. Adding a bsp
===============

Please refer to the BSP and Device Driver Guide.


7. Tested configurations
========================

All gnu-based bsps have been built on Linux. 

8. Prerequisites
================

Gawk version 2 or higher.
GNU make version 3.72 or higher.
Bash.
gcc version > 2.8

NOTE: These prerequisites are probably out of date but autoconf should detect
      any problems.