]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - tools/boot/universe.sh
amd64: use register macros for gdb_cpu_getreg()
[FreeBSD/FreeBSD.git] / tools / boot / universe.sh
1 #!/bin/sh
2
3 # $FreeBSD$
4
5 #
6 # Full list of all arches, but we only build a subset. All different mips add any
7 # value, and there's a few others we just don't support.
8 #
9 #       mips/mipsel mips/mips mips/mips64el mips/mips64 mips/mipsn32 \
10 #       mips/mipselhf mips/mipshf mips/mips64elhf mips/mips64hf \
11 #       powerpc/powerpc powerpc/powerpc64 powerpc/powerpcspe \
12 #       riscv/riscv64 riscv/riscv64sf
13 #
14 # This script is expected to be run in stand (though you could run it anywhere
15 # in the tree). It does a full clean build. For stand you can do all the archs in
16 # about a minute or two on a fast machine. It's also possible that you need a full
17 # make universe for this to work completely.
18 #
19 # Output is put into _.boot.$TARGET_ARCH.log in sys.boot.
20 #
21
22 die()
23 {
24     echo $*
25     exit 1
26 }
27
28 dobuild()
29 {
30     local ta=$1
31     local lf=$2
32     local opt=$3
33
34     echo -n "Building $ta ${opt} ... "
35     objdir=$(make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make -V .OBJDIR" | tail -1)
36     case ${objdir} in
37         /*) ;;
38         make*) echo Error message from make: $objdir
39                continue ;;
40         *) die Crazy object dir: $objdir ;;
41     esac
42     rm -rf ${objdir}
43     if ! make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make clean cleandepend cleandir obj depend"  \
44          > $lf 2>&1; then
45         echo "Fail (cleanup)"
46         continue
47     fi
48     if ! make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make ${opt} -j 20 all"  \
49          >> $lf 2>&1; then
50         echo "Fail (build)"
51         continue
52     fi
53     echo "Success"
54 }
55
56 top=$(make -V SRCTOP)
57 cd $top/stand
58
59 # Build without forth
60 for i in \
61         amd64/amd64 \
62         i386/i386 \
63         ; do
64     ta=${i##*/}
65     dobuild $ta _.boot.${ta}.no_forth.log "WITHOUT_FORTH=yes"
66 done
67
68 # Build without GELI
69 for i in \
70         amd64/amd64 \
71         i386/i386 \
72         ; do
73     ta=${i##*/}
74     dobuild $ta _.boot.${ta}.no_geli.log "WITHOUT_LOADER_GEIL=yes"
75 done
76
77 # Default build for a goodly selection of architectures
78 for i in \
79         amd64/amd64 \
80         arm/armv7 \
81         arm64/aarch64 \
82         i386/i386 \
83         mips/mips mips/mips64 \
84         powerpc/powerpc powerpc/powerpc64 \
85         ; do
86     ta=${i##*/}
87     dobuild $ta _.boot.${ta}.log ""
88 done
89
90 # Default build for a goodly selection of architectures with Lua
91 for i in \
92         amd64/amd64 \
93         arm/armv7 \
94         arm64/aarch64 \
95         i386/i386 \
96         mips/mips mips/mips64 \
97         powerpc/powerpc powerpc/powerpc64 \
98         ; do
99     ta=${i##*/}
100     dobuild $ta _.boot.${ta}.lua.log "MK_LOADER_LUA=yes MK_FORTH=no"
101 done
102
103 # Build w/o ZFS
104 for i in \
105         amd64/amd64 \
106         i386/i386 \
107         ; do
108     ta=${i##*/}
109     dobuild $ta _.boot.${ta}.no_zfs.log "MK_ZFS=no"
110 done
111
112 # Build with firewire
113 for i in \
114         amd64/amd64 \
115         i386/i386 \
116         ; do
117     ta=${i##*/}
118     dobuild $ta _.boot.${ta}.firewire.log "MK_LOADER_FIREWIRE=yes"
119 done