gecko/build/unix/add_phony_targets.py

34 lines
940 B
Python
Raw Normal View History

import pymake.data
import pymake.parser
import pymake.parserdata
import sys
'''
Modifies the output of Sun Studio's -xM to look more like the output
of gcc's -MD -MP, adding phony targets for dependencies.
'''
def add_phony_targets(path):
print path
deps = set()
targets = set()
for stmt in pymake.parser.parsefile(path):
if isinstance(stmt, pymake.parserdata.Rule):
assert isinstance(stmt.depexp, pymake.data.StringExpansion)
assert isinstance(stmt.targetexp, pymake.data.StringExpansion)
for d in stmt.depexp.s.split():
deps.add(d)
for t in stmt.targetexp.s.split():
targets.add(t)
phony_targets = deps - targets
if not phony_targets:
return
with open(path, 'a') as f:
f.writelines('%s:\n' % d for d in phony_targets)
if __name__ == '__main__':
for f in sys.argv[1:]:
add_phony_targets(f)