build/mk.sh

105 lines
2.4 KiB
Bash
Raw Normal View History

#!/bin/bash
set -e
if [ ! $# -eq 1 ]; then
echo "usage: $0 <config>"
exit 1
fi
BOARD="$1"
################################ basic setup ################################
BUILDROOT=$(pwd)
SCRIPTDIR=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
NUMJOBS=$(grep -e "^processor" /proc/cpuinfo | wc -l)
HOSTTUPLE=$(uname -m)-$OSTYPE
TCDIR="$BUILDROOT/$BOARD/toolchain"
PKGBUILDDIR="$BUILDROOT/$BOARD/build"
PKGSRCDIR="$BUILDROOT/src"
PKGDEPLOYDIR="$BUILDROOT/$BOARD/deploy"
PKGLOGDIR="$BUILDROOT/$BOARD/log"
PKGDOWNLOADDIR="$BUILDROOT/download"
PACKAGELIST="$BUILDROOT/$BOARD/pkglist"
mkdir -p "$PKGDOWNLOADDIR" "$PKGSRCDIR" "$PKGBUILDDIR" "$PKGLOGDIR"
mkdir -p "$PKGDEPLOYDIR" "$TCDIR/bin"
export PATH="$TCDIR/bin:$PATH"
source "$SCRIPTDIR/board/$BOARD/TOOLCHAIN"
mkdir -p "$TCDIR/$TARGET"
CMAKETCFILE="$TCDIR/toolchain.cmake"
pushd "$SCRIPTDIR" > /dev/null
OS_NAME="Pygos"
OS_RELEASE=$(git describe --always --tags --broken --dirty)
popd > /dev/null
############################# include utilities ##############################
source "$SCRIPTDIR/util/depends.sh"
source "$SCRIPTDIR/util/download.sh"
source "$SCRIPTDIR/util/pkgcmd.sh"
source "$SCRIPTDIR/util/toolchain.sh"
source "$SCRIPTDIR/util/cmake.sh"
source "$SCRIPTDIR/util/misc.sh"
############################## build toolchain ###############################
echo "--- resolving toolchain dependencies ---"
include_pkg "tcpkg" "toolchain"
dependencies | tsort | tac > "$PACKAGELIST"
cat "$PACKAGELIST"
echo "--- downloading toolchain files ---"
while read pkg; do
include_pkg "tcpkg" "$pkg"
fetch_package
done < "$PACKAGELIST"
echo "--- building toolchain ---"
gen_cmake_toolchain_file
while read pkg; do
include_pkg "tcpkg" "$pkg"
run_pkg_command "build" "toolchain"
run_pkg_command "deploy" "toolchain"
done < "$PACKAGELIST"
echo "--- backing up toolchain sysroot ---"
save_toolchain
############################### build packages ###############################
echo "--- resolving package dependencies ---"
include_pkg "pkg" "release-${BOARD}"
dependencies | tsort | tac > "$PACKAGELIST"
cat "$PACKAGELIST"
echo "--- downloading package files ---"
while read pkg; do
include_pkg "pkg" "$pkg"
fetch_package
done < "$PACKAGELIST"
echo "--- building package ---"
while read pkg; do
include_pkg "pkg" "$pkg"
install_build_deps
run_pkg_command "build" "$PKGNAME"
run_pkg_command "deploy" "$PKGNAME"
restore_toolchain
done < "$PACKAGELIST"