diff --git a/HISTORY.rst b/HISTORY.rst index 2add298a..650412d3 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -42,6 +42,7 @@ PlatformIO 3.0 * Fixed "systemd-udevd" warnings in `99-platformio-udev.rules `__ (`issue #2442 `_) * Fixed an issue when ``-U`` in ``build_flags`` does not remove macro previously defined via ``-D`` flag (`issue #2508 `_) +* Fixed an issue for Project Generator when include path search order is inconsistent to what passed to the compiler (`issue #2509 `_) 3.6.7 (2019-04-23) ~~~~~~~~~~~~~~~~~~ diff --git a/platformio/builder/main.py b/platformio/builder/main.py index 4ccbd0f9..4604fc9c 100644 --- a/platformio/builder/main.py +++ b/platformio/builder/main.py @@ -26,6 +26,7 @@ from SCons.Script import AllowSubstExceptions # pylint: disable=import-error from SCons.Script import AlwaysBuild # pylint: disable=import-error from SCons.Script import Default # pylint: disable=import-error from SCons.Script import DefaultEnvironment # pylint: disable=import-error +from SCons.Script import Import # pylint: disable=import-error from SCons.Script import Variables # pylint: disable=import-error from platformio import util @@ -216,8 +217,11 @@ if "envdump" in COMMAND_LINE_TARGETS: if "idedata" in COMMAND_LINE_TARGETS: try: + Import("projenv") print("\n%s\n" % path_to_unicode( - json.dumps(env.DumpIDEData(), ensure_ascii=False))) + json.dumps( + env.DumpIDEData(projenv), # pylint: disable=undefined-variable + ensure_ascii=False))) env.Exit(0) except UnicodeDecodeError: sys.stderr.write( diff --git a/platformio/builder/tools/pioide.py b/platformio/builder/tools/pioide.py index c6d8fbc0..8efcd60d 100644 --- a/platformio/builder/tools/pioide.py +++ b/platformio/builder/tools/pioide.py @@ -26,11 +26,11 @@ from platformio.managers.core import get_core_package_dir from platformio.proc import exec_command -def _dump_includes(env): +def _dump_includes(env, projenv): includes = [] - for item in env.get("CPPPATH", []): - includes.append(env.subst(item)) + for item in projenv.get("CPPPATH", []): + includes.append(projenv.subst(item)) # installed libs for lb in env.GetLibBuilders(): @@ -135,7 +135,7 @@ def _get_svd_path(env): return None -def DumpIDEData(env): +def DumpIDEData(env, projenv): LINTCCOM = "$CFLAGS $CCFLAGS $CPPFLAGS" LINTCXXCOM = "$CXXFLAGS $CCFLAGS $CPPFLAGS" @@ -145,7 +145,7 @@ def DumpIDEData(env): "defines": _dump_defines(env), "includes": - _dump_includes(env), + _dump_includes(env, projenv), "cc_flags": env.subst(LINTCCOM), "cxx_flags": diff --git a/platformio/builder/tools/piolib.py b/platformio/builder/tools/piolib.py index a132c379..b63dd0f9 100644 --- a/platformio/builder/tools/piolib.py +++ b/platformio/builder/tools/piolib.py @@ -832,7 +832,9 @@ class ProjectAsLibBuilder(LibBuilderBase): project_include_dir = self.env.subst("$PROJECTINCLUDE_DIR") if isdir(project_include_dir): include_dirs.append(project_include_dir) - include_dirs.extend(LibBuilderBase.get_include_dirs(self)) + for include_dir in LibBuilderBase.get_include_dirs(self): + if include_dir not in include_dirs: + include_dirs.append(include_dir) return include_dirs def get_search_files(self):