|
#
|
|
# $Id: README.configure,v 1.2 2001-09-27 11:59:04 chris Exp $
|
|
#
|
|
|
|
1. Autoconf support
|
|
===================
|
|
|
|
This version of RTEMS is configured with GNU autoconf. RTEMS can be
|
|
configured and built either standalone or together with the compiler
|
|
tools in the Cygnus one-tree structure. Using autoconf also means
|
|
that RTEMS now can be built in a separate build directory.
|
|
|
|
2. Installation
|
|
===============
|
|
|
|
2.1 Standalone build
|
|
|
|
To configure RTEMS for a specific target, run configure in the build
|
|
directory. In addition to the standard configure options, the following
|
|
RTEMS-specific option are supported:
|
|
|
|
--disable-rtems-inlines
|
|
--disable-posix
|
|
--disable-itron
|
|
--disable-networking
|
|
--enable-cxx
|
|
--enable-bare-cpu-model=
|
|
--enable-bare-cpu-cflags=
|
|
--enable-gcc28 (also use enable-libcdir when disabled)
|
|
--enable-libcdir= (do not use if gcc 2.8 is enabled)
|
|
--enable-multiprocessing
|
|
--enable-rtemsbsp="bsp1 bsp2 ..."
|
|
--enable-tests
|
|
--enable-rdbg (only valid for i386 and some PowerPC BSPs)
|
|
|
|
In addition, the following standard autoconf options are frequently
|
|
used when configuring RTEMS installations:
|
|
|
|
--prefix=INSTALL_DIRECTORY
|
|
--program-prefix=
|
|
|
|
By default, inline routines are used instead of macros where possible.
|
|
Macros can be selected using the --disable-inlines option. [NOTE:
|
|
Some APIs may not support macro versions of their inline routines.]
|
|
|
|
By default, the RTEMS POSIX 1003.1b interface is built for targets that support
|
|
it. It can be disabled with the --disable-posix option.
|
|
|
|
By default, the RTEMS uITRON interface is built for targets that support
|
|
it. It can be disabled with the --disable-itron option.
|
|
|
|
By default, the RTEMS networking support is built for targets which
|
|
support it. It can be specifically disabled for those targets
|
|
with the --disable-networking option.
|
|
|
|
By default, the RTEMS remote debugger server support is not built.
|
|
It can be specifically enabled for the targets that support it.
|
|
with the --enable-rdbg option. NB : the RTEMS networking support
|
|
must be enabled to support the remote debugger server.
|
|
|
|
By default, the RTEMS support of C++ is disabled. It can be enabled
|
|
with the --enable-cxx option. If the rtems++ C++ library is installed
|
|
it will also be build.
|
|
|
|
By default, the RTEMS test suites are NOT configured -- only the
|
|
sample tests are built. The --enable-tests will not configure
|
|
the RTEMS test suite. The default speeds up the build
|
|
and configure process when the tests are not desired.
|
|
|
|
By default, RTEMS is built using arguments and build rules which are
|
|
NOT compatible with gcc 2.7.2.2. If using a gcc which supports the
|
|
-specs option, then the --enable-gcc28 option may be used to enable
|
|
this feature. You should use the --enable-gcc28 option when using
|
|
either the egcs source tree, testgcc snapshots, or gcc 2.8.0 or newer.
|
|
If you --disable-gcc28, then you MUST specify the location of the
|
|
Standard C Library with the --enable-libcdir option. [NOTE: These
|
|
options are considered obsolete and may be removed in a future
|
|
RTEMS release.]
|
|
|
|
By default, multiprocessing is is not built. It can be enabled
|
|
for those BSPs supporting it by the --enable-multiprocessing option.
|
|
|
|
By default, all bsps for a target are built. The bare BSP is not built
|
|
unless directlty specified. There are two ways of changing this:
|
|
|
|
+ use the --enable-rtemsbsp otion which will set the specified
|
|
bsps as the default bsps, or
|
|
+ set the RTEMS_BSP variable during make (see below).
|
|
|
|
The --enable-rtemsbsp= option configures RTEMS for a specific target
|
|
architecture. The following targets are supported:
|
|
|
|
(none) will build the host-based version on Linux,
|
|
Solaris and HPUX.
|
|
|
|
a29k-rtems only standalone, uses non-gnu compiler
|
|
i386-rtems
|
|
i960-rtems
|
|
hppa1.1-rtems
|
|
m68k-rtems
|
|
mips64orion-rtems
|
|
no_cpu-rtems
|
|
powerpc-rtems
|
|
sparc-rtems
|
|
bare see notes
|
|
|
|
The cross-compiler is set to $(target)-gcc by default. This can be
|
|
overriden by:
|
|
|
|
+ using the --program-prefix option to configure to specify the
|
|
string which will prepended to the tool names. Be sure to include
|
|
a trailing "-". For example, to use a m68k-coff toolset, use the
|
|
--program-prefix=m68k-coff- option.
|
|
|
|
To build, run make in the build directory. To specify which bsps to build,
|
|
add the RTEMS_BSP="bsp1 bsp2 .." to the make command. Specifying multiple
|
|
BSPs to build only works from the top level build directory.
|
|
|
|
Installation is done under $(prefix)/rtems.
|
|
|
|
As an example, to build and install the mvme136 and dmv152 bsps for m68k do:
|
|
|
|
(path_to_rtems_src)/configure --target=m68k-rtems
|
|
|
|
make RTEMS_BSP="mvme136 dmv152"
|
|
|
|
make install RTEMS_BSP="mvme136 dmv152"
|
|
|
|
The sample tests are built by 'make all', do a 'make test' to build the full
|
|
test suite.
|
|
|
|
2.2 Build with Cygnus one-tree release
|
|
|
|
To build and install RTEMS with the one-tree structure, just copy the rtems
|
|
directory to the tree. The one-tree configure.in and Makefile.in has to be
|
|
replaced with the RTEMS-aware versions. The build options are the same as
|
|
for the standalone build.
|
|
|
|
2.3 Target Dependent Notes
|
|
|
|
bare:
|
|
|
|
1. See the README in the bare bsp source directory. This should
|
|
contain all info you need.
|
|
2. The bare bsp source contains a script to show how to build it.
|
|
3. The configure flags must be used to get the bare bsp to work.
|
|
The --enable-bare-cpu-model and --enable-bare-cpu-cflags are the
|
|
only pieces of information. The module is usually a gcc module
|
|
such as m68302 or mcpu32. The flags are passed directly to gcc.
|
|
Use "" if more than one option is specified.
|
|
|
|
3. To use the installed RTEMS library
|
|
=====================================
|
|
|
|
To use the installed RTEMS bsps to build applications, the application
|
|
makefile has to include a bsp-specific makefile that will define the
|
|
RTEMS variables necessary to find include files and libraries. The
|
|
bsp-specific makefile is installed at
|
|
|
|
$(RTEMS_MAKEFILE_PATH)/Makefile.inc
|
|
|
|
For the erc32 bsp installed at /usr/local/cross, the environment
|
|
variable RTEMS_MAKEFILE_PATH would be set as follows to the
|
|
following:
|
|
|
|
/usr/local/cross/sparc-rtems/rtems/erc32/Makefile.inc
|
|
|
|
4. Supported target bsps
|
|
========================
|
|
|
|
The following bsps are supported:
|
|
|
|
host-based : posix (on linux, solaris and hpux)
|
|
|
|
a29k : portsw
|
|
i386 : i386ex pc386
|
|
i960 : cvme961
|
|
hppa1.1 : simhppa
|
|
m68k : dmv152 efi332 efi68k gen68302 gen68340 gen68360
|
|
gen68360_040 idp mvme136 mvme147 mvme147s mvme162 ods68302
|
|
no_cpu : no_bsp
|
|
mips64orion : p4600 p4650 (p4000 port with either R4600 or R4650)
|
|
powerpc : papyrus psim helas403
|
|
sh : gensh1
|
|
sparc : erc32
|
|
any : bare
|
|
|
|
5. Makefile structure
|
|
=====================
|
|
|
|
The makefiles have been re-organised. Most gnu-based bsps now use three
|
|
main makefiles:
|
|
+ custom/default.cfg,
|
|
+ custom/bsp.cfg and
|
|
+ ompilers/gcc-target-default.cfg.
|
|
|
|
Default.cfg sets the deafult values of certain common build options.
|
|
|
|
Bsp.cfg set bsp-specific build options and can also override the
|
|
default settings.
|
|
|
|
Gcc-target-default.cfg contains the common gcc definitions. Some targets
|
|
(a29k, no_cpu, and posix) still use the old structure.
|
|
|
|
6. Adding a bsp
|
|
===============
|
|
|
|
The top-level configure.in has to be modified if a new target is added
|
|
or if a new bsp is to be built by default. The additions required is
|
|
basically to add which makefiles are to be created by configure and
|
|
to add the target to the selection statement. To re-generate
|
|
configure, autoconf-2.12 is needed.
|
|
|
|
7. Tested configurations
|
|
========================
|
|
|
|
All gnu-based bsps have been built on Linux.
|
|
The native (posix) ports have been built and run only on Linux.
|
|
|
|
The following configurations have NOT been tested:
|
|
|
|
+ Anything on Nextstep, HPUX and Irix.
|
|
+ The a29k port.
|
|
|
|
8. Pre-requisites
|
|
=================
|
|
|
|
Gawk version 2 or higher.
|
|
GNU make version 3.72 or higher.
|
|
Bash.
|
|
gcc version ???
|
|
|
|
TODO
|
|
====
|
|
|
|
The install-if-change script requires bash. On solaris systems, this should
|
|
be changed to ksh, since ksh is provided with solaris (bash not).
|
|
|
|
A fairly rescent version of gawk is needed to build RTEMS. This should be
|
|
changed so that a plain vanilla awk also works. [NOTE: This dependency
|
|
should disappear when the "gcc 2.8 -specs" is finished.]
|
|
|
|
'make install' should only install necessary files, not the full
|
|
PROJECT_RELEASE directory as now.
|
|
|
|
Posix port on solaris-2.5 fails due to undefined built-in functions
|
|
(gcc-2.7.2, might be my installation).
|
|
|
|
Improve support for 'make CFLAGS=xxx'.
|
|
|
|
|