From a7a9c5045f78aeddf840a2bb7e413462a7b1b759 Mon Sep 17 00:00:00 2001 From: Maxim Prokhorov Date: Tue, 30 Nov 2021 00:13:04 +0300 Subject: [PATCH] pio: generate .cpp.ipp instead of .cpp.inc fixes #2479 --- .gitattributes | 2 +- ...e_raw.re.cpp.inc => ir_parse_raw.re.cpp.ipp} | 12 ++++++------ ...le.re.cpp.inc => ir_parse_simple.re.cpp.ipp} | 16 ++++++++-------- ...ate.re.cpp.inc => ir_parse_state.re.cpp.ipp} | 14 +++++++------- code/espurna/led.cpp | 2 +- ...attern.re.cpp.inc => led_pattern.re.cpp.ipp} | 12 ++++++------ code/scripts/espurna_utils/build.py | 17 ++++++++++------- 7 files changed, 39 insertions(+), 36 deletions(-) rename code/espurna/{ir_parse_raw.re.cpp.inc => ir_parse_raw.re.cpp.ipp} (94%) rename code/espurna/{ir_parse_simple.re.cpp.inc => ir_parse_simple.re.cpp.ipp} (94%) rename code/espurna/{ir_parse_state.re.cpp.inc => ir_parse_state.re.cpp.ipp} (90%) rename code/espurna/{led_pattern.re.cpp.inc => led_pattern.re.cpp.ipp} (92%) diff --git a/.gitattributes b/.gitattributes index 023a0471..5e2e8627 100644 --- a/.gitattributes +++ b/.gitattributes @@ -4,5 +4,5 @@ *.h text eol=lf *.cpp text eol=lf *.re text eol=lf -*.cpp.inc text eol=lf +*.cpp.ipp text eol=lf *.c text eol=lf diff --git a/code/espurna/ir_parse_raw.re.cpp.inc b/code/espurna/ir_parse_raw.re.cpp.ipp similarity index 94% rename from code/espurna/ir_parse_raw.re.cpp.inc rename to code/espurna/ir_parse_raw.re.cpp.ipp index 480759c6..7e1ed4df 100644 --- a/code/espurna/ir_parse_raw.re.cpp.inc +++ b/code/espurna/ir_parse_raw.re.cpp.ipp @@ -66,7 +66,7 @@ ParseResult parse(StringView view) { }; -#line 70 "espurna\\ir_parse_raw.re.cpp.inc" +#line 70 "espurna\\ir_parse_raw.re.cpp.ipp" const char *yyt1; const char *yyt2; const char *yyt3; @@ -74,14 +74,14 @@ const char *yyt4; #line 66 "espurna\\ir_parse_raw.re" -#line 78 "espurna\\ir_parse_raw.re.cpp.inc" +#line 78 "espurna\\ir_parse_raw.re.cpp.ipp" int yyt5 { Root }; int yyt6 { Root }; #line 67 "espurna\\ir_parse_raw.re" -#line 85 "espurna\\ir_parse_raw.re.cpp.inc" +#line 85 "espurna\\ir_parse_raw.re.cpp.ipp" { char yych; yych = *YYCURSOR; @@ -98,7 +98,7 @@ yy2: yy3: #line 90 "espurna\\ir_parse_raw.re" { goto return_out; } -#line 102 "espurna\\ir_parse_raw.re.cpp.inc" +#line 102 "espurna\\ir_parse_raw.re.cpp.ipp" yy4: yych = *(YYMARKER = ++YYCURSOR); switch (yych) { @@ -183,7 +183,7 @@ yy17: } goto return_out; } -#line 187 "espurna\\ir_parse_raw.re.cpp.inc" +#line 187 "espurna\\ir_parse_raw.re.cpp.ipp" yy18: yych = *++YYCURSOR; switch (yych) { @@ -195,7 +195,7 @@ yy18: yy19: #line 91 "espurna\\ir_parse_raw.re" { goto return_out; } -#line 199 "espurna\\ir_parse_raw.re.cpp.inc" +#line 199 "espurna\\ir_parse_raw.re.cpp.ipp" } #line 92 "espurna\\ir_parse_raw.re" diff --git a/code/espurna/ir_parse_simple.re.cpp.inc b/code/espurna/ir_parse_simple.re.cpp.ipp similarity index 94% rename from code/espurna/ir_parse_simple.re.cpp.inc rename to code/espurna/ir_parse_simple.re.cpp.ipp index 4c40b98d..d8d9a134 100644 --- a/code/espurna/ir_parse_simple.re.cpp.inc +++ b/code/espurna/ir_parse_simple.re.cpp.ipp @@ -29,7 +29,7 @@ ParseResult parse(StringView view) { ParseResult out; -#line 33 "espurna\\ir_parse_simple.re.cpp.inc" +#line 33 "espurna\\ir_parse_simple.re.cpp.ipp" const char *yyt1 { nullptr }; const char *yyt2 { nullptr }; const char *yyt3 { nullptr }; @@ -39,7 +39,7 @@ const char *yyt6 { nullptr }; #line 29 "espurna\\ir_parse_simple.re" -#line 43 "espurna\\ir_parse_simple.re.cpp.inc" +#line 43 "espurna\\ir_parse_simple.re.cpp.ipp" { char yych; unsigned int yyaccept = 0; @@ -57,7 +57,7 @@ yy2: yy3: #line 63 "espurna\\ir_parse_simple.re" { goto return_out; } -#line 61 "espurna\\ir_parse_simple.re.cpp.inc" +#line 61 "espurna\\ir_parse_simple.re.cpp.ipp" yy4: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); @@ -155,7 +155,7 @@ yy16: b1 = YYCURSOR; #line 43 "espurna\\ir_parse_simple.re" { goto update_out; } -#line 159 "espurna\\ir_parse_simple.re.cpp.inc" +#line 159 "espurna\\ir_parse_simple.re.cpp.ipp" yy17: yych = *++YYCURSOR; switch (yych) { @@ -201,7 +201,7 @@ yy22: r1 = YYCURSOR; #line 48 "espurna\\ir_parse_simple.re" { goto update_out; } -#line 205 "espurna\\ir_parse_simple.re.cpp.inc" +#line 205 "espurna\\ir_parse_simple.re.cpp.ipp" yy23: yych = *++YYCURSOR; switch (yych) { @@ -249,7 +249,7 @@ yy28: s1 = YYCURSOR; #line 54 "espurna\\ir_parse_simple.re" { goto update_out; } -#line 253 "espurna\\ir_parse_simple.re.cpp.inc" +#line 253 "espurna\\ir_parse_simple.re.cpp.ipp" yy29: yych = *++YYCURSOR; switch (yych) { @@ -297,7 +297,7 @@ yy34: d1 = YYCURSOR; #line 61 "espurna\\ir_parse_simple.re" { goto update_out; } -#line 301 "espurna\\ir_parse_simple.re.cpp.inc" +#line 301 "espurna\\ir_parse_simple.re.cpp.ipp" yy35: yych = *++YYCURSOR; switch (yych) { @@ -352,7 +352,7 @@ yy40: yy41: #line 64 "espurna\\ir_parse_simple.re" { goto return_out; } -#line 356 "espurna\\ir_parse_simple.re.cpp.inc" +#line 356 "espurna\\ir_parse_simple.re.cpp.ipp" } #line 65 "espurna\\ir_parse_simple.re" diff --git a/code/espurna/ir_parse_state.re.cpp.inc b/code/espurna/ir_parse_state.re.cpp.ipp similarity index 90% rename from code/espurna/ir_parse_state.re.cpp.inc rename to code/espurna/ir_parse_state.re.cpp.ipp index 307a037d..2ef0a521 100644 --- a/code/espurna/ir_parse_state.re.cpp.inc +++ b/code/espurna/ir_parse_state.re.cpp.ipp @@ -25,7 +25,7 @@ ParseResult parse(StringView view) { ParseResult out; -#line 29 "espurna\\ir_parse_state.re.cpp.inc" +#line 29 "espurna\\ir_parse_state.re.cpp.ipp" const char *yyt1 { nullptr }; const char *yyt2 { nullptr }; const char *yyt3 { nullptr }; @@ -33,7 +33,7 @@ const char *yyt4 { nullptr }; #line 25 "espurna\\ir_parse_state.re" -#line 37 "espurna\\ir_parse_state.re.cpp.inc" +#line 37 "espurna\\ir_parse_state.re.cpp.ipp" { char yych; unsigned int yyaccept = 0; @@ -51,7 +51,7 @@ yy2: yy3: #line 49 "espurna\\ir_parse_state.re" { goto return_out; } -#line 55 "espurna\\ir_parse_state.re.cpp.inc" +#line 55 "espurna\\ir_parse_state.re.cpp.ipp" yy4: yyaccept = 0; yych = *(YYMARKER = ++YYCURSOR); @@ -104,7 +104,7 @@ yy11: c1 = YYCURSOR; #line 38 "espurna\\ir_parse_state.re" { goto update_out; } -#line 108 "espurna\\ir_parse_state.re.cpp.inc" +#line 108 "espurna\\ir_parse_state.re.cpp.ipp" yy12: yych = *++YYCURSOR; switch (yych) { @@ -130,7 +130,7 @@ yy15: s1 = YYCURSOR; #line 42 "espurna\\ir_parse_state.re" { goto update_out; } -#line 134 "espurna\\ir_parse_state.re.cpp.inc" +#line 134 "espurna\\ir_parse_state.re.cpp.ipp" yy16: yych = *++YYCURSOR; switch (yych) { @@ -156,11 +156,11 @@ yy19: d1 = YYCURSOR; #line 47 "espurna\\ir_parse_state.re" { goto update_out; } -#line 160 "espurna\\ir_parse_state.re.cpp.inc" +#line 160 "espurna\\ir_parse_state.re.cpp.ipp" yy20: #line 50 "espurna\\ir_parse_state.re" { goto return_out; } -#line 164 "espurna\\ir_parse_state.re.cpp.inc" +#line 164 "espurna\\ir_parse_state.re.cpp.ipp" } #line 51 "espurna\\ir_parse_state.re" diff --git a/code/espurna/led.cpp b/code/espurna/led.cpp index 73ace7ac..32ace857 100644 --- a/code/espurna/led.cpp +++ b/code/espurna/led.cpp @@ -358,7 +358,7 @@ bool Led::toggle() { return status(!status()); } -#include "led_pattern.re.cpp.inc" +#include "led_pattern.re.cpp.ipp" } // namespace } // namespace led diff --git a/code/espurna/led_pattern.re.cpp.inc b/code/espurna/led_pattern.re.cpp.ipp similarity index 92% rename from code/espurna/led_pattern.re.cpp.inc rename to code/espurna/led_pattern.re.cpp.ipp index 9a2e46ca..81dd50d3 100644 --- a/code/espurna/led_pattern.re.cpp.inc +++ b/code/espurna/led_pattern.re.cpp.ipp @@ -31,12 +31,12 @@ Pattern::Pattern(const char* begin, const char* end) { const char* YYMARKER; loop: -#line 35 "espurna\\led_pattern.re.cpp.inc" +#line 35 "espurna\\led_pattern.re.cpp.ipp" const char *yyt1;const char *yyt2;const char *yyt3; #line 32 "espurna\\led_pattern.re" -#line 40 "espurna\\led_pattern.re.cpp.inc" +#line 40 "espurna\\led_pattern.re.cpp.ipp" { char yych; yych = (char)*YYCURSOR; @@ -55,7 +55,7 @@ yy2: yy3: #line 46 "espurna\\led_pattern.re" { return; } -#line 59 "espurna\\led_pattern.re.cpp.inc" +#line 59 "espurna\\led_pattern.re.cpp.ipp" yy4: yych = (char)*++YYCURSOR; switch (yych) { @@ -66,7 +66,7 @@ yy4: yy6: #line 48 "espurna\\led_pattern.re" { goto loop; } -#line 70 "espurna\\led_pattern.re.cpp.inc" +#line 70 "espurna\\led_pattern.re.cpp.ipp" yy7: yych = (char)*(YYMARKER = ++YYCURSOR); switch (yych) { @@ -146,11 +146,11 @@ yy17: goto loop; } } -#line 150 "espurna\\led_pattern.re.cpp.inc" +#line 150 "espurna\\led_pattern.re.cpp.ipp" yy18: #line 45 "espurna\\led_pattern.re" { return; } -#line 154 "espurna\\led_pattern.re.cpp.inc" +#line 154 "espurna\\led_pattern.re.cpp.ipp" } #line 75 "espurna\\led_pattern.re" diff --git a/code/scripts/espurna_utils/build.py b/code/scripts/espurna_utils/build.py index 5f962532..21c76ffe 100644 --- a/code/scripts/espurna_utils/build.py +++ b/code/scripts/espurna_utils/build.py @@ -78,24 +78,27 @@ def app_add_target_build_and_copy(env): # TODO: *could* be a Builder object, just the same it will detect targets via src_suffix & suffix properties # but, notice that: -# - constantly re-generating files in $project_dir only useful in development, as the source tree includes already 'compiled' .re.cpp.inc -# - .cpp.re.inc <-> .re dependency will be injected into the scons database of the *environment*, +# - constantly re-generating files in $project_dir only useful in development, as we need already +# 'compiled' .re.cpp.ipp in the source at commit time +# - .cpp.re.ipp <-> .re dependency will be injected into the scons database of the *environment*, # which may accidentally cause a rebuild when using 2 envs at the same time -# - .cpp file `#include`ing the .inc file may be built before the file is actually generated by the re2c (or, in a parallel job) -# scons has a C source scanner that is tracking `#include` directives. but, file may *already* exist at the scanning phase and -# it may be assumed something static during the build (as most include directives are for the system, sdk, and the build-tree headers) +# - .cpp file `#include`ing the .ipp file may be built before the file is actually generated by the re2c +# (or, it may happen in a parallel job) +# scons has a C source scanner that is tracking `#include` directives. but, file may *already* exist before the +# scanning phase even starts and it may be assumed something static during the build +# (since most include directives are for the system, sdk, and the build-tree headers) def app_add_target_build_re2c(env): from SCons.Script import COMMAND_LINE_TARGETS targets = [ - env.File(target) for target in COMMAND_LINE_TARGETS if ".re.cpp.inc" in target + env.File(target) for target in COMMAND_LINE_TARGETS if ".re.cpp.ipp" in target ] cmd = "re2c --no-generation-date --case-ranges -W -Werror -o {} {}" if targets: sources = [ - target.File("{}".format(target.name.replace(".cpp.inc", ""))) + target.File("{}".format(target.name.replace(".cpp.ipp", ""))) for target in targets ] for target, source in zip(targets, sources):