Browse Source

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
Yuri D'Elia 1 year ago
parent
commit
688542602d
1 changed files with 23 additions and 2 deletions
  1. 23 2
      CMakeLists.txt

+ 23 - 2
CMakeLists.txt

@@ -294,8 +294,7 @@ function(add_base_binary variant_name)
   target_include_directories(
     ${variant_name}
     PRIVATE ${PRUSA_BOARDS_DIR}/cores/prusa_einsy_rambo/
-            ${PRUSA_BOARDS_DIR}/variants/prusa_einsy_rambo/
-            ${CMAKE_SOURCE_DIR}/Firmware
+            ${PRUSA_BOARDS_DIR}/variants/prusa_einsy_rambo/ ${CMAKE_SOURCE_DIR}/Firmware
     )
 
   target_link_libraries(${variant_name} avr_core)
@@ -373,12 +372,27 @@ function(fw_add_variant variant_name)
     COMMENT "Generating ${variant_name} language map"
     )
 
+  # Base targets for language checks
+  add_custom_target(check_lang_${variant_name})
+  add_dependencies(check_lang check_lang_${variant_name})
+
   # Build language catalogs
   set(LANG_BINS "")
   foreach(LANG IN LISTS SELECTED_LANGUAGES)
     set(LANG_BIN ${LANG_TMP_DIR}/${variant_name}_${LANG}.bin)
     set(PO_FILE "${CMAKE_SOURCE_DIR}/lang/po/Firmware_${LANG}.po")
 
+    # Full language checks
+    add_custom_target(
+      check_lang_${variant_name}_${LANG}
+      COMMENT "Checking ${variant_name} language ${LANG}"
+      COMMAND ${CMAKE_SOURCE_DIR}/lang/lang-check.py --map ${LANG_MAP} ${PO_FILE}
+      DEPENDS ${LANG_MAP} ${PO_FILE}
+      USES_TERMINAL
+      )
+    add_dependencies(check_lang_${variant_name} check_lang_${variant_name}_${LANG})
+    add_dependencies(check_lang_${LANG} check_lang_${variant_name}_${LANG})
+
     add_custom_command(
       OUTPUT ${LANG_BIN}
       # Check po file for errors _only_
@@ -470,6 +484,13 @@ endfunction()
 
 if(CMAKE_CROSSCOMPILING)
 
+  # Main target for language checks
+  add_custom_target(check_lang)
+  foreach(LANG IN LISTS SELECTED_LANGUAGES)
+    add_custom_target(check_lang_${LANG})
+    add_dependencies(check_lang check_lang_${LANG})
+  endforeach()
+
   # build a list of all supported variants
   file(
     GLOB ALL_VARIANTS