12345678910111213141516171819202122232425262728 |
- #!/usr/bin/env python3
- #
- # opus/read-sources-list.py
- #
- # Parses .mk files and extracts list of source files.
- # Prints one line per source file list, with filenames space-separated.
- import sys
- if len(sys.argv) < 2:
- sys.exit('Usage: {} sources_foo.mk [sources_bar.mk...]'.format(sys.argv[0]))
- for input_fn in sys.argv[1:]:
- with open(input_fn, 'r', encoding='utf8') as f:
- text = f.read()
- text = text.replace('\\\n', '')
- # Remove empty lines
- lines = [line for line in text.split('\n') if line.strip()]
- # Print SOURCES_XYZ = file1.c file2.c
- for line in lines:
- values = line.strip().split('=', maxsplit=2)
- if len(values) != 2:
- raise RuntimeError('Unable to parse line "{}" from file "{}"'.format(line, input_fn))
- var, files = values
- sources_list = [f for f in files.split(' ') if f]
- print(var.strip(), '=', ' '.join(sources_list))
|