source: rtems-docs/user/start/installation.rst @ c05e43b

4.115am
Last change on this file since c05e43b was c05e43b, checked in by Chris Johns <chrisj@…>, on 03/09/16 at 04:37:31

User manual, devel install and windows install.

  • Property mode set to 100644
File size: 33.2 KB
Line 
1.. comment: Copyright (c) 2016 Chris Johns <chrisj@rtems.org>
2.. comment: All rights reserved.
3
4Installation
5============
6
7.. index:: Installation
8
9RTEMS is built from source on your host machine. Releases are available from
10our :r:url:`ftp` and each release contains a Quick Start build guide. If you
11are wanting to track changes to RTEMS as they happen or you want to make
12changes to RTEMS to send back to the project on our :r:list:`devel` then you
13can use the developer's version available in our :r:url:`git`.
14
15RTEMS supports development on a wide vararity of hosts. There is no preferred
16host operating system the project requires you use. This means you are able to
17decide on a host operating system that is your passion, suites your needs, or
18in some cases is decided for you by your employer. Our aim is to provide a
19consistent user experience and on matching hardware the experience should feel
20similar.
21
22The RTEMS core development team uses POSIX type operating systems, that is
23Unix.  The `Released Version`_ and `Development Version`_ sections assume
24Unix. Microsoft Windows is documented in a separate section
25:ref:`microsoft-windows-installation`.
26
27Released Version
28----------------
29
30.. index:: Tarball
31
32XXX: Tarball
33
34Development Version
35-------------------
36.. index:: Git
37
38RTEMS provides open access to it's development processes. The project encouages
39all users to inspect, review, comment and contribute to the code base. The
40processes described here are the same processes the core development team use
41when developing and maintaining RTEMS.
42
43.. warning::
44
45   The development version is not for use in production and it can break from
46   time to time.
47
48.. sidebar:: *GDB and Python*
49
50   RTEMS uses Python in GDB to aid debugging which means GDB needs to be built
51   with Python development libraries. Please check the RSB documentation and
52   install the packages specified for your host. Make sure a python development
53   package is included.
54
55The following procedure assumes you have installed and configured your host
56operating. It also assumes you have installed any dependent packages needed
57when building the tools and the kernel.
58
59You need to select a location to build and install the RTEMS Tool chain and
60RTEMS. Make sure there is plenty of disk space and a fast disk is
61recommended. Our procedure will document building and installing the tools in a
62home directory called :file:`development/rtems`. Using a home directory means
63you can do this without needing to be root. You can also use
64:file:`/opt/rtems/build` if you have access to that path.
65
66The location used to install the tools and kernel is called the `prefix`. It is
67best to have a `prefix` for each different version of RTEMS you are using. If
68you are using RTEMS 4.11 in production it is not a good to install a
69development version of 4.12 over the top. A separate `prefix` for each version
70avoids this.
71
72The RTEMS tool chain changes less often than the RTEMS kernel. One method of
73working with development releases is to have a separate `prefix` for the RTEMS
74tools and a different one for the RTEMS kernel. You can then update each
75without interacting with the other. You can also have a number of RTEMS
76versions available to test with.
77
78This procedure will build a SPARC tool chain.
79
80RTEMS Tools Chain
81~~~~~~~~~~~~~~~~~
82
83Clone the RTEMS Source Builder (RSB) repository:
84
85.. code-block:: shell
86
87  $ cd
88  $ mkdir -p development/rtems
89  $ cd development/rtems
90  $ git clone git://git.rtems.org/rtems-source-builder.git rsb
91  Cloning into 'rsb'...
92  remote: Counting objects: 5837, done.
93  remote: Compressing objects: 100% (2304/2304), done.
94  remote: Total 5837 (delta 4014), reused 5056 (delta 3494)
95  Receiving objects: 100% (5837/5837), 2.48 MiB | 292.00 KiB/s, done.
96  Resolving deltas: 100% (4014/4014), done.
97  Checking connectivity... done.
98
99.. sidebar:: *Downloading the source*
100
101  You need an internet connection to download the source. The downloaded source
102  is cached locally and the RSB checksums it. If you run a build again the
103  download output will be missing. Using the RSB from git will download the
104  source from the upstream project's home site and this could be `http`, `ftp`,
105  or `git`.
106
107Check all the host packages you need are present. Current libraries are not
108checked and this includes checking for the python development libraries GDB
109requires:
110
111.. code-block:: shell
112
113  $ cd rsb
114  $ ./source-builder/sb-check
115  RTEMS Source Builder - Check, 4.12 (e645642255cc)
116  Environment is ok
117
118Build a tool chain for the SPARC architecure. We are using the SPARC
119architecture because GDB has a good simulator that lets us run and test the
120samples RTEMS builds by default. The current development version
121is `4.12` and is on master:
122
123.. code-block:: shell
124
125  $ cd rtems
126  $ ../source-builder/sb-set-builder \
127      --prefix=/usr/home/chris/development/rtems/4.12 4.12/rtems-sparc
128  RTEMS Source Builder - Set Builder, 4.12 (e645642255cc)
129  Build Set: 4.12/rtems-sparc
130  Build Set: 4.12/rtems-autotools.bset
131  Build Set: 4.12/rtems-autotools-internal.bset
132  config: tools/rtems-autoconf-2.69-1.cfg
133  package: autoconf-2.69-x86_64-linux-gnu-1
134  Creating source directory: sources
135  download: ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz -> sources/autoconf-2.69.tar.gz
136  downloading: sources/autoconf-2.69.tar.gz - 1.8MB of 1.8MB (100%)
137  building: autoconf-2.69-x86_64-linux-gnu-1
138  config: tools/rtems-automake-1.12.6-1.cfg
139  package: automake-1.12.6-x86_64-linux-gnu-1
140  download: ftp://ftp.gnu.org/gnu/automake/automake-1.12.6.tar.gz -> sources/automake-1.12.6.tar.gz
141  downloading: sources/automake-1.12.6.tar.gz - 2.0MB of 2.0MB (100%)
142  Creating source directory: patches
143  download: https://git.rtems.org/rtems-tools/plain/tools/4.12/automake/automake-1.12.6-bugzilla.redhat.com-1239379.diff -> patches/automake-1.12.6-bugzilla.redhat.com-1239379.diff
144  downloading: patches/automake-1.12.6-bugzilla.redhat.com-1239379.diff - 408.0 bytes of 408.0 bytes (100%)
145  building: automake-1.12.6-x86_64-linux-gnu-1
146  cleaning: autoconf-2.69-x86_64-linux-gnu-1
147  cleaning: automake-1.12.6-x86_64-linux-gnu-1
148  Build Set: Time 0:00:17.465024
149  Build Set: 4.12/rtems-autotools-base.bset
150  config: tools/rtems-autoconf-2.69-1.cfg
151  package: autoconf-2.69-x86_64-linux-gnu-1
152  building: autoconf-2.69-x86_64-linux-gnu-1
153  reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-linux-gnu-1.txt
154  reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-linux-gnu-1.xml
155  config: tools/rtems-automake-1.12.6-1.cfg
156  package: automake-1.12.6-x86_64-linux-gnu-1
157  building: automake-1.12.6-x86_64-linux-gnu-1
158  reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-linux-gnu-1.txt
159  reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-linux-gnu-1.xml
160  installing: autoconf-2.69-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
161  installing: automake-1.12.6-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
162  cleaning: autoconf-2.69-x86_64-linux-gnu-1
163  cleaning: automake-1.12.6-x86_64-linux-gnu-1
164  Build Set: Time 0:00:05.358624
165  Build Set: Time 0:00:22.824422
166  config: devel/expat-2.1.0-1.cfg
167  package: expat-2.1.0-x86_64-linux-gnu-1
168  download: http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz -> sources/expat-2.1.0.tar.gz
169    redirect: http://internode.dl.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz
170  downloading: sources/expat-2.1.0.tar.gz - 549.4kB of 549.4kB (100%)
171  building: expat-2.1.0-x86_64-linux-gnu-1
172  reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-linux-gnu-1.txt
173  reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-linux-gnu-1.xml
174  config: tools/rtems-binutils-2.26-1.cfg
175  package: sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1
176  download: ftp://ftp.gnu.org/gnu/binutils/binutils-2.26.tar.bz2 -> sources/binutils-2.26.tar.bz2
177  downloading: sources/binutils-2.26.tar.bz2 - 24.4MB of 24.4MB (100%)
178  download: https://git.rtems.org/rtems-tools/plain/tools/4.12/binutils/binutils-2.26-rtems-aarch64-x86_64.patch -> patches/binutils-2.26-rtems-aarch64-x86_64.patch
179  downloading: patches/binutils-2.26-rtems-aarch64-x86_64.patch - 3.2kB of 3.2kB (100%)
180  building: sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1
181  reporting: tools/rtems-binutils-2.26-1.cfg -> sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1.txt
182  reporting: tools/rtems-binutils-2.26-1.cfg -> sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1.xml
183  config: tools/rtems-gcc-6-20160228-newlib-2.3.0.20160226-1.cfg
184  package: sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1
185  download: ftp://gcc.gnu.org/pub/gcc/snapshots/6-20160228/gcc-6-20160228.tar.bz2 -> sources/gcc-6-20160228.tar.bz2
186  downloading: sources/gcc-6-20160228.tar.bz2 - 90.8MB of 90.8MB (100%)
187  download: ftp://sourceware.org/pub/newlib/newlib-2.3.0.20160226.tar.gz -> sources/newlib-2.3.0.20160226.tar.gz
188  downloading: sources/newlib-2.3.0.20160226.tar.gz - 16.9MB of 16.9MB (100%)
189  download: http://www.mpfr.org/mpfr-2.4.2/mpfr-2.4.2.tar.bz2 ->
190  sources/mpfr-2.4.2.tar.bz2
191  downloading: sources/mpfr-2.4.2.tar.bz2 - 1.0MB of 1.0MB (100%)
192  download: http://www.multiprecision.org/mpc/download/mpc-0.8.1.tar.gz -> sources/mpc-0.8.1.tar.gz
193  downloading: sources/mpc-0.8.1.tar.gz - 532.2kB of 532.2kB (100%)
194  download: ftp://ftp.gnu.org/gnu/gmp/gmp-4.3.2.tar.bz2 -> sources/gmp-4.3.2.tar.bz2
195  downloading: sources/gmp-4.3.2.tar.bz2 - 1.8MB of 1.8MB (100%)
196  building: sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1
197  reporting: tools/rtems-gcc-6-20160228-newlib-2.3.0.20160226-1.cfg -> sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1.txt
198  reporting: tools/rtems-gcc-6-20160228-newlib-2.3.0.20160226-1.cfg -> sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1.xml
199  config: tools/rtems-gdb-7.9-1.cfg
200  package: sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1
201  download: http://ftp.gnu.org/gnu/gdb/gdb-7.9.tar.xz -> sources/gdb-7.9.tar.xz
202  downloading: sources/gdb-7.9.tar.xz - 17.0MB of 17.0MB (100%)
203  download: https://git.rtems.org/rtems-tools/plain/tools/4.12/gdb/gdb-sim-arange-inline.diff -> patches/gdb-sim-arange-inline.diff
204  downloading: patches/gdb-sim-arange-inline.diff - 761.0 bytes of 761.0 bytes (100%)
205  download: https://git.rtems.org/rtems-tools/plain/tools/4.12/gdb/gdb-sim-cgen-inline.diff -> patches/gdb-sim-cgen-inline.diff
206  downloading: patches/gdb-sim-cgen-inline.diff - 706.0 bytes of 706.0 bytes (100%)
207  download: https://git.rtems.org/rtems-tools/plain/tools/4.12/gdb/gdb-7.9-aarch64-x86_64.patch -> patches/gdb-7.9-aarch64-x86_64.patch
208  downloading: patches/gdb-7.9-aarch64-x86_64.patch - 1.7kB of 1.7kB (100%)
209  building: sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1
210  reporting: tools/rtems-gdb-7.9-1.cfg -> sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1.txt
211  reporting: tools/rtems-gdb-7.9-1.cfg -> sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1.xml
212  config: tools/rtems-tools-4.12-1.cfg
213  package: rtems-tools-HEAD-1
214  Creating source directory: sources/git
215  git: clone: git://git.rtems.org/rtems-tools.git -> sources/git/rtems-tools.git
216  git: reset: git://git.rtems.org/rtems-tools.git
217  git: fetch: git://git.rtems.org/rtems-tools.git -> sources/git/rtems-tools.git
218  git: checkout: git://git.rtems.org/rtems-tools.git => HEAD
219  git: pull: git://git.rtems.org/rtems-tools.git
220  building: rtems-tools-HEAD-1
221  reporting: tools/rtems-tools-4.12-1.cfg -> rtems-tools-HEAD-1.txt
222  reporting: tools/rtems-tools-4.12-1.cfg -> rtems-tools-HEAD-1.xml
223  installing: expat-2.1.0-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
224  installing: sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
225  installing: sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
226  installing: sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/4.12
227  installing: rtems-tools-HEAD-1 -> /usr/home/chris/development/rtems/4.12
228  cleaning: expat-2.1.0-x86_64-linux-gnu-1
229  cleaning: sparc-rtems4.12-binutils-2.26-x86_64-linux-gnu-1
230  cleaning: sparc-rtems4.12-gcc-6-20160228-newlib-2.3.0.20160226-x86_64-linux-gnu-1
231  cleaning: sparc-rtems4.12-gdb-7.9-x86_64-linux-gnu-1
232  cleaning: rtems-tools-HEAD-1
233  Build Set: Time 0:31:09.754219
234
235RTEMS Kernel
236~~~~~~~~~~~~
237
238We need to set our path to include the RTEMS tools we built in the previous
239section. The RTEMS tools needs to be first in your path because RTEMS provides
240specific versions of the ``autoconf`` and ``automake`` tools. We want to use
241the RTEMS version and not your host's versions:
242
243
244.. code-block:: shell
245
246  $ export PATH=$HOME/development/rtems/4.12/bin:$PATH
247
248Create a new location to build the RTEMS kernel:
249
250.. code-block:: shell
251
252  $ cd
253  $ cd development/rtems
254  $ mkdir kernel
255  $ cd kernel
256
257Clone the RTEMS respository:
258
259.. code-block:: shell
260
261  $ git clone git://git.rtems.org/rtems.git rtems
262  Cloning into 'rtems'...
263  remote: Counting objects: 483342, done.
264  remote: Compressing objects: 100% (88974/88974), done.
265  remote: Total 483342 (delta 390053), reused 475669 (delta 383809)
266  Receiving objects: 100% (483342/483342), 69.88 MiB | 1.37 MiB/s, done.
267  Resolving deltas: 100% (390053/390053), done.
268  Checking connectivity... done.
269
270The developers version of the code from git requires ``bootstrapping``. This is
271an ``autoconf`` and ``automake`` bootstrap to create the various files generated
272by ``autoconf`` and ``automake``. RTEMS does not keep these generated files
273under version control. The bootstrap process is slow so to speed it up the RSB
274provides a command that can perform the bootstrap in parallel using your
275available cores:
276
277.. code-block:: shell
278
279  $ ./bootstrap -c && ./bootstrap -p && \
280              $HOME/development/rtems/rsb/rsb/source-builder/sb-bootstrap
281  removing automake generated Makefile.in files
282  removing configure files
283  removing aclocal.m4 files
284  Generating ./cpukit/dtc/libfdt/preinstall.am
285  Generating ./cpukit/zlib/preinstall.am
286  Generating ./cpukit/libdl/preinstall.am
287  Generating ./cpukit/posix/preinstall.am
288  Generating ./cpukit/pppd/preinstall.am
289  Generating ./cpukit/librpc/preinstall.am
290  Generating ./cpukit/preinstall.am
291  Generating ./cpukit/sapi/preinstall.am
292  Generating ./cpukit/score/preinstall.am
293  Generating ./cpukit/score/cpu/mips/preinstall.am
294  Generating ./cpukit/score/cpu/sh/preinstall.am
295  Generating ./cpukit/score/cpu/sparc/preinstall.am
296  Generating ./cpukit/score/cpu/no_cpu/preinstall.am
297  Generating ./cpukit/score/cpu/arm/preinstall.am
298  Generating ./cpukit/score/cpu/m32c/preinstall.am
299  Generating ./cpukit/score/cpu/moxie/preinstall.am
300  Generating ./cpukit/score/cpu/v850/preinstall.am
301  Generating ./cpukit/score/cpu/sparc64/preinstall.am
302  Generating ./cpukit/score/cpu/or1k/preinstall.am
303  Generating ./cpukit/score/cpu/i386/preinstall.am
304  Generating ./cpukit/score/cpu/nios2/preinstall.am
305  Generating ./cpukit/score/cpu/epiphany/preinstall.am
306  Generating ./cpukit/score/cpu/m68k/preinstall.am
307  Generating ./cpukit/score/cpu/lm32/preinstall.am
308  Generating ./cpukit/score/cpu/powerpc/preinstall.am
309  Generating ./cpukit/score/cpu/bfin/preinstall.am
310  Generating ./cpukit/libpci/preinstall.am
311  Generating ./cpukit/libcrypt/preinstall.am
312  Generating ./cpukit/rtems/preinstall.am
313  Generating ./cpukit/telnetd/preinstall.am
314  Generating ./cpukit/libnetworking/preinstall.a
315   ......
316  Generating ./c/src/lib/libbsp/powerpc/gen5200/preinstall.am
317  Generating ./c/src/lib/libbsp/powerpc/mpc55xxevb/preinstall.am
318  Generating ./c/src/lib/libbsp/bfin/TLL6527M/preinstall.am
319  Generating ./c/src/lib/libbsp/bfin/bf537Stamp/preinstall.am
320  Generating ./c/src/lib/libbsp/bfin/eZKit533/preinstall.am
321  Generating ./c/src/librtems++/preinstall.am
322  Generating ./c/src/libchip/preinstall.am
323  Generating ./c/src/wrapup/preinstall.am
324  Generating ./c/src/ada/preinstall.am
325  RTEMS Source Builder - RTEMS Bootstrap, 4.12 (e645642255cc modified)
326    1/139: autoreconf: configure.ac
327    2/139: autoreconf: cpukit/configure.ac
328    3/139: autoreconf: tools/cpu/configure.ac
329    4/139: autoreconf: tools/cpu/generic/configure.ac
330    5/139: autoreconf: tools/cpu/sh/configure.ac
331    6/139: autoreconf: tools/cpu/nios2/configure.ac
332    7/139: autoreconf: tools/build/configure.ac
333    8/139: autoreconf: doc/configure.ac
334   ......
335  124/139: autoreconf: c/src/make/configure.ac
336  125/139: autoreconf: c/src/librtems++/configure.ac
337  126/139: autoreconf: c/src/ada-tests/configure.ac
338  127/139: autoreconf: testsuites/configure.ac
339  128/139: autoreconf: testsuites/libtests/configure.ac
340  129/139: autoreconf: testsuites/mptests/configure.ac
341  130/139: autoreconf: testsuites/fstests/configure.ac
342  131/139: autoreconf: testsuites/sptests/configure.ac
343  132/139: autoreconf: testsuites/tmtests/configure.ac
344  133/139: autoreconf: testsuites/smptests/configure.ac
345  134/139: autoreconf: testsuites/tools/configure.ac
346  135/139: autoreconf: testsuites/tools/generic/configure.ac
347  136/139: autoreconf: testsuites/psxtests/configure.ac
348  137/139: autoreconf: testsuites/psxtmtests/configure.ac
349  138/139: autoreconf: testsuites/rhealstone/configure.ac
350  139/139: autoreconf: testsuites/samples/configure.ac
351  Bootstrap time: 0:02:47.398824
352
353We build RTEMS in a directory outside of the source tree we have just cloned
354and ``bootstrapped``. You cannot build RTEMS while in the source tree. Lets
355create a suitable directory using the name of the BSP we are going to build:
356
357.. code-block:: shell
358
359  $ cd ..
360  $ mkdir erc32
361  $ cd erc32
362
363Configure RTEMS using the ``configure`` command. We use a full path to
364``configure`` so the object files built contain the absolute path of the source
365files. If you are source level debugging you will be able to access the source
366code to RTEMS from the debugger. We will build for the ``erc32`` BSP with POSIX
367enabled and the networking stack disabled:
368
369.. code-block:: shell
370
371  $ $HOME/development/rtems/kernel/rtems/configure --prefix=$HOME/development/rtems/4.12 \
372                     --target=sparc-rtems4.12 --enable-rtemsbsp=erc32 --enable-posix \
373                     --disable-networking
374  checking for gmake... no
375  checking for make... make
376  checking for RTEMS Version... 4.11.99.0
377  checking build system type... x86_64-pc-linux-gnu
378  checking host system type... x86_64-pc-linux-gnu
379  checking target system type... sparc-unknown-rtems4.12
380  checking for a BSD-compatible install... /usr/bin/install -c
381  checking whether build environment is sane... yes
382  checking for a thread-safe mkdir -p... /bin/mkdir -p
383  checking for gawk... no
384  checking for mawk... mawk
385  checking whether make sets $(MAKE)... yes
386  checking whether to enable maintainer-specific portions of Makefiles... no
387  checking that generated files are newer than configure... done
388   ......
389  checking target system type... sparc-unknown-rtems4.12
390  checking rtems target cpu... sparc
391  checking for a BSD-compatible install... /usr/bin/install -c
392  checking whether build environment is sane... yes
393  checking for sparc-rtems4.12-strip... sparc-rtems4.12-strip
394  checking for a thread-safe mkdir -p... /bin/mkdir -p
395  checking for gawk... no
396  checking for mawk... mawk
397  checking whether make sets $(MAKE)... yes
398  checking whether to enable maintainer-specific portions of Makefiles... no
399  checking that generated files are newer than configure... done
400  configure: creating ./config.status
401  config.status: creating Makefile
402
403  target architecture: sparc.
404  available BSPs: erc32.
405  'make all' will build the following BSPs: erc32.
406  other BSPs can be built with 'make RTEMS_BSP="bsp1 bsp2 ..."'
407
408  config.status: creating Makefile
409
410Build RTEMS using two cores:
411
412.. code-block:: shell
413
414  $ make -j 2
415  Making all in tools/build
416  make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/build'
417  make  all-am
418  make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/build'
419  gcc -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/tools/build     -g -O2 -MT cklength.o -MD -MP -MF .deps/cklength.Tpo -c -o cklength.o /home/chris/development/rtems/kernel/rtems/tools/build/cklength.c
420  gcc -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/tools/build     -g -O2 -MT eolstrip.o -MD -MP -MF .deps/eolstrip.Tpo -c -o eolstrip.o /home/chris/development/rtems/kernel/rtems/tools/build/eolstrip.c
421  mv -f .deps/cklength.Tpo .deps/cklength.Po
422  mv -f .deps/eolstrip.Tpo .deps/eolstrip.Po
423  gcc -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/tools/build     -g -O2 -MT compat.o -MD -MP -MF .deps/compat.Tpo -c -o compat.o /home/chris/development/rtems/kernel/rtems/tools/build/compat.c
424  gcc -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/tools/build     -g -O2 -MT packhex.o -MD -MP -MF .deps/packhex.Tpo -c -o packhex.o /home/chris/development/rtems/kernel/rtems/tools/build/packhex.c
425  mv -f .deps/compat.Tpo .deps/compat.Po
426  gcc -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/tools/build     -g -O2 -MT unhex.o -MD -MP -MF .deps/unhex.Tpo -c -o unhex.o /home/chris/development/rtems/kernel/rtems/tools/build/unhex.c
427  mv -f .deps/packhex.Tpo .deps/packhex.Po
428  gcc -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/tools/build     -g -O2 -MT rtems-bin2c.o -MD -MP -MF .deps/rtems-bin2c.Tpo -c -o rtems-bin2c.o /home/chris/development/rtems/kernel/rtems/tools/build/rtems-bin2c.c
429  mv -f .deps/unhex.Tpo .deps/unhex.Po
430  gcc -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/tools/build     -g -O2 -MT binpatch.o -MD -MP -MF .deps/binpatch.Tpo -c -o binpatch.o /home/chris/development/rtems/kernel/rtems/tools/build/binpatch.c
431  mv -f .deps/rtems-bin2c.Tpo .deps/rtems-bin2c.Po
432  gcc  -g -O2   -o cklength cklength.o
433  mv -f .deps/binpatch.Tpo .deps/binpatch.Po
434  gcc  -g -O2   -o eolstrip eolstrip.o compat.o
435  gcc  -g -O2   -o packhex packhex.o
436  gcc  -g -O2   -o rtems-bin2c rtems-bin2c.o compat.o
437  gcc  -g -O2   -o unhex unhex.o compat.o
438  gcc  -g -O2   -o binpatch binpatch.o
439  make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/build'
440  make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/build'
441  Making all in tools/cpu
442  make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
443  Making all in generic
444  make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu/generic'
445  make[2]: Nothing to be done for 'all'.
446  make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu/generic'
447  make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
448  make[2]: Nothing to be done for 'all-am'.
449  make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
450  make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
451  Making all in testsuites/tools
452  make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32/testsuites/tools'
453  Making all in generic
454  make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/testsuites/tools/generic'
455  make[2]: Nothing to be done for 'all'.
456  make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/testsuites/tools/generic'
457  make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/testsuites/tools'
458  make[2]: Nothing to be done for 'all-am'.
459  make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/testsuites/tools'
460  make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/testsuites/tools'
461  Making all in sparc-rtems4.12/c
462  make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c'
463  Making all in .
464  make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c'
465  Configuring RTEMS_BSP=erc32
466  checking for gmake... no
467  checking for make... make
468  checking build system type... x86_64-pc-linux-gnu
469  checking host system type... sparc-unknown-rtems4.12
470   ......
471  cp paranoia.exe paranoia.ralf
472  make[6]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c/erc32/testsuites/samples/paranoia'
473  Making all in nsecs
474  make[6]: Entering directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c/erc32/testsuites/samples/nsecs'
475  sparc-rtems4.12-gcc -B../../../../../erc32/lib/ -specs bsp_specs -qrtems -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/c/src/../../testsuites/samples/nsecs -I.. -I/home/chris/development/rtems/kernel/rtems/c/src/../../testsuites/samples/../support/include   -mcpu=cypress -O2 -g -ffunction-sections -fdata-sections -Wall -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -MT init.o -MD -MP -MF .deps/init.Tpo -c -o init.o /home/chris/development/rtems/kernel/rtems/c/src/../../testsuites/samples/nsecs/init.c
476  sparc-rtems4.12-gcc -B../../../../../erc32/lib/ -specs bsp_specs -qrtems -DHAVE_CONFIG_H -I. -I/home/chris/development/rtems/kernel/rtems/c/src/../../testsuites/samples/nsecs -I.. -I/home/chris/development/rtems/kernel/rtems/c/src/../../testsuites/samples/../support/include   -mcpu=cypress -O2 -g -ffunction-sections -fdata-sections -Wall -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -MT empty.o -MD -MP -MF .deps/empty.Tpo -c -o empty.o /home/chris/development/rtems/kernel/rtems/c/src/../../testsuites/samples/nsecs/empty.c
477  mv -f .deps/empty.Tpo .deps/empty.Po
478  mv -f .deps/init.Tpo .deps/init.Po
479  sparc-rtems4.12-gcc -B../../../../../erc32/lib/ -specs bsp_specs -qrtems -mcpu=cypress -O2 -g -ffunction-sections -fdata-sections -Wall -Wmissing-prototypes -Wimplicit-function-declaration -Wstrict-prototypes -Wnested-externs -Wl,--gc-sections  -mcpu=cypress   -o nsecs.exe init.o empty.o
480  sparc-rtems4.12-nm -g -n nsecs.exe > nsecs.num
481  sparc-rtems4.12-size nsecs.exe
482     text    data     bss     dec     hex filename
483   121392    1888    6624  129904   1fb70 nsecs.exe
484  cp nsecs.exe nsecs.ralf
485  make[6]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c/erc32/testsuites/samples/nsecs'
486  make[5]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c/erc32/testsuites/samples'
487  make[4]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c/erc32/testsuites/samples'
488  make[4]: Entering directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c/erc32/testsuites'
489  make[4]: Nothing to be done for 'all-am'.
490  make[4]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c/erc32/testsuites'
491  make[3]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c/erc32/testsuites'
492  make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c/erc32'
493  make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c'
494  make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32'
495  make[1]: Nothing to be done for 'all-am'.
496  make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32'
497
498All that remains to be done is to install the kernel. Installing RTEMS copies
499the API headers and architecture specific libraries to a locaiton under the
500`prefix` you provide. You can install any number of BSPs under the same
501`prefix`. We recommend you have a separate `prefix` for different versions of
502RTEMS. Do not mix versions of RTEMS under the same `prefix`. Make installs
503RTEMS with the following command:
504
505.. code-block:: shell
506
507  $ make install
508  Making install in tools/build
509  make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/build'
510  make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/build'
511  /bin/mkdir -p '/home/chris/development/rtems/4.12/bin'
512  /usr/bin/install -c cklength eolstrip packhex unhex rtems-bin2c '/home/chris/development/rtems/4.12/bin'
513  /bin/mkdir -p '/home/chris/development/rtems/4.12/bin'
514  /usr/bin/install -c install-if-change '/home/chris/development/rtems/4.12/bin'
515  make[2]: Nothing to be done for 'install-data-am'.
516  make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/build'
517  make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/build'
518  Making install in tools/cpu
519  make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
520  Making install in generic
521  make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu/generic'
522  make[3]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu/generic'
523  make[3]: Nothing to be done for 'install-exec-am'.
524  make[3]: Nothing to be done for 'install-data-am'.
525  make[3]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu/generic'
526  make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu/generic'
527  make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
528  make[3]: Entering directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
529  make[3]: Nothing to be done for 'install-exec-am'.
530  make[3]: Nothing to be done for 'install-data-am'.
531  make[3]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
532  make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu'
533  make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/tools/cpu
534   ......
535  make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32/sparc-rtems4.12/c'
536  make[1]: Entering directory '/home/chris/development/rtems/kernel/erc32'
537  make[2]: Entering directory '/home/chris/development/rtems/kernel/erc32'
538  make[2]: Nothing to be done for 'install-exec-am'.
539  /bin/mkdir -p '/home/chris/development/rtems/4.12/make'
540  /usr/bin/install -c -m 644 /home/chris/development/rtems/kernel/rtems/make/main.cfg /home/chris/development/rtems/kernel/rtems/make/leaf.cfg '/home/chris/development/rtems/4.12/make'
541  /bin/mkdir -p '/home/chris/development/rtems/4.12/share/rtems4.12/make/Templates'
542  /usr/bin/install -c -m 644 /home/chris/development/rtems/kernel/rtems/make/Templates/Makefile.dir /home/chris/development/rtems/kernel/rtems/make/Templates/Makefile.leaf /home/chris/development/rtems/kernel/rtems/make/Templates/Makefile.lib '/home/chris/development/rtems/4.12/share/rtems4.12/make/Templates'
543  /bin/mkdir -p '/home/chris/development/rtems/4.12/make/custom'
544  /usr/bin/install -c -m 644 /home/chris/development/rtems/kernel/rtems/make/custom/default.cfg '/home/chris/development/rtems/4.12/make/custom'
545  make[2]: Leaving directory '/home/chris/development/rtems/kernel/erc32'
546  make[1]: Leaving directory '/home/chris/development/rtems/kernel/erc32'
547
548Contributing Patches
549~~~~~~~~~~~~~~~~~~~~
550
551RTEMS welcomes fixes to bugs and new features. The RTEMS Project likes to have
552bugs fixed against a ticket created on our :r:url:`devel`. Please raise a
553ticket if you have a bug. Any changes that are made can be tracked against the
554ticket. If you want to add a new a feature please post a message to
555:r:list:`devel` describing what you would like to implement. The RTEMS
556maintainer will help decide if the feature is in the best interest of the
557project. Not everything is and the maintainers need to evalulate how much
558effort it is to maintain the feature. Once accepted into the source tree it
559becomes the responsibility of the maintainers to keep the feature updated and
560working.
561
562Changes to the source tree are tracked using git. If you have not made changes
563and enter the source tree and enter a git status command you will see nothing
564has changed:
565
566.. code-block:: shell
567
568  $ cd ../rtems
569  $ git status
570  On branch master
571  Your branch is up-to-date with 'origin/master'.
572  nothing to commit, working directory clean
573
574We will make a change to the source code. In this example I change the help
575message to the RTEMS shell's ``halt`` command. Running the same git status
576command reports:
577
578.. code-block:: shell
579
580  $ git status
581  On branch master
582  Your branch is up-to-date with 'origin/master'.
583  Changes not staged for commit:
584    (use "git add <file>..." to update what will be committed)
585    (use "git checkout -- <file>..." to discard changes in working directory)
586
587          modified:   cpukit/libmisc/shell/main_halt.c
588
589  no changes added to commit (use "git add" and/or "git commit -a")
590
591As an example I have a ticket open and the ticket number is 9876. I commit the
592change with the follow git command:
593
594.. code-block:: shell
595
596  $ git commit cpukit/libmisc/shell/main_halt.c
597
598An editor is opened and I enter my commit message. The first line is a title
599and the following lines form a body. My message is:
600
601.. code-block:: shell
602
603  shell: Add more help detail to the halt command.
604
605  Closes #9876.
606
607  # Please enter the commit message for your changes. Lines starting
608  # with '#' will be ignored, and an empty message aborts the commit.
609  # Explicit paths specified without -i or -o; assuming --only paths...
610  #
611  # Committer: Chris Johns <chrisj@rtems.org>
612  #
613  # On branch master
614  # Your branch is up-to-date with 'origin/master'.
615  #
616  # Changes to be committed:
617  #       modified:   cpukit/libmisc/shell/main_halt.c
618
619When you save and exit the editor git will report the commit's status:
620
621.. code-block:: shell
622
623  $ git commit cpukit/libmisc/shell/main_halt.c
624  [master 9f44dc9] shell: Add more help detail to the halt command.
625   1 file changed, 1 insertion(+), 1 deletion(-)
626
627You can either email the patch to :r:list:`devel` with the following git
628command:
629
630.. code-block:: shell
631
632  $ git send-email --to=devel@rtems.org -1
633   <add output here>
634
635Or you can ask git to create a patch file using:
636
637.. code-block:: shell
638
639  $ git format-patch -1
640  0001-shell-Add-more-help-detail-to-the-halt-command.patch
641
642This patch can be attached to a ticket.
Note: See TracBrowser for help on using the repository browser.