1
0
forked from me/IronOS
Files
IronOS/workspace/TS100/build.sh
Alessandro Gatti 495073425e Make build.sh Bash 3.x compatible.
The highest version of bash shipped by vanilla macOS is 3.2, and it will
stay like that for the foreseeable future (bash being removed as default
in 10.15 is a strong indicator for that).

The build.sh script used Bash 4.x syntax for enumerating available
translations - this patch dials back the clock to Bash 3.x making things
work again on macOS and (hopefully) still maintaining functionality on
other platforms that use a newer version of bash.
2019-07-20 00:06:17 +02:00

155 lines
3.7 KiB
Bash
Executable File

#!/bin/bash
TRANSLATION_DIR="../../Translation Editor"
TRANSLATION_SCRIPT="make_translation.py"
# AVAILABLE_LANGUAGES will be calculating according to json files in $TRANSLATION_DIR
AVAILABLE_LANGUAGES=()
BUILD_LANGUAGES=()
AVAILABLE_MODELS=("TS100" "TS80")
BUILD_MODELS=()
usage ()
{
echo "Usage : $(basename "$0") [-l <LANG_CODE>] [-m <TS100|TS80>] [-h]
Parameters :
-l LANG_CODE : Force a specific language (E.g. : EN, FR, NL_BE, ...)
-m MODEL : Force a specific model (E.g. : TS100 or TS80)
-h : Show this help message
INFO : By default, without parameters, the build is for all platforms and all languages" 1>&2
exit 1
}
checkLastCommand ()
{
if [ $? -eq 0 ]
then
echo " [Success]"
echo "*********************************************"
else
forceExit
fi
}
forceExit ()
{
echo " [Error]"
echo "*********************************************"
echo " -- Stop on error --"
exit 1
}
isInArray ()
{
local value="$1" # Save first argument in a variable
shift # Shift all arguments to the left (original $1 gets lost)
local array=("$@") # Rebuild the array with rest of arguments
for item in "${array[@]}"
do
[[ $value == "$item" ]] && return 0
done
return 1
}
while getopts h:l:m: option
do
case "${option}" in
h)
usage
;;
l)
LANGUAGEREQ=${OPTARG}
;;
m)
MODEL=${OPTARG}
;;
*)
usage
;;
esac
done
shift $((OPTIND-1))
echo "*********************************************"
echo " Builder for the"
echo " Alternate Open Source Firmware"
echo " for Miniware TS100 or TS80"
echo " by Ralim"
echo "*********************************************"
# Calculate available languages
for f in "$TRANSLATION_DIR"/translation_*.json
do
AVAILABLE_LANGUAGES+=(`echo $f | tr "[:lower:]" "[:upper:]" | sed "s/[^_]*_//" | sed "s/\.JSON//g"`)
done
# Checking requested language
echo "Available languages :"
echo " ${AVAILABLE_LANGUAGES[*]}"
echo "Requested languages :"
if [ -n "$LANGUAGEREQ" ]
then
if isInArray "$LANGUAGEREQ" "${AVAILABLE_LANGUAGES[@]}"
then
echo " $LANGUAGEREQ"
BUILD_LANGUAGES+=("$LANGUAGEREQ")
else
echo " $LANGUAGEREQ doesn't exist"
forceExit
fi
else
echo " [ALL LANGUAGES]"
BUILD_LANGUAGES+=("${AVAILABLE_LANGUAGES[@]}")
fi
echo "*********************************************"
# Checking requested model
echo "Available models :"
echo " ${AVAILABLE_MODELS[*]}"
echo "Requested models :"
if [ -n "$MODEL" ]
then
if isInArray "$MODEL" "${AVAILABLE_MODELS[@]}"
then
echo " $MODEL"
BUILD_MODELS+=("$MODEL")
else
echo " $MODEL doesn't exist"
forceExit
fi
else
echo " [ALL MODELS]"
BUILD_MODELS+=("${AVAILABLE_MODELS[@]}")
fi
echo "*********************************************"
if [ ${#BUILD_LANGUAGES[@]} -gt 0 ] && [ ${#BUILD_MODELS[@]} -gt 0 ]
then
echo "Generating Translation.cpp"
python3 "$TRANSLATION_DIR/$TRANSLATION_SCRIPT" "$TRANSLATION_DIR"
checkLastCommand
echo "Cleaning previous builds"
make clean 1>/dev/null
checkLastCommand
for model in "${BUILD_MODELS[@]}"
do
for lang in "${BUILD_LANGUAGES[@]}"
do
echo "Building firmware for $model in $lang"
make -j16 lang="$lang" model="$model" 1>/dev/null
checkLastCommand
rm -rf Objects/src 1>/dev/null
done
done
else
echo "Nothing to build. (no model or language specified)"
forceExit
fi
echo " -- Firmwares successfully generated --"
echo "End..."