Commit Graph

70 Commits

Author SHA1 Message Date
VintagePC 916d02824e Initial round of changes to address some cmake features 2023-09-07 18:46:47 -04:00
VintagePC 3673b68356 Fix rebase fallout 2023-09-04 08:40:51 -04:00
Yuri D'Elia 334bfe4d29 build: Set all version data based on git tags
Drop the ALPHA/BETA/custom version handling. Set the version string and
firmware date based on the current tree description which has all the
required details.

Allow to override the repository information via cmake.

Use a truncated commit hash to set the internal commit number for
compatibility.

Rebase and fix issues
2023-09-04 08:35:15 -04:00
Yuri D'Elia 80594880cd cmake: Simplify version handling based on git tags
- Use the HEAD commit hash as the default suffix
- Use the output of "describe" as the full version string
- Use the HEAD commit time as SOURCE_DATE_EPOCH
2023-09-04 08:35:15 -04:00
Yuri D'Elia 2a71e681db cmake: Cache CUSTOM_COMPILE_OPTIONS
This allows persisting custom flags across builds, as intended.
2023-08-18 14:30:10 +02:00
Yuri D'Elia cfc8ffe8a3 cmake: Set source epoch from the HEAD commit
Allow to set the source epoch of the build with
PROJECT_VERSION_TIMESTAMP.

When unset fetch the commit timestamp of the current HEAD automatically
instead of leaving the source as 0. This fixes the firmware DATE
information in the support menu.
2023-08-17 07:46:47 +02:00
Yuri D'Elia a73fdec4ef cmake: Remove prefix/suffix exceptions
Now handled by having shorter variant names
2023-07-26 16:40:26 +02:00
Guðni Már Gilbert 526a1dcc63 power panic: Move code into a separate file 2023-07-18 11:29:03 +02:00
Scott Mudge 3cd125c566
MeatPack gcode compression support 2023-04-13 10:50:15 +02:00
D.R.racer 43ae2c78e5 Fix cmake build 2023-01-31 09:35:22 +01:00
Guðni Már Gilbert 15932123db cmake: add target name to memory usage info 2023-01-28 18:35:06 +00:00
Guðni Már Gilbert 17e6f1b75e optimisation: remove conv2str.cpp
Change in memory:
Flash: -288 bytes
SRAM: -8 bytes
2023-01-25 06:28:00 +00:00
Guðni Már Gilbert 11f56bf900 Fix building multilang firmware on Windows 2023-01-14 09:20:55 +00:00
Yuri D'Elia abf7fbf99b cmake: Consistent target names
- Use ALL_MULTILANG and VARIANT_MULTILANG instead of VARIANT_Multilang
- Use ALL_ENGLISH and VARIANT_ENGLISH instead of VARIANT_En-only
- Rename the intermediate VARIANT_Multilang_* targets to VARIANT_lang_*
  to avoid confusion
2022-12-29 12:47:21 +01:00
Guðni Már Gilbert 355b670cd4 Remove SWSPI which is not used/implemented 2022-12-20 10:10:45 +01:00
Yuri D'Elia 5160e214ae
Merge branch 'MK3' into build_drop_unused_option 2022-12-08 18:32:32 +01:00
Yuri D'Elia bfc44251c6 cmake: Remove usage warning
The cmake build system is effectively on-par (and a lot better in most
areas) compared to the old build system.

There's no need to warn developers anymore.
2022-12-08 13:41:51 +01:00
Yuri D'Elia 138725325a cmake: Remove unused SECONDARY_LANGUAGES option
The option SECONDARY_LANGUAGES is no longer being used.

cmake always allows en/multilang for all selected variants
by using the appropriate target now (ALL_ENGLISH).
2022-12-07 16:00:32 +01:00
Yuri D'Elia 688542602d cmake: Add targets for language checking
Add the following macro targets to check translations:

- check_lang: check all languages for all variants
- check_lang_[variant]: check all languages for [variant]
- check_lang_[lang]: check all variants against [lang]
- check_lang_[variant]_[lang]: check a single variant/language

For example:

- ninja check_lang: check *everything*
- ninja check_de: check German in all variants
- ninja check_MK3S-EINSy10a: check all languages in the MK3S
- ninja check_MK3S-EINSy10a_de: check German in the MK3S
2022-10-13 20:24:19 +02:00
Yuri D'Elia 468f4f8c57 cmake: Always check po files for errors during build 2022-10-13 20:20:47 +02:00
Yuri D'Elia 036a04938d cmake: Introduce AvrGcc/AnyAvrGcc toolchains, replacing LocalAvrGcc
- AvrGcc: use avr-gcc from dependencies
- AnyAvrGcc: use system's avr-gcc for testing
2022-10-12 11:07:45 +02:00
Yuri D'Elia 8a00179528 cmake: Improved reproducibility rules
Rewrite cmake rules for reproducibility and move them inside a separate
module.

