source: rtems/README.configure @ cc8a388a

4.104.114.84.95
Last change on this file since cc8a388a was cf65c408, checked in by Joel Sherrill <joel.sherrill@…>, on 06/27/98 at 20:01:28

Bare BSP patch from Chris Johns <cjohns@…>. He also
sent an example bare bsp but we have not decided how to integrate it yet.

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