source: rtems-libbsd/README.waf @ 066b536

5-freebsd-12
Last change on this file since 066b536 was 2c4840f, checked in by Sebastian Huber <sebastian.huber@…>, on Feb 13, 2017 at 7:38:45 AM

README.waf: Change BSP, add QEMU command line

  • Property mode set to 100644
File size: 7.3 KB
Line 
1RTEMS LibBSD Waf
2~~~~~~~~~~~~~~~~
3
4Welcome to building LibBSD for RTEMS using Waf. This package is a library
5containing various parts of the FreeBSD kernel ported to RTEMS. The library
6replaces the networking port of FreeBSD in the RTEMS kernel sources. This
7package is designed to be updated from the FreeBSD kernel sources and contains
8more than just the networking code.
9
10To build this package you need a current RTEMS tool set for your architecture,
11and a recent RTEMS kernel for your BSP configured with networking disabled
12built and installed. If you already have this you can skip to step 3 of the
13build procedure.
14
15Waf Setup
16~~~~~~~~~
17
18You can find the Waf project at:
19
20 https://waf.io/
21
22Waf is not intended to be installed by distribution packages so we recommend
23you download a recent waf version and install it in your home directory.
24
25Waf is a Python program so you will also need to have a current Python version
26installed and in your path.
27
28Download the latest signed executable file version to $HOME/bin and symlink it
29to waf. Add the directory $HOME/bin to your path if it is not already in your
30default path.
31
32Building and Installing LibBSD
33~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
34
35The following instructions show you how to build and install RTEMS Tools and
36RTEMS kernel for your BSP in separate paths. Using separate paths for the tools
37and BSPs lets you manage what you have installed. If you are happy with a
38single path you can use the same path in each stage.
39
40The waf build support for RTEMS requires you provide your BSP name as an
41architecture and BSP pair. You must provide both or waf will generate an error
42message during the configure phase.
43
44We will build an Xilinx Zynq QEMU BSP using the name
45'arm/xilinx_zynq_a9_qemu'.
46
47Steps
48-----
49
50-------------------------------------------------------------------------------
51sandbox="$PWD/sandbox"
52mkdir sandbox
53cd "$sandbox"
54git clone git://git.rtems.org/rtems-source-builder.git
55git clone git://git.rtems.org/rtems.git
56git clone git://git.rtems.org/rtems-libbsd.git
57cd "$sandbox"
58cd rtems-source-builder/rtems
59../source-builder/sb-set-builder --prefix="$sandbox/rtems-4.12" 4.12/rtems-arm
60cd "$sandbox"
61cd rtems
62PATH="$sandbox/rtems-4.12/bin:$PATH" ./bootstrap
63cd "$sandbox"
64mkdir b-xilinx_zynq_a9_qemu
65cd b-xilinx_zynq_a9_qemu
66PATH="$sandbox/rtems-4.12/bin:$PATH" "$sandbox/rtems/configure" \
67  --target=arm-rtems4.12 --prefix="$sandbox/rtems-4.12" \
68  --disable-networking --enable-rtemsbsp=xilinx_zynq_a9_qemu
69PATH="$sandbox/rtems-4.12/bin:$PATH" make
70PATH="$sandbox/rtems-4.12/bin:$PATH" make install
71cd "$sandbox"
72cd rtems-libbsd
73git submodule init
74git submodule update rtems_waf
75waf configure --prefix="$sandbox/rtems-4.12" \
76  --rtems-bsps=arm/xilinx_zynq_a9_qemu
77waf
78waf install
79qemu-system-arm -no-reboot -serial null -serial mon:stdio -net none \
80  -nographic -M xilinx-zynq-a9 -m 256M \
81  -kernel build/arm-rtems4.12-xilinx_zynq_a9_qemu/selectpollkqueue01.exe
82-------------------------------------------------------------------------------
83
841. Create a sandbox directory:
85
86    $ sandbox="$PWD/sandbox"
87    $ mkdir sandbox
88
891. Clone the repositories:
90
91    $ cd "$sandbox"
92    $ git clone git://git.rtems.org/rtems-source-builder.git
93    $ git clone git://git.rtems.org/rtems.git
94    $ git clone git://git.rtems.org/rtems-libbsd.git
95
962. Build and install the tools. In this example the path is
97   $sandbox/rtems-4.12:
98
99    $ cd "$sandbox"
100    $ cd rtems-source-builder/rtems
101    $ ../source-builder/sb-set-builder --prefix="$sandbox/rtems-4.12" 4.12/rtems-arm
102
1033. Bootstrap the RTEMS sources:
104
105    $ cd "$sandbox"
106    $ cd rtems
107    $ PATH="$sandbox/rtems-4.12/bin:$PATH" ./bootstrap
108
1095. Build and install the RTEMS Board Support Packages (BSP) you want to use. In
110   this example the path is /opt/rtems/4.12/bsps:
111
112    $ cd "$sandbox"
113    $ mkdir b-xilinx_zynq_a9_qemu
114    $ cd b-xilinx_zynq_a9_qemu
115    $ PATH="$sandbox/rtems-4.12/bin:$PATH" "$sandbox/rtems/configure" \
116        --target=arm-rtems4.12 --prefix="$sandbox/rtems-4.12" \
117        --disable-networking --enable-rtemsbsp=xilinx_zynq_a9_qemu
118    $ PATH="$sandbox/rtems-4.12/bin:$PATH" make
119    $ PATH="$sandbox/rtems-4.12/bin:$PATH" make install
120
1216. Populate the rtems_waf git submodule.  Note, make sure you specify
122   'rtems_waf' or the FreeBSD kernel source will be cloned:
123
124   $ cd "$sandbox"
125   $ cd rtems-libbsd
126   $ git submodule init
127   $ git submodule update rtems_waf
128
1297. Run Waf's configure with your specific settings. In this case the path to
130   the tools and RTEMS are provided on the command line and so do not need to
131   be in your path or environment [1].  You can use
132   '--rtems-archs=arm,sparc,i386' or
133   '--rtems-bsps=arm/xilinx_zynq_a9_qemu,sparc/sis,i386/pc586' to build for
134   more than BSP at a time.  Note, you must provide the architecture and BSP as
135   a pair. Providing just the BSP name will fail:
136
137   $ cd "$sandbox"
138   $ cd rtems-libbsd
139   $ waf configure --prefix="$sandbox/rtems-4.12" \
140       --rtems-bsps=arm/xilinx_zynq_a9_qemu
141
1428. Build and install.  The LibBSD package will be installed into the prefix
143   provided to configure:
144
145   $ cd "$sandbox"
146   $ cd rtems-libbsd
147   $ waf
148   $ waf install
149
1509. Run the tests on QEMU, for example:
151
152   $ qemu-system-arm -no-reboot -serial null -serial mon:stdio -net none \
153   $   -nographic -M xilinx-zynq-a9 -m 256M \
154   $   -kernel build/arm-rtems4.12-xilinx_zynq_a9_qemu/selectpollkqueue01.exe
155
156[1] It is good practice to keep your environment as empty as possible. Setting
157    paths to tools or specific values to configure or control a build is
158    dangerous because settings can leak between different builds and change
159    what you expect a build to do. The waf tool used here lets you specify on
160    the command line the tools and RTEMS paths and this is embedded in waf's
161    configuration information. If you have a few source trees working at any
162    one time with different tool sets or configurations you can easly move
163    between them safe in the knowledge that one build will not infect another.
164
165Updating RTEMS Waf Support
166~~~~~~~~~~~~~~~~~~~~~~~~~~
167
168If you have a working libbsd repository and new changes to the `rtems_waf`
169submodule has been made, you will need update. A `git status` will indicate
170there are new commits with:
171
172  $ git status
173      [ snip output ]
174            modified:   rtems_waf (new commits)
175      [ snip output ]
176
177To update:
178
179  $ git submodule update rtems_waf
180
181Please make sure you use the exact command or you might find you are cloning
182the whole of the FreeBSD source tree. If that happens simply git ^C and try
183again.
184
185The following is for developers only who need to move libbsd to a newer
186versions:
187
188 $ git submodule update rtems_waf
189 $ cd rtems_waf
190 $ git checkout master
191 $ git pull
192 $ cd ..
193 $ git commit -m "Update rtems_waf" rtems_waf
194
195FreeBSD Developer Support
196~~~~~~~~~~~~~~~~~~~~~~~~~
197
198The --freebsd-option provides a tool you can set special kernel options. This
199is a developer tool and should only be used if you are familiar with the
200internals of the FreeBSD kernel and what these options do.
201
202The options are listed in:
203
204 https://github.com/freebsd/freebsd/blob/master/sys/conf/NOTES
205
206An example to turn on a verbose kernel boot, verbose sysinit and bus debugging
207configure with:
208
209 --freebsd-options=bootverbose,verbose_sysinit,bus_debug
210
211The LibBSD waf support splits the options and converts them to uppercase and
212adds them -D options on the compiler command line.
Note: See TracBrowser for help on using the repository browser.