| 
					
				 | 
			
			
				@@ -59,6 +59,7 @@ We now return to your regularly scheduled Firmware Build." 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 option(SECONDARY_LANGUAGES "Secondary language support in the firmware" ON) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Language configuration 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 set(MAIN_LANGUAGES 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     cs de es fr it pl 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     CACHE STRING "The list of 'main' languages to be included, in the correct order" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -79,6 +80,7 @@ get_dependency_directory(prusa3dboards PRUSA_BOARDS_DIR) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 project(Prusa-Firmware) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 add_subdirectory(lib) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Get LANG_MAX_SIZE from sources 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 file(STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/Firmware/config.h MAX_SIZE_LINE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      REGEX "^#define \+LANG_SIZE_RESERVED \+" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      ) 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -86,8 +88,8 @@ string(REGEX MATCH "0x[0-9]+" MAX_SIZE_HEX "${MAX_SIZE_LINE}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 math(EXPR LANG_MAX_SIZE "${MAX_SIZE_HEX}" OUTPUT_FORMAT DECIMAL) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 message("Language maximum size (from config.h): ${LANG_MAX_SIZE} bytes") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-set(LANG_BIN_MAX 249856) # Ditto, this in xflash_layout.h but needs invocation of the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                         # preprocessor... :-/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Ditto, this in xflash_layout.h but needs invocation of the preprocessor... :-/ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+set(LANG_BIN_MAX 249856) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 get_recommended_gcc_version(RECOMMENDED_TOOLCHAIN_VERSION) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if(CMAKE_CROSSCOMPILING AND NOT CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -227,7 +229,6 @@ set(AVR_SOURCES 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     WString.cpp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     abi.cpp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     main.cpp 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    # new.cpp # What happened to this? it was removed in 1.0.5-1 to 1.0.5.2? 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 list(TRANSFORM AVR_SOURCES PREPEND ${PRUSA_BOARDS_DIR}/cores/prusa_einsy_rambo/) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -482,7 +483,7 @@ function(fw_add_variant variant_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       set(LANG_HEX ${CMAKE_BINARY_DIR}/${FN_PREFIX}-${FW_LANG_FINAL}.hex) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       set(LANG_BIN ${LANG_TMP_DIR}/${variant_name}_${LANG}.bin) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      # Intermediate 2-lang bin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      # Patched binary with pre-baked secondary language 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       add_custom_command( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         OUTPUT ${FW_LANG_FINAL}.bin 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         COMMAND ${CMAKE_OBJCOPY} -O binary ${FW_LANG_BASE} ${FW_LANG_FINAL}.bin 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -492,7 +493,7 @@ function(fw_add_variant variant_name) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         COMMENT "Generating ${FW_LANG_FINAL}.bin" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      # Final hex 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      # Final hex files 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       add_custom_command( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         OUTPUT ${FW_LANG_FINAL}.hex 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         COMMAND ${CMAKE_OBJCOPY} -I binary -O ihex ${FW_LANG_FINAL}.bin ${FW_LANG_FINAL}.hex 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -531,17 +532,19 @@ if(CMAKE_CROSSCOMPILING) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     message("Variant added: ${THIS_VAR}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     string(REPLACE "-E3Dv6full" "" DIR_NAME "${THIS_VAR}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     string(REPLACE "1_75mm_" "" DIR_NAME "${DIR_NAME}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     # Generate a file in a subfolder so that we can organize things a little more neatly in VS code 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     file(MAKE_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/build_gen/${DIR_NAME}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     file(WRITE ${CMAKE_CURRENT_SOURCE_DIR}/build_gen/${DIR_NAME}/CMakeLists.txt 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          "project(${DIR_NAME})\nfw_add_variant(${THIS_VAR})" 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				          ) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/build_gen/${DIR_NAME}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    # fw_add_variant(${TRIMMED_NAME}) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   endforeach(THIS_VAR IN LISTS FW_VARIANTS) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 endif() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# Tests 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+# 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 if(NOT CMAKE_CROSSCOMPILING) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   enable_testing() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   add_subdirectory(tests) 
			 |