Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
freebsd
GitHub Repository: freebsd/freebsd-src
Path: blob/main/tools/boot/universe.sh
105644 views
1
#!/bin/sh
2
3
#
4
# This script is expected to be run in stand (though you could run it anywhere
5
# in the tree). It does a full clean build. For stand you can do all the archs in
6
# about a minute or two on a fast machine. It's also possible that you need a full
7
# make universe for this to work completely.
8
#
9
# Output is put into _.boot.$TARGET_ARCH.log in sys.boot.
10
#
11
12
die()
13
{
14
echo $*
15
exit 1
16
}
17
18
dobuild()
19
{
20
local ta=$1
21
local lf=$2
22
local opt=$3
23
24
echo -n "Building $ta ${opt} ... "
25
objdir=$(make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make -V .OBJDIR" | tail -1)
26
case ${objdir} in
27
/*) ;;
28
make*) echo Error message from make: $objdir
29
continue ;;
30
*) die Crazy object dir: $objdir ;;
31
esac
32
rm -rf ${objdir}
33
if ! make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make clean cleandepend cleandir obj depend" \
34
> $lf 2>&1; then
35
echo "Fail (cleanup)"
36
continue
37
fi
38
if ! make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make ${opt} -j 40 all" \
39
>> $lf 2>&1; then
40
echo "Fail (build)"
41
continue
42
fi
43
echo "Success"
44
}
45
46
top=$(make -V SRCTOP)
47
cd $top/stand
48
49
# Build without forth
50
for i in \
51
arm64/aarch64 \
52
amd64/amd64 \
53
i386/i386 \
54
; do
55
ta=${i##*/}
56
dobuild $ta _.boot.${ta}.no_forth.log "WITHOUT_FORTH=yes"
57
done
58
59
# Build without GELI
60
for i in \
61
arm64/aarch64 \
62
amd64/amd64 \
63
i386/i386 \
64
; do
65
ta=${i##*/}
66
dobuild $ta _.boot.${ta}.no_geli.log "WITHOUT_LOADER_GELI=yes"
67
done
68
69
# Default build for a almost all architectures
70
for i in \
71
amd64/amd64 \
72
arm/armv7 \
73
arm64/aarch64 \
74
i386/i386 \
75
powerpc/powerpc \
76
powerpc/powerpc64 \
77
powerpc/powerpc64le \
78
riscv/riscv64 \
79
; do
80
ta=${i##*/}
81
dobuild $ta _.boot.${ta}.log ""
82
done
83
84
# Build w/o ZFS
85
for i in \
86
arm64/aarch64 \
87
amd64/amd64 \
88
i386/i386 \
89
; do
90
ta=${i##*/}
91
dobuild $ta _.boot.${ta}.no_zfs.log "MK_LOADER_ZFS=no"
92
done
93
94
# Build w/o LOADER_BIOS_TEXTONLY
95
for i in \
96
amd64/amd64 \
97
i386/i386 \
98
; do
99
ta=${i##*/}
100
dobuild $ta _.boot.${ta}.no_zfs.log "MK_LOADER_BIOS_TEXTONLY=no"
101
done
102
103