user: Remove nit-picky warnings.

This commit is contained in:
Chris Johns 2019-02-21 13:06:58 +11:00
parent 2e6f49f841
commit 2674d6a949
34 changed files with 540 additions and 312 deletions

View File

@ -94,7 +94,7 @@ Boot via U-Boot
The application executable file (ELF file) must be converted to an U-Boot The application executable file (ELF file) must be converted to an U-Boot
image. Use the following commands: image. Use the following commands:
:: .. code-block:: shell
powerpc-rtems5-objcopy -O binary app.exe app.bin powerpc-rtems5-objcopy -O binary app.exe app.bin
gzip -9 -f -c app.bin > app.bin.gz gzip -9 -f -c app.bin > app.bin.gz
@ -102,7 +102,7 @@ image. Use the following commands:
Use the following U-Boot commands to boot an application via TFTP download: Use the following U-Boot commands to boot an application via TFTP download:
:: .. code-block:: shell
tftpboot ${loadaddr} app.img && run loadfdt && bootm ${loadaddr} - ${fdt_addr} ; reset tftpboot ${loadaddr} app.img && run loadfdt && bootm ${loadaddr} - ${fdt_addr} ; reset

View File

@ -49,7 +49,7 @@ Quick instructions (which may fall out of date) are:
Then edit ``Conf/target.txt`` to set: Then edit ``Conf/target.txt`` to set:
:: .. code-block:: ini
ACTIVE_PLATFORM = OvmfPkg/OvmfPkgX64.dsc ACTIVE_PLATFORM = OvmfPkg/OvmfPkgX64.dsc
TARGET = DEBUG TARGET = DEBUG
@ -67,7 +67,7 @@ You can find the ``OVMF.fd`` file like this as well in the edk2 directory:
$ find . -name "*.fd" $ find . -name "*.fd"
./Build/OvmfX64/DEBUG_GCC5/FV/MEMFD.fd ./Build/OvmfX64/DEBUG_GCC5/FV/MEMFD.fd
./Build/OvmfX64/DEBUG_GCC5/FV/OVMF.fd <-- the file we're looking for ./Build/OvmfX64/DEBUG_GCC5/FV/OVMF.fd # the file we're looking for
./Build/OvmfX64/DEBUG_GCC5/FV/OVMF_CODE.fd ./Build/OvmfX64/DEBUG_GCC5/FV/OVMF_CODE.fd
./Build/OvmfX64/DEBUG_GCC5/FV/OVMF_VARS.fd ./Build/OvmfX64/DEBUG_GCC5/FV/OVMF_VARS.fd
@ -84,12 +84,12 @@ replacing paths as appropriate.
.. code-block:: shell .. code-block:: shell
$ qemu-img create freebsd.img 8G $ qemu-img create freebsd.img 8G
$ OVMF_LOCATION=/path/to/ovmf/OVMF.fd $ OVMF_LOCATION=/path/to/ovmf/OVMF.fd
$ FREEBSD_MEMSTICK=/path/to/FreeBSD-11.2-amd64-memstick.img $ FREEBSD_MEMSTICK=/path/to/FreeBSD-11.2-amd64-memstick.img
$ qemu-system-x86_64 -m 1024 -serial stdio --bios $OVMF_LOCATION \ $ qemu-system-x86_64 -m 1024 -serial stdio --bios $OVMF_LOCATION \
-drive format=raw,file=freebsd.img \ -drive format=raw,file=freebsd.img \
-drive format=raw,file=$FREEBSD_MEMSTICK -drive format=raw,file=$FREEBSD_MEMSTICK
The first time you do this, continue through and install FreeBSD. `FreeBSD's The first time you do this, continue through and install FreeBSD. `FreeBSD's
installation guide may prove useful installation guide may prove useful

View File

@ -91,7 +91,7 @@ the architecture and processor. Typical functions include:
#. Break and watch points #. Break and watch points
.. _fig-exe-debug-qemu: .. _fig-exe-debug-jtag:
.. figure:: ../../images/user/exe-debug-jtag.png .. figure:: ../../images/user/exe-debug-jtag.png
:width: 70% :width: 70%

View File

@ -14,8 +14,10 @@ execute it in a target. The section discusses how an application executable is
created, what happens when an executable is loaded and run, debugging an created, what happens when an executable is loaded and run, debugging an
execiutable, and creating and dynamically loading code. execiutable, and creating and dynamically loading code.
.. include:: executables.rst .. toctree::
.. include:: execution.rst
.. include:: initialization.rst executables
.. include:: debugging.rst execution
.. include:: loader.rst initialization
debugging
loader

View File

@ -85,9 +85,11 @@ The RTEMS Tool ``rtems-exeinfo`` can provide some detail about the registered
handlers. The following shows the initialization handlers for the *hello world* handlers. The following shows the initialization handlers for the *hello world*
sample application in the RTEMS kernel's testsuite:: sample application in the RTEMS kernel's testsuite::
.. code-block:: shell
$ rtems-exeinfo --init arm-rtems5/c/xilinx_zynq_zedboard/testsuites/samples/hello.exe $ rtems-exeinfo --init arm-rtems5/c/xilinx_zynq_zedboard/testsuites/samples/hello.exe
RTEMS Executable Info 5.5416cfa39dd6 RTEMS Executable Info 5.5416cfa39dd6
rtems-exeinfo --init arm-rtems5/c/xilinx_zynq_zedboard/testsuites/samples/hello.exe $ rtems-exeinfo --init arm-rtems5/c/xilinx_zynq_zedboard/testsuites/samples/hello.exe
exe: arm-rtems5/c/xilinx_zynq_zedboard/testsuites/samples/hello.exe exe: arm-rtems5/c/xilinx_zynq_zedboard/testsuites/samples/hello.exe
Compilation: Compilation:

View File

@ -146,6 +146,7 @@ follow.
.. _dlopen: .. _dlopen:
.. index:: dlopen .. index:: dlopen
``void* dlopen(const char* path, int mode);`` ``void* dlopen(const char* path, int mode);``
The ``dlopen()`` function makes the symbols (function identifiers and data The ``dlopen()`` function makes the symbols (function identifiers and data
object identifiers) in the executable object file specified by `file` object identifiers) in the executable object file specified by `file`
@ -250,6 +251,7 @@ follow.
.. _dlclose: .. _dlclose:
.. index:: dlclose .. index:: dlclose
``int dlclose(void* handle);`` ``int dlclose(void* handle);``
Releases a reference to the executable object file referenced by `handle`. If Releases a reference to the executable object file referenced by `handle`. If
the reference count drops to ``0``, the executable object file's global symbol the reference count drops to ``0``, the executable object file's global symbol
@ -262,6 +264,7 @@ follow.
.. _dlsym: .. _dlsym:
.. index:: dlsym .. index:: dlsym
``void* dlsym(void* handle, const char* symbol);`` ``void* dlsym(void* handle, const char* symbol);``
The ``dlsym()`` function obtains the address of a symbol (a function identifier The ``dlsym()`` function obtains the address of a symbol (a function identifier
or a data object identifier) defined in the symbol table identified by the or a data object identifier) defined in the symbol table identified by the
@ -288,6 +291,7 @@ follow.
.. _dlinfo: .. _dlinfo:
.. index:: dlinfo .. index:: dlinfo
``int dlinfo(void* handle, int request, void* args);`` ``int dlinfo(void* handle, int request, void* args);``
The ``dlinfo()`` function provides information about dynamically loaded object. The ``dlinfo()`` function provides information about dynamically loaded object.
@ -303,6 +307,7 @@ follow.
.. _dlerror: .. _dlerror:
.. index:: dlerror .. index:: dlerror
``const char *dlerror(void);`` ``const char *dlerror(void);``
The ``dlerror()`` function returns a null-terminated character string (with no The ``dlerror()`` function returns a null-terminated character string (with no
trailing ``<newline>``) that describes the last error that occurred during trailing ``<newline>``) that describes the last error that occurred during
@ -690,29 +695,35 @@ used to allocate memory at an address must be used when making allocator
calls. The ``rtems_rtl_alloc_tags`` are: calls. The ``rtems_rtl_alloc_tags`` are:
.. index:: RTEMS_RTL_ALLOC_OBJECT .. index:: RTEMS_RTL_ALLOC_OBJECT
``RTEMS_RTL_ALLOC_OBJECT`` ``RTEMS_RTL_ALLOC_OBJECT``
Allocate a generic object. The link editor uses this memory for data Allocate a generic object. The link editor uses this memory for data
structures it uses to manage the linking process and resident executable structures it uses to manage the linking process and resident executable
object files. object files.
.. index:: RTEMS_RTL_ALLOC_SYMBOL .. index:: RTEMS_RTL_ALLOC_SYMBOL
``RTEMS_RTL_ALLOC_SYMBOL`` ``RTEMS_RTL_ALLOC_SYMBOL``
Allocate memory to hold symbol data. Allocate memory to hold symbol data.
.. index:: RTEMS_RTL_ALLOC_EXTERNAL .. index:: RTEMS_RTL_ALLOC_EXTERNAL
``RTEMS_RTL_ALLOC_EXTERNAL`` ``RTEMS_RTL_ALLOC_EXTERNAL``
Allocate memory for unresolved external symbols. Allocate memory for unresolved external symbols.
.. index:: RTEMS_RTL_ALLOC_READ .. index:: RTEMS_RTL_ALLOC_READ
``RTEMS_RTL_ALLOC_READ`` ``RTEMS_RTL_ALLOC_READ``
Allocate memory for read-only data such as constants and exception tables. Allocate memory for read-only data such as constants and exception tables.
.. index:: RTEMS_RTL_ALLOC_READ_WRITE .. index:: RTEMS_RTL_ALLOC_READ_WRITE
``RTEMS_RTL_ALLOC_READ_WRITE`` ``RTEMS_RTL_ALLOC_READ_WRITE``
Allocate memory for read-write data such as a initialised, uninitialized and Allocate memory for read-write data such as a initialised, uninitialized and
common variables. common variables.
.. index:: RTEMS_RTL_ALLOC_READ_EXEC .. index:: RTEMS_RTL_ALLOC_READ_EXEC
``RTEMS_RTL_ALLOC_READ_EXEC`` ``RTEMS_RTL_ALLOC_READ_EXEC``
Allocate memory for code to be executed in. The address space is configure for Allocate memory for code to be executed in. The address space is configure for
read and execute. read and execute.
@ -724,21 +735,25 @@ The commands are used to control the action the allocator performs. The
``rtems_rtl_alloc_cmd`` are: ``rtems_rtl_alloc_cmd`` are:
.. index:: RTEMS_RTL_ALLOC_NEW .. index:: RTEMS_RTL_ALLOC_NEW
``RTEMS_RTL_ALLOC_NEW`` ``RTEMS_RTL_ALLOC_NEW``
Allocate memory of the ``tag`` type. Returns ``NULL`` if the allocation fails. Allocate memory of the ``tag`` type. Returns ``NULL`` if the allocation fails.
.. index:: RTEMS_RTL_ALLOC_DEL .. index:: RTEMS_RTL_ALLOC_DEL
``RTEMS_RTL_ALLOC_DEL`` ``RTEMS_RTL_ALLOC_DEL``
Delete a previous allocation freeing the memory. The ``tag`` has to match Delete a previous allocation freeing the memory. The ``tag`` has to match
address of the memory being deleted. address of the memory being deleted.
.. index:: RTEMS_RTL_ALLOC_WR_ENABLE .. index:: RTEMS_RTL_ALLOC_WR_ENABLE
``RTEMS_RTL_ALLOC_WR_ENABLE`` ``RTEMS_RTL_ALLOC_WR_ENABLE``
Enable writes to a region of memory previously allocated. The ``tag`` has to Enable writes to a region of memory previously allocated. The ``tag`` has to
match the address of the memory being write enabled. The link editor may call match the address of the memory being write enabled. The link editor may call
issue this command for memory that is already write enabled. issue this command for memory that is already write enabled.
.. index:: RTEMS_RTL_ALLOC_WR_DISABLE .. index:: RTEMS_RTL_ALLOC_WR_DISABLE
``RTEMS_RTL_ALLOC_WR_DISABLE`` ``RTEMS_RTL_ALLOC_WR_DISABLE``
Disable writes to a region of memory previously allocated. The ``tag`` has to Disable writes to a region of memory previously allocated. The ``tag`` has to
match address of the memory being write disabled. The link editor may call match address of the memory being write disabled. The link editor may call
@ -763,11 +778,13 @@ the function you need is:
The arguments are: The arguments are:
``cmd`` ``cmd``
The command to action. See :ref:`_rtems_rtl_alloc_cmd`. The command to action. See `rtems_rtl_alloc_cmd <rtems_rtl_alloc_cmd_>`_.
``tag`` ``tag``
The type of memory the command is for. The ``tag`` must match the address for
commands other than ``RTEMS_RTL_ALLOC_OBJECT``. The type of memory the command is for. The ``tag`` must match the
address for commands other than ``RTEMS_RTL_ALLOC_OBJECT``. See
`rtems_rtl_alloc_tags <rtems_rtl_alloc_tags_>`_.
``address`` ``address``
Pointer to the address. This is set of the ``RTEMS_RTL_ALLOC_OBJECT`` command Pointer to the address. This is set of the ``RTEMS_RTL_ALLOC_OBJECT`` command

View File

@ -2,7 +2,7 @@
.. Copyright (C) 2016 Chris Johns <chrisj@rtems.org> .. Copyright (C) 2016 Chris Johns <chrisj@rtems.org>
.. _macos: .. _MacOS:
Apple MacOS Apple MacOS
=========== ===========
@ -19,7 +19,6 @@ suitable.
:ref:`QuickStartPrefixes` details using Prefixes to manage the installation. :ref:`QuickStartPrefixes` details using Prefixes to manage the installation.
MacOS
.. _Mavericks: .. _Mavericks:
Mavericks Mavericks
@ -43,5 +42,3 @@ Sierra
~~~~~~ ~~~~~~
The RSB works on Sierra with the latest Xcode. The RSB works on Sierra with the latest Xcode.

View File

@ -38,7 +38,7 @@ proven over the years to be difficult to manage in production systems.
The RSB assumes your host is set up and the needed packages are installed The RSB assumes your host is set up and the needed packages are installed
and configured to work. If your host has not been set up please refer to and configured to work. If your host has not been set up please refer to
:ref:`Hosts` and your host's section for packages you need to install. section that covers your host's packages you need to install.
.. topic:: Path to use when building applications: .. topic:: Path to use when building applications:
@ -80,4 +80,3 @@ proven over the years to be difficult to manage in production systems.
$ git checkout -t origin/4.11 $ git checkout -t origin/4.11
Branches are available for the 4.9, 4.10, and 4.11 versions of RTEMS. Branches are available for the 4.9, 4.10, and 4.11 versions of RTEMS.

View File

