#!/bin/bash # Convenience wrapper to set $CROSS_COMPILE from short name using "ccc" # symlink (Cross C Compiler) to a directory of cross compilers named # $TARGET-*-cross. Tested with scripts/mcm-buildall.sh output. # Usage: scripts/cross.sh $TARGET make distclean defconfig toybox # With no arguments, lists available targets. Use target "all" to iterate # through each $TARGET from the list. CCC="$(dirname "$(readlink -f "$0")")"/../ccc if [ ! -d "$CCC" ] then echo "Create symlink 'ccc' to cross compiler directory, ala:" echo " ln -s ~/musl-cross-make/ccc ccc" exit 1 fi unset X Y # Display target list? list() { ls "$CCC" | sed 's/-.*//' | sort -u | xargs } [ $# -eq 0 ] && list && exit X="$1" shift # build all targets? if [ "$X" == all ] then for TARGET in $(list) do { export TARGET "$0" $TARGET "$@" 2>&1 || mv cross-log-$TARGET.{txt,failed} } | tee cross-log-$TARGET.txt done exit fi # Call command with CROSS_COMPILE= as its first argument Y=$(echo "$CCC/$X"-*cross) Z=$(basename "$Y") Y=$(readlink -f "$CCC"/$X-*cross) export TARGET="${Z/-*/}" X="$Y/bin/${Z/-cross/-}" [ ! -e "${X}cc" ] && echo "${X}cc not found" && exit 1 CROSS_COMPILE="$X" "$@"