From fabaadec60f99aac3882ea2fe5884e626ed8bfdc Mon Sep 17 00:00:00 2001 From: Ivan Kravets Date: Sat, 22 Dec 2018 22:30:23 +0200 Subject: [PATCH] Fix an issue with incorrect detecting of compatibility (LDF) between generic library and Arduino or ARM mbed frameworks --- HISTORY.rst | 2 ++ platformio/builder/tools/piolib.py | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/HISTORY.rst b/HISTORY.rst index 1c43db1c..651451d4 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -13,6 +13,8 @@ PlatformIO 3.0 (`issue #1674 `_) - CLion: Improved project portability using "${CMAKE_CURRENT_LIST_DIR}" instead of full path +* Fixed an issue with incorrect detecting of compatibility (LDF) between generic library and Arduino or ARM mbed frameworks + 3.6.3 (2018-12-12) ~~~~~~~~~~~~~~~~~~ diff --git a/platformio/builder/tools/piolib.py b/platformio/builder/tools/piolib.py index 9259a8ac..17cefb0c 100644 --- a/platformio/builder/tools/piolib.py +++ b/platformio/builder/tools/piolib.py @@ -19,6 +19,7 @@ from __future__ import absolute_import import hashlib import os +import re import sys from glob import glob from os.path import (basename, commonprefix, dirname, isdir, isfile, join, @@ -64,6 +65,9 @@ class LibBuilderFactory(object): if isfile(join(path, "module.json")): return ["mbed"] + include_re = re.compile( + r'^#include\s+(<|")(Arduino|mbed)\.h(<|")', flags=re.MULTILINE) + # check source files for root, _, files in os.walk(path, followlinks=True): for fname in files: @@ -72,9 +76,9 @@ class LibBuilderFactory(object): continue with open(join(root, fname)) as f: content = f.read() - if "Arduino.h" in content: + if "Arduino.h" in content and include_re.search(content): return ["arduino"] - elif "mbed.h" in content: + elif "mbed.h" in content and include_re.search(content): return ["mbed"] return []