pass compiler defines such as __FLT_MIN__ to smatch and sparse (they fail without them).
This commit is contained in:
parent
26c0839220
commit
7cb1415530
@ -44,6 +44,7 @@ USE_QUIET = (os.environ.get("QUIET", None) is not None)
|
|||||||
|
|
||||||
def main():
|
def main():
|
||||||
source_info = project_source_info.build_info(use_cxx=False, ignore_prefix_list=CHECKER_IGNORE_PREFIX)
|
source_info = project_source_info.build_info(use_cxx=False, ignore_prefix_list=CHECKER_IGNORE_PREFIX)
|
||||||
|
source_defines = project_source_info.build_defines_as_args()
|
||||||
|
|
||||||
check_commands = []
|
check_commands = []
|
||||||
for c, inc_dirs, defs in source_info:
|
for c, inc_dirs, defs in source_info:
|
||||||
@ -52,7 +53,8 @@ def main():
|
|||||||
CHECKER_ARGS +
|
CHECKER_ARGS +
|
||||||
[c] +
|
[c] +
|
||||||
[("-I%s" % i) for i in inc_dirs] +
|
[("-I%s" % i) for i in inc_dirs] +
|
||||||
[("-D%s" % d) for d in defs]
|
[("-D%s" % d) for d in defs] +
|
||||||
|
source_defines
|
||||||
)
|
)
|
||||||
|
|
||||||
check_commands.append((c, cmd))
|
check_commands.append((c, cmd))
|
||||||
|
@ -42,6 +42,7 @@ USE_QUIET = (os.environ.get("QUIET", None) is not None)
|
|||||||
|
|
||||||
def main():
|
def main():
|
||||||
source_info = project_source_info.build_info(use_cxx=False, ignore_prefix_list=CHECKER_IGNORE_PREFIX)
|
source_info = project_source_info.build_info(use_cxx=False, ignore_prefix_list=CHECKER_IGNORE_PREFIX)
|
||||||
|
source_defines = project_source_info.build_defines_as_args()
|
||||||
|
|
||||||
check_commands = []
|
check_commands = []
|
||||||
for c, inc_dirs, defs in source_info:
|
for c, inc_dirs, defs in source_info:
|
||||||
@ -50,7 +51,8 @@ def main():
|
|||||||
CHECKER_ARGS +
|
CHECKER_ARGS +
|
||||||
[c] +
|
[c] +
|
||||||
[("-I%s" % i) for i in inc_dirs] +
|
[("-I%s" % i) for i in inc_dirs] +
|
||||||
[("-D%s" % d) for d in defs]
|
[("-D%s" % d) for d in defs] +
|
||||||
|
source_defines
|
||||||
)
|
)
|
||||||
|
|
||||||
check_commands.append((c, cmd))
|
check_commands.append((c, cmd))
|
||||||
|
@ -171,6 +171,26 @@ def build_info(use_c=True, use_cxx=True, ignore_prefix_list=None):
|
|||||||
return source
|
return source
|
||||||
|
|
||||||
|
|
||||||
|
def build_defines_as_source():
|
||||||
|
"""
|
||||||
|
Returns a string formatted as an include:
|
||||||
|
'#defines A=B\n#define....'
|
||||||
|
"""
|
||||||
|
import subprocess
|
||||||
|
# works for both gcc and clang
|
||||||
|
cmd = (cmake_cache_var("CMAKE_C_COMPILER"), "-dM", "-E", "-")
|
||||||
|
return subprocess.Popen(cmd,
|
||||||
|
stdout=subprocess.PIPE,
|
||||||
|
stdin=subprocess.DEVNULL,
|
||||||
|
).stdout.read().strip().decode('ascii')
|
||||||
|
|
||||||
|
|
||||||
|
def build_defines_as_args():
|
||||||
|
return [("-D" + "=".join(l.split(maxsplit=2)[1:]))
|
||||||
|
for l in build_defines_as_source().split("\n")
|
||||||
|
if l.startswith('#define')]
|
||||||
|
|
||||||
|
|
||||||
# could be moved elsewhere!, this just happens to be used by scripts that also
|
# could be moved elsewhere!, this just happens to be used by scripts that also
|
||||||
# use this module.
|
# use this module.
|
||||||
def queue_processes(process_funcs, job_total=-1):
|
def queue_processes(process_funcs, job_total=-1):
|
||||||
|
Loading…
Reference in New Issue
Block a user