source: rtems-docs/user/installation/developer.rst @ 12dccfe

5
Last change on this file since 12dccfe was 12dccfe, checked in by Sebastian Huber <sebastian.huber@…>, on 01/09/19 at 15:14:05

Remove superfluous "All rights reserved."

  • Property mode set to 100644
File size: 34.5 KB
Line 
1.. comment SPDX-License-Identifier: CC-BY-SA-4.0
2
3.. Copyright (C) 2016 Chris Johns <chrisj@rtems.org>
4
5.. _developer:
6.. _development-version:
7.. _unstable:
8
9Developer (Unstable)
10====================
11.. index:: Git
12
13RTEMS provides open access to it's development processes. We call this the
14developer set up.  The project encourages all users to inspect, review, comment
15and contribute to the code base. The processes described here are the same
16processes the core development team use when developing and maintaining RTEMS.
17
18.. warning::
19
20   The development version is not for use in production and it can break from
21   time to time.
22
23Please read :ref:`development-host` before continuing. The following procedure
24assumes you have installed and configured your host operating system. It also
25assumes you have installed any dependent packages needed when building the
26tools and the kernel.
27
28You need to select a location to build and install the RTEMS Tool chain and
29RTEMS. Make sure there is plenty of disk space and a fast disk is
30recommended. Our procedure will document building and installing the tools in a
31home directory called :file:`development/rtems`. Using a home directory means
32you can do this without needing to be root. You can also use
33:file:`/opt/rtems/build` if you have access to that path.
34
35The location used to install the tools and kernel is called the `prefix`. It is
36best to have a `prefix` for each different version of RTEMS you are using. If
37you are using RTEMS 4.11 in production it is not a good idea to install a
38development version of 5 over the top. A separate `prefix` for each version
39avoids this.
40
41The RTEMS tool chain changes less often than the RTEMS kernel. One method of
42working with development releases is to have a separate `prefix` for the RTEMS
43tools and a different one for the RTEMS kernel. You can then update each
44without interacting with the other. You can also have a number of RTEMS
45versions available to test with.
46
47.. sidebar:: *Downloading the source*
48
49  You need an internet connection to download the source. The downloaded source
50  is cached locally and the RSB checksums it. If you run a build again the
51  download output will be missing. Using the RSB from git will download the
52  source from the upstream project's home site and this could be `http`, `ftp`,
53  or `git`.
54
55.. _posix-host-tools-chain:
56.. _macos-host-tools-chain:
57
58POSIX and OS X Host Tools Chain
59-------------------------------
60
61This procedure will build a SPARC tool chain.
62
63Clone the RTEMS Source Builder (RSB) repository:
64
65.. code-block:: shell
66
67  $ cd
68  $ mkdir -p development/rtems
69  $ cd development/rtems
70  $ git clone git://git.rtems.org/rtems-source-builder.git rsb
71  Cloning into 'rsb'...
72  remote: Counting objects: 5837, done.
73  remote: Compressing objects: 100% (2304/2304), done.
74  remote: Total 5837 (delta 4014), reused 5056 (delta 3494)
75  Receiving objects: 100% (5837/5837), 2.48 MiB | 292.00 KiB/s, done.
76  Resolving deltas: 100% (4014/4014), done.
77  Checking connectivity... done.
78
79Check all the host packages you need are present. Current libraries are not
80checked and this includes checking for the python development libraries GDB
81requires:
82
83.. code-block:: shell
84
85  $ cd rsb
86  $ ./source-builder/sb-check
87  RTEMS Source Builder - Check, 5 (089327b5dcf9)
88  Environment is ok
89
90If you are unsure how to specify the build set for the architecture you wish to
91build, just ask the tool:
92
93    $ ../source-builder/sb-set-builder --list-bsets   <1>
94    RTEMS Source Builder - Set Builder, v4.11.0
95    Examining: config
96    Examining: ../source-builder/config    <2>
97        4.10/rtems-all.bset      <3>
98        4.10/rtems-arm.bset      <4>
99        4.10/rtems-autotools.bset
100        4.10/rtems-avr.bset
101        4.10/rtems-bfin.bset
102        4.10/rtems-h8300.bset
103        4.10/rtems-i386.bset
104        4.10/rtems-lm32.bset
105        4.10/rtems-m32c.bset
106        4.10/rtems-m32r.bset
107        4.10/rtems-m68k.bset
108        4.10/rtems-mips.bset
109        4.10/rtems-nios2.bset
110        4.10/rtems-powerpc.bset
111        4.10/rtems-sh.bset
112        4.10/rtems-sparc.bset
113        4.11/rtems-all.bset
114        4.11/rtems-arm.bset
115        4.11/rtems-autotools.bset
116        4.11/rtems-avr.bset
117        4.11/rtems-bfin.bset
118        4.11/rtems-h8300.bset
119        4.11/rtems-i386.bset
120        4.11/rtems-lm32.bset
121        4.11/rtems-m32c.bset
122        4.11/rtems-m32r.bset
123        4.11/rtems-m68k.bset
124        4.11/rtems-microblaze.bset
125        4.11/rtems-mips.bset
126        4.11/rtems-moxie.bset
127        4.11/rtems-nios2.bset
128        4.11/rtems-powerpc.bset
129        4.11/rtems-sh.bset
130        4.11/rtems-sparc.bset
131        4.11/rtems-sparc64.bset
132        4.11/rtems-v850.bset
133        4.9/rtems-all.bset
134        4.9/rtems-arm.bset
135        4.9/rtems-autotools.bset
136        4.9/rtems-i386.bset
137        4.9/rtems-m68k.bset
138        4.9/rtems-mips.bset
139        4.9/rtems-powerpc.bset
140        4.9/rtems-sparc.bset
141        gnu-tools-4.6.bset
142        rtems-4.10-base.bset    <5>
143        rtems-4.11-base.bset
144        rtems-4.9-base.bset
145        rtems-base.bset         <5>
146
147.. topic:: Items:
148
149  1. Only option required is ``--list-bsets``
150
151  2. The paths inspected. See :ref:`Configuration`.
152
153  3. A build set to build all RTEMS 4.10 supported architectures.
154
155  4. The build set for the ARM architecture on RTEMS 4.10.
156
157  5. Support build set file with common functionality included by other build
158     set files.
159
160Build a tool chain for the SPARC architecture. We are using the SPARC
161architecture because GDB has a good simulator that lets us run and test the
162samples RTEMS builds by default. The current development version
163is `5` and is on master:
164
165.. code-block:: shell
166
167  $ cd rtems
168  $ ../source-builder/sb-set-builder --prefix=/usr/home/chris/development/rtems/5 5/rtems-sparc
169  RTEMS Source Builder - Set Builder, 5 (089327b5dcf9)
170  Build Set: 5/rtems-sparc
171  Build Set: 5/rtems-autotools.bset
172  Build Set: 5/rtems-autotools-internal.bset
173  config: tools/rtems-autoconf-2.69-1.cfg
174  package: autoconf-2.69-x86_64-linux-gnu-1
175  Creating source directory: sources
176  download: ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz -> sources/autoconf-2.69.tar.gz
177  downloading: sources/autoconf-2.69.tar.gz - 1.8MB of 1.8MB (100%)
178  building: autoconf-2.69-x86_64-linux-gnu-1
179  config: tools/rtems-automake-1.12.6-1.cfg
180  package: automake-1.12.6-x86_64-linux-gnu-1
181  download: ftp://ftp.gnu.org/gnu/automake/automake-1.12.6.tar.gz -> sources/automake-1.12.6.tar.gz
182  downloading: sources/automake-1.12.6.tar.gz - 2.0MB of 2.0MB (100%)
183  Creating source directory: patches
184  download: https://git.rtems.org/rtems-tools/plain/tools/5/automake/automake-1.12.6-bugzilla.redhat.com-1239379.diff -> patches/automake-1.12.6-bugzilla.redhat.com-1239379.diff
185  downloading: patches/automake-1.12.6-bugzilla.redhat.com-1239379.diff - 408.0 bytes of 408.0 bytes (100%)
186  building: automake-1.12.6-x86_64-linux-gnu-1
187  cleaning: autoconf-2.69-x86_64-linux-gnu-1
188  cleaning: automake-1.12.6-x86_64-linux-gnu-1
189  Build Set: Time 0:00:12.713221
190  Build Set: 5/rtems-autotools-base.bset
191  config: tools/rtems-autoconf-2.69-1.cfg
192  package: autoconf-2.69-x86_64-linux-gnu-1
193  building: autoconf-2.69-x86_64-linux-gnu-1
194  reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-linux-gnu-1.txt
195  reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-linux-gnu-1.xml
196  config: tools/rtems-automake-1.12.6-1.cfg
197  package: automake-1.12.6-x86_64-linux-gnu-1
198  building: automake-1.12.6-x86_64-linux-gnu-1
199  reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-linux-gnu-1.txt
200  reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-linux-gnu-1.xml
201  installing: autoconf-2.69-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/5
202  installing: automake-1.12.6-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/5
203  cleaning: autoconf-2.69-x86_64-linux-gnu-1
204  cleaning: automake-1.12.6-x86_64-linux-gnu-1
205  Build Set: Time 0:00:09.105363
206  Build Set: Time 0:00:21.822083
207  config: devel/expat-2.1.0-1.cfg
208  package: expat-2.1.0-x86_64-linux-gnu-1
209  download: http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz -> sources/expat-2.1.0.tar.gz
210   redirect: https://vorboss.dl.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz
211  downloading: sources/expat-2.1.0.tar.gz - 549.4kB of 549.4kB (100%)
212  building: expat-2.1.0-x86_64-linux-gnu-1
213  reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-linux-gnu-1.txt
214  reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-linux-gnu-1.xml
215  config: tools/rtems-binutils-2.29-1.cfg
216  package: sparc-rtems5-binutils-2.29-x86_64-linux-gnu-1
217  download: ftp://ftp.gnu.org/gnu/binutils/binutils-2.29.tar.bz2 -> sources/binutils-2.29.tar.bz2
218  downloading: sources/binutils-2.29.tar.bz2 - 27.7MB of 27.7MB (100%)
219  download: https://devel.rtems.org/raw-attachment/ticket/3091/0001-Fix-Binutils-2.29-PR21884.patch -> patches/0001-Fix-Binutils-2.29-PR21884.patch
220  downloading: patches/0001-Fix-Binutils-2.29-PR21884.patch - 8.8kB of 8.8kB (100%)
221  building: sparc-rtems5-binutils-2.29-x86_64-linux-gnu-1
222  reporting: tools/rtems-binutils-2.29-1.cfg -> sparc-rtems5-binutils-2.29-x86_64-linux-gnu-1.txt
223  reporting: tools/rtems-binutils-2.29-1.cfg -> sparc-rtems5-binutils-2.29-x86_64-linux-gnu-1.xml
224  config: tools/rtems-gcc-7.2.0-newlib-2.5.0.20170922-1.cfg
225  package: sparc-rtems5-gcc-7.2.0-newlib-2.5.0.20170922-x86_64-linux-gnu-1
226  download: https://ftp.gnu.org/gnu/gcc/gcc-7.2.0/gcc-7.2.0.tar.xz -> sources/gcc-7.2.0.tar.xz
227  downloading: sources/gcc-7.2.0.tar.xz - 59.4MB of 59.4MB (100%)
228  download: https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff_plain;h=62ffbcb7502f0ff88ff7566cd6d7c59c0483ecc0 -> patches/gcc-62ffbcb7502f0ff88ff7566cd6d7c59c0483ecc0.patch
229  downloading: patches/gcc-62ffbcb7502f0ff88ff7566cd6d7c59c0483ecc0.patch - 1.8kB
230  download: https://gcc.gnu.org/git/?p=gcc.git;a=blobdiff_plain;f=gcc/config.gcc;h=593631849bb5e0df5cc4ff42c1a1cc34b7eec2f8;hp=a9196cd26d9ec24c2e3f6026f63348cae3734861;hb=e840389000b8339a63bee56d8b3...<see log> -> patches/gcc-593631849bb5e0df5cc4ff42c1a1cc34b7eec2f8.patch
231  downloading: patches/gcc-593631849bb5e0df5cc4ff42c1a1cc34b7eec2f8.patch - 806.0 bytes
232  download: https://gcc.gnu.org/git/?p=gcc.git;a=blobdiff_plain;f=gcc/config/rs6000/rtems.h;h=7ea9ebdb77b6a9b7060ad2362318e0e12b9058ae;hp=8a62fdcbaf321d616021c4c396619b7f56cf5ed2;hb=e840389000b8339a...<see log> -> patches/gcc-7ea9ebdb77b6a9b7060ad2362318e0e12b9058ae.patch
233  downloading: patches/gcc-7ea9ebdb77b6a9b7060ad2362318e0e12b9058ae.patch - 3.2kB
234  download: ftp://sourceware.org/pub/newlib/newlib-2.5.0.20170922.tar.gz -> sources/newlib-2.5.0.20170922.tar.gz
235  downloading: sources/newlib-2.5.0.20170922.tar.gz - 17.3MB of 17.3MB (100%)
236  download: https://devel.rtems.org/raw-attachment/ticket/2514/0001-RTEMS-Self-contained-POSIX-objects.patch -> patches/0001-RTEMS-Self-contained-POSIX-objects.patch
237  downloading: patches/0001-RTEMS-Self-contained-POSIX-objects.patch - 5.7kB of 5.7kB (100%)
238  download: https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=patch;h=c165a27c0147471977377acd8918ab3b446f947a -> patches/newlib-cygwin-git-c165a27c0147471977377acd8918ab3b446f947a.patch
239  downloading: patches/newlib-cygwin-git-c165a27c0147471977377acd8918ab3b446f947a.patch - 986.0 bytes
240  download: https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=patch;h=ce189d8afef720b0977b5cae7f9eabf5d49b530c -> patches/newlib-cygwin-git-ce189d8afef720b0977b5cae7f9eabf5d49b530c.patch
241  downloading: patches/newlib-cygwin-git-ce189d8afef720b0977b5cae7f9eabf5d49b530c.patch - 3.4kB
242  download: https://ftp.gnu.org/gnu/mpfr/mpfr-3.1.4.tar.bz2 -> sources/mpfr-3.1.4.tar.bz2
243  downloading: sources/mpfr-3.1.4.tar.bz2 - 1.2MB of 1.2MB (100%)
244  download: https://ftp.gnu.org/gnu/mpc/mpc-1.0.3.tar.gz -> sources/mpc-1.0.3.tar.gz
245  downloading: sources/mpc-1.0.3.tar.gz - 654.2kB of 654.2kB (100%)
246  download: https://ftp.gnu.org/gnu/gmp/gmp-6.1.0.tar.bz2 -> sources/gmp-6.1.0.tar.bz2
247  downloading: sources/gmp-6.1.0.tar.bz2 - 2.3MB of 2.3MB (100%)
248  building: sparc-rtems5-gcc-7.2.0-newlib-2.5.0.20170922-x86_64-linux-gnu-1
249  reporting: tools/rtems-gcc-7.2.0-newlib-2.5.0.20170922-1.cfg -> sparc-rtems5-gcc-7.2.0-newlib-2.5.0.20170922-x86_64-linux-gnu-1.txt
250  reporting: tools/rtems-gcc-7.2.0-newlib-2.5.0.20170922-1.cfg -> sparc-rtems5-gcc-7.2.0-newlib-2.5.0.20170922-x86_64-linux-gnu-1.xml
251  config: tools/rtems-gdb-8.0.1-1.cfg
252  package: sparc-rtems5-gdb-8.0.1-x86_64-linux-gnu-1
253  download: http://ftp.gnu.org/gnu/gdb/gdb-8.0.1.tar.xz -> sources/gdb-8.0.1.tar.xz
254  downloading: sources/gdb-8.0.1.tar.xz - 18.7MB of 18.7MB (100%)
255  download: https://gaisler.org/gdb/gdb-8.0.1-sis-leon2-leon3.diff -> patches/gdb-8.0.1-sis-leon2-leon3.diff
256  downloading: patches/gdb-8.0.1-sis-leon2-leon3.diff - 224.5kB of 224.5kB (100%)
257  building: sparc-rtems5-gdb-8.0.1-x86_64-linux-gnu-1
258  reporting: tools/rtems-gdb-8.0.1-1.cfg -> sparc-rtems5-gdb-8.0.1-x86_64-linux-gnu-1.txt
259  reporting: tools/rtems-gdb-8.0.1-1.cfg -> sparc-rtems5-gdb-8.0.1-x86_64-linux-gnu-1.xml
260  config: tools/rtems-tools-5-1.cfg
261  package: rtems-tools-HEAD-1
262  Creating source directory: sources/git
263  git: clone: git://git.rtems.org/rtems-tools.git -> sources/git/rtems-tools.git
264  git: reset: git://git.rtems.org/rtems-tools.git
265  git: fetch: git://git.rtems.org/rtems-tools.git -> sources/git/rtems-tools.git
266  git: checkout: git://git.rtems.org/rtems-tools.git => HEAD
267  git: pull: git://git.rtems.org/rtems-tools.git
268  building: rtems-tools-HEAD-1
269  reporting: tools/rtems-tools-5-1.cfg -> rtems-tools-HEAD-1.txt
270  reporting: tools/rtems-tools-5-1.cfg -> rtems-tools-HEAD-1.xml
271  config: tools/rtems-kernel-5.cfg
272  package: sparc-rtems5-kernel-5-1
273  building: sparc-rtems5-kernel-5-1
274  reporting: tools/rtems-kernel-5.cfg -> sparc-rtems5-kernel-5-1.txt
275  reporting: tools/rtems-kernel-5.cfg -> sparc-rtems5-kernel-5-1.xml
276  installing: expat-2.1.0-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/5
277  installing: sparc-rtems5-binutils-2.29-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/5
278  installing: sparc-rtems5-gcc-7.2.0-newlib-2.5.0.20170922-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/5
279  installing: sparc-rtems5-gdb-8.0.1-x86_64-linux-gnu-1 -> /usr/home/chris/development/rtems/5
280  installing: rtems-tools-HEAD-1 -> /usr/home/chris/development/rtems/5
281  installing: sparc-rtems5-kernel-5-1 -> /usr/home/chris/development/rtems/5
282  cleaning: expat-2.1.0-x86_64-linux-gnu-1
283  cleaning: sparc-rtems5-binutils-2.29-x86_64-linux-gnu-1
284  cleaning: sparc-rtems5-gcc-7.2.0-newlib-2.5.0.20170922-x86_64-linux-gnu-1
285  cleaning: sparc-rtems5-gdb-8.0.1-x86_64-linux-gnu-1
286  cleaning: rtems-tools-HEAD-1
287  cleaning: sparc-rtems5-kernel-5-1
288  Build Set: Time 0:39:33.988995
289.. _windows-tool-chain:
290
291Windows Host Tool Chain
292-----------------------
293.. index:: Microsoft Windows Installation
294
295This section details how you create an RTEMS development environment on
296Windows. The installation documented here is on `Windows 7 64bit
297Professional`. Building on `Windows 10` has been reported as working.
298
299Please see :ref:`microsoft-windows` before continuing.
300
301.. note::
302
303   If the RSB reports ``error: no hosts defaults found; please add`` you have
304   probably opened an MSYS2 32bit Shell. Close all 32bit Shell windows and open
305   the MSYS2 64bit Shell.
306
307RTEMS Windows Tools
308^^^^^^^^^^^^^^^^^^^
309
310Create a workspace for RTEMS using the following shell command:
311
312.. sidebar:: *Creating Tool Archives*
313
314  Add ``--bset-tar-file`` to the ``sb-set-builder`` command line to create
315  tar files of the built package set.
316
317.. code-block:: shell
318
319   ~
320  $ mkdir -p /c/opt/rtems
321
322The ``/c`` path is an internal MSYS2 mount point of the ``C:`` drive. The
323command creates the RTEMS work space on the ``C:`` drive. If you wish to use
324another drive please subsitute ``/c`` with your drive letter.
325
326We build and install all RTEMS packages under the `prefix` we just
327created. Change to that directory and get a copy of the RSB:
328
329.. code-block:: shell
330
331   ~
332  $ cd /c/opt/rtems
333   /c/opt/rtems
334  $ git clone git://git.rtems.org/rtems-source-builder.git rsb
335  Cloning into 'rsb'...
336  remote: Counting objects: 5716, done.
337  remote: Compressing objects: 100% (2183/2183), done.
338  remote: Total 5716 (delta 3919), reused 5071 (delta 3494)
339  Receiving objects: 100% (5716/5716), 2.46 MiB | 656.00 KiB/s, done.
340  Resolving deltas: 100% (3919/3919), done.
341  Checking connectivity... done.
342  Checking out files: 100% (630/630), done.
343   /c/opt/rtems
344  $ cd rsb
345
346We are building RTEMS 4.11 tools so select the *4.11* branch:
347
348.. code-block:: shell
349
350   /c/opt/rtems/rsb
351  $ git checkout 4.11
352  Branch 4.11 set up to track remote branch 4.11 from origin.
353  Switched to a new branch '4.11'
354   /c/opt/rtems/rsb
355  $
356
357Check the RSB has a valid environment:
358
359.. code-block:: shell
360
361   /c/opt/rtems/rsb
362  $ cd rtems
363   /c/opt/rtems/rsb/rtems
364  $ ../source-builder/sb-check
365  RTEMS Source Builder - Check, 4.11 (01ac76f2f90f)
366  Environment is ok
367   /c/opt/rtems/rsb/rtems
368  $
369
370To build a set of RTEMS tools for the Intel ``i386`` architecture. The build
371runs a single job rather than a job per CPU in your machine and will take a
372long time so please be patient. The RSB creates a log file containing all the
373build output and it will be changing size. The RSB command to build ``i386``
374tools is:
375
376.. code-block:: shell
377
378   /c/opt/rtems/rsb/rtems
379  $ ../source-builder/sb-set-builder --prefix=/c/opt/rtems/4.11 \
380                                     --jobs=none 4.11/rtems-i386
381  RTEMS Source Builder - Set Builder, 4.11 (01ac76f2f90f)
382  Build Set: 4.11/rtems-i386
383  Build Set: 4.11/rtems-autotools.bset
384  Build Set: 4.11/rtems-autotools-internal.bset
385  config: tools/rtems-autoconf-2.69-1.cfg
386  package: autoconf-2.69-x86_64-w64-mingw32-1
387  Creating source directory: sources
388  download: ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz -> sources/autoconf-2.69.tar.gz
389  downloading: sources/autoconf-2.69.tar.gz - 1.8MB of 1.8MB (100%)
390   building: autoconf-2.69-x86_64-w64-mingw32-1
391  config: tools/rtems-automake-1.12.6-1.cfg
392  package: automake-1.12.6-x86_64-w64-mingw32-1
393  download: ftp://ftp.gnu.org/gnu/automake/automake-1.12.6.tar.gz -> sources/automake-1.12.6.tar.gz
394  downloading: sources/automake-1.12.6.tar.gz - 2.0MB of 2.0MB (100%)
395   building: automake-1.12.6-x86_64-w64-mingw32-1
396  cleaning: autoconf-2.69-x86_64-w64-mingw32-1
397  cleaning: automake-1.12.6-x86_64-w64-mingw32-1
398  Build Set: Time 0:00:42.515625
399  Build Set: 4.11/rtems-autotools-base.bset
400  config: tools/rtems-autoconf-2.69-1.cfg
401  package: autoconf-2.69-x86_64-w64-mingw32-1
402  building: autoconf-2.69-x86_64-w64-mingw32-1
403  reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-w64-mingw32-1.txt
404  reporting: tools/rtems-autoconf-2.69-1.cfg -> autoconf-2.69-x86_64-w64-mingw32-1.xml
405  config: tools/rtems-automake-1.12.6-1.cfg
406  package: automake-1.12.6-x86_64-w64-mingw32-1
407  building: automake-1.12.6-x86_64-w64-mingw32-1
408  reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-w64-mingw32-1.txt
409  reporting: tools/rtems-automake-1.12.6-1.cfg -> automake-1.12.6-x86_64-w64-mingw32-1.xml
410  tarball: tar/rtems-4.11-autotools-x86_64-w64-mingw32-1.tar.bz2
411  installing: autoconf-2.69-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11
412  installing: automake-1.12.6-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11
413  cleaning: autoconf-2.69-x86_64-w64-mingw32-1
414  cleaning: automake-1.12.6-x86_64-w64-mingw32-1
415  Build Set: Time 0:00:37.718750
416  Build Set: Time 0:01:20.234375
417  config: devel/expat-2.1.0-1.cfg
418  package: expat-2.1.0-x86_64-w64-mingw32-1
419  download: http://downloads.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz -> sources/expat-2.1.0.tar.gz
420   redirect: http://iweb.dl.sourceforge.net/project/expat/expat/2.1.0/expat-2.1.0.tar.gz
421  downloading: sources/expat-2.1.0.tar.gz - 549.4kB of 549.4kB (100%)
422  building: expat-2.1.0-x86_64-w64-mingw32-1
423  reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-w64-mingw32-1.txt
424  reporting: devel/expat-2.1.0-1.cfg -> expat-2.1.0-x86_64-w64-mingw32-1.xml
425  config: tools/rtems-binutils-2.24-1.cfg
426  package: i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1
427  download: ftp://ftp.gnu.org/gnu/binutils/binutils-2.24.tar.bz2 -> sources/binutils-2.24.tar.bz2
428  downloading: sources/binutils-2.24.tar.bz2 - 21.7MB of 21.7MB (100%)
429  building: i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1
430  reporting: tools/rtems-binutils-2.24-1.cfg -> i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1.txt
431  reporting: tools/rtems-binutils-2.24-1.cfg -> i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1.xml
432  config: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg
433  package: i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1
434  download: ftp://ftp.gnu.org/gnu/gcc/gcc-4.9.3/gcc-4.9.3.tar.bz2 -> sources/gcc-4.9.3.tar.bz2
435  downloading: sources/gcc-4.9.3.tar.bz2 - 85.8MB of 85.8MB (100%)
436  download: ftp://sourceware.org/pub/newlib/newlib-2.2.0.20150423.tar.gz -> sources/newlib-2.2.0.20150423.tar.gz
437  downloading: sources/newlib-2.2.0.20150423.tar.gz - 16.7MB of 16.7MB (100%)
438  download: http://www.mpfr.org/mpfr-3.0.1/mpfr-3.0.1.tar.bz2 -> sources/mpfr-3.0.1.tar.bz2
439  downloading: sources/mpfr-3.0.1.tar.bz2 - 1.1MB of 1.1MB (100%)
440  download: http://www.multiprecision.org/mpc/download/mpc-0.8.2.tar.gz -> sources/mpc-0.8.2.tar.gz
441  downloading: sources/mpc-0.8.2.tar.gz - 535.5kB of 535.5kB (100%)
442  download: ftp://ftp.gnu.org/gnu/gmp/gmp-5.0.5.tar.bz2 -> sources/gmp-5.0.5.tar.bz2
443  downloading: sources/gmp-5.0.5.tar.bz2 - 2.0MB of 2.0MB (100%)
444  building: i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1
445  reporting: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg ->
446  i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1.txt
447  reporting: tools/rtems-gcc-4.9.3-newlib-2.2.0-20150423-1.cfg ->
448  i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1.xml
449  config: tools/rtems-gdb-7.9-1.cfg
450  package: i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1
451  download: http://ftp.gnu.org/gnu/gdb/gdb-7.9.tar.xz -> sources/gdb-7.9.tar.xz
452  downloading: sources/gdb-7.9.tar.xz - 17.0MB of 17.0MB (100%)
453  download: https://git.rtems.org/rtems-tools/plain/tools/4.11/gdb/gdb-sim-arange-inline.diff -> patches/gdb-sim-arange-inline.diff
454  downloading: patches/gdb-sim-arange-inline.diff - 761.0 bytes of 761.0 bytes (100%)
455  download: https://git.rtems.org/rtems-tools/plain/tools/4.11/gdb/gdb-sim-cgen-inline.diff -> patches/gdb-sim-cgen-inline.diff
456  downloading: patches/gdb-sim-cgen-inline.diff - 706.0 bytes of 706.0 bytes (100%)
457  building: i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1
458  reporting: tools/rtems-gdb-7.9-1.cfg ->
459  i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1.txt
460  reporting: tools/rtems-gdb-7.9-1.cfg ->
461  i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1.xml
462  config: tools/rtems-tools-4.11-1.cfg
463  package: rtems-tools-4.11-1
464  Creating source directory: sources/git
465  git: clone: git://git.rtems.org/rtems-tools.git -> sources/git/rtems-tools.git
466  git: reset: git://git.rtems.org/rtems-tools.git
467  git: fetch: git://git.rtems.org/rtems-tools.git -> sources/git/rtems-tools.git
468  git: checkout: git://git.rtems.org/rtems-tools.git => 4.11
469  git: pull: git://git.rtems.org/rtems-tools.git
470  building: rtems-tools-4.11-1
471  reporting: tools/rtems-tools-4.11-1.cfg -> rtems-tools-4.11-1.txt
472  reporting: tools/rtems-tools-4.11-1.cfg -> rtems-tools-4.11-1.xml
473  config: tools/rtems-kernel-4.11.cfg
474  installing: expat-2.1.0-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11
475  installing: i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11
476  installing: i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11
477  installing: i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1 -> C:\opt\rtems\4.11
478  installing: rtems-tools-4.11-1 -> C:\opt\rtems\4.11
479  cleaning: expat-2.1.0-x86_64-w64-mingw32-1
480  cleaning: i386-rtems4.11-binutils-2.24-x86_64-w64-mingw32-1
481  cleaning: i386-rtems4.11-gcc-4.9.3-newlib-2.2.0.20150423-x86_64-w64-mingw32-1
482  cleaning: i386-rtems4.11-gdb-7.9-x86_64-w64-mingw32-1
483  cleaning: rtems-tools-4.11-1
484  Build Set: Time 1:32:58.972919
485   /c/opt/rtems/rsb/rtems
486  $
487
488.. _rtems-kernel-install:
489
490Building the Kernel
491^^^^^^^^^^^^^^^^^^^
492
493We can now build the RTEMS kernel using the RTEMS tools we have just
494built. First we need to set the path to the tools:
495
496.. code-block:: shell
497
498   /c
499  $ cd /c/opt/rtems
500   /c/opt/rtems
501  $ export PATH=/c/opt/rtems/4.11/bin:$PATH
502   /c/opt/rtems
503  $
504
505We currently build RTEMS from the git release branch for 4.11:
506
507.. code-block:: shell
508
509   /c/opt/rtems
510  $ mkdir kernel
511   /c/opt/rtems
512  $ cd kernel
513   /c/opt/rtems/kernel
514  $ git clone git://git.rtems.org/rtems.git rtems
515  Cloning into 'rtems'...
516  remote: Counting objects: 482766, done.
517  remote: Compressing objects: 100% (88781/88781), done.
518  remote: Total 482766 (delta 389610), reused 475155 (delta 383437)
519  Receiving objects: 100% (482766/482766), 69.77 MiB | 697.00 KiB/s, done.
520  Resolving deltas: 100% (389610/389610), done.
521  Checking connectivity... done.
522  Checking out files: 100% (10626/10626), done.
523   /c/opt/rtems/kernel
524  $ cd rtems
525   /c/opt/rtems/kernel/rtems
526  $ git checkout 4.11
527  Checking out files: 100% (2553/2553), done.
528  Branch 4.11 set up to track remote branch 4.11 from origin.
529  Switched to a new branch '4.11'
530   /c/opt/rtems/kernel
531  $
532
533The kernel code cloned from git needs to be `bootstrapped`. Bootstrapping
534creates ``autoconf`` and ``automake`` generated files. To bootstrap we first
535clean away any files, then generate the pre-install header file lists and
536finally we generate the ``autoconf`` and ``automake`` files using the RSB's
537bootstrap tool. First we clean any generated files that exist:
538
539.. code-block:: shell
540
541   /c/opt/rtems/kernel/rtems
542  $ ./bootstrap -c
543  removing automake generated Makefile.in files
544  removing configure files
545  removing aclocal.m4 files
546
547Then we generate the pre-install header file automake make files:
548
549.. code-block:: shell
550
551   /c/opt/rtems/kernel/rtems
552  $ ./bootstrap -p
553  Generating ./c/src/ada/preinstall.am
554  Generating ./c/src/lib/libbsp/arm/altera-cyclone-v/preinstall.am
555  Generating ./c/src/lib/libbsp/arm/atsam/preinstall.am
556  Generating ./c/src/lib/libbsp/arm/beagle/preinstall.am
557  Generating ./c/src/lib/libbsp/arm/csb336/preinstall.am
558  Generating ./c/src/lib/libbsp/arm/csb337/preinstall.am
559  Generating ./c/src/lib/libbsp/arm/edb7312/preinstall.am
560  Generating ./c/src/lib/libbsp/arm/gdbarmsim/preinstall.am
561    .......
562  Generating ./cpukit/score/cpu/mips/preinstall.am
563  Generating ./cpukit/score/cpu/moxie/preinstall.am
564  Generating ./cpukit/score/cpu/nios2/preinstall.am
565  Generating ./cpukit/score/cpu/no_cpu/preinstall.am
566  Generating ./cpukit/score/cpu/or1k/preinstall.am
567  Generating ./cpukit/score/cpu/powerpc/preinstall.am
568  Generating ./cpukit/score/cpu/sh/preinstall.am
569  Generating ./cpukit/score/cpu/sparc/preinstall.am
570  Generating ./cpukit/score/cpu/sparc64/preinstall.am
571  Generating ./cpukit/score/cpu/v850/preinstall.am
572  Generating ./cpukit/score/preinstall.am
573  Generating ./cpukit/telnetd/preinstall.am
574  Generating ./cpukit/wrapup/preinstall.am
575  Generating ./cpukit/zlib/preinstall.am
576   /c/opt/rtems/kernel/rtems
577
578Finally we run the RSB's parallel ``bootstrap`` command:
579
580.. code-block:: shell
581
582  $ /c/opt/rtems/rsb/source-builder/sb-bootstrap
583  RTEMS Source Builder - RTEMS Bootstrap, 4.11 (76188ee494dd)
584    1/139: autoreconf: configure.ac
585    2/139: autoreconf: c/configure.ac
586    3/139: autoreconf: c/src/configure.ac
587    4/139: autoreconf: c/src/ada-tests/configure.ac
588    5/139: autoreconf: c/src/lib/libbsp/arm/configure.ac
589    6/139: autoreconf: c/src/lib/libbsp/arm/altera-cyclone-v/configure.ac
590    7/139: autoreconf: c/src/lib/libbsp/arm/atsam/configure.ac
591    8/139: autoreconf: c/src/lib/libbsp/arm/beagle/configure.ac
592    9/139: autoreconf: c/src/lib/libbsp/arm/csb336/configure.ac
593   10/139: autoreconf: c/src/lib/libbsp/arm/csb337/configure.ac
594   11/139: autoreconf: c/src/lib/libbsp/arm/edb7312/configure.ac
595    .......
596  129/139: autoreconf: testsuites/samples/configure.ac
597  130/139: autoreconf: testsuites/smptests/configure.ac
598  131/139: autoreconf: testsuites/sptests/configure.ac
599  132/139: autoreconf: testsuites/tmtests/configure.ac
600  133/139: autoreconf: testsuites/tools/configure.ac
601  134/139: autoreconf: testsuites/tools/generic/configure.ac
602  135/139: autoreconf: tools/build/configure.ac
603  136/139: autoreconf: tools/cpu/configure.ac
604  137/139: autoreconf: tools/cpu/generic/configure.ac
605  138/139: autoreconf: tools/cpu/nios2/configure.ac
606  139/139: autoreconf: tools/cpu/sh/configure.ac
607  Bootstrap time: 0:20:38.759766
608   /c/opt/rtems/kernel/rtems
609  $
610
611We will build the RTEMS kernel for the ``i386`` target and the ``pc686``
612BSP. You can check the available BSPs by running the ``rtems-bsps`` command
613found in the top directory of the RTEMS kernel source. We build the Board
614Support Package (BSP) outside the kernel source tree:
615
616.. code-block:: shell
617
618   /c/opt/rtems/kernel/rtems
619  $ cd ..
620   /c/opt/rtems/kernel
621  $ mkdir pc686
622   /c/opt/rtems/kernel
623  $ cd pc686
624   /c/opt/rtems/kernel/pc686
625  $
626
627Configure the RTEMS kernel to build ``pc686`` BSP for the ``i386`` target with
628networking disabled, We will build the external libBSD stack later:
629
630.. code-block:: shell
631
632   /c/opt/rtems/kernel/pc686
633  $ /c/opt/rtems/kernel/rtems/configure --prefix=/c/opt/rtems/4.11 \
634         --target=i386-rtems4.11 --disable-networking --enable-rtemsbsp=pc686
635  checking for gmake... no
636  checking for make... make
637  checking for RTEMS Version... 4.11.99.0
638  checking build system type... x86_64-pc-mingw64
639  checking host system type... x86_64-pc-mingw64
640  checking target system type... i386-pc-rtems4.11
641  checking for a BSD-compatible install... /usr/bin/install -c
642  checking whether build environment is sane... yes
643  checking for a thread-safe mkdir -p... /usr/bin/mkdir -p
644  checking for gawk... gawk
645  checking whether make sets $(MAKE)... yes
646  checking whether to enable maintainer-specific portions of Makefiles... no
647  checking that generated files are newer than configure... done
648  configure: creating ./config.status
649  configure: configuring in ./tools/build
650    .......
651  checking whether make sets $(MAKE)... yes
652  checking whether to enable maintainer-specific portions of Makefiles... no
653  checking that generated files are newer than configure... done
654  configure: creating ./config.status
655  config.status: creating Makefile
656
657  target architecture: i386.
658  available BSPs: pc686.
659  'make all' will build the following BSPs: pc686.
660  other BSPs can be built with 'make RTEMS_BSP="bsp1 bsp2 ..."'
661
662  config.status: creating Makefile
663   /c/opt/rtems/kernel/pc686
664  $
665
666Build the kernel:
667
668.. code-block:: shell
669
670   /c/opt/rtems/kernel/pc686
671  $ make
672  Making all in tools/build
673  make[1]: Entering directory '/c/opt/rtems/kernel/pc686/tools/build'
674  make  all-am
675  make[2]: Entering directory '/c/opt/rtems/kernel/pc686/tools/build'
676  gcc -DHAVE_CONFIG_H -I. -I/c/opt/rtems/kernel/rtems/tools/build     -g -O2 -MT
677  cklength.o -MD -MP -MF .deps/cklength.Tpo -c -o cklength.o
678  /c/opt/rtems/kernel/rtems/tools/build/cklength.c
679  gcc -DHAVE_CONFIG_H -I. -I/c/opt/rtems/kernel/rtems/tools/build     -g -O2 -MT
680  eolstrip.o -MD -MP -MF .deps/eolstrip.Tpo -c -o eolstrip.o
681  /c/opt/rtems/kernel/rtems/tools/build/eolstrip.c
682    ..........
683  i386-rtems4.11-objcopy -O binary nsecs.nxe nsecs.bin
684  ../../../../../pc686/build-tools/bin2boot -v nsecs.ralf 0x00097E00
685  ../../../../../pc686/lib/start16.bin 0x00097C00 0 nsecs.bin 0x00100000 0
686  header address       0x00097e00, its memory size 0xzx
687  first  image address 0x00097c00, its memory size 0x00000200
688  second image address 0x00100000, its memory size 0x0003d800
689  rm -f nsecs.nxe
690  make[6]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites/samples/nsecs'
691  make[5]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites/samples'
692  make[4]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites/samples'
693  make[4]: Entering directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites'
694  make[4]: Nothing to be done for 'all-am'.
695  make[4]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites'
696  make[3]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686/testsuites'
697  make[2]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c/pc686'
698  make[1]: Leaving directory '/c/opt/rtems/kernel/pc686/i386-rtems4.11/c'
699  make[1]: Entering directory '/c/opt/rtems/kernel/pc686'
700  make[1]: Nothing to be done for 'all-am'.
701  make[1]: Leaving directory '/c/opt/rtems/kernel/pc686'
702   /c/opt/rtems/kernel/pc696
703  $
704
705Install the kernel to our prefix:
706
707.. code-block:: shell
708
709  $ make install
710  Making install in tools/build
711  make[1]: Entering directory '/c/opt/rtems/kernel/pc686/tools/build'
712  make[2]: Entering directory '/c/opt/rtems/kernel/pc686/tools/build'
713   /usr/bin/mkdir -p '/c/opt/rtems/4.11/bin'
714    /usr/bin/install -c cklength.exe eolstrip.exe packhex.exe unhex.exe
715    rtems-bin2c.exe '/c/opt/rtems/4.11/bin'
716   /usr/bin/mkdir -p '/c/opt/rtems/4.11/bin'
717   /usr/bin/install -c install-if-change '/c/opt/rtems/4.11/bin'
718  make[2]: Nothing to be done for 'install-data-am'.
719  make[2]: Leaving directory '/c/opt/rtems/kernel/pc686/tools/build'
720  make[1]: Leaving directory '/c/opt/rtems/kernel/pc686/tools/build'
721  Making install in tools/cpu
722  make[1]: Entering directory '/c/opt/rtems/kernel/pc686/tools/cpu'
723  Making install in generic
724  make[2]: Entering directory '/c/opt/rtems/kernel/pc686/tools/cpu/generic'
725  make[3]: Entering directory '/c/opt/rtems/kernel/pc686/tools/cpu/generic'
726  make[3]: Nothing to be done for 'install-exec-am'.
727  make[3]: Nothing to be done for 'install-data-am'.
728  make[3]: Leaving directory '/c/opt/rtems/kernel/pc686/tools/cpu/generic'
729  make[2]: Leaving directory '/c/opt/rtems/kernel/pc686/tools/cpu/generic'
730  make[2]: Entering directory '/c/opt/rtems/kernel/pc686/tools/cpu'
731  make[3]: Entering directory '/c/opt/rtems/kernel/pc686/tools/cpu'
732  make[3]: Nothing to be done for 'install-exec-am'.
733  make[3]: Nothing to be done for 'install-data-am'.
734    ..........
735  make[2]: Entering directory '/c/opt/rtems/kernel/pc686'
736  make[2]: Nothing to be done for 'install-exec-am'.
737   /usr/bin/mkdir -p '/c/opt/rtems/4.11/make'
738   /usr/bin/install -c -m 644 /c/opt/rtems/kernel/rtems/make/main.cfg
739   /c/opt/rtems/kernel/rtems/make/leaf.cfg '/c/opt/rtems/4.11/make'
740   /usr/bin/mkdir -p '/c/opt/rtems/4.11/share/rtems4.11/make/Templates'
741   /usr/bin/install -c -m 644
742   /c/opt/rtems/kernel/rtems/make/Templates/Makefile.dir
743   /c/opt/rtems/kernel/rtems/make/Templates/Makefile.leaf
744   /c/opt/rtems/kernel/rtems/make/Templates/Makefile.lib
745   '/c/opt/rtems/4.11/share/rtems4.11/make/Templates'
746   /usr/bin/mkdir -p '/c/opt/rtems/4.11/make/custom'
747   /usr/bin/install -c -m 644 /c/opt/rtems/kernel/rtems/make/custom/default.cfg
748   '/c/opt/rtems/4.11/make/custom'
749  make[2]: Leaving directory '/c/opt/rtems/kernel/pc686'
750  make[1]: Leaving directory '/c/opt/rtems/kernel/pc686'
751   /c/opt/rtems/kernel/pc686
752  $
753
Note: See TracBrowser for help on using the repository browser.