Lines Matching +full:buildman +full:- +full:toolchains

3 # SPDX-License-Identifier:	GPL-2.0+
8 Quick-start
11 If you just want to quickly set up buildman so you can build something (for
14 cd /path/to/u-boot
15 PATH=$PATH:`pwd`/tools/buildman
16 buildman --fetch-arch arm
17 buildman -k rpi_2
19 # u-boot.bin is the output image
25 This tool handles building U-Boot to check that you have not broken it
28 to make full use of multi-processor machines.
30 A key feature of buildman is its output summary, which allows warnings,
39 Buildman can be stopped and restarted, in which case it will continue
40 where it left off. This should happen cleanly and without side-effects.
43 Buildman gets so tied up in its work that it can ignore the outside world.
44 You may need to press Ctrl-C several times to quit it. Also it will print
46 Ctrl-C handling is somewhat broken.
54 Buildman is a builder. It is not make, although it runs make. It does not
56 progress information (except with -v, see below). All the output (errors,
61 Buildman is designed to build entire git branches, i.e. muliple commits. It
65 for another board. If you want buildman to re-build a commit it has already
66 built (e.g. because of a toolchain update), use the -f flag.
68 Buildman produces a concise summary of which boards succeeded and failed.
71 case it is de-duped and displayed against the commit that introduced the
74 Buildman stores image size information and can report changes in image size
77 Buildman starts multiple threads, and each thread builds for one board at
86 Buildman works in an entirely separate place from your U-Boot repository.
89 name, in a two-level hierarchy.
91 Buildman is invoked in your U-Boot directory, the one with the .git
96 Buildman automatically selects the correct tool chain for each board. You
97 must supply suitable tool chains, but buildman takes care of selecting the
100 Buildman generally builds a branch (with the -b flag), and in this case
104 valid value, and all will be well. Otherwise buildman will perform random
105 actions. Use -n to check what the random actions might be.
107 If you just want to build the current source tree, leave off the -b flag
108 and add -e. This will display results and errors as they happen. You can
109 still look at them later using -se. Note that buildman will assume that the
112 Buildman is optimised for building many commits at once, for many boards.
113 On multi-core machines, Buildman is fast because it uses most of the
116 plan to use your machine for anything else, you can use -T to increase the
119 Buildman lets you build all boards, or a subset. Specify the subset by passing
120 command-line arguments that list the desired board name, architecture name,
136 You can also use -x to specifically exclude some boards. For example:
138 buildmand arm -x nvidia,freescale,.*ball$
143 It is convenient to use the -n option to see what will be built based on
144 the subset given. Use -v as well to get an actual list of boards.
146 Buildman does not store intermediate object files. It optionally copies
155 1. Get the U-Boot source. You probably already have it, but if not these
158 $ cd /path/to/u-boot
159 $ git clone git://git.denx.de/u-boot.git .
160 $ git checkout -b my-branch origin/master
163 2. Create ~/.buildman to tell buildman where to find tool chains (see 'The
164 .buildman file' later for details). As an example:
166 # Buildman settings file
170 rest: /toolchains/*
171 eldk: /opt/eldk-4.2
172 arm: /opt/linaro/gcc-linaro-arm-linux-gnueabihf-4.8-2013.08_linux
173 aarch64: /opt/linaro/gcc-linaro-aarch64-none-elf-4.8-2013.10_linux
175 [toolchain-alias]
183 each of your toolchains here. Buildman will search inside these directories
188 The toolchain-alias section indicates that the i386 toolchain should be used
193 [toolchain-prefix]
194 arm: /opt/arm-eabi-4.6/bin/arm-eabi-
198 [toolchain-prefix]
199 arm: /opt/arm-eabi-4.6/bin/arm-eabi-gcc
201 This tells buildman that you want to use this exact toolchain for the arm
202 architecture. This will override any toolchains found by searching using the
205 Since the toolchain prefix is an explicit request, buildman will report an
209 [toolchain-prefix]
210 arm: arm-none-eabi-
212 and buildman will find arm-none-eabi-gcc in /usr/bin if you have it installed.
214 [toolchain-wrapper]
217 This tells buildman to use a compiler wrapper in front of CROSS_COMPILE. In
223 3. Make sure you have the require Python pre-requisites
225 Buildman uses multiprocessing, Queue, shutil, StringIO, ConfigParser and
232 4. Check the available toolchains
236 $ ./tools/buildman/buildman --list-tool-chains
238 - scanning prefix '/opt/gcc-4.6.3-nolibc/x86_64-linux/bin/x86_64-linux-'
240 - scanning prefix '/opt/arm-eabi-4.6/bin/arm-eabi-'
242 - scanning path '/toolchains/gcc-4.9.0-nolibc/i386-linux'
243 - looking in '/toolchains/gcc-4.9.0-nolibc/i386-linux/.'
244 - looking in '/toolchains/gcc-4.9.0-nolibc/i386-linux/bin'
245 - found '/toolchains/gcc-4.9.0-nolibc/i386-linux/bin/i386-linux-gcc'
246 - looking in '/toolchains/gcc-4.9.0-nolibc/i386-linux/usr/bin'
248 - scanning path '/toolchains/gcc-4.9.0-nolibc/aarch64-linux'
249 - looking in '/toolchains/gcc-4.9.0-nolibc/aarch64-linux/.'
250 - looking in '/toolchains/gcc-4.9.0-nolibc/aarch64-linux/bin'
251 - found '/toolchains/gcc-4.9.0-nolibc/aarch64-linux/bin/aarch64-linux-gcc'
252 - looking in '/toolchains/gcc-4.9.0-nolibc/aarch64-linux/usr/bin'
254 - scanning path '/toolchains/gcc-4.9.0-nolibc/microblaze-linux'
255 - looking in '/toolchains/gcc-4.9.0-nolibc/microblaze-linux/.'
256 - looking in '/toolchains/gcc-4.9.0-nolibc/microblaze-linux/bin'
257 - found '/toolchains/gcc-4.9.0-nolibc/microblaze-linux/bin/microblaze-linux-gcc'
258 - looking in '/toolchains/gcc-4.9.0-nolibc/microblaze-linux/usr/bin'
260 - scanning path '/toolchains/gcc-4.9.0-nolibc/mips64-linux'
261 - looking in '/toolchains/gcc-4.9.0-nolibc/mips64-linux/.'
262 - looking in '/toolchains/gcc-4.9.0-nolibc/mips64-linux/bin'
263 - found '/toolchains/gcc-4.9.0-nolibc/mips64-linux/bin/mips64-linux-gcc'
264 - looking in '/toolchains/gcc-4.9.0-nolibc/mips64-linux/usr/bin'
266 - scanning path '/toolchains/gcc-4.9.0-nolibc/sparc64-linux'
267 - looking in '/toolchains/gcc-4.9.0-nolibc/sparc64-linux/.'
268 - looking in '/toolchains/gcc-4.9.0-nolibc/sparc64-linux/bin'
269 - found '/toolchains/gcc-4.9.0-nolibc/sparc64-linux/bin/sparc64-linux-gcc'
270 - looking in '/toolchains/gcc-4.9.0-nolibc/sparc64-linux/usr/bin'
272 - scanning path '/toolchains/gcc-4.9.0-nolibc/arm-unknown-linux-gnueabi'
273 - looking in '/toolchains/gcc-4.9.0-nolibc/arm-unknown-linux-gnueabi/.'
274 - looking in '/toolchains/gcc-4.9.0-nolibc/arm-unknown-linux-gnueabi/bin'
275- found '/toolchains/gcc-4.9.0-nolibc/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc'
276 - looking in '/toolchains/gcc-4.9.0-nolibc/arm-unknown-linux-gnueabi/usr/bin'
278 Toolchain '/toolchains/gcc-4.9.0-nolibc/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc…
279 - scanning path '/toolchains/gcc-4.9.0-nolibc/sparc-linux'
280 - looking in '/toolchains/gcc-4.9.0-nolibc/sparc-linux/.'
281 - looking in '/toolchains/gcc-4.9.0-nolibc/sparc-linux/bin'
282 - found '/toolchains/gcc-4.9.0-nolibc/sparc-linux/bin/sparc-linux-gcc'
283 - looking in '/toolchains/gcc-4.9.0-nolibc/sparc-linux/usr/bin'
285 - scanning path '/toolchains/gcc-4.9.0-nolibc/mips-linux'
286 - looking in '/toolchains/gcc-4.9.0-nolibc/mips-linux/.'
287 - looking in '/toolchains/gcc-4.9.0-nolibc/mips-linux/bin'
288 - found '/toolchains/gcc-4.9.0-nolibc/mips-linux/bin/mips-linux-gcc'
289 - looking in '/toolchains/gcc-4.9.0-nolibc/mips-linux/usr/bin'
291 - scanning path '/toolchains/gcc-4.9.0-nolibc/x86_64-linux'
292 - looking in '/toolchains/gcc-4.9.0-nolibc/x86_64-linux/.'
293 - looking in '/toolchains/gcc-4.9.0-nolibc/x86_64-linux/bin'
294 - found '/toolchains/gcc-4.9.0-nolibc/x86_64-linux/bin/x86_64-linux-gcc'
295 - found '/toolchains/gcc-4.9.0-nolibc/x86_64-linux/bin/x86_64-linux-x86_64-linux-gcc'
296 - looking in '/toolchains/gcc-4.9.0-nolibc/x86_64-linux/usr/bin'
299 Toolchain '/toolchains/gcc-4.9.0-nolibc/x86_64-linux/bin/x86_64-linux-x86_64-linux-gcc' at priority…
300 - scanning path '/toolchains/gcc-4.9.0-nolibc/m68k-linux'
301 - looking in '/toolchains/gcc-4.9.0-nolibc/m68k-linux/.'
302 - looking in '/toolchains/gcc-4.9.0-nolibc/m68k-linux/bin'
303 - found '/toolchains/gcc-4.9.0-nolibc/m68k-linux/bin/m68k-linux-gcc'
304 - looking in '/toolchains/gcc-4.9.0-nolibc/m68k-linux/usr/bin'
306 - scanning path '/toolchains/gcc-4.9.0-nolibc/powerpc-linux'
307 - looking in '/toolchains/gcc-4.9.0-nolibc/powerpc-linux/.'
308 - looking in '/toolchains/gcc-4.9.0-nolibc/powerpc-linux/bin'
309 - found '/toolchains/gcc-4.9.0-nolibc/powerpc-linux/bin/powerpc-linux-gcc'
310 - looking in '/toolchains/gcc-4.9.0-nolibc/powerpc-linux/usr/bin'
312 - scanning path '/toolchains/gcc-4.6.3-nolibc/bfin-uclinux'
313 - looking in '/toolchains/gcc-4.6.3-nolibc/bfin-uclinux/.'
314 - looking in '/toolchains/gcc-4.6.3-nolibc/bfin-uclinux/bin'
315 - found '/toolchains/gcc-4.6.3-nolibc/bfin-uclinux/bin/bfin-uclinux-gcc'
316 - looking in '/toolchains/gcc-4.6.3-nolibc/bfin-uclinux/usr/bin'
318 - scanning path '/toolchains/gcc-4.6.3-nolibc/sparc-linux'
319 - looking in '/toolchains/gcc-4.6.3-nolibc/sparc-linux/.'
320 - looking in '/toolchains/gcc-4.6.3-nolibc/sparc-linux/bin'
321 - found '/toolchains/gcc-4.6.3-nolibc/sparc-linux/bin/sparc-linux-gcc'
322 - looking in '/toolchains/gcc-4.6.3-nolibc/sparc-linux/usr/bin'
324 Toolchain '/toolchains/gcc-4.6.3-nolibc/sparc-linux/bin/sparc-linux-gcc' at priority 4 will be igno…
325 - scanning path '/toolchains/gcc-4.6.3-nolibc/mips-linux'
326 - looking in '/toolchains/gcc-4.6.3-nolibc/mips-linux/.'
327 - looking in '/toolchains/gcc-4.6.3-nolibc/mips-linux/bin'
328 - found '/toolchains/gcc-4.6.3-nolibc/mips-linux/bin/mips-linux-gcc'
329 - looking in '/toolchains/gcc-4.6.3-nolibc/mips-linux/usr/bin'
331 Toolchain '/toolchains/gcc-4.6.3-nolibc/mips-linux/bin/mips-linux-gcc' at priority 4 will be ignore…
332 - scanning path '/toolchains/gcc-4.6.3-nolibc/m68k-linux'
333 - looking in '/toolchains/gcc-4.6.3-nolibc/m68k-linux/.'
334 - looking in '/toolchains/gcc-4.6.3-nolibc/m68k-linux/bin'
335 - found '/toolchains/gcc-4.6.3-nolibc/m68k-linux/bin/m68k-linux-gcc'
336 - looking in '/toolchains/gcc-4.6.3-nolibc/m68k-linux/usr/bin'
338 Toolchain '/toolchains/gcc-4.6.3-nolibc/m68k-linux/bin/m68k-linux-gcc' at priority 4 will be ignore…
339 - scanning path '/toolchains/gcc-4.6.3-nolibc/powerpc-linux'
340 - looking in '/toolchains/gcc-4.6.3-nolibc/powerpc-linux/.'
341 - looking in '/toolchains/gcc-4.6.3-nolibc/powerpc-linux/bin'
342 - found '/toolchains/gcc-4.6.3-nolibc/powerpc-linux/bin/powerpc-linux-gcc'
343 - looking in '/toolchains/gcc-4.6.3-nolibc/powerpc-linux/usr/bin'
346 - scanning path '/'
347 - looking in '/.'
348 - looking in '/bin'
349 - looking in '/usr/bin'
350 - found '/usr/bin/i586-mingw32msvc-gcc'
351 - found '/usr/bin/c89-gcc'
352 - found '/usr/bin/x86_64-linux-gnu-gcc'
353 - found '/usr/bin/gcc'
354 - found '/usr/bin/c99-gcc'
355 - found '/usr/bin/arm-linux-gnueabi-gcc'
356 - found '/usr/bin/aarch64-linux-gnu-gcc'
357 - found '/usr/bin/winegcc'
358 - found '/usr/bin/arm-linux-gnueabihf-gcc'
362 Toolchain '/usr/bin/x86_64-linux-gnu-gcc' at priority 4 will be ignored because another toolchain f…
366 Toolchain '/usr/bin/arm-linux-gnueabi-gcc' at priority 4 will be ignored because another toolchain …
368 Toolchain '/usr/bin/aarch64-linux-gnu-gcc' at priority 4 will be ignored because another toolchain …
372 Toolchain '/usr/bin/arm-linux-gnueabihf-gcc' at priority 4 will be ignored because another toolchai…
373 List of available toolchains (34):
374 aarch64 : /toolchains/gcc-4.9.0-nolibc/aarch64-linux/bin/aarch64-linux-gcc
375 alpha : /toolchains/gcc-4.9.0-nolibc/alpha-linux/bin/alpha-linux-gcc
376 am33_2.0 : /toolchains/gcc-4.9.0-nolibc/am33_2.0-linux/bin/am33_2.0-linux-gcc
377 arm : /opt/arm-eabi-4.6/bin/arm-eabi-gcc
378 bfin : /toolchains/gcc-4.6.3-nolibc/bfin-uclinux/bin/bfin-uclinux-gcc
379 c89 : /usr/bin/c89-gcc
380 c99 : /usr/bin/c99-gcc
381 frv : /toolchains/gcc-4.9.0-nolibc/frv-linux/bin/frv-linux-gcc
382 h8300 : /toolchains/gcc-4.9.0-nolibc/h8300-elf/bin/h8300-elf-gcc
383 hppa : /toolchains/gcc-4.9.0-nolibc/hppa-linux/bin/hppa-linux-gcc
384 hppa64 : /toolchains/gcc-4.9.0-nolibc/hppa64-linux/bin/hppa64-linux-gcc
385 i386 : /toolchains/gcc-4.9.0-nolibc/i386-linux/bin/i386-linux-gcc
386 i586 : /usr/bin/i586-mingw32msvc-gcc
387 ia64 : /toolchains/gcc-4.9.0-nolibc/ia64-linux/bin/ia64-linux-gcc
388 m32r : /toolchains/gcc-4.9.0-nolibc/m32r-linux/bin/m32r-linux-gcc
389 m68k : /toolchains/gcc-4.9.0-nolibc/m68k-linux/bin/m68k-linux-gcc
390 microblaze: /toolchains/gcc-4.9.0-nolibc/microblaze-linux/bin/microblaze-linux-gcc
391 mips : /toolchains/gcc-4.9.0-nolibc/mips-linux/bin/mips-linux-gcc
392 mips64 : /toolchains/gcc-4.9.0-nolibc/mips64-linux/bin/mips64-linux-gcc
393 or32 : /toolchains/gcc-4.5.1-nolibc/or32-linux/bin/or32-linux-gcc
394 powerpc : /toolchains/gcc-4.9.0-nolibc/powerpc-linux/bin/powerpc-linux-gcc
395 powerpc64 : /toolchains/gcc-4.9.0-nolibc/powerpc64-linux/bin/powerpc64-linux-gcc
396 ppc64le : /toolchains/gcc-4.9.0-nolibc/ppc64le-linux/bin/ppc64le-linux-gcc
397 s390x : /toolchains/gcc-4.9.0-nolibc/s390x-linux/bin/s390x-linux-gcc
399 sh4 : /toolchains/gcc-4.6.3-nolibc/sh4-linux/bin/sh4-linux-gcc
400 sparc : /toolchains/gcc-4.9.0-nolibc/sparc-linux/bin/sparc-linux-gcc
401 sparc64 : /toolchains/gcc-4.9.0-nolibc/sparc64-linux/bin/sparc64-linux-gcc
402 tilegx : /toolchains/gcc-4.6.2-nolibc/tilegx-linux/bin/tilegx-linux-gcc
403 x86 : /opt/gcc-4.6.3-nolibc/x86_64-linux/bin/x86_64-linux-gcc
404 x86_64 : /toolchains/gcc-4.9.0-nolibc/x86_64-linux/bin/x86_64-linux-gcc
411 5. Install new toolchains if needed
413 You can download toolchains and update the [toolchain] section of the
416 To make this easier, buildman can automatically download and install
417 toolchains from kernel.org. First list the available architectures:
419 $ ./tools/buildman/buildman --fetch-arch list
430 $ ./tools/buildman/buildman --fetch-arch or32
434 …www.kernel.org/pub/tools/crosstool/files/bin/x86_64/4.5.1//x86_64-gcc-4.5.1-nolibc_or32-linux.tar.…
435 Unpacking to: /home/sjg/.buildman-toolchains
437 - looking in '/home/sjg/.buildman-toolchains/gcc-4.5.1-nolibc/or32-linux/.'
438 - looking in '/home/sjg/.buildman-toolchains/gcc-4.5.1-nolibc/or32-linux/bin'
439 - found '/home/sjg/.buildman-toolchains/gcc-4.5.1-nolibc/or32-linux/bin/or32-linux-gcc'
442 Or download them all from kernel.org and move them to /toolchains directory,
444 $ ./tools/buildman/buildman --fetch-arch all
445 $ sudo mkdir -p /toolchains
446 $ sudo mv ~/.buildman-toolchains/*/* /toolchains/
450 arc: https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases/
451 download/arc-2016.09-release/arc_gnu_2016.09_prebuilt_uclibc_le_archs_linux_install.tar.gz
452 blackfin: http://sourceforge.net/projects/adi-toolchain/files/
453 blackfin-toolchain-elf-gcc-4.5-2014R1_45-RC2.x86_64.tar.bz2
455 nds32le-linux-glibc-v1.tgz
456 nios2: http://sourcery.mentor.com/public/gnu_toolchain/nios2-linux-gnu/
457 sourceryg++-2015.11-27-nios2-linux-gnu-i686-pc-linux-gnu.tar.bz2
458 sh: http://sourcery.mentor.com/public/gnu_toolchain/sh-linux-gnu/
459 renesas-4.4-200-sh-linux-gnu-i686-pc-linux-gnu.tar.bz2
462 http://opencores.org/or1k/OpenRISC_GNU_tool_chain#Prebuilt_versions - eg:
463 ftp://ocuser:ocuser@openrisc.opencores.org/toolchain/gcc-or1k-elf-4.8.1-x86.tar.bz2.
465 Buildman should now be set up to use your new toolchain.
467 At the time of writing, U-Boot has these architectures:
478 First do a dry run using the -n flag: (replace <branch> with a real, local
481 $ ./tools/buildman/buildman -b <branch> -n
484 doing something like 'git branch --set-upstream-to upstream/master'
485 or something similar. Buildman will try to guess a suitable upstream branch
494 5bb3505 Merge branch 'master' of git://git.denx.de/u-boot-arm
516 we have a 4-core CPU). Each thread will run with -j1, meaning that each
518 confirm that things look about right. Notice that buildman has chosen a
521 Buildman works entirely inside the base directory, here ../lcd9b,
529 To run the build for real, take off the -n:
531 $ ./tools/buildman/buildman -b <branch>
533 Buildman will set up some working directories, and get started. After a
541 and 124 more didn't build at all. Buildman expects to complete the process
545 To find out how the build went, ask for a summary with -s. You can do this
549 $ ./tools/buildman/buildman -b lcd9b -s
551 01: Merge branch 'master' of git://git.denx.de/u-boot-arm
573 the build is still in progress so many boards are not built yet (use -u to
586 $ ./tools/buildman/buildman -b <branch> -se lubbock
591 +/u-boot/lcd9b/.bm-work/00/common/lcd.c:120: undefined reference to `flush_dcache_range'
592-none-linux-gnueabi-ld: BFD (Sourcery G++ Lite 2010q1-202) 2.19.51.20090709 assertion fail /scratc…
593 +make: *** [/u-boot/lcd9b/.bm-work/00/build/u-boot] Error 139
598 -/u-boot/lcd9b/.bm-work/00/common/lcd.c:120: undefined reference to `flush_dcache_range'
599 +/u-boot/lcd9b/.bm-work/00/common/lcd.c:125: undefined reference to `flush_dcache_range'
607 If you see error lines marked with '-', that means that the errors were fixed
610 shows up clearly with buildman. You can then reorder the commits and try
617 If many boards have the same error, then -e will display the error only
619 each error, use -l. So it is safe to omit the board name - you will not get
622 Buildman tries to distinguish warnings from errors, and shows warning lines
627 ../lcd9b/12_of_18_gd92aff7_lcd--Add-support-for/lubbock/
634 log: Output from stdout. Normally there isn't any since buildman runs
635 in silent mode. Use -V to force a verbose build (this passes V=1
642 It is possible to get the build binary output there also. Use the -k option
645 System.map toolchain u-boot u-boot.bin u-boot.map autoconf.mk
646 (also SPL versions u-boot-spl and u-boot-spl.bin if available)
652 A key requirement for U-Boot is that you keep code/data size to a minimum.
657 To check the impact of your commits on image size, use -S. For example:
659 $ ./tools/buildman/buildman -b us-x86 -sS
661 01: MAKEALL: add support for per architecture toolchains
663 x86: (for 1/3 boards) text -272.0 rodata +41.0
667 05: x86: Add an __end symbol to signal the end of the U-Boot binary
670 x86: (for 1/3 boards) bss -2140.0
671 07: x86: Support relocation of FDT on start-up
672 x86: + coreboot-x86
686 two together to get the total read-only size (reported as the first column
689 A useful option is --step which lets you skip some commits. For example
690 --step 2 will show the image sizes for only every 2nd commit (so it will
692 --step 0 which will compare only the first and last commits. This is useful
696 You can also use -d to see a detailed size breakdown for each board. This
699 It is even possible to go a little further with the -B option (--bloat). This
700 shows where U-Boot has bloated, breaking the size change down to the function
703 $ ./tools/buildman/buildman -b us-mem4 -sSdB
706 arm: (for 10/10 boards) all -143.4 bss +1.2 data -4.8 rodata -48.2 text -91.6
707 paz00 : all +23 bss -4 rodata -29 text +56
708 u-boot: add: 1/0, grow: 3/-2 bytes: 168/-104 (64)
711 crc32_wd_buf - 56 +56
714 run_list_real 1996 1992 -4
715 do_mem_crc 168 68 -100
716 trimslice : all -9 bss +16 rodata -29 text +4
717 u-boot: add: 1/0, grow: 1/-3 bytes: 136/-124 (12)
720 crc32_wd_buf - 56 +56
721 ext4fs_iterate_dir 672 668 -4
722 ext4fs_read_file 568 548 -20
723 do_mem_crc 168 68 -100
724 whistler : all -9 bss +16 rodata -29 text +4
725 u-boot: add: 1/0, grow: 1/-3 bytes: 136/-124 (12)
728 crc32_wd_buf - 56 +56
729 ext4fs_iterate_dir 672 668 -4
730 ext4fs_read_file 568 548 -20
731 do_mem_crc 168 68 -100
732 seaboard : all -9 bss -28 rodata -29 text +48
733 u-boot: add: 1/0, grow: 3/-2 bytes: 160/-104 (56)
736 crc32_wd_buf - 56 +56
739 do_nandboot 760 756 -4
740 do_mem_crc 168 68 -100
741 colibri_t20 : all -9 rodata -29 text +20
742 u-boot: add: 1/0, grow: 2/-3 bytes: 140/-112 (28)
745 crc32_wd_buf - 56 +56
747 do_nandboot 760 756 -4
748 ext4fs_read_file 576 568 -8
749 do_mem_crc 168 68 -100
750 ventana : all -37 bss -12 rodata -29 text +4
751 u-boot: add: 1/0, grow: 1/-3 bytes: 136/-124 (12)
754 crc32_wd_buf - 56 +56
755 ext4fs_iterate_dir 672 668 -4
756 ext4fs_read_file 568 548 -20
757 do_mem_crc 168 68 -100
758 harmony : all -37 bss -16 rodata -29 text +8
759 u-boot: add: 1/0, grow: 2/-3 bytes: 140/-124 (16)
762 crc32_wd_buf - 56 +56
764 ext4fs_iterate_dir 672 668 -4
765 ext4fs_read_file 568 548 -20
766 do_mem_crc 168 68 -100
767 medcom-wide : all -417 bss +28 data -16 rodata -93 text -336
768 u-boot: add: 1/-1, grow: 1/-2 bytes: 88/-376 (-288)
770 crc32_wd_buf - 56 +56
772 hash_algo 16 - -16
773 do_mem_crc 168 68 -100
774 hash_command 420 160 -260
775 tec : all -449 bss -4 data -16 rodata -93 text -336
776 u-boot: add: 1/-1, grow: 1/-2 bytes: 88/-376 (-288)
778 crc32_wd_buf - 56 +56
780 hash_algo 16 - -16
781 do_mem_crc 168 68 -100
782 hash_command 420 160 -260
783 plutux : all -481 bss +16 data -16 rodata -93 text -388
784 u-boot: add: 1/-1, grow: 1/-3 bytes: 68/-408 (-340)
786 crc32_wd_buf - 56 +56
788 hash_algo 16 - -16
789 do_fat_read_at 2904 2872 -32
790 do_mem_crc 168 68 -100
791 hash_command 420 160 -260
792 powerpc: (for 5/5 boards) all +37.4 data -3.2 rodata -41.8 text +82.4
793 MPC8610HPCD : all +55 rodata -29 text +84
794 u-boot: add: 1/0, grow: 0/-1 bytes: 176/-96 (80)
796 hash_command - 176 +176
797 do_mem_crc 184 88 -96
798 MPC8641HPCN : all +55 rodata -29 text +84
799 u-boot: add: 1/0, grow: 0/-1 bytes: 176/-96 (80)
801 hash_command - 176 +176
802 do_mem_crc 184 88 -96
803 MPC8641HPCN_36BIT: all +55 rodata -29 text +84
804 u-boot: add: 1/0, grow: 0/-1 bytes: 176/-96 (80)
806 hash_command - 176 +176
807 do_mem_crc 184 88 -96
808 sbc8641d : all +55 rodata -29 text +84
809 u-boot: add: 1/0, grow: 0/-1 bytes: 176/-96 (80)
811 hash_command - 176 +176
812 do_mem_crc 184 88 -96
813 xpedite517x : all -33 data -16 rodata -93 text +76
814 u-boot: add: 1/-1, grow: 0/-1 bytes: 176/-112 (64)
816 hash_command - 176 +176
817 hash_algo 16 - -16
818 do_mem_crc 184 88 -96
829 add - number of functions added / removed
830 grow - number of functions which grew / shrunk
831 bytes - number of bytes of code added to / removed from all functions,
836 roughly the text area size, but note that every read-only section except
844 The .buildman file
847 The .buildman file provides information about the available toolchains and
854 This lists the available toolchains. The tag here doesn't matter, but
855 make sure it is unique. The value is the path to the toolchain. Buildman
857 it to check that it is a C compiler, passing only the --version flag to
858 it. If the return code is 0, buildman assumes that it is a valid C
863 For example powerpc-linux-gcc will be noted as a toolchain for 'powerpc'
864 and CROSS_COMPILE will be set to powerpc-linux- when using it.
866 '[toolchain-alias]' section
868 This converts toolchain architecture names to U-Boot names. For example,
869 if an x86 toolchains is called i386-linux-gcc it will not normally be
871 will tell buildman that the i386 and x86_64 toolchains can be used for
874 '[make-flags]' section
876 U-Boot's build system supports a few flags (such as BUILD_TAG) which
877 affect the build product. These flags can be specified in the buildman
878 settings file. They can also be useful when building U-Boot against other
881 [make-flags]
882 at91-boards=ENABLE_AT91_TEST=1
883 snapper9260=${at91-boards} BUILD_TAG=442
884 snapper9g45=${at91-boards} BUILD_TAG=443
890 that variables can only contain the characters A-Z, a-z, 0-9, hyphen (-)
893 It is expected that any variables added are dealt with in U-Boot's
896 Note that you can pass ad-hoc options to the build using environment
899 SOME_OPTION=1234 ./tools/buildman/buildman my_board
906 currently checked-out source, run buildman without the -b flag. This will
907 build the selected boards and display build status as it runs (i.e. -v is
908 enabled automatically). Use -e to see errors/warnings as well.
915 when using the -b flag. For example:
917 upstream/master..us-buildman
919 will build commits in us-buildman that are not in upstream/master.
925 By default, buildman executes 'make mrproper' prior to building the first
927 trust the build system's incremental build capabilities, you can pass the -I
930 buildman invocation, since it reduces the amount of work done on any build.
932 One possible application of buildman is as part of a continual edit, build,
933 edit, build, ... cycle; repeatedly applying buildman to the same change or
936 modifications. In this scenario, buildman's default choice of build directory
939 By default, each buildman thread uses a single directory for all builds. When a
943 files when a thread switches between boards. Ideally, such buildman-induced
945 the build system and source changes allow. buildman's -P flag may be used to
946 enable this; -P causes each board to be built in a separate (board-specific)
947 directory, thus avoiding any buildman-induced configuration changes in any
950 U-Boot's build system embeds information such as a build timestamp into the
951 final binary. This information varies each time U-Boot is built. This causes
953 requires that the final U-Boot binary be re-linked. This unnecessary work can
957 Combining all of these options together yields the command-line shown below.
961 SOURCE_DATE_EPOCH=0 ./tools/buildman/buildman -I -P tegra
969 Buildman supports this with the -K option, used after a build. This shows
974 $ buildman -b kc4 -sK
978 + u-boot.cfg: CONFIG_SPL_ENV_SUPPORT=1 CONFIG_SPL_NET_SUPPORT=1
979 + u-boot-spl.cfg: CONFIG_SPL_MMC_SUPPORT=1 CONFIG_SPL_NAND_SUPPORT=1
982 + u-boot.cfg: CONFIG_SPL_ENV_SUPPORT=1 CONFIG_SPL_NET_SUPPORT=1
983 + u-boot-spl.cfg: CONFIG_SPL_MMC_SUPPORT=1 CONFIG_SPL_NAND_SUPPORT=1
994 The -K option uses the u-boot.cfg, spl/u-boot-spl.cfg and tpl/u-boot-tpl.cfg
996 configuration you can in fact avoid doing a full build, using -D. This tells
997 buildman to configuration U-Boot and create the .cfg files, but not actually
998 build the source. This is 5-10 times faster than doing a full build.
1000 By default buildman considers the follow two configuration methods
1008 file. The achieve this, buildman considers 'y' to be '1' in configuration
1010 option to Kconfig. To disable this behaviour, use --squash-config-y.
1016 Buildman has various other command line options. Try --help to see them.
1018 When doing builds, Buildman's return code will reflect the overall result:
1028 Buildman includes most of the features of MAKEALL and is generally faster
1030 commit introduces an error in a particular board, buildman can easily show
1034 - We don't want to maintain two build systems
1035 - Buildman is typically faster
1036 - Buildman has a lot more features
1041 First you need to set up your tool chains - see the 'Setting up' section
1045 To build the current source tree, run buildman without a -b flag:
1047 ./tools/buildman/buildman <list of things to build>
1052 However buildman usually works on entire branches, and for that you must
1055 ./tools/buildman/buildman -b <branch_name> <list of things to build>
1059 ./tools/buildman/buildman -b <branch_name> -s <list of things to build>
1062 buildman just shows a summary, with red indicating that a commit introduced
1063 an error and green indicating that a commit fixed an error. Use the -e
1064 flag to see the full errors and -l to see which boards caused which errors.
1066 If you really want to see build results as they happen, use -v when doing a
1067 build (and -e to see the errors/warnings too).
1069 You don't need to stick around on that branch while buildman is running. It
1078 - build all Power Architecture boards:
1079 MAKEALL -a powerpc
1080 MAKEALL --arch powerpc
1082 ** buildman -b <branch> powerpc
1083 - build all PowerPC boards manufactured by vendor "esd":
1084 MAKEALL -a powerpc -v esd
1085 ** buildman -b <branch> esd
1086 - build all PowerPC boards manufactured either by "keymile" or "siemens":
1087 MAKEALL -a powerpc -v keymile -v siemens
1088 ** buildman -b <branch> keymile siemens
1089 - build all Freescale boards with MPC83xx CPUs, plus all 4xx boards:
1090 MAKEALL -c mpc83xx -v freescale 4xx
1091 ** buildman -b <branch> mpc83xx freescale 4xx
1093 Buildman automatically tries to use all the CPUs in your machine. If you
1096 You can use the -T flag to change the number of threads. If you are only
1097 building a few boards, buildman will automatically run make with the -j
1100 option in MAKEALL then -j is the equivalent in buildman.
1102 Buildman puts its output in ../<branch_name> by default but you can change
1103 this with the -o option. Buildman normally does out-of-tree builds: use -i
1105 used -i you pollute buildman's copies of the source tree, and you will need
1106 to remove the build directory (normally ../<branch_name>) to run buildman
1107 in normal mode (without -i).
1109 Buildman doesn't keep the output result normally, but use the -k option to
1117 -B shows which functions are growing/shrinking in which commit - great
1119 -S shows image sizes for each commit (just an overall summary)
1120 -u shows boards that you haven't built yet
1121 --step 0 will build just the upstream commit and the last commit of your
1132 access to log files. Also it would be nice if buildman could 'hunt' for
1136 A specific problem to fix is that Ctrl-C does not exit buildman cleanly when
1150 Updated 12-12-12
1151 Updated 23-02-13