summaryrefslogtreecommitdiff
path: root/pokemontools/scan_includes.py
blob: 138f01113503189d8bdf7d0f1b09aeeebe8e5793 (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
# 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' 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:
		dependencies = recursive_scan(os.path.join(conf.path, filename))
		sys.stdout.write(' '.join(dependencies))