shorten include path by using prefix

This commit is contained in:
Jason2866
2025-01-16 22:49:42 +01:00
committed by GitHub
parent 4c3656cb9f
commit 53117e04e8
+57
View File
@@ -30,6 +30,7 @@ import shutil
from os.path import join
from SCons.Script import COMMAND_LINE_TARGETS, DefaultEnvironment, SConscript
from platformio import fs
from platformio.package.version import pepver_to_semver
from platformio.project.config import ProjectConfig
from platformio.package.manager.tool import ToolPackageManager
@@ -55,6 +56,8 @@ extra_flags = (''.join([element for element in board.get("build.extra_flags", ""
framework_reinstall = False
flag_any_custom_sdkconfig = False
FRAMEWORK_LIB_DIR = platform.get_package_dir("framework-arduinoespressif32-lib")
SConscript("_embed_files.py", exports="env")
flag_any_custom_sdkconfig = os.path.exists(join(platform.get_package_dir("framework-arduinoespressif32-libs"),"sdkconfig"))
@@ -171,6 +174,59 @@ def check_reinstall_frwrk():
framework_reinstall = True
return framework_reinstall
FRAMEWORK_SDK_DIR = fs.to_unix_path(
os.path.join(
FRAMEWORK_LIB_DIR,
mcu,
"include",
)
)
IS_INTEGRATION_DUMP = env.IsIntegrationDump()
def is_framework_subfolder(potential_subfolder):
if not os.path.isabs(potential_subfolder):
return False
if (
os.path.splitdrive(FRAMEWORK_SDK_DIR)[0]
!= os.path.splitdrive(potential_subfolder)[0]
):
return False
return os.path.commonpath([FRAMEWORK_SDK_DIR]) == os.path.commonpath(
[FRAMEWORK_SDK_DIR, potential_subfolder]
)
def shorthen_includes(env, node):
if IS_INTEGRATION_DUMP:
# Don't shorten include paths for IDE integrations
return node
includes = [fs.to_unix_path(inc) for inc in env.get("CPPPATH", [])]
shortened_includes = []
generic_includes = []
for inc in includes:
if is_framework_subfolder(inc):
shortened_includes.append(
"-iwithprefix/"
+ fs.to_unix_path(os.path.relpath(inc, FRAMEWORK_SDK_DIR))
)
else:
generic_includes.append(inc)
return env.Object(
node,
CPPPATH=generic_includes,
CCFLAGS=env["CCFLAGS"]
+ ["-iprefix", FRAMEWORK_SDK_DIR]
+ shortened_includes,
ASFLAGS=env["ASFLAGS"]
+ ["-iprefix", FRAMEWORK_SDK_DIR]
+ shortened_includes,
)
def call_compile_libs():
if mcu == "esp32c2":
ARDUINO_FRMWRK_C2_LIB_DIR = join(platform.get_package_dir("framework-arduinoespressif32-libs"),mcu)
@@ -192,6 +248,7 @@ if flag_custom_sdkconfig == True and flag_any_custom_sdkconfig == False:
call_compile_libs()
if "arduino" in env.subst("$PIOFRAMEWORK") and "espidf" not in env.subst("$PIOFRAMEWORK") and env.subst("$ARDUINO_LIB_COMPILE_FLAG") in ("Inactive", "True"):
env.AddBuildMiddleware(shorthen_includes)
if os.path.exists(join(platform.get_package_dir(
"framework-arduinoespressif32"), "tools", "platformio-build.py")):
PIO_BUILD = "platformio-build.py"