@ -53,27 +53,33 @@ been tested and report as working.
ArchLinux ArchLinux
~~~~~~~~~ ~~~~~~~~~
The following packages are required on a fresh Archlinux 64bit installation:: The following packages are required on a fresh Archlinux 64bit installation:
# pacman -S base-devel gdb xz unzip ncurses git zlib .. code-block:: shell
# pacman -S base-devel gdb xz unzip ncurses git zlib
Archlinux, by default installs ``texinfo-5`` which is incompatible for building Archlinux, by default installs ``texinfo-5`` which is incompatible for building
GCC 4.7 tree. You will have to obtain ``texinfo-legacy`` from ``AUR`` and GCC 4.7 tree. You will have to obtain ``texinfo-legacy`` from ``AUR`` and
provide a manual override:: provide a manual override:
# pacman -R texinfo .. code-block:: shell
$ yaourt -S texinfo-legacy
# ln -s /usr/bin/makeinfo-4.13a /usr/bin/makeinfo # pacman -R texinfo
$ yaourt -S texinfo-legacy
# ln -s /usr/bin/makeinfo-4.13a /usr/bin/makeinfo
.. _CentOS: .. _CentOS:
CentOS CentOS
~~~~~~ ~~~~~~
The following packages are required on a minimal CentOS 6.3 64bit installation:: The following packages are required on a minimal CentOS 6.3 64bit installation:
# yum install autoconf automake binutils gcc gcc-c++ gdb make patch \ .. code-block:: shell
bison flex xz unzip ncurses-devel texinfo zlib-devel python-devel git
# yum install autoconf automake binutils gcc gcc-c++ gdb make patch \
bison flex xz unzip ncurses-devel texinfo zlib-devel python-devel git
The minimal CentOS distribution is a specific DVD that installs a minimal The minimal CentOS distribution is a specific DVD that installs a minimal
system. If you use a full system some of these packages may have been system. If you use a full system some of these packages may have been
@ -85,10 +91,12 @@ Fedora
~~~~~~ ~~~~~~
The RTEMS Source Builder has been tested on Fedora 19 64bit with the following The RTEMS Source Builder has been tested on Fedora 19 64bit with the following
packages:: packages:
# yum install ncurses-devel python-devel git bison gcc cvs gcc-c++ \ .. code-block:: shell
flex texinfo patch perl-Text-ParseWords zlib-devel
# yum install ncurses-devel python-devel git bison gcc cvs gcc-c++ \
flex texinfo patch perl-Text-ParseWords zlib-devel
.. _Raspbian: .. _Raspbian:
@ -96,10 +104,12 @@ Raspbian
~~~~~~~~ ~~~~~~~~
The is the Debian distribution for the Raspberry Pi. The following packages are The is the Debian distribution for the Raspberry Pi. The following packages are
required:: required:
$ sudo apt-get install autoconf automake bison flex binutils gcc g++ gdb \ .. code-block:: shell
texinfo unzip ncurses-dev python-dev git
$ sudo apt-get install autoconf automake bison flex binutils gcc g++ gdb \
texinfo unzip ncurses-dev python-dev git
It is recommended you get Model B of the Pi with 512M of memory and to mount a It is recommended you get Model B of the Pi with 512M of memory and to mount a
remote disk over the network. The tools can be built on the network disk with a remote disk over the network. The tools can be built on the network disk with a
@ -112,10 +122,12 @@ Ubuntu
~~~~~~ ~~~~~~
The latest version is Ubuntu 18.04.1 LTS 64-bit. This section also includes The latest version is Ubuntu 18.04.1 LTS 64-bit. This section also includes
Xubuntu. A minimal installation was used and the following packages installed:: Xubuntu. A minimal installation was used and the following packages installed:
$ sudu apt-get build-dep gcc-defaults g++ gdb git unzip pax bison \ .. code-block:: shell
flex libpython-dev git libncurses5-dev zlib1g-dev
$ sudu apt-get build-dep gcc-defaults g++ gdb git unzip pax bison \
flex libpython-dev git libncurses5-dev zlib1g-dev
Note that in previous versions of Ubuntu, the package libpython-dev was Note that in previous versions of Ubuntu, the package libpython-dev was
python2.7-dev. The name of packages changes over time. You need the python2.7-dev. The name of packages changes over time. You need the
@ -133,9 +145,11 @@ Linux Mint
~~~~~~~~~~ ~~~~~~~~~~
zlib package is required on Linux Mint. It has a different name (other zlib package is required on Linux Mint. It has a different name (other
than the usual zlib-dev):: than the usual zlib-dev):
# sudo apt-get install zlib1g-dev .. code-block:: shell
# sudo apt-get install zlib1g-dev
.. _openSUSE: .. _openSUSE:
@ -151,17 +165,21 @@ FreeBSD
------- -------
The RTEMS Source Builder has been tested on FreeBSD 9.1, 10.3 and 11 64bit The RTEMS Source Builder has been tested on FreeBSD 9.1, 10.3 and 11 64bit
version. You need to install some ports. They are:: version. You need to install some ports. They are:
# cd /usr/ports .. code-block:: shell
# portinstall --batch lang/python27
# cd /usr/ports
# portinstall --batch lang/python27
If you wish to build Windows (mingw32) tools please install the following If you wish to build Windows (mingw32) tools please install the following
ports:: ports:
# cd /usr/ports .. code-block:: shell
# portinstall --batch devel/mingw32-binutils devel/mingw32-gcc
# portinstall --batch devel/mingw32-zlib devel/mingw32-pthreads # cd /usr/ports
# portinstall --batch devel/mingw32-binutils devel/mingw32-gcc
# portinstall --batch devel/mingw32-zlib devel/mingw32-pthreads
The +zlip+ and +pthreads+ ports for MinGW32 are used for builiding a Windows The +zlip+ and +pthreads+ ports for MinGW32 are used for builiding a Windows
QEMU. QEMU.
@ -175,11 +193,10 @@ NetBSD
------ ------
The RTEMS Source Builder has been tested on NetBSD 6.1 i386. Packages to add The RTEMS Source Builder has been tested on NetBSD 6.1 i386. Packages to add
are:: are:
# pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/6.1/devel/gmake-3.82nb7.tgz .. code-block:: shell
# pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/6.1/devel/bison-2.7.1.tgz
# pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/6.1/archivers/xz-5.0.4.tgz
.. _MacOS:
# pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/6.1/devel/gmake-3.82nb7.tgz
# pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/6.1/devel/bison-2.7.1.tgz
# pkg_add ftp://ftp.netbsd.org/pub/pkgsrc/packages/NetBSD/i386/6.1/archivers/xz-5.0.4.tgz

View File

@ -38,7 +38,8 @@ overhead is only during the building of the tools and the RTEMS kernel
and if you use a suitable build system that is native to Windows your and if you use a suitable build system that is native to Windows your
application development should be similar to other operating systems. application development should be similar to other operating systems.
Building is known to work on `Windows 7 64bit Professional` and `Windows 10`. Building is known to work on `Windows 7 64bit Professional` and
`Windows 10 64bit`.
.. _windows-path-length: .. _windows-path-length:
@ -222,49 +223,52 @@ result in Cygiwn binaries. With a Canadian cross-compile a Cygwin
cross-compiler is built as well as the MinGW RTEMS cross-compiler. The Cygwin cross-compiler is built as well as the MinGW RTEMS cross-compiler. The Cygwin
cross-compiler is required to build the C runtime for the RTEMS target because cross-compiler is required to build the C runtime for the RTEMS target because
we are building under Cygiwn. The build output for an RTEMS 4.10 ARM tool set we are building under Cygiwn. The build output for an RTEMS 4.10 ARM tool set
is:: is:
chris@cygthing ~/development/rtems/src/rtems-source-builder/rtems .. code-block:: shell
$ ../source-builder/sb-set-builder --log=l-arm.txt --prefix=$HOME/development/rtems/4.10 4.10/rtems-arm
RTEMS Source Builder - Set Builder, v0.2 chris@cygwin ~/development/rtems/src/rtems-source-builder/rtems
Build Set: 4.10/rtems-arm $ ../source-builder/sb-set-builder --log=l-arm.txt \
config: expat-2.1.0-1.cfg --prefix=$HOME/development/rtems/4.10 4.10/rtems-arm
package: expat-2.1.0-x86_64-w64-mingw32-1 RTEMS Source Builder - Set Builder, v0.2
building: expat-2.1.0-x86_64-w64-mingw32-1 Build Set: 4.10/rtems-arm
reporting: expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-w64-mingw32-1.html config: expat-2.1.0-1.cfg
config: tools/rtems-binutils-2.20.1-1.cfg package: expat-2.1.0-x86_64-w64-mingw32-1
package: arm-rtems4.10-binutils-2.20.1-1 <1> building: expat-2.1.0-x86_64-w64-mingw32-1
building: arm-rtems4.10-binutils-2.20.1-1 reporting: expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-w64-mingw32-1.html
package: (Cxc) arm-rtems4.10-binutils-2.20.1-1 <2> config: tools/rtems-binutils-2.20.1-1.cfg
building: (Cxc) arm-rtems4.10-binutils-2.20.1-1 package: arm-rtems4.10-binutils-2.20.1-1 <1>
reporting: tools/rtems-binutils-2.20.1-1.cfg -> building: arm-rtems4.10-binutils-2.20.1-1
arm-rtems4.10-binutils-2.20.1-1.html package: (Cxc) arm-rtems4.10-binutils-2.20.1-1 <2>
config: tools/rtems-gcc-4.4.7-newlib-1.18.0-1.cfg building: (Cxc) arm-rtems4.10-binutils-2.20.1-1
package: arm-rtems4.10-gcc-4.4.7-newlib-1.18.0-1 reporting: tools/rtems-binutils-2.20.1-1.cfg ->
building: arm-rtems4.10-gcc-4.4.7-newlib-1.18.0-1 arm-rtems4.10-binutils-2.20.1-1.html
package: (Cxc) arm-rtems4.10-gcc-4.4.7-newlib-1.18.0-1 config: tools/rtems-gcc-4.4.7-newlib-1.18.0-1.cfg
building: (Cxc) arm-rtems4.10-gcc-4.4.7-newlib-1.18.0-1 package: arm-rtems4.10-gcc-4.4.7-newlib-1.18.0-1
reporting: tools/rtems-gcc-4.4.7-newlib-1.18.0-1.cfg -> building: arm-rtems4.10-gcc-4.4.7-newlib-1.18.0-1
arm-rtems4.10-gcc-4.4.7-newlib-1.18.0-1.html package: (Cxc) arm-rtems4.10-gcc-4.4.7-newlib-1.18.0-1
config: tools/rtems-gdb-7.3.1-1.cfg building: (Cxc) arm-rtems4.10-gcc-4.4.7-newlib-1.18.0-1
package: arm-rtems4.10-gdb-7.3.1-1 reporting: tools/rtems-gcc-4.4.7-newlib-1.18.0-1.cfg ->
building: arm-rtems4.10-gdb-7.3.1-1 arm-rtems4.10-gcc-4.4.7-newlib-1.18.0-1.html
reporting: tools/rtems-gdb-7.3.1-1.cfg -> arm-rtems4.10-gdb-7.3.1-1.html config: tools/rtems-gdb-7.3.1-1.cfg
config: tools/rtems-kernel-4.10.2.cfg package: arm-rtems4.10-gdb-7.3.1-1
package: arm-rtems4.10-kernel-4.10.2-1 building: arm-rtems4.10-gdb-7.3.1-1
building: arm-rtems4.10-kernel-4.10.2-1 reporting: tools/rtems-gdb-7.3.1-1.cfg -> arm-rtems4.10-gdb-7.3.1-1.html
reporting: tools/rtems-kernel-4.10.2.cfg -> arm-rtems4.10-kernel-4.10.2-1.html config: tools/rtems-kernel-4.10.2.cfg
installing: expat-2.1.0-x86_64-w64-mingw32-1 -> /cygdrive/c/Users/chris/development/rtems/4.10 package: arm-rtems4.10-kernel-4.10.2-1
installing: arm-rtems4.10-binutils-2.20.1-1 -> /cygdrive/c/Users/chris/development/rtems/4.10 <3> building: arm-rtems4.10-kernel-4.10.2-1
installing: arm-rtems4.10-gcc-4.4.7-newlib-1.18.0-1 -> /cygdrive/c/Users/chris/development/rtems/4.10 reporting: tools/rtems-kernel-4.10.2.cfg -> arm-rtems4.10-kernel-4.10.2-1.html
installing: arm-rtems4.10-gdb-7.3.1-1 -> /cygdrive/c/Users/chris/development/rtems/4.10 installing: expat-2.1.0-x86_64-w64-mingw32-1 -> /cygdrive/c/Users/chris/development/rtems/4.10
installing: arm-rtems4.10-kernel-4.10.2-1 -> /cygdrive/c/Users/chris/development/rtems/4.10 installing: arm-rtems4.10-binutils-2.20.1-1 -> /cygdrive/c/Users/chris/development/rtems/4.10 <3>
cleaning: expat-2.1.0-x86_64-w64-mingw32-1 installing: arm-rtems4.10-gcc-4.4.7-newlib-1.18.0-1 -> /cygdrive/c/Users/chris/development/rtems/4.10
cleaning: arm-rtems4.10-binutils-2.20.1-1 installing: arm-rtems4.10-gdb-7.3.1-1 -> /cygdrive/c/Users/chris/development/rtems/4.10
cleaning: arm-rtems4.10-gcc-4.4.7-newlib-1.18.0-1 installing: arm-rtems4.10-kernel-4.10.2-1 -> /cygdrive/c/Users/chris/development/rtems/4.10
cleaning: arm-rtems4.10-gdb-7.3.1-1 cleaning: expat-2.1.0-x86_64-w64-mingw32-1
cleaning: arm-rtems4.10-kernel-4.10.2-1 cleaning: arm-rtems4.10-binutils-2.20.1-1
Build Set: Time 10:09:42.810547 <4> cleaning: arm-rtems4.10-gcc-4.4.7-newlib-1.18.0-1
cleaning: arm-rtems4.10-gdb-7.3.1-1
cleaning: arm-rtems4.10-kernel-4.10.2-1
Build Set: Time 10:09:42.810547 <4>
.. topic:: Items: .. topic:: Items:
@ -289,4 +293,3 @@ is::
cannot be avoided in all cases. Cygwin and it's fork MSYS are fantastic cannot be avoided in all cases. Cygwin and it's fork MSYS are fantastic
pieces of software in a difficult environment. I have found building a single pieces of software in a difficult environment. I have found building a single
tool tends to work, building all at once is harder. tool tends to work, building all at once is harder.

View File

@ -250,9 +250,6 @@ the API headers and architecture specific libraries to a locaiton under the
RTEMS. Do not mix versions of RTEMS under the same `prefix`. Make installs RTEMS. Do not mix versions of RTEMS under the same `prefix`. Make installs
RTEMS with the following command: RTEMS with the following command:
.. comment: CCJ - this code block for not parse and gives a warning in
index.rst.
.. code-block:: shell .. code-block:: shell
$ make install $ make install
@ -281,8 +278,8 @@ RTEMS with the following command:
make[3]: Nothing to be done for 'install-data-am'. make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu' make[3]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu' make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
...... ....
make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems5/c' make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems5/c'
make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32' make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32'
make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32' make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32'

