diff options
author | yenatch <yenatch@gmail.com> | 2013-12-02 23:31:16 -0500 |
---|---|---|
committer | yenatch <yenatch@gmail.com> | 2013-12-02 23:31:16 -0500 |
commit | b5702e24d9384fc19b4ce15fea8814f8d78ecd34 (patch) | |
tree | 77588fb6e46f6d9992ff96d69d05dca6f3d4a519 /scan_includes.py | |
parent | aaf26de8edab0c814463c24674c8a6f04c2a80f4 (diff) |
rewrite scan_includes to skip duplicates
seems to be faster this way
Diffstat (limited to 'scan_includes.py')
-rw-r--r-- | scan_includes.py | 39 |
1 files changed, 19 insertions, 20 deletions
diff --git a/scan_includes.py b/scan_includes.py index 0abd3084a..3ea4c9994 100644 --- a/scan_includes.py +++ b/scan_includes.py @@ -2,30 +2,29 @@ """ Recursively scan an asm file for rgbasm INCLUDEs and INCBINs. -This is used to generate dependencies for each rgbasm object file. +Used to generate dependencies for each rgbasm object. """ import os import sys -def scan_for_includes(filename): - filenames = [] - if os.path.exists(filename): - for line in open(filename, 'r').readlines(): - if 'INCLUDE' in line or 'INCBIN' in line: - line = line.split(';')[0] - if 'INCLUDE' in line or 'INCBIN' in line: - filenames += [line.split('"')[1]] - return filenames +def recursive_scan(filename, includes = []): + if (filename[-4:] == '.asm' or filename[-3] == '.tx') and os.path.exists(filename): + lines = open(filename).readlines() + for line in lines: + for directive in ('INCLUDE', 'INCBIN'): + if directive in line: + line = line[:line.find(';')] + if directive in line: + include = line.split('"')[1] + if include not in includes: + includes += [include] + includes = recursive_scan(include, includes) + break + return includes -def recursive_scan_for_includes(filename): - filenames = [] - if '.asm' in filename or '.tx' in filename: - for include in scan_for_includes(filename): - filenames += [include] + recursive_scan_for_includes(include) - return filenames - -if len(sys.argv) > 1: - for arg in sys.argv[1:]: - sys.stdout.write(' '.join(recursive_scan_for_includes(arg))) +if __name__ == '__main__': + filenames = sys.argv[1:] + for filename in filenames: + sys.stdout.write(' '.join(recursive_scan(filename))) |