From b5702e24d9384fc19b4ce15fea8814f8d78ecd34 Mon Sep 17 00:00:00 2001 From: yenatch Date: Mon, 2 Dec 2013 23:31:16 -0500 Subject: rewrite scan_includes to skip duplicates seems to be faster this way --- scan_includes.py | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) (limited to 'scan_includes.py') 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))) -- cgit v1.2.3 From 34d579d9f91eebd81d025bd669b22e0a629fd549 Mon Sep 17 00:00:00 2001 From: yenatch Date: Fri, 20 Dec 2013 02:43:35 -0500 Subject: use pokemontools scan_includes.py It might look the same as before, but this new name is much better! Well done! --- scan_includes.py | 30 ------------------------------ 1 file changed, 30 deletions(-) delete mode 100644 scan_includes.py (limited to 'scan_includes.py') diff --git a/scan_includes.py b/scan_includes.py deleted file mode 100644 index 3ea4c9994..000000000 --- a/scan_includes.py +++ /dev/null @@ -1,30 +0,0 @@ -# coding: utf-8 - -""" -Recursively scan an asm file for rgbasm INCLUDEs and INCBINs. -Used to generate dependencies for each rgbasm object. -""" - -import os -import sys - -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 - -if __name__ == '__main__': - filenames = sys.argv[1:] - for filename in filenames: - sys.stdout.write(' '.join(recursive_scan(filename))) - -- cgit v1.2.3