| #!/usr/bin/env bash |
| # |
| # Copyright (c) 2015 Google Inc. |
| # Kevin Klues <klueska@cs.berkeley.edu> |
| # See LICENSE for details. |
| |
| inst_dir_default="\"\${ARCH}_INSTDIR based on the configured architecture in akaros_root\"" |
| |
| function short_description() { |
| echo "Rebuild the Akaros cross compiler and all of its dependencies" |
| } |
| |
| function usage() { |
| echo "Usage:" |
| echo " ${cmd} -h | --help" |
| echo " ${cmd} [ --akaros-root=<ak> ]" |
| echo " ${cmd//?/ } [ --inst-dir=<dir> ]" |
| echo "" |
| echo "Options:" |
| echo " -h --help Display this screen and exit" |
| echo " --akaros-root=<ak> The path to the root of the akaros tree" |
| echo " [default: \$AKAROS_ROOT]" |
| echo " --inst-dir=<dir> The installation path of the cross compiler" |
| echo " [default: ${inst_dir_default} ]" |
| } |
| |
| function main() { |
| # Check the sanity of our incoming variables |
| check_vars akaros_root inst_dir |
| check_dirs akaros_root |
| |
| # Set some local variables |
| local arch="$(basename $(readlink ${akaros_root}/kern/include/arch))" |
| if [ "${arch}" = "x86" ]; then |
| arch="x86_64" |
| fi |
| local make_jobs=$(expr `cat /proc/cpuinfo | grep processor | wc -l` - 1) |
| |
| # Set real default of $inst_dir |
| if [ "${inst_dir}" != "${inst_dir_default}" ]; then |
| inst_dir="$(eval echo \$${arch^^}_INSTDIR)" |
| fi |
| |
| # Rebuild the cross compiler |
| cd "${akaros_root}" |
| eval ${arch^^}_INSTDIR=${inst_dir} \ |
| make -j ${make_jobs} xcc-upgrade-from-scratch |
| cd - > /dev/null |
| } |