mirror of
https://github.com/platformio/platformio-core.git
synced 2025-08-01 02:54:25 +02:00
Ignore duplicate includes in project generator
This commit is contained in:
@@ -135,25 +135,21 @@ def ConvertInoToCpp(env):
|
|||||||
atexit.register(delete_tmpcpp_file, tmpcpp_file)
|
atexit.register(delete_tmpcpp_file, tmpcpp_file)
|
||||||
|
|
||||||
|
|
||||||
def DumpIDEData(env): # pylint: disable=too-many-branches
|
def DumpIDEData(env):
|
||||||
data = {
|
|
||||||
"defines": [],
|
|
||||||
"includes": [],
|
|
||||||
"cxx_path": where_is_program(
|
|
||||||
env.subst("$CXX"), env.subst("${ENV['PATH']}"))
|
|
||||||
}
|
|
||||||
|
|
||||||
|
def get_includes():
|
||||||
|
includes = []
|
||||||
# includes from used framework and libs
|
# includes from used framework and libs
|
||||||
for item in env.get("VARIANT_DIRS", []):
|
for item in env.get("VARIANT_DIRS", []):
|
||||||
if "$BUILDSRC_DIR" in item[0]:
|
if "$BUILDSRC_DIR" in item[0]:
|
||||||
continue
|
continue
|
||||||
data['includes'].append(env.subst(item[1]))
|
includes.append(env.subst(item[1]))
|
||||||
|
|
||||||
# custom includes
|
# custom includes
|
||||||
for item in env.get("CPPPATH", []):
|
for item in env.get("CPPPATH", []):
|
||||||
if item.startswith("$BUILD_DIR"):
|
if item.startswith("$BUILD_DIR"):
|
||||||
continue
|
continue
|
||||||
data['includes'].append(env.subst(item))
|
includes.append(env.subst(item))
|
||||||
|
|
||||||
# installed libs
|
# installed libs
|
||||||
for d in env.get("LIBSOURCE_DIRS", []):
|
for d in env.get("LIBSOURCE_DIRS", []):
|
||||||
@@ -164,10 +160,13 @@ def DumpIDEData(env): # pylint: disable=too-many-branches
|
|||||||
# ignore user's specified libs
|
# ignore user's specified libs
|
||||||
if name in env.get("LIB_IGNORE", []):
|
if name in env.get("LIB_IGNORE", []):
|
||||||
continue
|
continue
|
||||||
if isdir(join(lsd_dir, name, "src")):
|
include = (
|
||||||
data['includes'].append(join(lsd_dir, name, "src"))
|
join(lsd_dir, name, "src")
|
||||||
else:
|
if isdir(join(lsd_dir, name, "src"))
|
||||||
data['includes'].append(join(lsd_dir, name))
|
else join(lsd_dir, name)
|
||||||
|
)
|
||||||
|
if include not in includes:
|
||||||
|
includes.append(include)
|
||||||
|
|
||||||
# includes from toolchain
|
# includes from toolchain
|
||||||
toolchain_dir = env.subst(
|
toolchain_dir = env.subst(
|
||||||
@@ -177,24 +176,34 @@ def DumpIDEData(env): # pylint: disable=too-many-branches
|
|||||||
join(toolchain_dir, "lib", "gcc", "*", "*", "include*")
|
join(toolchain_dir, "lib", "gcc", "*", "*", "include*")
|
||||||
]
|
]
|
||||||
for g in toolchain_incglobs:
|
for g in toolchain_incglobs:
|
||||||
data['includes'].extend(glob(g))
|
includes.extend(glob(g))
|
||||||
|
|
||||||
|
return includes
|
||||||
|
|
||||||
|
def get_defines():
|
||||||
|
defines = []
|
||||||
# global symbols
|
# global symbols
|
||||||
for item in env.get("CPPDEFINES", []):
|
for item in env.get("CPPDEFINES", []):
|
||||||
if isinstance(item, list):
|
if isinstance(item, list):
|
||||||
item = "=".join(item)
|
item = "=".join(item)
|
||||||
data['defines'].append(env.subst(item).replace('\\"', '"'))
|
defines.append(env.subst(item).replace('\\"', '"'))
|
||||||
|
|
||||||
# special symbol for Atmel AVR MCU
|
# special symbol for Atmel AVR MCU
|
||||||
board = env.get("BOARD_OPTIONS", {})
|
board = env.get("BOARD_OPTIONS", {})
|
||||||
if board and board['platform'] == "atmelavr":
|
if board and board['platform'] == "atmelavr":
|
||||||
data['defines'].append(
|
defines.append(
|
||||||
"__AVR_%s__" % board['build']['mcu'].upper()
|
"__AVR_%s__" % board['build']['mcu'].upper()
|
||||||
.replace("ATMEGA", "ATmega")
|
.replace("ATMEGA", "ATmega")
|
||||||
.replace("ATTINY", "ATtiny")
|
.replace("ATTINY", "ATtiny")
|
||||||
)
|
)
|
||||||
|
return defines
|
||||||
|
|
||||||
return data
|
return {
|
||||||
|
"defines": get_defines(),
|
||||||
|
"includes": get_includes(),
|
||||||
|
"cxx_path": where_is_program(
|
||||||
|
env.subst("$CXX"), env.subst("${ENV['PATH']}"))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
def GetCompilerType(env):
|
def GetCompilerType(env):
|
||||||
|
Reference in New Issue
Block a user