mirror of
https://github.com/u-boot/u-boot.git
synced 2025-04-16 09:54:35 +00:00
scripts/gen_compile_commands: update to Linux v6.7
Adds support for assembly files and updates the LINE_PATTERN so it
supports both "cmd" and "savedcmd", which allows reverting the U-Boot
modification in commit 97fbb2eb01
("scripts/gen_compile_commands.py:
adapt _LINE_PATTERN").
Upstream commits:
- 880946158b011 gen_compile_commands.py: fix path resolve with symlinks in it
- 9e56d3be4bfd2 gen_compile_commands: Sort output compile commands by file name
- 52c15e7e79285 gen_compile_commands: Allow the line prefix to still be cmd_
- 1c67921444bf6 gen_compile_commands: add assembly files to compilation database
Signed-off-by: Brandon Maier <brandon.maier@collins.com>
Cc: Joao Marcos Costa <jmcosta944@gmail.com>
This commit is contained in:
parent
daa3100250
commit
cb6f4d6510
1 changed files with 7 additions and 7 deletions
|
@ -21,7 +21,7 @@ _DEFAULT_OUTPUT = 'compile_commands.json'
|
||||||
_DEFAULT_LOG_LEVEL = 'WARNING'
|
_DEFAULT_LOG_LEVEL = 'WARNING'
|
||||||
|
|
||||||
_FILENAME_PATTERN = r'^\..*\.cmd$'
|
_FILENAME_PATTERN = r'^\..*\.cmd$'
|
||||||
_LINE_PATTERN = r'^cmd_[^ ]*\.o := (.* )([^ ]*\.c) *(;|$)'
|
_LINE_PATTERN = r'^(saved)?cmd_[^ ]*\.o := (?P<command_prefix>.* )(?P<file_path>[^ ]*\.[cS]) *(;|$)'
|
||||||
_VALID_LOG_LEVELS = ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']
|
_VALID_LOG_LEVELS = ['DEBUG', 'INFO', 'WARNING', 'ERROR', 'CRITICAL']
|
||||||
# The tools/ directory adopts a different build system, and produces .cmd
|
# The tools/ directory adopts a different build system, and produces .cmd
|
||||||
# files in a different format. Do not support it.
|
# files in a different format. Do not support it.
|
||||||
|
@ -66,7 +66,7 @@ def parse_arguments():
|
||||||
args = parser.parse_args()
|
args = parser.parse_args()
|
||||||
|
|
||||||
return (args.log_level,
|
return (args.log_level,
|
||||||
os.path.abspath(args.directory),
|
os.path.realpath(args.directory),
|
||||||
args.output,
|
args.output,
|
||||||
args.ar,
|
args.ar,
|
||||||
args.paths if len(args.paths) > 0 else [args.directory])
|
args.paths if len(args.paths) > 0 else [args.directory])
|
||||||
|
@ -174,8 +174,8 @@ def process_line(root_directory, command_prefix, file_path):
|
||||||
# by Make, so this code replaces the escaped version with '#'.
|
# by Make, so this code replaces the escaped version with '#'.
|
||||||
prefix = command_prefix.replace('\#', '#').replace('$(pound)', '#')
|
prefix = command_prefix.replace('\#', '#').replace('$(pound)', '#')
|
||||||
|
|
||||||
# Use os.path.abspath() to normalize the path resolving '.' and '..' .
|
# Return the canonical path, eliminating any symbolic links encountered in the path.
|
||||||
abs_path = os.path.abspath(os.path.join(root_directory, file_path))
|
abs_path = os.path.realpath(os.path.join(root_directory, file_path))
|
||||||
if not os.path.exists(abs_path):
|
if not os.path.exists(abs_path):
|
||||||
raise ValueError('File %s not found' % abs_path)
|
raise ValueError('File %s not found' % abs_path)
|
||||||
return {
|
return {
|
||||||
|
@ -215,15 +215,15 @@ def main():
|
||||||
result = line_matcher.match(f.readline())
|
result = line_matcher.match(f.readline())
|
||||||
if result:
|
if result:
|
||||||
try:
|
try:
|
||||||
entry = process_line(directory, result.group(1),
|
entry = process_line(directory, result.group('command_prefix'),
|
||||||
result.group(2))
|
result.group('file_path'))
|
||||||
compile_commands.append(entry)
|
compile_commands.append(entry)
|
||||||
except ValueError as err:
|
except ValueError as err:
|
||||||
logging.info('Could not add line from %s: %s',
|
logging.info('Could not add line from %s: %s',
|
||||||
cmdfile, err)
|
cmdfile, err)
|
||||||
|
|
||||||
with open(output, 'wt') as f:
|
with open(output, 'wt') as f:
|
||||||
json.dump(compile_commands, f, indent=2, sort_keys=True)
|
json.dump(sorted(compile_commands, key=lambda x: x["file"]), f, indent=2, sort_keys=True)
|
||||||
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
Loading…
Add table
Reference in a new issue