source: rtems/README.configure @ e7792b25

4.104.114.84.95
Last change on this file since e7792b25 was 6b7ab9bf, checked in by Joel Sherrill <joel.sherrill@…>, on 04/16/99 at 18:23:48

Patch from Ralf Corsepius <corsepiu@…>:

FYI: I am not talking about using "make -C <dir>", which probably
is much faster on M$ hosts than RTEMS's implementation, but about
removing --enable-gmake-print support and to apply a variant of
automake's subdirectory.

Automake's subdirectory rule seems to be a little bit faster, but I
wouldn't bet on this.

Attached to this mail is my proposal.

After applying the patch, please run

cvs rm aclocal/enable-gmake-print.m4
./autogen

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