SCons: List .gen.cpp sources explicitly to avoid globbing errors

Whenever we change the name (or remove) generated cpp files with the `.gen.cpp`
extension, users run into build issues when switching between branches (i.e.
switching before and after the name change/removal). This is because we glob
`*.cpp` so if a now-obsolete file from a previous build is present, we'll
include it too, potentially leading to bugs or compilation failure (due to
missing headers or invalid code).

So globbing patterns in `add_source_files` will now skip files ending with
`.gen.cpp`, which should instead be passed explicitly where they're used.
This commit is contained in:
Rémi Verschelde
2021-10-15 21:59:11 +02:00
parent 08d1ce718d
commit c133480531
4 changed files with 15 additions and 14 deletions

View File

@ -7,19 +7,15 @@ import input_builders
# Order matters here. Higher index controller database files write on top of lower index database files.
controller_databases = [
"#core/input/gamecontrollerdb.txt",
"#core/input/godotcontrollerdb.txt",
"gamecontrollerdb.txt",
"godotcontrollerdb.txt",
]
env.Depends("#core/input/default_controller_mappings.gen.cpp", controller_databases)
env.CommandNoCache(
"#core/input/default_controller_mappings.gen.cpp",
gensource = env.CommandNoCache(
"default_controller_mappings.gen.cpp",
controller_databases,
env.Run(input_builders.make_default_controller_mappings, "Generating default controller mappings."),
)
env.add_source_files(env.core_sources, "*.cpp")
# Don't warn about duplicate entry here, we need it registered manually for first build,
# even if later builds will pick it up twice due to above *.cpp globbing.
env.add_source_files(env.core_sources, "#core/input/default_controller_mappings.gen.cpp", warn_duplicates=False)
env.add_source_files(env.core_sources, gensource)