Lines Matching +full:foss +full:- +full:for +full:- +full:synopsys +full:- +full:dwc +full:- +full:arc +full:- +full:processors

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
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.
33 help for anyone working with >10 patches at a time.
40 where it left off. This should happen cleanly and without side-effects.
41 If not, it is a bug, for which a patch would be welcome.
44 You may need to press Ctrl-C several times to quit it. Also it will print
46 Ctrl-C handling is somewhat broken.
55 produce any useful output on the terminal while building, except for
56 progress information (except with -v, see below). All the output (errors,
57 warnings and binaries if you ask for them) is stored in output
63 rebuild commits which have changed (and remove its old results for that
64 commit). It is possible to build a branch for one board, then later build 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.
71 case it is de-duped and displayed against the commit that introduced the
77 Buildman starts multiple threads, and each thread builds for one board at
78 a time. A thread starts at the first commit, configures the source for your
86 Buildman works in an entirely separate place from your U-Boot repository.
87 It creates a separate working directory for each thread, and puts the
89 name, in a two-level hierarchy.
91 Buildman is invoked in your U-Boot directory, the one with the .git
92 directory. It clones this repository into a copy for each thread, and the
94 by the thread affect only the working directory for that thread.
96 Buildman automatically selects the correct tool chain for each board. You
100 Buildman generally builds a branch (with the -b flag), and in this case
101 builds the upstream commit as well, for comparison. It cannot build
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
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.
155 1. Get the U-Boot source. You probably already have it, but if not these
156 steps should get you started with a repo and some commits for testing.
158 $ cd /path/to/u-boot
159 $ git clone git://git.denx.de/u-boot.git .
160 $ git checkout -b my-branch origin/master
161 $ # Add some commits to the branch, reading for testing
164 .buildman file' later for details). As an example:
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]
182 This selects the available toolchain paths. Add the base directory for
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
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]
223 3. Make sure you have the require Python pre-requisites
234 Run this check to make sure that you have a toolchain for every architecture.
236 $ ./tools/buildman/buildman --list-tool-chains
237 Scanning for 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 …hains/gcc-4.9.0-nolibc/arm-unknown-linux-gnueabi/bin/arm-unknown-linux-gnueabi-gcc' at priority 3 …
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 …'/toolchains/gcc-4.9.0-nolibc/x86_64-linux/bin/x86_64-linux-x86_64-linux-gcc' at priority 4 will b…
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 …lchain '/toolchains/gcc-4.6.3-nolibc/sparc-linux/bin/sparc-linux-gcc' at priority 4 will be ignore…
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 …olchain '/toolchains/gcc-4.6.3-nolibc/mips-linux/bin/mips-linux-gcc' at priority 4 will be ignored…
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 …olchain '/toolchains/gcc-4.6.3-nolibc/m68k-linux/bin/m68k-linux-gcc' at priority 4 will be ignored…
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
370 Toolchain '/usr/bin/winegcc' at priority 11 will be ignored because another toolchain for arch 'san…
372 Toolchain '/usr/bin/arm-linux-gnueabihf-gcc' at priority 4 will be ignored because another toolchai…
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
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'
444 $ ./tools/buildman/buildman --fetch-arch all
445 $ sudo mkdir -p /toolchains
446 $ sudo mv ~/.buildman-toolchains/*/* /toolchains/
448 For those not available from kernel.org, download from the following links.
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.
467 At the time of writing, U-Boot has these architectures:
469 arc, arm, blackfin, m68k, microblaze, mips, nds32, nios2, openrisc
472 Of these, only arc and nds32 are not available at kernel.org..
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'
492 Building 18 commits for 1059 boards (4 threads, 1 job per thread)
494 5bb3505 Merge branch 'master' of git://git.denx.de/u-boot-arm
495 c18f1b4 tegra: Use const for pinmux_config_pingroup/table()
498 424a5f0 tegra: fdt: Add LCD definitions for Tegra
499 0636ccf tegra: Add support for PWM
500 a994fe7 tegra: Add SOC support for display/lcd
505 d92aff7 lcd: Add support for flushing LCD fb from dcache after update
507 0cff9b8 tegra: Support control of cache settings for LCD
508 9c56900 tegra: fdt: Add LCD definitions for Seaboard
513 Total boards to build for each commit: 1059
516 we have a 4-core CPU). Each thread will run with -j1, meaning that each
519 'base' directory for you, immediately above your source tree.
522 creating a working directory for each thread, and creating output
523 directories for each commit and board.
529 To run the build for real, take off the -n:
531 $ ./tools/buildman/buildman -b <branch>
536 Building 18 commits for 1059 boards (4 threads, 1 job per thread)
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
553 02: tegra: Use const for pinmux_config_pingroup/table()
556 05: tegra: fdt: Add LCD definitions for Tegra
557 06: tegra: Add support for PWM
558 07: tegra: Add SOC support for display/lcd
563 12: lcd: Add support for flushing LCD fb from dcache after update
566 14: tegra: Support control of cache settings for LCD
567 15: tegra: fdt: Add LCD definitions for Seaboard
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
588 12: lcd: Add support for flushing LCD fb from dcache after update
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
595 14: tegra: Support control of cache settings for LCD
596 15: tegra: fdt: Add LCD definitions for Seaboard
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
609 breakage is introduced for a few commits and fixed by later commits. This
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
620 lots of repeated output for every board.
627 ../lcd9b/12_of_18_gd92aff7_lcd--Add-support-for/lubbock/
630 This is 0 for a good build, typically 2 for a failure.
635 in silent mode. Use -V to force a verbose build (this passes V=1
638 toolchain: Shows information about the toolchain used for the build.
642 It is possible to get the build binary output there also. Use the -k option
643 for this. In that case you will also see some output files, like:
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
660 Summary of 10 commits for 1066 boards (4 threads, 1 job per thread)
661 01: MAKEALL: add support for per architecture toolchains
663 x86: (for 1/3 boards) text -272.0 rodata +41.0
666 x86: (for 1/3 boards) data +16.0
667 05: x86: Add an __end symbol to signal the end of the U-Boot binary
668 x86: (for 1/3 boards) text +76.0
670 x86: (for 1/3 boards) bss -2140.0
671 07: x86: Support relocation of FDT on start-up
672 x86: + coreboot-x86
681 because they are an average of all boards for that architecture. The
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
693 for an overview of how your entire series affects code size. It will build
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
822 This shows that commit 19 has reduced codesize for arm slightly and increased
823 it for powerpc. This increase was offset in by reductions in rodata and
826 Shown below the summary lines are the sizes for each board. Below each board
827 are the sizes for each function. This information starts with:
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
840 It is common when refactoring code for the rodata to decrease as the text size
856 will look in that path for a file ending in 'gcc'. It will then execute
857 it to check that it is a C compiler, passing only the --version flag to
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
870 used for architecture 'x86'. Adding 'x86: i386 x86_64' to this section
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
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
886 This will use 'make ENABLE_AT91_TEST=1 BUILD_TAG=442' for snapper9260
887 and 'make ENABLE_AT91_TEST=1 BUILD_TAG=443' for snapper9g45. A special
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
897 variables, for example:
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.
926 commit for each board. This causes everything to be built from scratch. If you
927 trust the build system's incremental build capabilities, you can pass the -I
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
972 For example:
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
988 This shows that commit 44 enabled three new options for the board
990 summary for 'arm' showing all the changes detected for that architecture.
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.
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.
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
1042 for details. Once you have your required toolchain(s) detected then you are
1045 To build the current source tree, run buildman without a -b flag:
1049 This will build the current source tree for the given boards and display
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>
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).
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
1094 are building a lot of boards it will use one thread for every CPU core
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.
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
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
1118 for finding code bloat.
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
1131 bit of scope for improvement. Things like better error diffs and easier
1132 access to log files. Also it would be nice if buildman could 'hunt' for
1133 problems, perhaps by building a few boards for each arch, or checking
1134 commits for changed files and building only boards which use those files.
1136 A specific problem to fix is that Ctrl-C does not exit buildman cleanly when
1142 Thanks to Grant Grundler <grundler@chromium.org> for his ideas for improving
1143 the build speed by building all commits for a board instead of the other
1150 Updated 12-12-12
1151 Updated 23-02-13