xref: /freebsd/tools/boot/universe.sh (revision ea825d02749f382c3f7e17f28247f20a48733eab)
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 sys/boot (though you could run it anywhere
15# in the tree). It does a full clean build. For sys/boot 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
22top=$(make -V SRCTOP)
23cd $top/sys/boot
24
25for i in \
26	amd64/amd64 \
27	arm/arm arm/armeb arm/armv7 \
28	arm64/aarch64 \
29	i386/i386 \
30	mips/mips mips/mips64 \
31	powerpc/powerpc powerpc/powerpc64 \
32	sparc64/sparc64 \
33	; do
34    ta=${i##*/}
35    echo -n "Building $ta..."
36    if ! make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make clean cleandepend cleandir obj depend"  \
37	 > _.boot.${ta}.log 2>&1; then
38	echo "Fail (cleanup)"
39	continue
40    fi
41    if ! make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make -j 20 all"  \
42	 >> _.boot.${ta}.log 2>&1; then
43	echo "Fail (build)"
44	continue
45    fi
46    echo "Success"
47done
48for i in \
49	amd64/amd64 \
50	i386/i386 \
51	; do
52    ta=${i##*/}
53    echo -n "Building $ta MK_ZFS=no..."
54    if ! make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make clean cleandepend cleandir obj depend"  \
55	 > _.boot.${ta}.noZFS.log 2>&1; then
56	echo "Fail (cleanup)"
57	continue
58    fi
59    if ! make buildenv TARGET_ARCH=$ta BUILDENV_SHELL="make MK_ZFS=no -j 20 all"  \
60	 >> _.boot.${ta}.noZFS.log 2>&1; then
61	echo "Fail (build)"
62	continue
63    fi
64    echo "Success"
65done
66