The new rules are cleaner and can operate on multi-directory projects
transparently.
2022-10-10 14:19:03 +02:00
Yuri D'Elia 896008cee4 cmake: Remove unneeded additional include path 2022-10-05 11:10:05 +02:00
Yuri D'Elia d867da201f cmake: Define FW_VARIANT instead of copying Configuration_prusa 2022-10-05 01:26:30 +02:00
Yuri D'Elia 5237365ff7 cmake: Fix existing comment 2022-10-04 22:55:33 +02:00
Yuri D'Elia c479e002d4 cmake: Hard-link final hex files to reduce space overhead
cmake 3.19 introduced support for hardlinks, so use them instead of
making a copy.
2022-10-04 01:13:14 +02:00
Yuri D'Elia 0dbf08b8db cmake: Cleanup the final dual-language hex
List the file as a byproduct of the rule for correct cleanup.
2022-10-04 00:18:14 +02:00
Yuri D'Elia 96a2c9cb4a cmake: Improve a few comments 2022-10-03 23:57:00 +02:00
Yuri D'Elia 75377f3081 cmake: Use/include Buddy formatting rules for consistency 2022-10-03 23:54:24 +02:00
Yuri D'Elia 0b23ab8e09 cmake: Fix/uniform non-xflash builds 2022-10-03 23:53:05 +02:00
Yuri D'Elia 9d716e9d69 cmake: Move a few variables closer to usage 2022-10-03 23:53:05 +02:00
Yuri D'Elia 3ec54d355e cmake: Correctly patch binary during multi-language builds
lang-map.py expects to use the BIN file as an input-output argument.
The resulting BIN file contains an updated _PRI_LANG_SIGNATURE symbol.
2022-10-03 23:53:05 +02:00
Yuri D'Elia ac1fca4a6a cmake: Generate .hex files only where needed
This avoids generating useless intermediate .hex files during
multi-language builds.
2022-10-03 23:53:05 +02:00
Yuri D'Elia ac84dd1457 cmake: Update the variant configuration correctly when changed 2022-10-03 20:55:27 +02:00
Yuri D'Elia 7d9dc1007c cmake: Cleanup XFLASH multi-language rules 2022-10-03 19:51:41 +02:00
Yuri D'Elia 7e56a8255b cmake: Define all targets, but only build ALL_MULTILANG by default
ALL_ENGLISH is mostly intended for debugging purposes
2022-10-03 17:51:31 +02:00
Yuri D'Elia 63605f4c86 cmake: Reformat to fix tab/space mixture 2022-10-03 17:40:48 +02:00
Yuri D'Elia 0ac4130b7d cmake: Correctly split/gc sections while linking
Repeat the flags while linking for LTO
2022-10-02 20:44:02 +02:00
Yuri D'Elia 4412881439 cmake: Generate correct inline source listings in asm output
Manually provide a source path prefix to objdump
2022-10-02 20:32:32 +02:00
Yuri D'Elia a8e85bd146 cmake: Work-around gcc 7 not supporting SOURCE_DATE_EPOCH 2022-10-02 20:32:32 +02:00
Yuri D'Elia cdd822269a cmake: Only make the target reproducible 2022-10-02 20:32:32 +02:00
Yuri D'Elia 1d520f9165 cmake: Make builds fully reproducible by default
- Work-around SOURCE flags being reset for each project when setting the
  random-seed property by calling a support function.
- Likewise, set correct flags for reproducibility when creating archives.
- Strip source prefix paths from debug info

This should set the EPOCH using the last git commit date when available,
but it's not currently implemented. Just set the EPOCH to be 0 for now.
2022-10-02 20:32:32 +02:00
Yuri D'Elia 655b403c14 cmake: Uniform target compile/link flags 2022-10-02 20:32:32 +02:00
Yuri D'Elia 530702d1c9 cmake: Allow to configure/restrict the variant to be built
This introduces FW_VARIANTS as a configurable option, defaulting to the
full list of variants.
2022-10-02 20:32:32 +02:00
Yuri D'Elia b3add22885 cmake: Move tests and CMakefiles to tests/ 2022-10-02 20:32:32 +02:00
Yuri D'Elia 7f1bd0f046 cmake: Update Catch2 2022-10-02 20:32:32 +02:00
Yuri D'Elia fea4c64056 cmake: Remove obsolete tests 2022-10-02 20:32:32 +02:00
VintagePC c522330433 Merge remote-tracking branch 'upstream/MK3' into build-with-cmake 2022-09-30 09:04:35 -04:00
VintagePC 4a3b07f832 Fix include path 2022-09-25 10:55:23 -04:00
Guðni Már Gilbert 428f4a87ed Remove unused CMake tests 2022-09-16 10:23:47 +02:00