godot/main/SCsub
Rémi Verschelde a5093d64ac
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.

(cherry picked from commit c133480531)
2021-10-16 10:59:14 +02:00

39 lines
1.2 KiB
Python

#!/usr/bin/env python
Import("env")
from platform_methods import run_in_subprocess
import main_builders
env.main_sources = []
env.add_source_files(env.main_sources, "*.cpp")
# Order matters here. Higher index controller database files write on top of lower index database files.
controller_databases = ["gamecontrollerdb.txt", "godotcontrollerdb.txt"]
gensource = env.CommandNoCache(
"default_controller_mappings.gen.cpp",
controller_databases,
run_in_subprocess(main_builders.make_default_controller_mappings),
)
env.add_source_files(env.main_sources, gensource)
env.Depends("#main/splash.gen.h", "#main/splash.png")
env.CommandNoCache("#main/splash.gen.h", "#main/splash.png", run_in_subprocess(main_builders.make_splash))
env.Depends("#main/splash_editor.gen.h", "#main/splash_editor.png")
env.CommandNoCache(
"#main/splash_editor.gen.h", "#main/splash_editor.png", run_in_subprocess(main_builders.make_splash_editor)
)
env.Depends("#main/app_icon.gen.h", "#main/app_icon.png")
env.CommandNoCache("#main/app_icon.gen.h", "#main/app_icon.png", run_in_subprocess(main_builders.make_app_icon))
if env["tools"]:
SConscript("tests/SCsub")
lib = env.add_library("main", env.main_sources)
env.Prepend(LIBS=[lib])