| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | #!/bin/bashlist="x86_64-linux-gnu-gcc x86-linux-gnu-gcc arm-linux-gnueabi-gcc aarch64-linux-gnu-gcc \      sparc64-linux-gnu-gcc mips-linux-gnu-gcc powerpc-linux-gnu-gcc x86_64-macos-darwin-gcc \      arm64-macos-darwin-cc x86_64-freebsd-gnu-gcc x86_64-solaris-gnu-gcc armv6-linux-gnueabi-gcc \	  armv5-linux-gnueabi-gcc"declare -A alias=( [x86-linux-gnu-gcc]=i686-stretch-linux-gnu-gcc \                   [x86_64-linux-gnu-gcc]=x86_64-stretch-linux-gnu-gcc \                   [arm-linux-gnueabi-gcc]=armv7-stretch-linux-gnueabi-gcc \				   [armv5-linux-gnueabi-gcc]=armv6-stretch-linux-gnueabi-gcc \                   [armv6-linux-gnueabi-gcc]=armv6-stretch-linux-gnueabi-gcc \                   [aarch64-linux-gnu-gcc]=aarch64-stretch-linux-gnu-gcc \                   [sparc64-linux-gnu-gcc]=sparc64-stretch-linux-gnu-gcc \                   [mips-linux-gnu-gcc]=mips64-stretch-linux-gnu-gcc \                   [powerpc-linux-gnu-gcc]=powerpc64-stretch-linux-gnu-gcc \                   [x86_64-macos-darwin-gcc]=x86_64-apple-darwin19-gcc \                   [arm64-macos-darwin-cc]=arm64-apple-darwin20.4-cc \                   [x86_64-freebsd-gnu-gcc]=x86_64-cross-freebsd12.3-gcc \                   [x86_64-solaris-gnu-gcc]=x86_64-cross-solaris2.x-gcc )declare -A cflags=( [sparc64-linux-gnu-gcc]="-mcpu=v7" \                    [mips-linux-gnu-gcc]="-march=mips32" \                    [armv5-linux-gnueabi-gcc]="-march=armv5t -mfloat-abi=soft" \                    [powerpc-linux-gnu-gcc]="-m32" )					declare -a compilersIFS= read -ra candidates <<< "$list"# do we have "clean" somewhere in parameters (assuming no compiler has "clean" in it...if [[ $@[*]} =~ clean ]]; then	clean="clean"fi	# first select platforms/compilersfor cc in ${candidates[@]}; do	# check compiler first	if ! command -v ${alias[$cc]:-$cc} &> /dev/null; then		if command -v $cc &> /dev/null; then			unset alias[$cc]		else				continue		fi		fi	if [[ $# == 0 || ($# == 1 && -n $clean) ]]; then		compilers+=($cc)		continue	fi	for arg in $@	do		if [[ $cc =~ $arg ]]; then 			compilers+=($cc)		fi	donedone# then do the workfor cc in ${compilers[@]}do	IFS=- read -r platform host package dummy <<< $cc		export CFLAGS=${cflags[$cc]}	CC=${alias[$cc]:-$cc}		make AR=${CC%-*}-ar CC=$CC PLATFORM=$platform HOST=$host $clean -j8	if [[ -n $clean ]]; then		continue	fidone
 |