summaryrefslogtreecommitdiff
path: root/extras/scan_includes.py
blob: 466402c7ed1f5e98e65880c8b70f6025ff030dc8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 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

import configuration
conf = configuration.Config()

def recursive_scan(filename, includes = []):
	if (filename[-4:] == '.asm') 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 = "src/" + line.split('"')[1]
						if include not in includes and include != "src/baserom.gbc":
							includes += [include]
							includes = recursive_scan(os.path.join(conf.path, include), includes)
						break
	return includes

if __name__ == '__main__':
	filenames = sys.argv[1:]
	dependencies = []
	for filename in filenames:
		dependencies += recursive_scan(os.path.join(conf.path, filename))
	dependencies = list(set(dependencies))
	sys.stdout.write(' '.join(dependencies))