157 lines
3.8 KiB
Bash
Executable File
157 lines
3.8 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
|
|
lang_json=${f#*/translation_} # Remove ".../translation_"
|
|
lang=${lang_json%.json} # Remove ".json"
|
|
AVAILABLE_LANGUAGES+=("${lang^^}") # Convert to uppercase
|
|
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..."
|