source: rtems/README.configure @ 85d8eb2

4.104.114.84.95
Last change on this file since 85d8eb2 was 85d8eb2, checked in by Joel Sherrill <joel.sherrill@…>, on 02/25/99 at 19:34:33

Corrected the comments on --enable-gcc28 and switched the sense of the
--enable-tests switch.

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