Translation.cpp is now automatically regenerated when necessary. This frees the developer from having to remember to execute build.sh after the translations have changed. Translation.cpp has been moved from Core/Src/ to the new Core/Gen/ as otherwise it would end up twice in SOURCE, once through the source discovery and once through the explicit entry.
144 lines
3.8 KiB
Bash
Executable File
144 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
TRANSLATION_DIR="../../Translations"
|
|
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" "TS80P" "Pinecil")
|
|
BUILD_MODELS=()
|
|
|
|
usage() {
|
|
echo "Usage : $(basename "$0") [-l <LANG_CODE>] [-m <TS100|TS80|TS80P|Pinecil>] [-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 " "
|
|
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 "Cleaning previous builds"
|
|
rm -rf Hexfile/ >/dev/null
|
|
rm -rf Objects/ >/dev/null
|
|
make clean >/dev/null
|
|
checkLastCommand
|
|
|
|
for model in "${BUILD_MODELS[@]}"; do
|
|
for lang in "${BUILD_LANGUAGES[@]}"; do
|
|
echo "Building firmware for $model in $lang"
|
|
make -j lang="$lang" model="$model" >/dev/null
|
|
checkLastCommand
|
|
echo "Cleanup Temp files for $model in $lang"
|
|
rm -rf Objects/*/Core/ >/dev/null
|
|
checkLastCommand
|
|
done
|
|
echo "Cleanup model change"
|
|
rm -rf Objects/ >/dev/null
|
|
checkLastCommand
|
|
done
|
|
else
|
|
echo "Nothing to build. (no model or language specified)"
|
|
forceExit
|
|
fi
|
|
echo " -- Firmwares successfully generated --"
|
|
echo "End..."
|