summaryrefslogtreecommitdiff
path: root/tools/scan_includes.py
diff options
context:
space:
mode:
authorDaniel Harding <33dannye@gmail.com>2018-07-01 10:54:43 -0500
committerGitHub <noreply@github.com>2018-07-01 10:54:43 -0500
commite42ec2368b3f61715f1e86d26bd8706684336c62 (patch)
tree7e290929824d0857be5846364da0007da0c749a5 /tools/scan_includes.py
parent30aa1150f1c42a42aebb4dd1cd9f919b62cbff09 (diff)
parente9d1642fbbe19df0dac0c2dca16ac22aed760b84 (diff)
Merge pull request #42 from xCrystal/master
More home disassembly ; Redesign TX_SYMBOL constants ; rename 'Kind' labels ; more wram addresses and text symbols ; Don't use the extras submodule ; Add support for disassembling poketcg-specific macros
Diffstat (limited to 'tools/scan_includes.py')
-rw-r--r--tools/scan_includes.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/tools/scan_includes.py b/tools/scan_includes.py
new file mode 100644
index 0000000..53ff091
--- /dev/null
+++ b/tools/scan_includes.py
@@ -0,0 +1,43 @@
+#!/bin/python
+# coding: utf-8
+
+"""
+Recursively scan an asm file for dependencies.
+"""
+
+import sys
+import argparse
+import os.path
+
+includes = set()
+
+def scan_file(filename):
+ for line in open(filename):
+ if 'INC' not in line:
+ continue
+ line = line.split(';')[0]
+ if 'INCLUDE' in line:
+ include = line.split('"')[1]
+ if os.path.exists("src/"):
+ includes.add("src/" + include)
+ scan_file("src/" + include)
+ else:
+ includes.add(include)
+ scan_file(include)
+ elif 'INCBIN' in line:
+ include = line.split('"')[1]
+ if 'baserom.gbc' not in line and os.path.exists("src/"):
+ includes.add("src/" + include)
+ else:
+ includes.add(include)
+
+def main():
+ ap = argparse.ArgumentParser()
+ ap.add_argument('filenames', nargs='*')
+ args = ap.parse_args()
+ for filename in set(args.filenames):
+ scan_file(filename)
+ sys.stdout.write(' '.join(includes))
+
+if __name__ == '__main__':
+ main()