View File

@ -5,6 +5,8 @@
Introduction Introduction
************ ************
.. _Overview:
Overview Overview
======== ========

View File

@ -5,7 +5,7 @@
.. _Bugs, Crashes, and Build Failures: .. _Bugs, Crashes, and Build Failures:
Bugs, Crashes, and Build Failures Bugs, Crashes, and Build Failures
================================= ---------------------------------
The RTEMS Source Builder is a Python program and every care is taken to test The RTEMS Source Builder is a Python program and every care is taken to test
the code however bugs, crashes, and build failures can and do happen. If you the code however bugs, crashes, and build failures can and do happen. If you

View File

@ -3,12 +3,14 @@
.. Copyright (C) 2012, 2016 Chris Johns <chrisj@rtems.org> .. Copyright (C) 2012, 2016 Chris Johns <chrisj@rtems.org>
Commands Commands
======== --------
Checker (sb-check) Checker (sb-check)
------------------ ^^^^^^^^^^^^^^^^^^
This commands checks your system is set up correctly. Most options are ignored:: This commands checks your system is set up correctly. Most options are ignored:
.. code-block:: shell
$ ../source-builder/sb-check --help $ ../source-builder/sb-check --help
sb-check: [options] [args] sb-check: [options] [args]
@ -47,10 +49,12 @@ This commands checks your system is set up correctly. Most options are ignored::
Environment is ok Environment is ok
Defaults (sb-defaults) Defaults (sb-defaults)
---------------------- ^^^^^^^^^^^^^^^^^^^^^^
This commands outputs and the default macros for your when given no This commands outputs and the default macros for your when given no
arguments. Most options are ignored:: arguments. Most options are ignored:
.. code-block:: shell
$ ../source-builder/sb-defaults --help $ ../source-builder/sb-defaults --help
sb-defaults: [options] [args] sb-defaults: [options] [args]
@ -86,9 +90,11 @@ arguments. Most options are ignored::
--regression : Set --no-install, --keep-going and --always-clean --regression : Set --no-install, --keep-going and --always-clean
Set Builder (sb-set-builder) Set Builder (sb-set-builder)
---------------------------- ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
This command builds a set:: This command builds a set:
.. code-block:: shell
$ ../source-builder/sb-set-builder --help $ ../source-builder/sb-set-builder --help
RTEMS Source Builder, an RTEMS Tools Project (c) 2012-2013 Chris Johns RTEMS Source Builder, an RTEMS Tools Project (c) 2012-2013 Chris Johns
@ -291,10 +297,12 @@ The ``arguments`` are a list of build sets to build.
``dep[?]` prefix where ``?`` is a number. The files are listed alphabetically. ``dep[?]` prefix where ``?`` is a number. The files are listed alphabetically.
Set Builder (sb-builder) Set Builder (sb-builder)
------------------------ ^^^^^^^^^^^^^^^^^^^^^^^^
This command builds a configuration as described in a configuration This command builds a configuration as described in a configuration
file. Configuration files have the extension of ``.cfg``:: file. Configuration files have the extension of ``.cfg``:
.. code-block:: shell
$ ./source-builder/sb-builder --help $ ./source-builder/sb-builder --help
sb-builder: [options] [args] sb-builder: [options] [args]

View File

