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