source: rtems/README.configure @ b08d3ed9

4.104.114.84.95
Last change on this file since b08d3ed9 was 55b8fef2, checked in by Joel Sherrill <joel.sherrill@…>, on 03/17/99 at 16:09:09

Patch from Emmanuel Raguet <raguet@…> to add information
about the enable rdbg configure option.

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