You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
77 lines
2.4 KiB
77 lines
2.4 KiB
#!/usr/bin/env python
|
|
from __future__ import print_function
|
|
|
|
import os
|
|
import re
|
|
import sys
|
|
import glob
|
|
from os.path import join as pathjoin
|
|
|
|
|
|
HERE = os.path.dirname(os.path.abspath(__file__))
|
|
AUTOGEN_WARNING = ('# ******** AUTOGENERATED by {0} ' +
|
|
('*' * 20)).format(os.path.basename(sys.argv[0]))
|
|
PATTERN_RULE_MXMLC = \
|
|
'$(MXMLC) {firstdep} -warnings -l+={parent_dir} -output {target}'
|
|
|
|
|
|
def main(sysargs=sys.argv[:]):
|
|
targets_mk = pathjoin(HERE, 'targets.mk')
|
|
os.chmod(targets_mk, 0600)
|
|
targetmaker = TargetMaker(outstream=open(targets_mk, 'wb'))
|
|
targetmaker.make()
|
|
os.chmod(targets_mk, 0444)
|
|
return 0
|
|
|
|
|
|
class TargetMaker(object):
|
|
_to_glob = (
|
|
pathjoin(HERE, '[0-9]*-*', '*.mxml'),
|
|
pathjoin(HERE, 'custom-*', '*.mxml'),
|
|
)
|
|
_sibling_fileexts = ('.as', '.css')
|
|
|
|
def __init__(self, outstream=sys.stdout):
|
|
self.outstream = outstream
|
|
self.targets = {}
|
|
|
|
def make(self):
|
|
for pattern in self._to_glob:
|
|
for mxml in glob.glob(pattern):
|
|
self._add_target_from_mxml(mxml)
|
|
self._write_out_targets()
|
|
|
|
def _add_target_from_mxml(self, mxml):
|
|
rel_mxml = os.path.relpath(mxml, HERE)
|
|
as_swf = re.sub('(.*)\.mxml$', '\\1.swf', rel_mxml)
|
|
self.targets[as_swf] = set([rel_mxml])
|
|
|
|
self._add_deps_from_sibling_file_extensions(as_swf, rel_mxml)
|
|
|
|
def _add_deps_from_sibling_file_extensions(self, as_swf, rel_mxml):
|
|
for fileext in self._sibling_fileexts:
|
|
sibling_glob = re.sub('(.*)/(.*)\.mxml$', '\\1/*' + fileext,
|
|
rel_mxml)
|
|
for sibling in glob.glob(sibling_glob):
|
|
rel_sibling = os.path.relpath(sibling, HERE)
|
|
self.targets[as_swf].add(rel_sibling)
|
|
|
|
def _write_out_targets(self):
|
|
print(AUTOGEN_WARNING, file=self.outstream)
|
|
for target in sorted(self.targets.iterkeys()):
|
|
deps = list(reversed(sorted(list(self.targets[target]),
|
|
key=lambda d: os.path.splitext(d)[-1])))
|
|
print('{target}: {deps}'.format(target=target,
|
|
deps=' '.join(deps)), file=self.outstream)
|
|
print('\t' +
|
|
PATTERN_RULE_MXMLC.format(firstdep=deps[0],
|
|
parent_dir=os.path.dirname(deps[0]),
|
|
target=target) +
|
|
'\n\n', file=self.outstream)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(main())
|
|
|
|
# vim:filetype=python
|