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:
@ -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)
|
||||
|
||||
Reference in New Issue
Block a user