@ -5,7 +5,7 @@
.. _Configuration: .. _Configuration:
Configuration Configuration
============= -------------
The RTEMS Source Builder has two types of configuration data: The RTEMS Source Builder has two types of configuration data:
@ -23,9 +23,11 @@ private build configurations and if you run the RTEMS Source Builder command
from that directory your configurations will be used. from that directory your configurations will be used.
The configuration search path is a macro variable and is reference as The configuration search path is a macro variable and is reference as
``%{_configdir}``. It's default is defined as:: ``%{_configdir}``. It's default is defined as:
_configdir : dir optional<2> %{_topdir}/config:%{_sbdir}/config <1> .. code-block:: spec
_configdir : dir optional %{_topdir}/config:%{_sbdir}/config
.. topic:: Items: .. topic:: Items:
@ -45,7 +47,7 @@ character. Anything after this character on the line is ignored. There is no
block comment. block comment.
Source and Patches Source and Patches
------------------ ^^^^^^^^^^^^^^^^^^
The RTEMS Source Builder provides a flexible way to manage source. Source and The RTEMS Source Builder provides a flexible way to manage source. Source and
patches are declare in configurations file using the ``source`` and ``patch`` patches are declare in configurations file using the ``source`` and ``patch``
@ -88,16 +90,16 @@ and start the build process again.
The URL can contain macros. These are expanded before issuing the request to The URL can contain macros. These are expanded before issuing the request to
download the file. The standard GNU GCC compiler source URL is: download the file. The standard GNU GCC compiler source URL is:
.. code-block:: auto .. code-block:: spec
%source set<1> gcc<2> ftp://ftp.gnu.org/gnu/gcc/gcc-%{gcc_version}/gcc-%{gcc_version}.tar.bz2 %source set gcc ftp://ftp.gnu.org/gnu/gcc/gcc-%{gcc_version}/gcc-%{gcc_version}.tar.bz2
.. topic:: Items: .. topic:: Items:
1. The ``%source`` command's set command sets the source. The first is set 1. The ``%source`` command's ``set`` command sets the source. The
and following sets are ignored. first is set and following sets are ignored.
2. The source is part of the ``gcc`` group. 2. The source package is part of the ``gcc`` group.
The type of compression is automatically detected from the file extension. The The type of compression is automatically detected from the file extension. The
supported compression formats are: supported compression formats are:
@ -132,7 +134,7 @@ If the source URL references the GitHub API server https://api.github.com/ a
tarball of the specified version is download. For example the URL for the tarball of the specified version is download. For example the URL for the
STLINK project on GitHub and version is: STLINK project on GitHub and version is:
.. code-block:: auto .. code-block:: spec
%define stlink_version 3494c11 %define stlink_version 3494c11
%source set stlink https://api.github.com/repos/texane/stlink/texane-stlink-%{stlink_version}.tar.gz %source set stlink https://api.github.com/repos/texane/stlink/texane-stlink-%{stlink_version}.tar.gz
@ -168,7 +170,7 @@ from the options with ``=``. The options are:
An example is: An example is:
.. code-block:: auto .. code-block:: spec
%source set gcc git://gcc.gnu.org/git/gcc.git?branch=gcc-4_7-branch?reset=hard %source set gcc git://gcc.gnu.org/git/gcc.git?branch=gcc-4_7-branch?reset=hard
@ -205,12 +207,12 @@ delimited by ``?`` and option arguments are delimited from the options with
The following is an example of checking out from a CVS repository: The following is an example of checking out from a CVS repository:
.. code-block:: auto .. code-block:: spec
%source set newlib cvs://pserver:anoncvs@sourceware.org/cvs/src?module=newlib?src-prefix=src %source set newlib cvs://pserver:anoncvs@sourceware.org/cvs/src?module=newlib?src-prefix=src
Macros and Defaults Macros and Defaults
------------------- ^^^^^^^^^^^^^^^^^^^
The RTEMS Source Builder uses tables of *macros* read in when the tool The RTEMS Source Builder uses tables of *macros* read in when the tool
runs. The initial global set of macros is called the *defaults*. These values runs. The initial global set of macros is called the *defaults*. These values
@ -220,17 +222,23 @@ the build hosts.
Build set and configuration files can define new values updating and extending Build set and configuration files can define new values updating and extending
the global macro table. For example builds are given a release number. This is the global macro table. For example builds are given a release number. This is
typically a single number at the end of the package name. For example:: typically a single number at the end of the package name. For example:
.. code-block:: spec
%define release 1 %define release 1
Once defined if can be accessed in a build set or package configuration file Once defined if can be accessed in a build set or package configuration file
with:: with:
.. code-block:: spec
%{release} %{release}
The ``sb-defaults`` command lists the defaults for your host. I will not include The ``sb-defaults`` command lists the defaults for your host. I will not include
the output of this command because of its size:: the output of this command because of its size:
.. code-block:: shell
$ ../source-builder/sb-defaults $ ../source-builder/sb-defaults
@ -248,7 +256,9 @@ read from the defaults macro file called ``defaults.mc`` located in the top
level RTEMS Source Builder command directory. User macros can be read in at level RTEMS Source Builder command directory. User macros can be read in at
start up by using the ``--macros`` command line option. start up by using the ``--macros`` command line option.
The format for a macro in macro files is:: The format for a macro in macro files is:
.. code-block:: ini
Name Type Attribute String Name Type Attribute String
@ -290,7 +300,9 @@ and the ``String`` field is a single or tripled multiline quoted string. The
'String' can contain references to other macros. Macro that loop are not 'String' can contain references to other macros. Macro that loop are not
currently detected and will cause the tool to lock up. currently detected and will cause the tool to lock up.
Maps are declared anywhere in the map using the map directive:: Maps are declared anywhere in the map using the map directive:
.. code-block:: ini
# Comments # Comments
[my-special-map] <1> [my-special-map] <1>
@ -305,7 +317,9 @@ Maps are declared anywhere in the map using the map directive::
Any macro defintions following a map declaration are placed in that map and the Any macro defintions following a map declaration are placed in that map and the
default map is ``global`` when loading a file. Maps are selected in default map is ``global`` when loading a file. Maps are selected in
configuration files by using the ``%select`` directive:: configuration files by using the ``%select`` directive:
.. code-block:: spec
%select my-special-map %select my-special-map
@ -320,9 +334,11 @@ files need to add the ``%{_configdir}`` macro to the start of the file.
Macro map files can include other macro map files using the ``%include`` Macro map files can include other macro map files using the ``%include``
directive. The macro map to build *binutils*, *gcc*, *newlib*, *gdb* and directive. The macro map to build *binutils*, *gcc*, *newlib*, *gdb* and
RTEMS from version control heads is:: RTEMS from version control heads is:
# <1> .. code-block:: spec
#
# Build all tool parts from version control head. # Build all tool parts from version control head.
# #
%include %{_configdir}/snapshots/binutils-head.mc %include %{_configdir}/snapshots/binutils-head.mc
@ -349,7 +365,7 @@ directory. You need to have the environment variable ``HOME`` defined for this
work. work.
Report Mailing Report Mailing
-------------- ^^^^^^^^^^^^^^
The build reports can be mailed to a specific email address to logging and The build reports can be mailed to a specific email address to logging and
monitoring. Mailing requires a number of parameters to function. These are: monitoring. Mailing requires a number of parameters to function. These are:
@ -380,7 +396,9 @@ The ``from`` mail address is taken from:
If you have configured an email and name in git it will be used used. If you do If you have configured an email and name in git it will be used used. If you do
not a check is made for a ``.mailrc`` file. The environment variable ``MAILRC`` not a check is made for a ``.mailrc`` file. The environment variable ``MAILRC``
is used if present else your home directory is check. If found the file is is used if present else your home directory is check. If found the file is
scanned for the ``from`` setting:: scanned for the ``from`` setting:
.. code-block:: shell
set from="Foo Bar <foo@bar>" set from="Foo Bar <foo@bar>"
@ -392,20 +410,24 @@ default is ``localhost``. You can override the default with a personal
or user macro file or via the command line option ``--smtp-host``. or user macro file or via the command line option ``--smtp-host``.
Build Set Files Build Set Files
--------------- ^^^^^^^^^^^^^^^
Build set files lets you list the packages in the build set you are defining Build set files lets you list the packages in the build set you are defining
and have a file extension of ``.bset``. Build sets can define macro variables, and have a file extension of ``.bset``. Build sets can define macro variables,
inline include other files and reference other build set or package inline include other files and reference other build set or package
configuration files. configuration files.
Defining macros is performed with the ``%define`` macro:: Defining macros is performed with the ``%define`` macro:
.. code-block:: spec
%define _target m32r-rtems4.11 %define _target m32r-rtems4.11
Inline including another file with the ``%include`` macro continues processing Inline including another file with the ``%include`` macro continues processing
with the specified file returning to carry on from just after the include with the specified file returning to carry on from just after the include
point:: point:
.. code-block:: spec
%include rtems-4.11-base.bset %include rtems-4.11-base.bset
@ -413,7 +435,9 @@ This includes the RTEMS 4.11 base set of defines and checks. The configuration
paths as defined by ``_configdir`` are scanned. The file extension is optional. paths as defined by ``_configdir`` are scanned. The file extension is optional.
You reference build set or package configuration files by placing the file name You reference build set or package configuration files by placing the file name
on a single line:: on a single line:
.. code-block:: spec
tools/rtems-binutils-2.22-1 tools/rtems-binutils-2.22-1
@ -425,7 +449,7 @@ package configuration the package is built with the package builder. This all
happens once the build set file has finished being scanned. happens once the build set file has finished being scanned.
Configuration Control Configuration Control
--------------------- ^^^^^^^^^^^^^^^^^^^^^
The RTEMS Souce Builder is designed to fit within most verification and The RTEMS Souce Builder is designed to fit within most verification and
validation processes. All of the RTEMS Source Builder is source code. The validation processes. All of the RTEMS Source Builder is source code. The
@ -441,7 +465,9 @@ example the RTEMS configuration file ``rtems-gcc-4.7.2-newlib-2.0.0-1.cfg``
creates an RTEMS GCC and Newlib package where the GCC version is 4.7.2, the creates an RTEMS GCC and Newlib package where the GCC version is 4.7.2, the
Newlib version is 2.0.0, plus any RTEMS specific patches that related to this Newlib version is 2.0.0, plus any RTEMS specific patches that related to this
version. The configuration defines the version numbers of the various parts version. The configuration defines the version numbers of the various parts
that make up this package:: that make up this package:
.. code-block:: spec
%define gcc_version 4.7.2 %define gcc_version 4.7.2
%define newlib_version 2.0.0 %define newlib_version 2.0.0
@ -449,7 +475,9 @@ that make up this package::
%define mpc_version 0.8.2 %define mpc_version 0.8.2
%define gmp_version 5.0.5 %define gmp_version 5.0.5
The package build options, if there are any are also defined:: The package build options, if there are any are also defined:
.. code-block:: spec
%define with_threads 1 %define with_threads 1
%define with_plugin 0 %define with_plugin 0
@ -457,11 +485,15 @@ The package build options, if there are any are also defined::
The generic configuration may provide defaults in case options are not The generic configuration may provide defaults in case options are not
specified. The patches this specific version of the package requires can be specified. The patches this specific version of the package requires can be
included:: included:
.. code-block:: spec
Patch0: gcc-4.7.2-rtems4.11-20121026.diff Patch0: gcc-4.7.2-rtems4.11-20121026.diff
Finally including the GCC 4.7 configuration script:: Finally including the GCC 4.7 configuration script:
.. code-block:: spec
%include %{_configdir}/gcc-4.7-1.cfg %include %{_configdir}/gcc-4.7-1.cfg
@ -476,7 +508,7 @@ the earlier revision number will not be effected by the change. This locks down
a specific configuration over time. a specific configuration over time.
Personal Configurations Personal Configurations
----------------------- ^^^^^^^^^^^^^^^^^^^^^^^
The RSB supports personal configurations. You can view the RTEMS support in the The RSB supports personal configurations. You can view the RTEMS support in the
``rtems`` directory as a private configuration tree that resides within the RSB ``rtems`` directory as a private configuration tree that resides within the RSB
@ -484,7 +516,9 @@ source. There is also the ``bare`` set of configurations. You can create your
own configurations away from the RSB source tree yet use all that the RSB own configurations away from the RSB source tree yet use all that the RSB
provides. provides.
To create a private configuration change to a suitable directory:: To create a private configuration change to a suitable directory:
.. code-block:: shell
$ cd ~/work $ cd ~/work
$ mkdir test $ mkdir test
@ -496,7 +530,7 @@ build set file. The section 'Adding New Configurations' details how to add a
new confguration. new confguration.
New Configurations New Configurations
------------------ ^^^^^^^^^^^^^^^^^^
This section describes how to add a new configuration to the RSB. We will add a This section describes how to add a new configuration to the RSB. We will add a
configuration to build the Device Tree Compiler. The Device Tree Compiler or configuration to build the Device Tree Compiler. The Device Tree Compiler or
@ -558,7 +592,9 @@ release 1 of the package and the last ``1`` is the build configuration version.
The file starts with some comments that detail the configuration. If there is The file starts with some comments that detail the configuration. If there is
anything unusual about the configuration it is a good idea to add something in anything unusual about the configuration it is a good idea to add something in
the comments here. The comments are followed by a check for the release. In the comments here. The comments are followed by a check for the release. In
this case if a release is not provided a default of 1 is used:: this case if a release is not provided a default of 1 is used:
.. code-block:: spec
# #
# DTC 1.x.x Version 1. # DTC 1.x.x Version 1.
@ -572,7 +608,9 @@ this case if a release is not provided a default of 1 is used::
The next section defines some information about the package. It does not effect The next section defines some information about the package. It does not effect
the build and is used to annotate the reports. It is recommended this the build and is used to annotate the reports. It is recommended this
information is kept updated and accurate:: information is kept updated and accurate:
.. code-block:: spec
Name: dtc-%{dtc_version}-%{_host}-%{release} Name: dtc-%{dtc_version}-%{_host}-%{release}
Summary: Device Tree Compiler v%{dtc_version} for target %{_target} on host %{_host} Summary: Device Tree Compiler v%{dtc_version} for target %{_target} on host %{_host}
@ -586,7 +624,9 @@ single source package and it can be downloaded using the HTTP protocol. The RSB
knows this is GZip'ped tar file. If more than one package is needed, add knows this is GZip'ped tar file. If more than one package is needed, add
them increasing the index. The ``gcc-4.8-1.cfg`` configuration contains them increasing the index. The ``gcc-4.8-1.cfg`` configuration contains
examples of more than one source package as well as conditionally including examples of more than one source package as well as conditionally including
source packages based on the outer configuration options:: source packages based on the outer configuration options:
.. code-block:: spec
# #
# Source # Source
@ -618,7 +658,9 @@ unsure why something is being done a particular way.
The preparation phase will often include source and patch setup commands. Outer The preparation phase will often include source and patch setup commands. Outer
layers can set the source package and add patches as needed while being able to layers can set the source package and add patches as needed while being able to
use a common recipe for the build. Users can override the standard build and use a common recipe for the build. Users can override the standard build and
supply a custom patch for testing using the user macro command line interface:: supply a custom patch for testing using the user macro command line interface:
.. code-block:: spec
# #
# Prepare the source code. # Prepare the source code.
@ -644,7 +686,9 @@ running ``make``. Note the use of the RSB macros for commands. In the case of
systems we need to use the BSD make and not the GNU make. systems we need to use the BSD make and not the GNU make.
If your package requires a configuration stage you need to run this before the If your package requires a configuration stage you need to run this before the
make stage. Again the GCC common configuration file provides a detailed example:: make stage. Again the GCC common configuration file provides a detailed example:
.. code-block:: spec
%build %build
build_top=$(pwd) build_top=$(pwd)
@ -683,7 +727,9 @@ the RSB to vary specific commands based on the host. This can help on hosts
like Windows where bugs can effect the standard commands such as ``rm``. There like Windows where bugs can effect the standard commands such as ``rm``. There
are many many macros to help you. You can find these listed in the are many many macros to help you. You can find these listed in the
``defaults.mc`` file and in the trace output. If you are new to creating and ``defaults.mc`` file and in the trace output. If you are new to creating and
editing configurations learning these can take a little time:: editing configurations learning these can take a little time:
.. code-block:: spec
%install %install
build_top=$(pwd) build_top=$(pwd)
@ -701,7 +747,9 @@ for you.
Once we have the configuration files we can execute the build using the Once we have the configuration files we can execute the build using the
``sb-builder`` command. The command will perform the build and create a tar file ``sb-builder`` command. The command will perform the build and create a tar file
in the ``tar`` directory:: in the ``tar`` directory:
.. code-block:: shell
$ ../source-builder/sb-builder --prefix=/usr/local \ $ ../source-builder/sb-builder --prefix=/usr/local \
--log=log_dtc devel/dtc-1.2.0 --log=log_dtc devel/dtc-1.2.0
@ -720,7 +768,9 @@ as binutils, GCC and GDB and a build set will build each of these packages and
create a single build set tar file or install the tools on the host into the create a single build set tar file or install the tools on the host into the
prefix path. prefix path.
The DTC build set file is called ``dtc.bset`` and contains:: The DTC build set file is called ``dtc.bset`` and contains:
.. code-block:: spec
# #
# Build the DTC. # Build the DTC.
@ -730,7 +780,9 @@ The DTC build set file is called ``dtc.bset`` and contains::
devel/dtc-1.2.0.cfg devel/dtc-1.2.0.cfg
To build this you can use something similar to:: To build this you can use something similar to:
.. code-block:: shell
$ ../source-builder/sb-set-builder --prefix=/usr/local --log=log_dtc \ $ ../source-builder/sb-set-builder --prefix=/usr/local --log=log_dtc \
--trace --bset-tar-file --no-install dtc --trace --bset-tar-file --no-install dtc
@ -772,7 +824,7 @@ and change directory into them and manually run commands until to figure what
the package requires. the package requires.
Scripting Scripting
--------- ^^^^^^^^^
Configuration files specify how to build a package. Configuration files are Configuration files specify how to build a package. Configuration files are
scripts and have a ``.cfg`` file extension. The script format is based loosely scripts and have a ``.cfg`` file extension. The script format is based loosely
@ -923,23 +975,24 @@ The +%prep+ macro starts a block that continues until the next block macro. The
*prep* or preparation block defines the setup of the package's source and is a *prep* or preparation block defines the setup of the package's source and is a
mix of RTEMS Source Builder macros and shell scripting. The sequence is mix of RTEMS Source Builder macros and shell scripting. The sequence is
typically +%source+ macros for source, +%patch+ macros to patch the source typically +%source+ macros for source, +%patch+ macros to patch the source
mixed with some shell commands to correct any source issues:: mixed with some shell commands to correct any source issues:
.. code-block:: spec
<1> <2> <3>
%source setup gcc -q -c -T -n %{name}-%{version} %source setup gcc -q -c -T -n %{name}-%{version}
.. topic:: Items: .. topic:: Items:
1. The source group to set up. 1. The source group to set up is ``gcc``.
2. The source's name. 2. The source's name is the macro ``%{name}``.
3. The version of the source. 3. The version of the source is the macro ``%{version}``.
The source set up are declared with the source ``set`` and ``add`` commands. For The source set up are declared with the source ``set`` and ``add`` commands. For
example: example:
.. code-block:: auto .. code-block:: spec
%source set gdb http://ftp.gnu.org/gnu/gdb/gdb-%{gdb_version}.tar.bz2 %source set gdb http://ftp.gnu.org/gnu/gdb/gdb-%{gdb_version}.tar.bz2
@ -957,7 +1010,7 @@ example GNU's GCC was a few tar files for a while and it is now a single tar
file. Support for multiple source files can be conditionally implemented with file. Support for multiple source files can be conditionally implemented with
the following scripting: the following scripting:
.. code-block:: auto .. code-block:: spec
%source set gcc ftp://ftp.gnu.org/gnu/gcc/gcc-%{gcc_version}/gcc-code-%{gcc_version}.tar.bz2 %source set gcc ftp://ftp.gnu.org/gnu/gcc/gcc-%{gcc_version}/gcc-code-%{gcc_version}.tar.bz2
%source add gcc ftp://ftp.gnu.org/gnu/gcc/gcc-%{gcc_version}/gcc-g++-%{gcc_version}.tar.bz2 %source add gcc ftp://ftp.gnu.org/gnu/gcc/gcc-%{gcc_version}/gcc-g++-%{gcc_version}.tar.bz2
@ -966,7 +1019,7 @@ the following scripting:
Separate modules use separate source groups. The GNU GCC compiler for RTEMS Separate modules use separate source groups. The GNU GCC compiler for RTEMS
uses Newlib, MPFR, MPC, and GMP source packages. You define the source with: uses Newlib, MPFR, MPC, and GMP source packages. You define the source with:
.. code-block:: auto .. code-block:: spec
%source set gcc ftp://ftp.gnu.org/gnu/gcc/gcc-%{gcc_version}/gcc-%{gcc_version}.tar.bz2 %source set gcc ftp://ftp.gnu.org/gnu/gcc/gcc-%{gcc_version}/gcc-%{gcc_version}.tar.bz2
%source set newlib ftp://sourceware.org/pub/newlib/newlib-%{newlib_version}.tar.gz %source set newlib ftp://sourceware.org/pub/newlib/newlib-%{newlib_version}.tar.gz
@ -976,7 +1029,7 @@ uses Newlib, MPFR, MPC, and GMP source packages. You define the source with:
and set up with: and set up with:
.. code-block:: auto .. code-block:: spec
%source setup gcc -q -n gcc-%{gcc_version} %source setup gcc -q -n gcc-%{gcc_version}
%source setup newlib -q -D -n newlib-%{newlib_version} %source setup newlib -q -D -n newlib-%{newlib_version}
@ -990,22 +1043,24 @@ applied using the +setup+ command. The +setup+ command takes the default patch
option. You can provide options with each patch by adding them as arguments option. You can provide options with each patch by adding them as arguments
before the patch URL. Patches with no options uses the +setup+ default. before the patch URL. Patches with no options uses the +setup+ default.
.. code-block:: auto .. code-block:: spec
%patch add gdb %{rtems_gdb_patches}/gdb-sim-arange-inline.diff %patch add gdb %{rtems_gdb_patches}/gdb-sim-arange-inline.diff
%patch add gdb -p0 <1> %{rtems_gdb_patches}/gdb-sim-cgen-inline.diff %patch add gdb -p0 %{rtems_gdb_patches}/gdb-sim-cgen-inline.diff
.. topic:: Items: .. topic:: Items:
1. This patch has a custom option. 1. This patch has the custom option of ``-p0``.
To apply these patches:: To apply these patches:
%patch setup gdb -p1 <1> .. code-block:: spec
%patch setup gdb -p1
.. topic:: Items: .. topic:: Items:
1. The default options. 1. The default options for ``gdb`` set up.
.. _build: .. _build:
@ -1018,22 +1073,24 @@ package. It assumes all source code has been unpacked, patch and adjusted so
the build will succeed. the build will succeed.
The following is an example take from the GitHub STLink project. The STLink is The following is an example take from the GitHub STLink project. The STLink is
a JTAG debugging device for the ST ARM family of processors:: a JTAG debugging device for the ST ARM family of processors:
.. code-block:: spec
%build %build
export PATH="%{_bindir}:${PATH}" <1> export PATH="%{_bindir}:${PATH}"
cd texane-stlink-%{stlink_version} <2> cd texane-stlink-%{stlink_version}
./autogen.sh <3> ./autogen.sh
%if "%{_build}" != "%{_host}" %if "%{_build}" != "%{_host}"
CFLAGS_FOR_BUILD="-g -O2 -Wall" \ <4> CFLAGS_FOR_BUILD="-g -O2 -Wall" \
%endif %endif
CPPFLAGS="-I $SB_TMPPREFIX/include/libusb-1.0" \ <5> CPPFLAGS="-I $SB_TMPPREFIX/include/libusb-1.0" \
CFLAGS="$SB_OPT_FLAGS" \ CFLAGS="$SB_OPT_FLAGS" \
LDFLAGS="-L $SB_TMPPREFIX/lib" \ LDFLAGS="-L $SB_TMPPREFIX/lib" \
./configure \ <6> ./configure \
--build=%{_build} --host=%{_host} \ --build=%{_build} --host=%{_host} \
--verbose \ --verbose \
--prefix=%{_prefix} --bindir=%{_bindir} \ --prefix=%{_prefix} --bindir=%{_bindir} \
@ -1041,36 +1098,41 @@ a JTAG debugging device for the ST ARM family of processors::
--includedir=%{_includedir} --libdir=%{_libdir} \ --includedir=%{_includedir} --libdir=%{_libdir} \
--mandir=%{_mandir} --infodir=%{_infodir} --mandir=%{_mandir} --infodir=%{_infodir}
%{__make} %{?_smp_mflags} all <7> %{__make} %{?_smp_mflags} all
cd .. cd ..
.. topic:: Items: .. topic:: Items:
1. Setup the PATH environment variable. This is not always needed. 1. Set up the PATH environment variable by setting the ``PATH`` environment
variable. This is not always needed.
2. This package builds in the source tree so enter it. 2. This package builds in the source tree
``texane-stlink-%{stlink_version}`` so enter it before building.
3. The package is actually checked directly out from the github project and 3. The package is actually checked directly out from the github project and
so it needs its autoconf and automake files generated. so it needs its ``autoconf`` and ``automake`` files generated. Invoke the
provided script ``autogen.sh``
4. Flags for a cross-compiled build. 4. If the build machine and host are not the same the build is a
cross-compile. Update the flags for a cross-compiled build.
5. Various settings passed to configure to customise the build. In this 5. The flags set in the environment before ``configure`` are various
example an include path is being set to the install point of settings that need to be passed to customise the build. In this example
``libusb``. This package requires ``libusb`` is built before it. an include path is being set to the install point of ``libusb``. This
package requires ``libusb`` is built before it.
6. The ``configure`` command. The RTEMS Source Builder provides all the 6. The ``configure`` command. The RTEMS Source Builder provides all the
needed paths as macro variables. You just need to provide them to needed paths as macro variables. You just need to provide them to
``configure``. ``configure``.
7. Running make. Do not use ``make`` directly, use the RTEMS Source Builder's 7. Run ``make``. Do not use ``make`` directly, use the RTEMS Source
defined value. This value is specific to the host. A large number of Builder's defined value. This value is specific to the host. A large
packages need GNU make and on BSD systems this is ``gmake``. You can number of packages need GNU make and on BSD systems this is
optionally add the SMP flags if the packages build system can handle ``gmake``. You can optionally add the SMP flags if the packages build
parallel building with multiple jobs. The ``_smp_mflags`` value is system can handle parallel building with multiple jobs. The
automatically setup for SMP hosts to match the number of cores the host ``_smp_mflags`` value is automatically setup for SMP hosts to match the
has. number of cores the host has.
%install %install
~~~~~~~~ ~~~~~~~~
@ -1086,7 +1148,9 @@ the macro variable ``__tmpdir``. The RTEMS Source Builder sets up a shell
environment variable called ``SB_BUILD_ROOT`` as the standard install point. Most environment variable called ``SB_BUILD_ROOT`` as the standard install point. Most
packages support adding ``DESTDIR=`` to the ``make install`` command. packages support adding ``DESTDIR=`` to the ``make install`` command.
Looking at the same example as in :ref:`build`:: Looking at the same example as in :ref:`build`:
.. code-block:: spec
%install %install
export PATH="%{_bindir}:${PATH}" <1> export PATH="%{_bindir}:${PATH}" <1>
@ -1134,7 +1198,9 @@ configuration file that contains the ``%include`` macro.
Including files allow a kind of configuration file reuse. The outer Including files allow a kind of configuration file reuse. The outer
configuration files provide specific information such as package version configuration files provide specific information such as package version
numbers and patches and then include a generic configuration script which numbers and patches and then include a generic configuration script which
builds the package:: builds the package:
.. code-block:: spec
%include %{_configdir}/gcc-4.7-1.cfg %include %{_configdir}/gcc-4.7-1.cfg
@ -1152,7 +1218,9 @@ with Newlib configuration the name is typically::
The ``%summary`` is a brief description of the package. It is useful when The ``%summary`` is a brief description of the package. It is useful when
reporting. This information is not capture in the package anywhere. For the GCC reporting. This information is not capture in the package anywhere. For the GCC
with Newlib configuration the summary is typically:: with Newlib configuration the summary is typically:
.. code-block:: spec
Summary: GCC v%{gcc_version} and Newlib v%{newlib_version} for target %{_target} on host %{_host} Summary: GCC v%{gcc_version} and Newlib v%{newlib_version} for target %{_target} on host %{_host}
@ -1161,7 +1229,9 @@ with Newlib configuration the summary is typically::
The ``%release`` is a packaging number that allows revisions of a package to The ``%release`` is a packaging number that allows revisions of a package to
happen where no package versions change. This value typically increases when happen where no package versions change. This value typically increases when
the configuration building the package changes:: the configuration building the package changes:
.. code-block:: spec
%define release 1 %define release 1
@ -1172,7 +1242,9 @@ The ``%version`` macro sets the version the package. If the package is a single
component it tracks that component's version number. For example in the component it tracks that component's version number. For example in the
``libusb`` configuration the ``%version`` is the same as ``%libusb_version``, ``libusb`` configuration the ``%version`` is the same as ``%libusb_version``,
however in a GCC with Newlib configuration there is no single version however in a GCC with Newlib configuration there is no single version
number. In this case the GCC version is used:: number. In this case the GCC version is used:
.. code-block:: spec
Version: %{gcc_version} Version: %{gcc_version}
@ -1206,9 +1278,9 @@ source files to be set up. Subsequent ``set`` commands for the same source
group are ignored. this lets you define the standard source files and override group are ignored. this lets you define the standard source files and override
them for specific releases or snapshots. To set a source file group: them for specific releases or snapshots. To set a source file group:
.. code-block:: auto .. code-block:: spec
%source set gcc <1> ftp://ftp.gnu.org/gnu/gcc/gcc-%{gcc_version}/gcc-%{gcc_version}.tar.bz2 %source set gcc ftp://ftp.gnu.org/gnu/gcc/gcc-%{gcc_version}/gcc-%{gcc_version}.tar.bz2
.. topic:: Items: .. topic:: Items:
@ -1217,12 +1289,14 @@ them for specific releases or snapshots. To set a source file group:
To add another source package to be installed into the same source tree you use To add another source package to be installed into the same source tree you use
the ``add`` command: the ``add`` command:
.. code-block:: auto .. code-block:: spec
%source add gcc ftp://ftp.gnu.org/gnu/gcc/gcc-%{gcc_version}/g++-%{gcc_version}.tar.bz2 %source add gcc ftp://ftp.gnu.org/gnu/gcc/gcc-%{gcc_version}/g++-%{gcc_version}.tar.bz2
The source ``setup`` command can only be issued in the ``%prep:`` section. The The source ``setup`` command can only be issued in the ``%prep:`` section. The
setup is:: setup is:
.. code-block:: spec
%source gcc setup -q -T -D -n %{name}-%{version} %source gcc setup -q -T -D -n %{name}-%{version}
@ -1269,25 +1343,29 @@ control applying a group of patches to a specific source tree.
The ``__patchdir`` path is searched. The ``__patchdir`` path is searched.
To add a patch:: To add a patch:
%patch add gcc <1> gcc-4.7.2-rtems4.11-20121026.diff .. code-block:: spec
%patch add gcc -p0 <2> gcc-4.7.2-rtems4.11-20121101.diff
%patch add gcc gcc-4.7.2-rtems4.11-20121026.diff
%patch add gcc -p0 gcc-4.7.2-rtems4.11-20121101.diff
.. topic:: Items: .. topic:: Items:
1. The patch group is ``gcc``. 1. The patch group is ``gcc``.
2. Option for this specific patch. 2. Option ``-p0`` is this specific to this patch.
Placing ``%patch setup`` in the ``%prep`` section will apply the groups Placing ``%patch setup`` in the ``%prep`` section will apply the groups
patches:: patches::
%patch setup gcc <1> -p1 <2> .. code-block:: spec
1. The patch group. %patch setup gcc -p1
2. The default option used to apply the patch. 1. The patch group is ``gcc``.
2. The default option used to apply the patch is ``-p1``.
%hash %hash
~~~~~ ~~~~~
@ -1303,7 +1381,9 @@ The basename of the file is used as the key for the hash.
The hash algorthim can be ``md5``, ``sha1``, ``sha224``, ``sha256``, The hash algorthim can be ``md5``, ``sha1``, ``sha224``, ``sha256``,
``sha384``, and ``sha512`` and we typically use ``md5``. ``sha384``, and ``sha512`` and we typically use ``md5``.
To add a hash:: To add a hash:
.. code-block:: spec
%hash md5 <1> net-snmp-%{net_snmp_version}.tar.gz <2> 7db683faba037249837b226f64d566d4 <3> %hash md5 <1> net-snmp-%{net_snmp_version}.tar.gz <2> 7db683faba037249837b226f64d566d4 <3>
@ -1351,7 +1431,9 @@ recorded in the build report so they can be traced.
Configurations use different maps so macro overrides can target a specific Configurations use different maps so macro overrides can target a specific
package. package.
The default map is ``global``:: The default map is ``global``:
.. code-block:: spec
%select gcc-4.8-snapshot <1> %select gcc-4.8-snapshot <1>
%define one_plus_one 2 <2> %define one_plus_one 2 <2>
@ -1367,7 +1449,9 @@ The default map is ``global``::
~~~~~~~ ~~~~~~~
The ``%define`` macro defines a new macro or updates an existing one. If no The ``%define`` macro defines a new macro or updates an existing one. If no
value is given it is assumed to be ``1``:: value is given it is assumed to be ``1``:
.. code-block:: spec
%define foo bar %define foo bar
%define one_plus_one 2 %define one_plus_one 2
@ -1392,7 +1476,9 @@ The ``%if`` macro starts a conditional logic block that can optionally have a
.. list-table:: .. list-table::
* - **%{}** * - **%{}**
- Check the macro is set or *true*, ie non-zero:: - Check the macro is set or *true*, ie non-zero:
.. code-block:: spec
%if ${foo} %if ${foo}
%warning The test passes, must not be empty or is non-zero %warning The test passes, must not be empty or is non-zero
@ -1401,7 +1487,9 @@ The ``%if`` macro starts a conditional logic block that can optionally have a
%endif %endif
* - **\!** * - **\!**
- The *not* operator inverts the test of the macro:: - The *not* operator inverts the test of the macro:
.. code-block:: spec
%if ! ${foo} %if ! ${foo}
%warning The test passes, must be empty or zero %warning The test passes, must be empty or zero
@ -1410,7 +1498,9 @@ The ``%if`` macro starts a conditional logic block that can optionally have a
%endif %endif
* - **==** * - **==**
- The left hand size must equal the right hand side. For example:: - The left hand size must equal the right hand side. For example:
.. code-block:: spec
%define one 1 %define one 1
%if ${one} == 1 %if ${one} == 1
@ -1418,7 +1508,10 @@ The ``%if`` macro starts a conditional logic block that can optionally have a
%else %else
%error The test fails %error The test fails
%endif %endif
You can also check to see if a macro is empty::
You can also check to see if a macro is empty:
.. code-block:: spec
%if ${nothing} == %{nil} %if ${nothing} == %{nil}
%warning The test passes %warning The test passes
@ -1426,7 +1519,9 @@ The ``%if`` macro starts a conditional logic block that can optionally have a
%error The test fails %error The test fails
* - **!=** * - **!=**
- The left hand size does not equal the right hand side. For example:: - The left hand size does not equal the right hand side. For example:
.. code-block:: spec
# #
# Check a value not being equal. # Check a value not being equal.
@ -1465,7 +1560,9 @@ The ``%if`` macro starts a conditional logic block that can optionally have a
The ``%ifn`` macro inverts the normal ``%if`` logic. It avoids needing to provide The ``%ifn`` macro inverts the normal ``%if`` logic. It avoids needing to provide
empty *if* blocks followed by *else* blocks. It is useful when checking if a empty *if* blocks followed by *else* blocks. It is useful when checking if a
macro is defined:: macro is defined:
.. code-block:: spec
%ifn %{defined foo} %ifn %{defined foo}
%define foo bar %define foo bar

