From 7e875553c236a714a5c1286d82aedfa4e6cf08e5 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Thu, 8 Mar 2018 16:29:09 +0200 Subject: [PATCH] Allow to control maximum depth of nested includes for conditional PreProcessor --- platformio/builder/tools/piolib.py | 10 +++++++++- platformio/managers/core.py | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/platformio/builder/tools/piolib.py b/platformio/builder/tools/piolib.py index b3b02972..b865771b 100644 --- a/platformio/builder/tools/piolib.py +++ b/platformio/builder/tools/piolib.py @@ -91,6 +91,11 @@ class LibBuilderBase(object): CLASSIC_SCANNER = SCons.Scanner.C.CScanner() CCONDITIONAL_SCANNER = SCons.Scanner.C.CConditionalScanner() + # Max depth of nested includes: + # -1 = unlimited + # 0 - disabled nesting + # >0 - number of allowed nested includes + CCONDITIONAL_SCANNER_DEPTH = 99 PARSE_SRC_BY_H_NAME = True _INCLUDE_DIRS_CACHE = None @@ -344,7 +349,10 @@ class LibBuilderBase(object): try: assert "+" in self.lib_ldf_mode incs = LibBuilderBase.CCONDITIONAL_SCANNER( - self.env.File(path), self.env, tuple(include_dirs)) + self.env.File(path), + self.env, + tuple(include_dirs), + depth=self.CCONDITIONAL_SCANNER_DEPTH) except Exception as e: # pylint: disable=broad-except if self.verbose and "+" in self.lib_ldf_mode: sys.stderr.write( diff --git a/platformio/managers/core.py b/platformio/managers/core.py index 0a94cfa4..99b59de1 100644 --- a/platformio/managers/core.py +++ b/platformio/managers/core.py @@ -25,7 +25,7 @@ CORE_PACKAGES = { "contrib-pysite": ">=0.1.5,<2", "tool-pioplus": ">=0.14.3,<2", "tool-unity": "~1.20302.1", - "tool-scons": "~2.20501.3" + "tool-scons": "~2.20501.4" } PIOPLUS_AUTO_UPDATES_MAX = 100