mirror of
https://github.com/FreeRTOS/FreeRTOS-Kernel.git
synced 2025-10-17 10:17:45 -04:00
Kernel UT: Enable preprocessor when running cflow in callgraph.py (#530)
* Add INCLUDE_DIR to the commandline call to cflow in callgraph.py This removes dependent functions from the list when they are disabled in the FreeRTOS config. * Add argparse to callgraph.py so that no output file is created on failure.
This commit is contained in:
parent
f1da2515c2
commit
f39765be22
2 changed files with 31 additions and 4 deletions
|
@ -24,6 +24,7 @@
|
|||
# https://www.FreeRTOS.org
|
||||
# https://github.com/FreeRTOS
|
||||
###############################################################################
|
||||
import argparse
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
|
@ -31,12 +32,36 @@ import subprocess
|
|||
import sys
|
||||
from typing import Dict, List, Set
|
||||
|
||||
target_files = sys.argv[1:]
|
||||
arg_parser = argparse.ArgumentParser(
|
||||
description="Parse each input .c file and generate a callgraph.json containing"
|
||||
" a map from each function name to a list of the other functions which the first"
|
||||
" function calls."
|
||||
)
|
||||
|
||||
arg_parser.add_argument(
|
||||
"-o", "--out", required=True, help="Output callgraph.json file path."
|
||||
)
|
||||
|
||||
arg_parser.add_argument("in_files", nargs="+", help="Input .c files to be parsed.")
|
||||
args = arg_parser.parse_args()
|
||||
|
||||
if vars(args)["out"] and not os.path.isdir(os.path.dirname(vars(args)["out"])):
|
||||
print("The output directory does not exist.", file=sys.stderr)
|
||||
sys.exit(1)
|
||||
|
||||
target_files = args.in_files
|
||||
|
||||
for f in target_files:
|
||||
if not os.path.isfile(f):
|
||||
print("ERROR: Input file {} does not exist.".format(f))
|
||||
exit(1)
|
||||
sys.exit(1)
|
||||
|
||||
includes = ""
|
||||
# Get INCLUDE_DIR from envrionment
|
||||
if "INCLUDE_DIR" in os.environ:
|
||||
includes = os.environ["INCLUDE_DIR"]
|
||||
else:
|
||||
print("WARNING: INCLUDE_DIR variable was not found in the envrionment.")
|
||||
|
||||
ret = subprocess.run(
|
||||
[
|
||||
|
@ -46,6 +71,7 @@ ret = subprocess.run(
|
|||
"--omit-arguments",
|
||||
"--omit-symbol-names",
|
||||
"--all",
|
||||
includes,
|
||||
]
|
||||
+ target_files,
|
||||
capture_output=True,
|
||||
|
@ -103,4 +129,5 @@ for key in callmap:
|
|||
temp_list = list(callmap[key])
|
||||
callmap_list[key] = temp_list
|
||||
|
||||
print(json.dumps(callmap_list))
|
||||
with open(args.out, "w") as outfile:
|
||||
json.dump(callmap_list, outfile)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue