* Impl. sectioned font table in firmware
* make_translation.py: Extract build_symbol_conversion_table function
* Put translation indices and strings in a struct
* Move translation objcopy step to Python
* Impl. multi-language firmware demo
* Impl. strings-compressed multi-lang firmware demo
* Add font compression to multi-lang demo
* Refactor Makefile a bit
* Fix rules for make < 4.3
* Add more multi-lang groups
* Add Pinecil multi-lang CI build
* Add lzfx compression license text
* Remote multi-language demo group
* Fix build after merge
* Import code from BriefLZ
* Change brieflz for our use case
* Change compression to use brieflz
* Remove lzfx code
* Update license file for brieflz
* Exclude brieflz files from format check
* Add BriefLZ test
This generates dedicates Translation.cpp files for translation language
and derives all language-specific data from them.
The Makefile is extended to also take care of generating these source
files.
This allows reuse of nearly all object files between builds of different
languages for the same model and regenerating the translation sources if
necessary.
This speeds up the release builds and the normal write-compile-cycle
considerably.
It also eliminates miscompilations when manually building different
languages.
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.