| ?rev1line? | ?rev2line? | 
      
        |   | #
 | 
      
        |   | #  $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'.
 | 
      
        |   |  
 |