From 5588e8e323aced9040cd5e2dce84f21b43563bb5 Mon Sep 17 00:00:00 2001 From: rusefi Date: Sat, 1 Jun 2019 16:51:32 -0400 Subject: [PATCH] incremental code generation --- firmware/controllers/algo/rusefi_generated.h | 2 +- firmware/gen_config.bat | 9 ++- java_console/rusefi.xml | 2 +- java_tools/ConfigDefinition.jar | Bin 76005 -> 79587 bytes .../runConfigurations/ConfigDefinition.xml | 3 +- .../src/com/rusefi/ConfigDefinition.java | 11 +-- .../src/com/rusefi/VariableRegistry.java | 7 +- .../com/rusefi/output/CHeaderConsumer.java | 5 +- .../com/rusefi/output/JavaFieldsConsumer.java | 5 +- .../com/rusefi/output/TSProjectConsumer.java | 3 +- .../src/com/rusefi/util/LazyFile.java | 72 ++++++++++++++++++ 11 files changed, 102 insertions(+), 17 deletions(-) create mode 100644 java_tools/configuration_definition/src/com/rusefi/util/LazyFile.java diff --git a/firmware/controllers/algo/rusefi_generated.h b/firmware/controllers/algo/rusefi_generated.h index bd4a0f7628..c00ac81ad3 100644 --- a/firmware/controllers/algo/rusefi_generated.h +++ b/firmware/controllers/algo/rusefi_generated.h @@ -1,5 +1,5 @@ // -// generated by ConfigDefinition.jar tool based on rusefi_config.txt +// was generated automatically by ConfigDefinition.jar based on integration\rusefi_config.txt // #define accelerometerSpiDevice_offset 2736 diff --git a/firmware/gen_config.bat b/firmware/gen_config.bat index 7e25f69e3f..7ceaeab12c 100644 --- a/firmware/gen_config.bat +++ b/firmware/gen_config.bat @@ -5,7 +5,14 @@ rem the storage section of rusefi.ini is updated as well rem lazy is broken - TS input is not considered a change rm build/config.gen -java -jar ../java_tools/ConfigDefinition.jar -definition integration\rusefi_config.txt -romraider integration -ts_destination tunerstudio -c_defines controllers\algo\rusefi_generated.h -c_destination controllers\algo\engine_configuration_generated_structures.h -java_destination ../java_console -skip build/config.gen +java -Drusefi.generator.lazyfile.enabled=true ^ + -jar ../java_tools/ConfigDefinition.jar ^ + -definition integration\rusefi_config.txt ^ + -romraider integration ^ + -ts_destination tunerstudio ^ + -c_defines controllers\algo\rusefi_generated.h ^ + -c_destination controllers\algo\engine_configuration_generated_structures.h ^ + -java_destination ../java_console -skip build/config.gen rem This would automatically copy latest file to 'dev' TS project diff --git a/java_console/rusefi.xml b/java_console/rusefi.xml index e64fb4ec12..370c2cfacf 100644 --- a/java_console/rusefi.xml +++ b/java_console/rusefi.xml @@ -1,6 +1,6 @@ - + diff --git a/java_tools/ConfigDefinition.jar b/java_tools/ConfigDefinition.jar index d5d87a27eb1ad976856bad8ee4b2ac72de51ee53..c37f614d3e9aa3b1b57ec5515af963635fa63420 100644 GIT binary patch delta 30363 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

p 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 Cp!r7t delta 26745 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