View File

@ -3,7 +3,7 @@
.. Copyright (C) 2012, 2016 Chris Johns <chrisj@rtems.org> .. Copyright (C) 2012, 2016 Chris Johns <chrisj@rtems.org>
Cross and Canadian Cross Building Cross and Canadian Cross Building
================================= ---------------------------------
Cross building and Canadian Cross building is the process of building on one Cross building and Canadian Cross building is the process of building on one
machine an executable that runs on another machine. An example is building a machine an executable that runs on another machine. An example is building a
@ -13,21 +13,23 @@ and Canadian cross building.
This sections details how to the RSB to cross and Canadian cross build. This sections details how to the RSB to cross and Canadian cross build.
Cross Building Cross Building
-------------- ^^^^^^^^^^^^^^
Cross building is where the _build_ machine and _host_ are different. The Cross building is where the _build_ machine and _host_ are different. The
_build_ machine runs the RSB and the _host_ machine is where the output from _build_ machine runs the RSB and the _host_ machine is where the output from
the build runs. An example is building a package such as NTP for RTEMS on your the build runs. An example is building a package such as NTP for RTEMS on your
development machine. development machine.
To build the NTP package for RTEMS you enter the RSB command:: To build the NTP package for RTEMS you enter the RSB command:
.. code-block:: shell
$ ../source-builder/sb-set-builder \ $ ../source-builder/sb-set-builder \
--log=log_ntp_arm.txt \ --log=log_ntp_arm.txt \
--prefix=$HOME/development/rtems/4.11 \ <1> --prefix=$HOME/development/rtems/5 \ <1>
--host=arm-rtems4.11 \ <2> --host=arm-rtems5 \ <2>
--with-rtems-bsp=xilinx_zynq_zc706 \ <3> --with-rtems-bsp=xilinx_zynq_zc706 \ <3>
4.11/net/ntp 5/net/ntp
.. topic:: Items: .. topic:: Items:
@ -45,7 +47,7 @@ To build the NTP package for RTEMS you enter the RSB command::
'bin' directory at the end of the path. 'bin' directory at the end of the path.
Canadian Cross Building Canadian Cross Building
----------------------- ^^^^^^^^^^^^^^^^^^^^^^^
A Canadian cross builds are where the **build**, **host** and **target** A Canadian cross builds are where the **build**, **host** and **target**
machines all differ. For example building an RTEMS compiler for an ARM machines all differ. For example building an RTEMS compiler for an ARM
@ -81,17 +83,21 @@ does not exist or you cannot access.
To perform a cross build add ``--host=`` to the command line. For example To perform a cross build add ``--host=`` to the command line. For example
to build a MinGW tool set on FreeBSD for Windows add ``--host=mingw32`` to build a MinGW tool set on FreeBSD for Windows add ``--host=mingw32``
if the cross compiler is ``mingw32-gcc``:: if the cross compiler is ``mingw32-gcc``:
.. code-block:: shell
$ ../source-builder/sb-set-builder --host=mingw32 \ $ ../source-builder/sb-set-builder --host=mingw32 \
--log=l-mingw32-4.11-sparc.txt \ --log=l-mingw32-4.11-sparc.txt \
--prefix=$HOME/development/rtems/4.11 \ --prefix=$HOME/development/rtems/5 \
4.11/rtems-sparc 5/rtems-sparc
If you are on a Linux Fedora build host with the MinGW packages installed the If you are on a Linux Fedora build host with the MinGW packages installed the
command line is:: command line is:
.. code-block:: shell
$ ../source-builder/sb-set-builder --host=i686-w64-mingw32 \ $ ../source-builder/sb-set-builder --host=i686-w64-mingw32 \
--log=l-mingw32-4.11-sparc.txt \ --log=l-mingw32-4.11-sparc.txt \
--prefix=$HOME/development/rtems/4.11 \ --prefix=$HOME/development/rtems/5 \
4.11/rtems-sparc 5/rtems-sparc

View File

