xref: /freebsd/tools/boot/universe.sh (revision 47dd1d1b619cc035b82b49a91a25544309ff95ae)
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
22dobuild()
23{
24    local ta=$1
25    local lf=$2
26    local opt=$3
27
28    echo -n "Building $ta ${opt} ... "
29    objdir=$(make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make -V .OBJDIR" | tail -1)
30    rm -rf ${objdir}
31    if ! make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make clean cleandepend cleandir obj depend"  \
32	 > $lf 2>&1; then
33	echo "Fail (cleanup)"
34	continue
35    fi
36    if ! make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make ${opt} -j 20 all"  \
37	 >> $lf 2>&1; then
38	echo "Fail (build)"
39	continue
40    fi
41    echo "Success"
42}
43
44top=$(make -V SRCTOP)
45cd $top/stand
46
47# Build without forth
48for i in \
49	amd64/amd64 \
50	i386/i386 \
51	; do
52    ta=${i##*/}
53    dobuild $ta _.boot.${ta}.no_forth.log "WITHOUT_FORTH=yes"
54done
55
56# Build without GELI
57for i in \
58	amd64/amd64 \
59	i386/i386 \
60	; do
61    ta=${i##*/}
62    dobuild $ta _.boot.${ta}.no_geli.log "WITHOUT_LOADER_GEIL=yes"
63done
64
65# Default build for a goodly selection of architectures
66for i in \
67	amd64/amd64 \
68	arm/arm arm/armeb arm/armv7 \
69	arm64/aarch64 \
70	i386/i386 \
71	mips/mips mips/mips64 \
72	powerpc/powerpc powerpc/powerpc64 \
73	sparc64/sparc64 \
74	; do
75    ta=${i##*/}
76    dobuild $ta _.boot.${ta}.log ""
77done
78
79# Default build for a goodly selection of architectures with Lua
80for i in \
81	amd64/amd64 \
82	arm/arm arm/armeb arm/armv7 \
83	arm64/aarch64 \
84	i386/i386 \
85	mips/mips mips/mips64 \
86	powerpc/powerpc powerpc/powerpc64 \
87	sparc64/sparc64 \
88	; do
89    ta=${i##*/}
90    dobuild $ta _.boot.${ta}.lua.log "MK_LOADEDER_LUA=yes MK_FORTH=no"
91done
92
93# Build w/o ZFS
94for i in \
95	amd64/amd64 \
96	i386/i386 \
97	sparc64/sparc64 \
98	; do
99    ta=${i##*/}
100    dobuild $ta _.boot.${ta}.no_zfs.log "MK_ZFS=no"
101done
102
103# Build with firewire
104for i in \
105	amd64/amd64 \
106	i386/i386 \
107	; do
108    ta=${i##*/}
109    dobuild $ta _.boot.${ta}.firewire.log "MK_LOADER_FIREWIRE=yes"
110done
111
112# Build with LOADER_DEBUG, only sparc64 does this.
113for i in \
114	sparc64/sparc64 \
115	; do
116    ta=${i##*/}
117    dobuild $ta _.boot.${ta}.debug.log "LOADER_DEBUG=yes"
118done
119
120