#!/bin/sh
# Cross-build wrapper. See https://wiki.freebsd.org/FreeBSD/arm/crossbuild

# If the local dir has a custom mk script, run it instead.
if [ -x ./config/mk ]; then
    ./config/mk "$@"
    exit $?
fi

# First set all tweakable variables to default values before loading
# config/mk.conf which can override any of these defaults.
mk_arch="armv6hf"
mk_insdir="$(pwd)/nfsroot"
mk_jobs="$(sysctl -n hw.ncpu)"
mk_kernel="GENERIC"
mk_makeconf="$(pwd)/config/make.conf"
mk_mkargs=""
mk_nice="nice -10"
mk_objdir="$(pwd)/obj"
mk_tmpdir="$(pwd)/tmp"
mk_srcconf="$(pwd)/config/src.conf"
mk_srcdir="$(pwd)/src"
mk_ubldraddr="0x0"

# If making a target that requires root privs, automatically add sudo.
# This can be overridden by setting mk_sudo="" in config/mk.conf.
case "$*" in
  *installworld* | *installkernel* | *distribution* | *builddtb* ) mk_sudo=sudo;;
esac

# Source in config/mk.conf if it exists.
if [ -r config/mk.conf ] ; then
    . config/mk.conf
fi

# If there is a local kernel config file, link it into the source tree.
if [ -r "config/${mk_kernel}" ] ; then
    ln -fs "../../../../config/${mk_kernel}"   "src/sys/arm/conf/${mk_kernel}"
fi

# MAKEOBJDIRPREFIX must be in the environment, not on the make command line.
export MAKEOBJDIRPREFIX="${mk_objdir}"
export TMPDIR="${mk_tmpdir}"

# Do it.
set -x
cd ${mk_srcdir} && \
    ${mk_nice} ${mk_sudo} \
    MAKEOBJDIRPREFIX="${mk_objdir}" \
    TMPDIR="${mk_tmpdir}" \
    make -j ${mk_jobs} \
    "TARGET_ARCH=${mk_arch}" \
    "DESTDIR=${mk_insdir}" \
    "__MAKE_CONF=${mk_makeconf}" \
    "srcconf=${mk_srcconf}" \
    "KERNCONF=${mk_kernel}" \
    "UBLDR_LOADADDR=${mk_ubldraddr}" \
    ${mk_mkargs} \
    "$@"