@ -5,7 +5,7 @@
.. _RSBDeployment: .. _RSBDeployment:
Building and Deploying Tool Binaries Building and Deploying Tool Binaries
==================================== ------------------------------------
If you wish to create and distribute your build or you want to archive a build If you wish to create and distribute your build or you want to archive a build
you can create a tar file. We term this deploying a build. This is a more you can create a tar file. We term this deploying a build. This is a more
@ -39,7 +39,9 @@ access only. To install a tar file you have downloaded into your new machine's
$HOME/Downloads/rtems-4.11-sparc-rtems4.11-1.tar.bz2 $HOME/Downloads/rtems-4.11-sparc-rtems4.11-1.tar.bz2
A build set tar file is created by adding ``--bset-tar-file`` option to the A build set tar file is created by adding ``--bset-tar-file`` option to the
``sb-set-builder`` command:: ``sb-set-builder`` command:
.. code-block:: shell
$ ../source-builder/sb-set-builder --log=l-sparc.txt \ $ ../source-builder/sb-set-builder --log=l-sparc.txt \
--prefix=$HOME/development/rtems/4.11 \ --prefix=$HOME/development/rtems/4.11 \
@ -80,7 +82,9 @@ A build set tar file is created by adding ``--bset-tar-file`` option to the
You can also suppress installing the files using the ``--no-install`` You can also suppress installing the files using the ``--no-install``
option. This is useful if your prefix is not accessiable, for example when option. This is useful if your prefix is not accessiable, for example when
building Canadian cross compiled tool sets:: building Canadian cross compiled tool sets:
.. code-block:: shell
$ ../source-builder/sb-set-builder --log=l-sparc.txt \ $ ../source-builder/sb-set-builder --log=l-sparc.txt \
--prefix=$HOME/development/rtems/4.11 \ --prefix=$HOME/development/rtems/4.11 \
@ -118,7 +122,9 @@ building Canadian cross compiled tool sets::
A package tar file can be created by adding the ``--pkg-tar-files`` to the A package tar file can be created by adding the ``--pkg-tar-files`` to the
``sb-set-builder`` command. This creates a tar file per package built in the ``sb-set-builder`` command. This creates a tar file per package built in the
build set:: build set:
.. code-block:: shell
$ ../source-builder/sb-set-builder --log=l-sparc.txt \ $ ../source-builder/sb-set-builder --log=l-sparc.txt \
--prefix=$HOME/development/rtems/4.11 \ --prefix=$HOME/development/rtems/4.11 \

View File

@ -4,7 +4,7 @@
History History
======= -------
The RTEMS Source Builder is a stand alone tool based on another tool called the The RTEMS Source Builder is a stand alone tool based on another tool called the
*SpecBuilder* written by Chris Johns. The *SpecBuilder* was written around 2010 *SpecBuilder* written by Chris Johns. The *SpecBuilder* was written around 2010

View File

@ -7,7 +7,7 @@
.. _RSB: .. _RSB:
RTEMS Source Builder RTEMS Source Builder
==================== ********************
The RTEMS Source Builder or RSB is a tool to build packages from source. It is The RTEMS Source Builder or RSB is a tool to build packages from source. It is
used by the RTEMS project to build it's compilers and OS. The RSB helps used by the RTEMS project to build it's compilers and OS. The RSB helps
@ -45,7 +45,7 @@ The RTEMS Source Builder has been tested on:
.. topic:: Setting up your Host .. topic:: Setting up your Host
:ref:`Hosts` details setting up hosts. See :ref:`QuickStartHost` for details on setting up hosts.
The RTEMS Source Builder has two types of configuration data. The first is the The RTEMS Source Builder has two types of configuration data. The first is the
*build set*. A *build set* describes a collection of packages that define a set *build set*. A *build set* describes a collection of packages that define a set
@ -62,7 +62,7 @@ The RTEMS Source Builder does not interact with any host package management
systems. There is no automatic dependence checking between various packages you systems. There is no automatic dependence checking between various packages you
build or packages and software your host system you may have installed. We build or packages and software your host system you may have installed. We
assume the build sets and configuration files you are using have been created assume the build sets and configuration files you are using have been created
by developers who do. Support is provided for package config or ``pkgconfg`` by developers who do. Support is provided for package config or ``pkgconfig``
type files so you can check and use standard libraries if present. If you have type files so you can check and use standard libraries if present. If you have
a problem please ask on our :r:list:`devel`. a problem please ask on our :r:list:`devel`.
@ -82,8 +82,6 @@ configuration can read the remaining sections.
Build Failures`. Build Failures`.
.. toctree:: .. toctree::
:maxdepth: 5
:numbered:
why-build-from-source.rst why-build-from-source.rst
project-sets project-sets

View File

