From 888f46bbcce11d4478a7e7ea7ae19cc25d2e7b33 Mon Sep 17 00:00:00 2001 From: Thaddeus Crews Date: Wed, 2 Apr 2025 12:34:03 -0500 Subject: [PATCH] SCons: Add `CPPEXTPATH` for external includes (cherry picked from commit 30bfa6f215d12a2c4ac4d09e892c053385f7c09d) --- tools/godotcpp.py | 14 ++++++++++++++ tools/windows.py | 5 +++++ 2 files changed, 19 insertions(+) diff --git a/tools/godotcpp.py b/tools/godotcpp.py index fcc1ab1f..cad14c8d 100644 --- a/tools/godotcpp.py +++ b/tools/godotcpp.py @@ -2,6 +2,7 @@ import os import platform import sys +from SCons import __version__ as scons_raw_version from SCons.Action import Action from SCons.Builder import Builder from SCons.Errors import UserError @@ -424,6 +425,8 @@ def make_doc_source(target, source, env): def generate(env): + env.scons_version = env._get_major_minor_revision(scons_raw_version) + # Default num_jobs to local cpu count if not user specified. # SCons has a peculiarity where user-specified options won't be overridden # by SetOption, so we can rely on this to know if we should use our default. @@ -481,6 +484,17 @@ def generate(env): else: # Release opt_level = "speed" + # Allow marking includes as external/system to avoid raising warnings. + if env.scons_version < (4, 2): + env["_CPPEXTINCFLAGS"] = "${_concat(EXTINCPREFIX, CPPEXTPATH, EXTINCSUFFIX, __env__, RDirs, TARGET, SOURCE)}" + else: + env["_CPPEXTINCFLAGS"] = ( + "${_concat(EXTINCPREFIX, CPPEXTPATH, EXTINCSUFFIX, __env__, RDirs, TARGET, SOURCE, affect_signature=False)}" + ) + env["CPPEXTPATH"] = [] + env["EXTINCPREFIX"] = "-isystem " + env["EXTINCSUFFIX"] = "" + env["optimize"] = ARGUMENTS.get("optimize", opt_level) env["debug_symbols"] = get_cmdline_bool("debug_symbols", env.dev_build) diff --git a/tools/windows.py b/tools/windows.py index 490b9f71..347a8d78 100644 --- a/tools/windows.py +++ b/tools/windows.py @@ -125,6 +125,11 @@ def generate(env): if env["silence_msvc"] and not env.GetOption("clean"): silence_msvc(env) + if not env["use_llvm"]: + env.AppendUnique(CCFLAGS=["/experimental:external", "/external:anglebrackets"]) + env.AppendUnique(CCFLAGS=["/external:W0"]) + env["EXTINCPREFIX"] = "/external:I" + elif (sys.platform == "win32" or sys.platform == "msys") and not env["mingw_prefix"]: env["use_mingw"] = True mingw.generate(env)