From 00b162608ec8c3ab0b34cca791ac0e8da27bca56 Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sat, 23 Mar 2019 17:44:01 +0200 Subject: [PATCH] Fix an issue with incorrect order of project "include" and "src" paths in ``CPPPATH`` // Resolve #1914 --- HISTORY.rst | 2 ++ platformio/builder/tools/piolib.py | 9 ++++++--- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 3dccab4c..f78ece9f 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -13,6 +13,8 @@ PlatformIO 3.0 (`issue #2164 `_) * Fixed an error with conflicting declaration of a prototype (Arduino sketch preprocessor) * Fixed "FileExistsError" when `platformio ci `__ command is used in pair with ``--keep-build-dir`` option +* Fixed an issue with incorrect order of project "include" and "src" paths in ``CPPPATH`` + (`issue #1914 `_) 3.6.5 (2019-03-07) ~~~~~~~~~~~~~~~~~~ diff --git a/platformio/builder/tools/piolib.py b/platformio/builder/tools/piolib.py index c6d1f45f..635f5920 100644 --- a/platformio/builder/tools/piolib.py +++ b/platformio/builder/tools/piolib.py @@ -177,10 +177,11 @@ class LibBuilderBase(object): if isdir(join(self.path, "src")) else self.path) def get_include_dirs(self): - items = [self.src_dir] + items = [] include_dir = self.include_dir if include_dir and include_dir not in items: items.append(include_dir) + items.append(self.src_dir) return items @property @@ -756,10 +757,11 @@ class ProjectAsLibBuilder(LibBuilderBase): return self.env.subst("$PROJECTSRC_DIR") def get_include_dirs(self): - include_dirs = LibBuilderBase.get_include_dirs(self) + include_dirs = [] 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)) return include_dirs def get_search_files(self): @@ -827,8 +829,9 @@ class ProjectAsLibBuilder(LibBuilderBase): def build(self): self._is_built = True # do not build Project now + result = LibBuilderBase.build(self) self.env.PrependUnique(CPPPATH=self.get_include_dirs()) - return LibBuilderBase.build(self) + return result def GetLibBuilders(env): # pylint: disable=too-many-branches