#! /bin/bash usage() { echo "usage: $0 --platform= [options...]" echo "" echo "Available platforms:" for file in config/*.cfg; do platform="${file#config/}" platform="${platform%.cfg}" printf ' %-10s' "$platform" head -1 "$file" | sed 's/^# *//' done echo "" echo "Options for fx9860g and fxcg50:" echo " --toolchain=" echo " Target triplet; default is 'sh3eb-elf' for fx9860g and 'sh4eb-elf'" echo " for fxcg50" echo " --prefix=" echo " Library install path, guessed automatically by asking the compiler" echo " if not specified" exit ${1:-1} } platform= toolchain= # Parse command-line arguments for arg in "$@"; do case "$arg" in -h|--help|"-?") usage 0;; --platform=*) platform=${arg#*=};; --toolchain=*) toolchain=${arg#*=};; --prefix=*) prefix=${arg#*=};; *) echo "error: unrecognized option '$arg'" 2>&1 error=1;; esac; done # Check validity if [ -z "$platform" ]; then echo "error: please specify a platform" 2>&1 echo "Try '$0 --help' for more information." exit 1 fi if [ ! -f "config/$platform.cfg" ]; then echo "error: unknown platform '$platform'" 2>&1 echo "Try '$0 --help' for a list of available platforms." exit 1 fi # Guess toolchains [[ $platform == fx9860g && -z $toolchain ]] && toolchain=sh-elf [[ $platform == fxcg50 && -z $toolchain ]] && toolchain=sh-elf # Guess compiler paths if [[ ( $platform == fx9860g || $platform == fxcg50 ) && -z $prefix ]]; then echo "No prefix specified, let's ask the compiler:" echo " $toolchain-gcc --print-search-dirs | grep install | sed 's/install: //'" inst=$($toolchain-gcc --print-search-dirs | grep install | sed 's/install: //') if [[ $? != 0 ]]; then echo "Call returned $?, giving up." fi echo "Got '$inst'". if [[ ! -d $inst ]]; then echo "Directory does not exist (or is not a directory), giving up." fi echo "" prefix=$inst fi # Output configuration output_config() { echo "PLATFORM=$platform" if [[ $platform == fx9860g || $platform == fxcg50 ]]; then echo "TOOLCHAIN=$toolchain" echo "PREFIX=$prefix" fi } output_config > Makefile.cfg echo "Makefile.cfg now links to the platform file 'config/$platform.cfg'."