blob: c9cc037fc6fd84733712de5bcfb3e8c4155dc00b [file] [log] [blame]
"""VERBOSE Makefile Generator
Copyright (c) 2022 Infineon Technologies AG
"""
import os
import re
import sys
def main():
"""VERBOSE Makefile Generator"""
if len(sys.argv) != 2:
print(f'Usage: {sys.argv[0]} <makefile>\n', file=sys.stderr)
sys.exit(1)
with open(sys.argv[1], 'r', encoding='UTF-8') as mk_file:
mk_vars = {}
for line in mk_file:
line = line.strip()
if re.search(r'\s*#', line): # skip comments
continue
match = re.search(r'^\t*([A-Za-z_]\w+)\s*[+:?]=', line)
if match: # set variable
var = match.group(1)
mk_vars[var] = 1 | mk_vars.get(var, 0)
match = re.findall(r'\$\(([A-Za-z_]\w+)\)', line)
for var in match: # get variable(s)
mk_vars[var] = 2 | mk_vars.get(var, 0)
if mk_vars.get('VERBOSE'):
del mk_vars['VERBOSE']
print('''\
###############################################################################
# Print debug information about all settings used and/or set in this file
ifeq ($(VERBOSE), 1)''')
print(f'$(info #### {os.path.basename(sys.argv[1])} ####)')
dirs = (None, '-->', '<--', '<->')
for var in sorted(mk_vars.keys()):
print(f'$(info {var} {dirs[mk_vars[var]]} $({var}))')
print('endif')
if __name__ == '__main__':
main()