@ -3,7 +3,7 @@
.. Copyright (C) 2012, 2016 Chris Johns <chrisj@rtems.org> .. Copyright (C) 2012, 2016 Chris Johns <chrisj@rtems.org>
Project Sets Project Sets
============ ------------
The RTEMS Source Builder supports project configurations. Project The RTEMS Source Builder supports project configurations. Project
configurations can be public or private and can be contained in the RTEMS configurations can be public or private and can be contained in the RTEMS
@ -36,7 +36,7 @@ are implemented with the configuration scripts. The best way to find what is
available is to grep the configuration files for ``with`` and ``without``. available is to grep the configuration files for ``with`` and ``without``.
Bare Metal Bare Metal
---------- ^^^^^^^^^^
The RSB contains a 'bare' configuration tree and you can use this to add The RSB contains a 'bare' configuration tree and you can use this to add
packages you use on the hosts. For example 'qemu' is supported on a range of packages you use on the hosts. For example 'qemu' is supported on a range of
@ -47,8 +47,10 @@ and run on RTEMS.
The **bare metal** support for GNU Tool chains. An example is the The **bare metal** support for GNU Tool chains. An example is the
``lang/gcc491`` build set. You need to provide a target via the command line ``lang/gcc491`` build set. You need to provide a target via the command line
``--target`` option and this is in the standard 2 or 3 tuple form. For example ``--target`` option and this is in the standard 2 or 3 tuple form. For example
for an ARM compiler you would use ``arm-eabi`` or ``arm-eabihf`, and for SPARC for an ARM compiler you would use ``arm-eabi`` or ``arm-eabihf``, and for SPARC
you would use `sparc-elf`:: you would use ``sparc-elf``:
.. code-block:: shell
$ cd rtems-source-builder/bare $ cd rtems-source-builder/bare
$ ../source-builder/sb-set-builder --log=log_arm_eabihf \ $ ../source-builder/sb-set-builder --log=log_arm_eabihf \
@ -77,7 +79,7 @@ you would use `sparc-elf`::
cleaning: arm-eabihf-gdb-7.7-1 cleaning: arm-eabihf-gdb-7.7-1
RTEMS RTEMS
----- ^^^^^
The RTEMS Configurations found in the ``rtems`` directory. The configurations The RTEMS Configurations found in the ``rtems`` directory. The configurations
are grouped by RTEMS version. In RTEMS the tools are specific to a specific are grouped by RTEMS version. In RTEMS the tools are specific to a specific
@ -105,7 +107,9 @@ When building RTEMS within the RTEMS Source Builder it needs a suitable working
prefix in order for them to work. The RTEMS Source Builder installs all prefix in order for them to work. The RTEMS Source Builder installs all
packages only after they have been built so if you host does not have a packages only after they have been built so if you host does not have a
recent enough version of ``autoconf`` and ``automake`` you first need to build them recent enough version of ``autoconf`` and ``automake`` you first need to build them
and install them then build your tool set. The commands are:: and install them then build your tool set. The commands are:
.. code-block:: shell
$ ../source-builder/sb-set-builder --log=l-4.11-at.txt \ $ ../source-builder/sb-set-builder --log=l-4.11-at.txt \
--prefix=$HOME/development/rtems/4.11 4.11/rtems-autotools --prefix=$HOME/development/rtems/4.11 4.11/rtems-autotools
@ -125,7 +129,9 @@ build fails a check.
To build snapshots for testing purposes you use the available macro maps To build snapshots for testing purposes you use the available macro maps
passing them on the command line using the ``--macros`` option. For RTEMS these passing them on the command line using the ``--macros`` option. For RTEMS these
are held in ``config/snapshots`` directory. The following builds *newlib* from are held in ``config/snapshots`` directory. The following builds *newlib* from
CVS:: CVS:
.. code-block:: shell
$ ../source-builder/sb-set-builder --log=l-4.11-sparc.txt \ $ ../source-builder/sb-set-builder --log=l-4.11-sparc.txt \
--prefix=$HOME/development/rtems/4.11 \ --prefix=$HOME/development/rtems/4.11 \
@ -133,7 +139,9 @@ CVS::
4.11/rtems-sparc 4.11/rtems-sparc
and the following uses the version control heads for ``binutils``, ``gcc``, and the following uses the version control heads for ``binutils``, ``gcc``,
``newlib``, ``gdb`` and *RTEMS*:: ``newlib``, ``gdb`` and *RTEMS*:
.. code-block:: shell
$ ../source-builder/sb-set-builder --log=l-heads-sparc.txt \ $ ../source-builder/sb-set-builder --log=l-heads-sparc.txt \
--prefix=$HOME/development/rtems/4.11-head \ --prefix=$HOME/development/rtems/4.11-head \
@ -159,7 +167,7 @@ build sets:
Attempt to build a C++ compiler. Attempt to build a C++ compiler.
Patches Patches
------- ^^^^^^^
Packages being built by the RSB need patches from time to time and the RSB Packages being built by the RSB need patches from time to time and the RSB
supports patching upstream packages. The patches are held in a seperate supports patching upstream packages. The patches are held in a seperate
@ -199,7 +207,9 @@ are provided the patch's setup default options are used.
Patches can be declared in build set up files. Patches can be declared in build set up files.
This examples shows how to declare a patch for gdb in the ``lm32`` architecture:: This examples shows how to declare a patch for gdb in the ``lm32`` architecture:
.. code-block:: spec
%patch add <1> gdb <2> %{rtems_gdb_patches}/lm32/gdb-sim-lm32uart.diff <3> %patch add <1> gdb <2> %{rtems_gdb_patches}/lm32/gdb-sim-lm32uart.diff <3>
@ -212,7 +222,9 @@ This examples shows how to declare a patch for gdb in the ``lm32`` architecture:
3. The patch's URL. It is downloaded from here. 3. The patch's URL. It is downloaded from here.
Patches require a checksum to avoid a warning. The ``%hash`` directive can be Patches require a checksum to avoid a warning. The ``%hash`` directive can be
used to add a checksum for a patch that is used to verify the patch:: used to add a checksum for a patch that is used to verify the patch:
.. code-block:: spec
%hash md5 <1> gdb-sim-lm32uart.diff <2> 77d070878112783292461bd6e7db17fb <3> %hash md5 <1> gdb-sim-lm32uart.diff <2> 77d070878112783292461bd6e7db17fb <3>
@ -226,7 +238,9 @@ used to add a checksum for a patch that is used to verify the patch::
The patches are applied when a patch ``setup`` command is issued in the The patches are applied when a patch ``setup`` command is issued in the
``%prep:`` section. All patches in the group are applied. To apply the GDB ``%prep:`` section. All patches in the group are applied. To apply the GDB
patch above use:: patch above use:
.. code-block:: spec
%patch setup <1> gdb <2> -p1 <3> %patch setup <1> gdb <2> -p1 <3>
@ -251,7 +265,7 @@ it and add it to the RTEMS Tools git repository. For example, to test a local
patch for newlib, add the following two lines to the .cfg file in patch for newlib, add the following two lines to the .cfg file in
``rtems/config/tools/`` that is included by the bset you use: ``rtems/config/tools/`` that is included by the bset you use:
.. code-block:: auto .. code-block:: spec
%patch add newlib file://0001-this-is-a-newlib-patch.patch <1> %patch add newlib file://0001-this-is-a-newlib-patch.patch <1>
%hash md5 0001-this-is-a-newlib-patch.diff 77d070878112783292461bd6e7db17fb <2> %hash md5 0001-this-is-a-newlib-patch.diff 77d070878112783292461bd6e7db17fb <2>

View File

@ -3,7 +3,7 @@
.. Copyright (C) 2012, 2016 Chris Johns <chrisj@rtems.org> .. Copyright (C) 2012, 2016 Chris Johns <chrisj@rtems.org>
RTEMS Third-Party Packages RTEMS Third-Party Packages
======================== --------------------------
This section describes how to build and add an RTEMS third-party package to the This section describes how to build and add an RTEMS third-party package to the
RSB. RSB.
@ -21,7 +21,7 @@ in the RTEMS build system. If you have any issues with this support please ask
on the RTEMS developers mailing list. on the RTEMS developers mailing list.
Vertical Integration Vertical Integration
-------------------- ^^^^^^^^^^^^^^^^^^^^
The RSB supports horizontal integration with support for multiple The RSB supports horizontal integration with support for multiple
architectures. Adding packages to the RSB as libraries is vertical architectures. Adding packages to the RSB as libraries is vertical
@ -30,7 +30,7 @@ you build a compiler. The same can be done for third-party libraries, you can
crate build sets that stack library dependences vertically to create a *stack*. crate build sets that stack library dependences vertically to create a *stack*.
Building Building
-------- ^^^^^^^^
To build a package you need to have a suitable RTEMS tool chain and RTEMS BSP To build a package you need to have a suitable RTEMS tool chain and RTEMS BSP
installed. The set builder command line requires you provide the tools path, installed. The set builder command line requires you provide the tools path,
@ -56,7 +56,7 @@ To build Net-SNMP the command is:
Build Set: Time 0:01:10.651926 Build Set: Time 0:01:10.651926
Adding Adding
------ ^^^^^^
Adding a package requires you first build it manually by downloading the source Adding a package requires you first build it manually by downloading the source
for the package and building it for RTEMS using the command line of a standard for the package and building it for RTEMS using the command line of a standard
@ -114,7 +114,7 @@ A package requires 3 files to be created:
specific parts. See :ref:`Configuration` for more details. specific parts. See :ref:`Configuration` for more details.
BSP Support BSP Support
----------- ^^^^^^^^^^^
The RSB provides support to help build packages for RTEMS. RTEMS applications The RSB provides support to help build packages for RTEMS. RTEMS applications
can be viewed as statically linked executables operating in a single address can be viewed as statically linked executables operating in a single address
@ -135,7 +135,9 @@ RTEMS.
The RSB provides the configuration file ``rtems/config/rtems-bsp.cfg`` to The RSB provides the configuration file ``rtems/config/rtems-bsp.cfg`` to
support building third-party packages and you need to include this file in your support building third-party packages and you need to include this file in your
RTEMS version specific configuration file. For example the Net-SNMP RTEMS version specific configuration file. For example the Net-SNMP
configuration file ``rtems/config/net-mgmt/net-snmp-5.7.2.1-1.cfg``:: configuration file ``rtems/config/net-mgmt/net-snmp-5.7.2.1-1.cfg``:
.. code-block:: spec
# #
# NetSNMP 5.7.2.1 # NetSNMP 5.7.2.1
@ -174,8 +176,8 @@ configuration file ``rtems/config/net-mgmt/net-snmp-5.7.2.1-1.cfg``::
3. The Net-SNMP package's version. 3. The Net-SNMP package's version.
4. Add specific CFLAGS to the build process. See the 4. Add specific ``CFLAGS`` to the build process. See the
``net-snmp-5.7.2.1-1.cfg`` for details. ``net-snmp-5.7.2.1-1.cfg`` for details.
5. The RTEMS Net-SNMP patch downloaded from the RTEMS Tools git repo. 5. The RTEMS Net-SNMP patch downloaded from the RTEMS Tools git repo.
@ -184,7 +186,9 @@ configuration file ``rtems/config/net-mgmt/net-snmp-5.7.2.1-1.cfg``::
The RSB RTEMS BSP support file ``rtems/config/rtems-bsp.cfg`` checks to make The RSB RTEMS BSP support file ``rtems/config/rtems-bsp.cfg`` checks to make
sure standard command line options are provided. These include ``--host`` and sure standard command line options are provided. These include ``--host`` and
``--with-rtems-bsp``. If the ``--with-tools`` command line option is not given ``--with-rtems-bsp``. If the ``--with-tools`` command line option is not given
the ``${_prefix}`` is used:: the ``${_prefix}`` is used:
.. code-block:: spec
%if %{_host} == %{nil} <1> %if %{_host} == %{nil} <1>
%error No RTEMS target specified: --host=host %error No RTEMS target specified: --host=host
@ -217,7 +221,9 @@ the ``${_prefix}`` is used::
RTEMS exports the build flags used in *pkgconfig* (.pc) files and the RSB can RTEMS exports the build flags used in *pkgconfig* (.pc) files and the RSB can
read and manage them even when there is no pkgconfig support installed on your read and manage them even when there is no pkgconfig support installed on your
build machine. Using this support we can obtain a BSP's configuration and set build machine. Using this support we can obtain a BSP's configuration and set
some standard macros variables (``rtems/config/rtems-bsp.cfg``):: some standard macros variables (``rtems/config/rtems-bsp.cfg``):
.. code-block:: spec
%{pkgconfig prefix %{_prefix}/lib/pkgconfig} <1> %{pkgconfig prefix %{_prefix}/lib/pkgconfig} <1>
%{pkgconfig crosscompile yes} <2> %{pkgconfig crosscompile yes} <2>
@ -246,7 +252,9 @@ The flags obtain by pkgconfig and given a ``rtems_bsp_`` prefix and we uses thes
to set the RSB host support CFLAGS, LDFLAGS and LIBS flags. When we build a 3rd to set the RSB host support CFLAGS, LDFLAGS and LIBS flags. When we build a 3rd
party library your host computer is the _build_ machine and RTEMS is the _host_ party library your host computer is the _build_ machine and RTEMS is the _host_
machine therefore we set the ``host`` variables machine therefore we set the ``host`` variables
(``rtems/config/rtems-bsp.cfg``):: (``rtems/config/rtems-bsp.cfg``):
.. code-block:: spec
%define host_cflags %{rtems_bsp_cflags} %define host_cflags %{rtems_bsp_cflags}
%define host_ldflags %{rtems_bsp_ldflags} %define host_ldflags %{rtems_bsp_ldflags}
@ -257,7 +265,9 @@ package. Packages by default consider the ``_prefix`` the base and install
various files under this tree. The package you are building is specific to a various files under this tree. The package you are building is specific to a
BSP and so needs to install into the specific BSP path under the BSP and so needs to install into the specific BSP path under the
``_prefix``. This allows more than BSP build of this package to be install ``_prefix``. This allows more than BSP build of this package to be install
under the same ``_prefix`` at the same time (``rtems/config/rtems-bsp.cfg``):: under the same ``_prefix`` at the same time (``rtems/config/rtems-bsp.cfg``):
.. code-block:: spec
%define rtems_bsp_prefix %{_prefix}/%{_host}/%{rtems_bsp} <1> %define rtems_bsp_prefix %{_prefix}/%{_host}/%{rtems_bsp} <1>
%define _exec_prefix %{rtems_bsp_prefix} %define _exec_prefix %{rtems_bsp_prefix}
@ -285,7 +295,9 @@ under the same ``_prefix`` at the same time (``rtems/config/rtems-bsp.cfg``)::
When you configure a package you can reference these paths and the RSB will When you configure a package you can reference these paths and the RSB will
provide sensible default or in this case map them to the BSP provide sensible default or in this case map them to the BSP
(``source-builder/config/ntp-4-1.cfg``):: (``source-builder/config/ntp-4-1.cfg``):
.. code-block:: spec
../${source_dir_ntp}/configure \ <1> ../${source_dir_ntp}/configure \ <1>
--host=%{_host} \ --host=%{_host} \
@ -306,7 +318,7 @@ provide sensible default or in this case map them to the BSP
1. The configure command for NTP. 1. The configure command for NTP.
RTEMS BSP Configuration RTEMS BSP Configuration
----------------------- ^^^^^^^^^^^^^^^^^^^^^^^
To build a package for RTEMS you need to build it with the matching BSP To build a package for RTEMS you need to build it with the matching BSP
configuration. A BSP can be built with specific flags that require all code configuration. A BSP can be built with specific flags that require all code

View File

@ -5,7 +5,7 @@
.. _WhyBuildFromSource: .. _WhyBuildFromSource:
Why Build from Source? Why Build from Source?
====================== ----------------------
The RTEMS Source Builder is not a replacement for the binary install systems The RTEMS Source Builder is not a replacement for the binary install systems
you have with commercial operating systems or open source operating system you have with commercial operating systems or open source operating system

View File

@ -13,8 +13,6 @@ Follow the sections of this chapter step by step to get started developing
applications on top of RTEMS. applications on top of RTEMS.
.. toctree:: .. toctree::
:maxdepth: 5
:numbered:
host host
prefixes prefixes

View File

@ -57,6 +57,7 @@ The RTEMS Tester and RTEMS Run are primed using defaults from the file
User configuration file. User configuration file.
.. index:: BSP configuration, User configuration .. index:: BSP configuration, User configuration
BSP and User Configuration BSP and User Configuration
^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^^
@ -65,18 +66,21 @@ configuration file has to have an INI section that is the name of the BSP
passed on the command line. The section has the following mandatory values: passed on the command line. The section has the following mandatory values:
.. index:: bsp .. index:: bsp
``bsp`` ``bsp``
The name of the BSP. The BSP name is used to create a macro map to hold the The name of the BSP. The BSP name is used to create a macro map to hold the
BSP's configuration data. Typically this is the same as the BSP name used on BSP's configuration data. Typically this is the same as the BSP name used on
the command line. the command line.
.. index:: arch .. index:: arch
``arch`` ``arch``
The name of the BSP architecture. This is need for the GDB configuration The name of the BSP architecture. This is need for the GDB configuration
scripts where the architecture specific GDB needs to run. It is mandatory so scripts where the architecture specific GDB needs to run. It is mandatory so
the *arch/bsp* standard RTEMS BSP string can be used. the *arch/bsp* standard RTEMS BSP string can be used.
.. index:: tester .. index:: tester
``tester`` ``tester``
The tester or run configuration script. This is the name of the configuration The tester or run configuration script. This is the name of the configuration
script the RTEMS Tester or RTEMS Run executes as a back end. The ``tester`` script the RTEMS Tester or RTEMS Run executes as a back end. The ``tester``
@ -87,18 +91,22 @@ Target commands support expansion of specific tags to provide a convenient way
for users to customize a local test environment. The parameters expanded are: for users to customize a local test environment. The parameters expanded are:
.. index:: @ARCH@ .. index:: @ARCH@
``@ARCH@`` ``@ARCH@``
The BSP architecture. The BSP architecture.
.. index:: @BSP@ .. index:: @BSP@
``@BSP@`` ``@BSP@``
The BSP's name set by the ``bsp`` value. The BSP's name set by the ``bsp`` value.
.. index:: @EXE@ .. index:: @EXE@
``@EXE@`` ``@EXE@``
The executable name as an absolute path The executable name as an absolute path
.. index:: @FEXE@ .. index:: @FEXE@
``@FEXE@`` ``@FEXE@``
The filtered executable if a ``target_exe_filter`` is provided else the The filtered executable if a ``target_exe_filter`` is provided else the
executable's file name. executable's file name.
@ -107,6 +115,7 @@ The following are optional and depend on the back end being used and the local
target hardware set up: target hardware set up:
.. index:: jobs .. index:: jobs
``jobs`` ``jobs``
The jobs value sets the number of jobs that can be run at once. This setting The jobs value sets the number of jobs that can be run at once. This setting
only effects the RTEMS Tester. The tester can run up to the ``jobs`` value of only effects the RTEMS Tester. The tester can run up to the ``jobs`` value of
@ -116,12 +125,14 @@ target hardware set up:
test timeouts may be recorded. test timeouts may be recorded.
.. index:: bsp_tty_dev .. index:: bsp_tty_dev
``bsp_tty_dev`` ``bsp_tty_dev``
The BSP's tty device. This can be a real device on the host machine the The BSP's tty device. This can be a real device on the host machine the
executable is being run from or it can be a telnet server and port defined executable is being run from or it can be a telnet server and port defined
using the stand host format. See :ref:`tester-consoles` for details. using the stand host format. See :ref:`TesterConsoles` for details.
.. index:: target_pretest_command .. index:: target_pretest_command
``target_pretest_command`` ``target_pretest_command``
The pre-test command is a host shell command that is called before each test The pre-test command is a host shell command that is called before each test
runs. It can be used to construct a suitable environment or image needed by a runs. It can be used to construct a suitable environment or image needed by a
@ -129,12 +140,14 @@ target hardware set up:
and the bootloader specific format is the output. and the bootloader specific format is the output.
.. index:: target_posttest_command .. index:: target_posttest_command
``target_posttest_command`` ``target_posttest_command``
The post-test command is a host shell command that is called after each test The post-test command is a host shell command that is called after each test
has finished. It can be used to destroy any environment or image created by has finished. It can be used to destroy any environment or image created by
the pre-test command. the pre-test command.
.. index:: target_exe_filter .. index:: target_exe_filter
``target_exe_filter`` ``target_exe_filter``
The target executable filter transforms the executable name into a filtered The target executable filter transforms the executable name into a filtered
executable name. This filter lets the tester or run command track the name of executable name. This filter lets the tester or run command track the name of
@ -147,11 +160,13 @@ target hardware set up:
is no need to escape the text in the second part, it is just plain test. is no need to escape the text in the second part, it is just plain test.
.. index:: test_restarts .. index:: test_restarts
``test_restarts`` ``test_restarts``
The number of restarts before the test is considered ``invalid``. Currently The number of restarts before the test is considered ``invalid``. Currently
not used. not used.
.. index:: target_reset_regex .. index:: target_reset_regex
``target_reset_regex`` ``target_reset_regex``
The target reset regular expression. This is a `Python regular expression The target reset regular expression. This is a `Python regular expression
<https://docs.python.org/2/library/re.html#regular-expression-syntax>`_ used <https://docs.python.org/2/library/re.html#regular-expression-syntax>`_ used
@ -161,6 +176,7 @@ target hardware set up:
messages that indicate the boot process as failed. messages that indicate the boot process as failed.
.. index:: target_start_regex .. index:: target_start_regex
``target_start_regex`` ``target_start_regex``
The target start regular expression. This is a Python regular expression to The target start regular expression. This is a Python regular expression to
@ -169,6 +185,7 @@ target hardware set up:
restart and ends the test with a suitable result. restart and ends the test with a suitable result.
.. index:: target_on_command .. index:: target_on_command
``target_on_command`` ``target_on_command``
The target on command is a host shell command that is called before the first The target on command is a host shell command that is called before the first
test. This command powers on a target. Targets should be left powered off test. This command powers on a target. Targets should be left powered off
@ -178,11 +195,13 @@ target hardware set up:
command. command.
.. index:: target_off_command .. index:: target_off_command
``target_off_command`` ``target_off_command``
The target off command is a host shell command that is called after the last The target off command is a host shell command that is called after the last
test powering off the target. test powering off the target.
.. index:: target_reset_command .. index:: target_reset_command
``target_reset_command`` ``target_reset_command``
The target reset command is a host shell command that is called when the The target reset command is a host shell command that is called when the
target needs to be reset. This command can power cycle the target or toggle a target needs to be reset. This command can power cycle the target or toggle a

View File

@ -2,7 +2,7 @@
.. Copyright (C) 2018 Chris Johns <chrisj@rtems.org> .. Copyright (C) 2018 Chris Johns <chrisj@rtems.org>
.. _tester-consoles: .. _TesterConsoles:
Consoles Consoles
-------- --------

View File

@ -20,7 +20,7 @@ JTAG port of a target.
RTEMS Tester using GDB and JTAG RTEMS Tester using GDB and JTAG
The :ref:`fig-tester-gdb-jtag` figure shows the structure of RTEMS Testing The Figure :ref:`fig-tester-gdb-jtag` shows the structure of RTEMS Testing
using GDB and JTAG. The executables are built and the ``rtems-test`` command is using GDB and JTAG. The executables are built and the ``rtems-test`` command is
run from the top of the build directory. The RTEMS Tester executes the BSP run from the top of the build directory. The RTEMS Tester executes the BSP
architecture's GDB and expects the user to provide a ``gdb-script`` to connect architecture's GDB and expects the user to provide a ``gdb-script`` to connect

View File

@ -39,9 +39,11 @@ extend the RTEMS kernel's build time and use more disk space but it worth
building and running them. The RTEMS test executables have the ``.exe`` file building and running them. The RTEMS test executables have the ``.exe`` file
extension. extension.
.. include:: tests.rst .. toctree::
.. include:: configuration.rst
.. include:: consoles.rst tests
.. include:: simulation.rst configuration
.. include:: gdb-jtag.rst consoles
.. include:: tftp.rst simulation
gdb-jtag
tftp

View File

