forked from platformio/platformio-core
Export built-in GCC macros for IDEs
This commit is contained in:
@@ -15,6 +15,7 @@
|
|||||||
from __future__ import absolute_import
|
from __future__ import absolute_import
|
||||||
|
|
||||||
from glob import glob
|
from glob import glob
|
||||||
|
from os import environ
|
||||||
from os.path import join
|
from os.path import join
|
||||||
|
|
||||||
from SCons.Defaults import processDefines
|
from SCons.Defaults import processDefines
|
||||||
@@ -23,7 +24,7 @@ from platformio import util
|
|||||||
from platformio.managers.core import get_core_package_dir
|
from platformio.managers.core import get_core_package_dir
|
||||||
|
|
||||||
|
|
||||||
def dump_includes(env):
|
def _dump_includes(env):
|
||||||
includes = []
|
includes = []
|
||||||
|
|
||||||
for item in env.get("CPPPATH", []):
|
for item in env.get("CPPPATH", []):
|
||||||
@@ -55,7 +56,29 @@ def dump_includes(env):
|
|||||||
return includes
|
return includes
|
||||||
|
|
||||||
|
|
||||||
def dump_defines(env):
|
def _get_gcc_defines(env):
|
||||||
|
items = []
|
||||||
|
try:
|
||||||
|
sysenv = environ.copy()
|
||||||
|
sysenv['PATH'] = str(env['ENV']['PATH'])
|
||||||
|
result = util.exec_command(
|
||||||
|
"echo | %s -dM -E -" % env.subst("$CC"), env=sysenv, shell=True)
|
||||||
|
except OSError:
|
||||||
|
return items
|
||||||
|
if result['returncode'] != 0:
|
||||||
|
return items
|
||||||
|
for line in result['out'].split("\n"):
|
||||||
|
tokens = line.strip().split(" ", 2)
|
||||||
|
if not tokens or tokens[0] != "#define":
|
||||||
|
continue
|
||||||
|
if len(tokens) > 2:
|
||||||
|
items.append("%s=%s" % (tokens[1], tokens[2]))
|
||||||
|
else:
|
||||||
|
items.append(tokens[1])
|
||||||
|
return items
|
||||||
|
|
||||||
|
|
||||||
|
def _dump_defines(env):
|
||||||
defines = []
|
defines = []
|
||||||
# global symbols
|
# global symbols
|
||||||
for item in processDefines(env.get("CPPDEFINES", [])):
|
for item in processDefines(env.get("CPPDEFINES", [])):
|
||||||
@@ -70,6 +93,11 @@ def dump_defines(env):
|
|||||||
defines.append(
|
defines.append(
|
||||||
str("__AVR_%s__" % board_mcu.upper()
|
str("__AVR_%s__" % board_mcu.upper()
|
||||||
.replace("ATMEGA", "ATmega").replace("ATTINY", "ATtiny")))
|
.replace("ATMEGA", "ATmega").replace("ATTINY", "ATtiny")))
|
||||||
|
|
||||||
|
# built-in GCC marcos
|
||||||
|
if env.GetCompilerType() == "gcc":
|
||||||
|
defines.extend(_get_gcc_defines(env))
|
||||||
|
|
||||||
return defines
|
return defines
|
||||||
|
|
||||||
|
|
||||||
@@ -81,9 +109,9 @@ def DumpIDEData(env):
|
|||||||
"libsource_dirs":
|
"libsource_dirs":
|
||||||
[env.subst(l) for l in env.get("LIBSOURCE_DIRS", [])],
|
[env.subst(l) for l in env.get("LIBSOURCE_DIRS", [])],
|
||||||
"defines":
|
"defines":
|
||||||
dump_defines(env),
|
_dump_defines(env),
|
||||||
"includes":
|
"includes":
|
||||||
dump_includes(env),
|
_dump_includes(env),
|
||||||
"cc_flags":
|
"cc_flags":
|
||||||
env.subst(LINTCCOM),
|
env.subst(LINTCCOM),
|
||||||
"cxx_flags":
|
"cxx_flags":
|
||||||
|
@@ -30,11 +30,7 @@
|
|||||||
% for define in defines:
|
% for define in defines:
|
||||||
"{{!define.replace('"', '\\"')}}",
|
"{{!define.replace('"', '\\"')}}",
|
||||||
% end
|
% end
|
||||||
% if compiler_type == "gcc":
|
|
||||||
"__GNUC__"
|
|
||||||
% else:
|
|
||||||
""
|
""
|
||||||
% end
|
|
||||||
],
|
],
|
||||||
"intelliSenseMode": "clang-x64"
|
"intelliSenseMode": "clang-x64"
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user