source: rtems/README.configure @ a2016b99

4.104.114.84.95
Last change on this file since a2016b99 was f05f704, checked in by Joel Sherrill <joel.sherrill@…>, on 10/08/97 at 14:06:17

Updated information on building your own application.

  • Property mode set to 100644
File size: 7.6 KB
Line 
1
21. Autoconf support
3===================
4
5This version of RTEMS is configured with GNU autoconf. RTEMS can be
6configured and built either standalone or together with the compiler
7tools in the Cygnus one-tree structure. Using autoconf also means
8that RTEMS now can be built in a separate build directory.
9
102. Installation
11===============
12
132.1 Standalone build
14
15To configure RTEMS for a specific target, run configure in the build
16directory. In addition to the standard configure options, the following
17RTEMS-specific option are supported:
18
19        --disable-rtems-inlines
20        --disable-posix
21        --disable-tests
22        --disable-ka9q
23        --enable-cpp
24        --enable-gcc28
25        --enable-gmake-print-directory
26        --enable-libcdir=<DIRECTORY>
27        --enable-rtemsbsp="bsp1 bsp2 ..."
28
29By default, the RTEMS posix interface is built for targets that support
30it. It can be disabled with the --disable-posix option.
31
32By default, the RTEMS port of the KA9Q TCP/IP stack is build for targets
33that support it.  It can be disabled with the --disable-ka9q option.
34
35By default, the RTEMS support of C++ is disabled.  It can be enabled
36with the --enable-cpp option. If the rtems++ C++ library is installed
37it will also be build.
38
39By default, the RTEMS test suites are configured.  The --disable-tests
40will not configure the RTEMS test suite. This is used only to speed-up
41configuration in case building the tests are not necessary.
42
43By default, RTEMS is built using arguments and build rules which are
44compatible with gcc 2.7.2.2.  This requires that the user specify
45the location of the Standard C Library with the --enable-libcdir
46option.  If using a gcc which supports the -specs option, then
47the --enable-gcc28 option may be used to enable this feature.
48
49By default, all bsps for a target are built. There are  two ways of
50changing this:
51
52  + use the --enable-rtemsbsp otion which will set the specified
53    bsps as the default bsps, or
54  + set the RTEMSBSP variable during make (see below).
55
56The --enable-rtemsbsp= option configures RTEMS for a specific target
57architecture.  The following targets are supported:
58
59        (none)                  will build the host-based version on Linux,
60                                Solaris and HPUX.
61
62        a29k-rtems              only standalone, uses non-gnu compiler
63        i386-rtems
64        i386-go32-rtems         see notes
65        i960-rtems
66        hppa1_1-rtems
67        m68k-rtems
68        mips64orion-rtems
69        no_cpu-rtems
70        powerpc-rtems
71        sparc-rtems
72       
73The cross-compiler is set to $(target)-gcc by default. This can be
74overriden by one of the following methods:
75
76  + running make with CC_FOR_TARGET=compiler_to_use. The same applies to
77    all the target specific tools (AS, AR, NM, OBJCOPY, SIZE, LD), or
78  + by using the --program-prefix option to configure to specify the
79    string which will prepended to the tool names.  Be sure to include
80    a trailing "-".  For example, to use a m68k-coff toolset, use the
81    --program-prefix=m68k-coff- option.
82
83To build, run make in the build directory. To specify which bsps to build,
84add the RTEMSBSP="bsp1 bsp2 .." to the make command.
85
86Installation is done under $(prefix)/$(target)/rtems.
87
88As an example, to build and install the mvme136 and dmv152 bsps for m68k do:
89
90        (path_to_rtems_src)/configure --target=m68k-rtems
91
92        make RTEMSBSP="mvme136 dmv152"
93       
94        make install RTEMSBSP="mvme136 dmv152"
95
96
97The sample tests are built by 'make all', do a 'make test' to build the full
98test suite.
99
1002.2 Build with Cygnus one-tree release
101
102To build and install RTEMS with the one-tree structure, just copy the rtems
103directory to the tree. The one-tree configure.in and Makefile.in has to be
104replaced with the RTEMS-aware versions. The build options are the same as
105for the standalone build.
106
1072.3 Target Dependent Notes
108
109i386-go32-rtems:
110
111  1.  This is based on djgpp v1.xx.  It needs to be updated to v2.xx.
112  2.  This cannot be built one-tree style since RTEMS requires some
113      files which must be obtained from the binary distribution of the
114      djgpp library.  DJGPP can be obtained from
115      http://www.delorie.com/djgpp/dl/ofc.
116  3.  You will need to manually install a number of files from the
117      binary distribution of the DJGPP library doing something
118      like the following:
119
120      # unzip the djgpp distribution
121      cd include
122      cp dpmi.h INSTALL_POINT/lib/gcc-lib/i386-go32-rtems/2.7.2/include
123      cp go32.h INSTALL_POINT/lib/gcc-lib/i386-go32-rtems/2.7.2/include
124      cp dos.h INSTALL_POINT/lib/gcc-lib/i386-go32-rtems/2.7.2/include
125      cp pc.h INSTALL_POINT/lib/gcc-lib/i386-go32-rtems/2.7.2/include
126
127      cd ../lib
128      cp crt* INSTALL_POINT/lib/gcc-lib/i386-go32-rtems/2.7.2
129      cp libpc* INSTALL_POINT/lib/gcc-lib/i386-go32-rtems/2.7.2
130
131      # Make sure about destination on the next lines.  It keeps the newlib
132      # libc.a and the binary djgpp libc.a from conflicting.
133      cp libc.a INSTALL_POINT/lib/gcc-lib/i386-go32-rtems/2.7.2/libcgo32.a
134      cp libc_p.a INSTALL_POINT/lib/gcc-lib/i386-go32-rtems/2.7.2/libcgo32_p.a
135
136
1373. To use the installed RTEMS library
138=====================================
139
140To use the installed RTEMS bsps to build applications, the application
141makefile has to include a bsp-specific makefile that will define the
142RTEMS variables necessary to find include files and libraries. The
143bsp-specific makefile is installed at
144
145        $(RTEMS_MAKEFILE_PATH)/Makefile.inc
146
147For the erc32 bsp installed at /usr/local/cross, the environment
148variable RTEMS_MAKEFILE_PATH would be set as follows to the
149following:
150
151/usr/local/cross/sparc-rtems/rtems/erc32/Makefile.inc
152
1534. Supported target bsps
154========================
155
156The following bsps are supported:
157
158host-based      : posix (on linux, solaris and hpux)
159
160a29k            : portsw
161i386            : force386 i386ex
162i386-go32       : go32 go32_p5
163i960            : cvme961
164hppa1_1         : simhppa
165m68k            : dmv152 efi332 efi68k gen68302 gen68360 gen68360_040 idp
166                  mvme136 mvme147 mvme147s mvme162 ods68302
167no_cpu          : no_bsp
168mips64orion     : p4600 p4650 (p4000 port with either R4600 or R4650)
169powerpc         : papyrus
170sparc           : erc32
171
1725. Makefile structure
173=====================
174
175The makefiles have been re-organised. Most gnu-based bsps now use three
176main makefiles:
177    + custom/default.cfg,
178    + custom/bsp.cfg and
179    + ompilers/gcc-target-default.cfg.
180
181Default.cfg sets the deafult values of certain common build options.
182
183Bsp.cfg set bsp-specific build options and can also override the
184default settings.
185
186Gcc-target-default.cfg contains the common gcc definitions. Some targets
187(a29k, no_cpu, and posix) still use the old structure.
188
1896. Adding a bsp
190===============
191
192The top-level configure.in has to be modified if a new target is added
193or if a new bsp is to be built by default. The additions required is
194basically to add which makefiles are to be created by configure and
195to add the target to the selection statement. To re-generate
196configure, autoconf-2.12 is needed.
197
1987. Tested configurations
199========================
200
201All gnu-based bsps have been built on Linux.
202The native (posix) ports have been built and run only on Linux.
203
204The following configurations have NOT been tested:
205
206    + Anything on Nextstep, HPUX and Irix.
207    + The a29k port.
208
2098. Pre-requisites
210=================
211
212Gawk version 2 or higher.
213GNU make version 3.72 or higher.
214Bash.
215gcc version ???
216
217TODO
218====
219
220The install-if-change script requires bash. On solaris systems, this should
221be changed to ksh, since ksh is provided with solaris (bash not).
222
223A fairly rescent version of gawk is needed to build RTEMS. This should be
224changed so that a plain vanilla awk also works. [NOTE: This dependency
225should disappear when the "gcc 2.8 -specs" is finished.]
226
227'make install' should only install necessary files, not the full
228PROJECT_RELEASE directory as now.
229
230Posix port on solaris-2.5 fails due to undefined built-in functions
231(gcc-2.7.2, might be my installation).
232
233Improve support for 'make CFLAGS=xxx'.
234
Note: See TracBrowser for help on using the repository browser.