@ -71,15 +71,18 @@ Test States
The tests states are: The tests states are:
.. index:: test state passed .. index:: test state passed
``passed`` ``passed``
The test start and end banners have been sent to the console. The test start and end banners have been sent to the console.
.. index:: test state failure .. index:: test state failure
``failure`` ``failure``
The test start banner has been sent to the console and no end banner has been The test start banner has been sent to the console and no end banner has been
seen when a target restart is detected. seen when a target restart is detected.
.. index:: test state expected-fail .. index:: test state expected-fail
``excepted-fail`` ``excepted-fail``
The test is tagged as ``expected-fail`` in the RTEMS sources for this BSP and The test is tagged as ``expected-fail`` in the RTEMS sources for this BSP and
outputs the banner ``*** TEST STATE: EXPECTED_FAIL``. The test is known not outputs the banner ``*** TEST STATE: EXPECTED_FAIL``. The test is known not
@ -88,6 +91,7 @@ The tests states are:
otherwise it is recorded as *expected-fail*. otherwise it is recorded as *expected-fail*.
.. index:: test state indeterminate .. index:: test state indeterminate
``indeterminate`` ``indeterminate``
The test is tagged as ``indeterminate`` in the RTEMS sources for this BSP and The test is tagged as ``indeterminate`` in the RTEMS sources for this BSP and
outputs the banner ``*** TEST STATE: INDETERMINATE``. The test may or may not outputs the banner ``*** TEST STATE: INDETERMINATE``. The test may or may not
@ -95,12 +99,14 @@ The tests states are:
the test run as far as it can and record the result as indeterminate. the test run as far as it can and record the result as indeterminate.
.. index:: test state user-input .. index:: test state user-input
``user-input`` ``user-input``
The test is tagged as ``user-input`` in the RTEMS sources and outputs the The test is tagged as ``user-input`` in the RTEMS sources and outputs the
banner ``*** TEST STATE: USER_INPUT``. The RTEMS Tester will reset the target banner ``*** TEST STATE: USER_INPUT``. The RTEMS Tester will reset the target
if the target's configuration provides a target reset command. if the target's configuration provides a target reset command.
.. index:: test state benchmark .. index:: test state benchmark
``benchmark`` ``benchmark``
The test is tagged as ``benchmark`` in the RTEMS sources and outputs the The test is tagged as ``benchmark`` in the RTEMS sources and outputs the
banner ``*** TEST STATE: BENCHMARK``. Benchmarks can take a while to run and banner ``*** TEST STATE: BENCHMARK``. Benchmarks can take a while to run and
@ -108,6 +114,7 @@ The tests states are:
the target if the target's configuration provides a target reset command. the target if the target's configuration provides a target reset command.
.. index:: test state timeout .. index:: test state timeout
``timeout`` ``timeout``
The test start banner has been sent to the console and no end banner is seen The test start banner has been sent to the console and no end banner is seen
within the *timeout* period and the target has not restart. A default within the *timeout* period and the target has not restart. A default
@ -115,6 +122,7 @@ The tests states are:
provide on the RTEMS Tester's command line using the ``--timeout`` option. provide on the RTEMS Tester's command line using the ``--timeout`` option.
.. index:: test state invalid .. index:: test state invalid
``invalid`` ``invalid``
The test did not output a start banner and the RTEMS Tester has detected the The test did not output a start banner and the RTEMS Tester has detected the
target has restarted. This means the executable did not load correctly, the target has restarted. This means the executable did not load correctly, the
@ -171,38 +179,45 @@ Test Builds
The test reports the build of RTEMS being tested. The build are: The test reports the build of RTEMS being tested. The build are:
.. index:: build default .. index:: build default
``default`` ``default``
The build is the default. No RTEMS configure options have been used. The build is the default. No RTEMS configure options have been used.
.. index:: build posix .. index:: build posix
``posix`` ``posix``
The build includes the POSIX API. The RTEMS configure option The build includes the POSIX API. The RTEMS configure option
``--enable-posix`` has been used. The ``cpuopts.h`` define ``RTEMS_POSIX`` ``--enable-posix`` has been used. The ``cpuopts.h`` define ``RTEMS_POSIX``
has defined and it true. has defined and it true.
.. index:: build smp .. index:: build smp
``smp`` ``smp``
The build is an SMP kernel. The RTEMS configure option ``--enable-smp`` has The build is an SMP kernel. The RTEMS configure option ``--enable-smp`` has
been used. The ``cpuopts.h`` define ``RTEMS_SMP`` has defined and it true. been used. The ``cpuopts.h`` define ``RTEMS_SMP`` has defined and it true.
.. index:: build mp .. index:: build mp
``mp`` ``mp``
The build is an MP kernel. The RTEMS configure option The build is an MP kernel. The RTEMS configure option
``--enable-multiprocessing`` has been used. The ``cpuopts.h`` define ``--enable-multiprocessing`` has been used. The ``cpuopts.h`` define
``RTEMS_MULTIPROCESSING`` has defined and it true. ``RTEMS_MULTIPROCESSING`` has defined and it true.
.. index:: build paravirt .. index:: build paravirt
``paravirt`` ``paravirt``
The build is a paravirtualization kernel. The ``cpuopts.h`` define The build is a paravirtualization kernel. The ``cpuopts.h`` define
``RTEMS_PARAVIRT`` has defined and it true. ``RTEMS_PARAVIRT`` has defined and it true.
.. index:: build debug .. index:: build debug
``debug`` ``debug``
The build includes kernel debugging support. The RTEMS configure option The build includes kernel debugging support. The RTEMS configure option
``--enable-debug`` has been used. The ``cpuopts.h`` define ``RTEMS_DEBUG`` ``--enable-debug`` has been used. The ``cpuopts.h`` define ``RTEMS_DEBUG``
has defined and it true. has defined and it true.
.. index:: build profiling .. index:: build profiling
``profiling`` ``profiling``
The build include profiling support. The RTEMS configure option The build include profiling support. The RTEMS configure option
``--enable-profiling`` has been used. The ``cpuopts.h`` define ``--enable-profiling`` has been used. The ``cpuopts.h`` define

View File

@ -22,9 +22,10 @@ U-Boot script.
RTEMS Tester using TFTP and U-Boot. RTEMS Tester using TFTP and U-Boot.
The :ref:`fig-tester-tftp-u-boot` figure shows the structure and control flow The Figure :ref:`fig-tester-tftp-u-boot` figure shows the structure and
of the RTEMS Tester using TFTP and U-boot. The executables are built and the control flow of the RTEMS Tester using TFTP and U-boot. The executables are
``rtems-test`` command is run from the top of the build directory. built and the ``rtems-test`` command is run from the top of the build
directory.
This test mode can only support a single test job running at once. You cannot This test mode can only support a single test job running at once. You cannot
add more test target hardware and run the tests in parallel. add more test target hardware and run the tests in parallel.
@ -45,7 +46,7 @@ The RTEMS Tester TFTP and U-Boot method of testing requires:
#. Console interface cable that matches your target's console UART interface. #. Console interface cable that matches your target's console UART interface.
#. Telnet terminal server. See :ref:`tester-consoles`. #. Telnet terminal server. See :ref:`TesterConsoles`.
The network power or IO switch is a device that can control power or an IO pin The network power or IO switch is a device that can control power or an IO pin
over a network connection using a script-able protocol such as Telnet or over a network connection using a script-able protocol such as Telnet or
@ -58,7 +59,9 @@ Obtain a working image of the U-Boot boot loader for your target. We suggest
you follow the instructions for you target. you follow the instructions for you target.
Configure U-Boot to network boot using the TFTP protocol. This is U-Boot script Configure U-Boot to network boot using the TFTP protocol. This is U-Boot script
for a Zedboard:: for a Zedboard:
.. code-block:: shell
loadaddr=0x02000000 loadaddr=0x02000000
uenvcmd=echo Booting RTEMS Zed from net; set autoload no; dhcp; set serverip 10.10.5.2; tftpboot zed/rtems.img; bootm; reset; uenvcmd=echo Booting RTEMS Zed from net; set autoload no; dhcp; set serverip 10.10.5.2; tftpboot zed/rtems.img; bootm; reset;
@ -86,7 +89,9 @@ The BSP's configuration file must contain the standard fields:
- ``jobs`` - Must be set to ``1``. - ``jobs`` - Must be set to ``1``.
- ``tester`` - Set to ``%{_rtscripts}/tftp.cfg`` - ``tester`` - Set to ``%{_rtscripts}/tftp.cfg``
For example the Zedboard's configuration is:: For example the Zedboard's configuration is:
.. code-block:: ini
[xilinx_zynq_zedboard] [xilinx_zynq_zedboard]
bsp = xilinx_zynq_zedboard bsp = xilinx_zynq_zedboard
@ -159,14 +164,18 @@ substituted. The parameters are:
substituted substituted
Some of these field are normally provided by a user's configuration. To do this Some of these field are normally provided by a user's configuration. To do this
use:: use:
.. code-block:: shell
requires = bsp_tty_dev, target_on_command, target_off_command, target_reset_command requires = bsp_tty_dev, target_on_command, target_off_command, target_reset_command
The ``requires`` value requires the user provide these settings in their The ``requires`` value requires the user provide these settings in their
configuration file. configuration file.
The Zedboard's configuration file is:: The Zedboard's configuration file is:
.. code-block:: ini
[xilinx_zynq_zedboard] [xilinx_zynq_zedboard]
bsp = xilinx_zynq_zedboard bsp = xilinx_zynq_zedboard
@ -186,7 +195,9 @@ happen if U-Boot cannot detect the PHY device. It also checks if too many DHCP
requests happen and finally a check is made for any timeouts reported by requests happen and finally a check is made for any timeouts reported by
U-Boot. U-Boot.
An example of a user configuration for the Zedboard is:: An example of a user configuration for the Zedboard is:
.. code-block:: ini
[xilinx_zynq_zedboard] [xilinx_zynq_zedboard]
bsp_tty_dev = selserver:12345 bsp_tty_dev = selserver:12345

View File

@ -98,7 +98,7 @@ traces the context switches between these tasks. ``cwceil`` and ``cwfloor`` are
set to a narrow range of task priorities to avoid creating noise from a large set to a narrow range of task priorities to avoid creating noise from a large
number of context switches between tasks we are not interested in. number of context switches between tasks we are not interested in.
.. code:: shell .. code-block:: shell
*** BEGIN OF TEST CAPTURE ENGINE *** *** BEGIN OF TEST CAPTURE ENGINE ***
*** TEST VERSION: 5.0.0.de9b7d712bf5da6593386fd4fbca0d5f8b8431d8 *** TEST VERSION: 5.0.0.de9b7d712bf5da6593386fd4fbca0d5f8b8431d8

View File

@ -46,7 +46,7 @@ has been stored) run the following commands to generate traces:
BSP is configured with the following command - BSP is configured with the following command -
.. code:: shell .. code-block:: shell
../rtems/configure --target=sparc-rtems5 --prefix=/development/rtems/5 \ ../rtems/configure --target=sparc-rtems5 --prefix=/development/rtems/5 \
--enable-networking --enable-tests --enable-rtemsbsp=erc32 --enable-cxx --enable-networking --enable-tests --enable-rtemsbsp=erc32 --enable-cxx
@ -58,7 +58,7 @@ following commands according to your installation. Also confirm the path of the
fileio's executable and object files in the last line of the command according fileio's executable and object files in the last line of the command according
to your installation. to your installation.
.. code:: shell .. code-block:: shell
sparc-rtems5-gcc -Bsparc-rtems5/erc32/lib/ \ sparc-rtems5-gcc -Bsparc-rtems5/erc32/lib/ \
-specs bsp_specs -qrtems -mcpu=cypress -O2 -g -ffunction-sections \ -specs bsp_specs -qrtems -mcpu=cypress -O2 -g -ffunction-sections \
@ -72,7 +72,7 @@ the application. The link command follows the escape sequence "--". "-C" option
denotes the name of the user configuration file and "-W" specifies the name of denotes the name of the user configuration file and "-W" specifies the name of
the wrapper c file. the wrapper c file.
.. code:: shell .. code-block:: shell
rtems-tld -C fileio-trace.ini -W fileio-wrapper -- -Bsparc-rtems5/erc32/lib/ \ rtems-tld -C fileio-trace.ini -W fileio-wrapper -- -Bsparc-rtems5/erc32/lib/ \
-specs bsp_specs -qrtems -mcpu=cypress -O2 -g -ffunction-sections \ -specs bsp_specs -qrtems -mcpu=cypress -O2 -g -ffunction-sections \
@ -88,13 +88,13 @@ display the contents of the trace buffer and save the buffer to disk in the form
of binary files. Use `rtrace -l` to list the availalble options for commands of binary files. Use `rtrace -l` to list the availalble options for commands
with `rtrace`. with `rtrace`.
.. code:: shell .. code-block:: shell
sparc-rtems5-run sparc-rtems5/c/erc32/testsuites/samples/fileio.exe sparc-rtems5-run sparc-rtems5/c/erc32/testsuites/samples/fileio.exe
The output from the above commands will be as follows: The output from the above commands will be as follows:
.. code:: shell .. code-block:: shell
*** BEGIN OF TEST FILE I/O *** *** BEGIN OF TEST FILE I/O ***
*** TEST VERSION: 5.0.0.de9b7d712bf5da6593386fd4fbca0d5f8b8431d8 *** TEST VERSION: 5.0.0.de9b7d712bf5da6593386fd4fbca0d5f8b8431d8

View File

@ -2,7 +2,7 @@
.. Copyright (C) 2016 Chris Johns <chrisj@rtems.org> .. Copyright (C) 2016 Chris Johns <chrisj@rtems.org>
.. _introduction: .. _IntroductionToTracing:
Introduction to Tracing Introduction to Tracing
*********************** ***********************

View File

@ -92,7 +92,7 @@ used to include other INI files using the include key name. This is shown in the
following example where the values indicate rtems and rtld-base configuration following example where the values indicate rtems and rtld-base configuration
files: files:
.. code-block:: shell .. code-block:: ini
include = rtems.ini, rtld-base.ini include = rtems.ini, rtld-base.ini
@ -100,7 +100,7 @@ The trace linker also uses values in keys to specify other sections. In this
example the functions name lists `test-trace-funcs` and that section contains a example the functions name lists `test-trace-funcs` and that section contains a
headers key that further references a section called `test-headers`: headers key that further references a section called `test-headers`:
.. code-block:: shell .. code-block:: ini
functions = test-trace-funcs, rtems-api functions = test-trace-funcs, rtems-api
@ -143,7 +143,7 @@ following keys:
The tracer section of the file:`test-trace.ini` is shown below with explanatory The tracer section of the file:`test-trace.ini` is shown below with explanatory
comments. comments.
.. code-block:: shell .. code-block:: ini
; ;
; RTEMS Trace Linker Test Configuration. ; RTEMS Trace Linker Test Configuration.
@ -212,7 +212,7 @@ general options section can contain following sets of keys:
The options section of the file: `test-trace.ini` uses two of the aforementioned The options section of the file: `test-trace.ini` uses two of the aforementioned
keys as shown below: keys as shown below:
.. code-block:: shell .. code-block:: ini
; ;
; Options can be defined here or on the command line. ; Options can be defined here or on the command line.
@ -250,7 +250,7 @@ The trace section of the file: `test-trace.ini` is shown below. A trace section
can reference other trace sections of a specific type. This allows a trace can reference other trace sections of a specific type. This allows a trace
sections to build on other trace sections. sections to build on other trace sections.
.. code:: shell .. code-block:: ini
; User application trace example. ; User application trace example.
; ;
@ -421,7 +421,7 @@ The file: `test-trace.ini` specifies ``printf-generator`` as its generator. This
section can be found in the file: `rtld-print.ini` in the rtems-tools directory section can be found in the file: `rtld-print.ini` in the rtems-tools directory
and is shown below: and is shown below:
.. code:: shell .. code:: ini
; ;
; A printf generator prints to stdout the trace functions. ; A printf generator prints to stdout the trace functions.

View File

@ -1,7 +1,13 @@
from common.waf import cmd_configure as configure from common.waf import cmd_configure as configure
from common.waf import cmd_build as build from common.waf import cmd_build as doc_build
from common.waf import cmd_options as options from common.waf import cmd_options as options
from common.waf import spell from common.waf import spell
from common.waf import cmd_spell from common.waf import cmd_spell
from common.waf import linkcheck from common.waf import linkcheck
from common.waf import cmd_linkcheck from common.waf import cmd_linkcheck
def build(ctx):
sources = {
'exclude' : ['apps/index.rst']
}
doc_build(ctx, sources = sources)