Bug 462463 - Add missing add_phony_targets.py file. r=me

This commit is contained in:
Mike Hommey 2013-04-14 10:12:33 +02:00
parent 4580f726b8
commit 22ca629259
2 changed files with 66 additions and 0 deletions

View File

@ -0,0 +1,33 @@
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)

View File

@ -0,0 +1,33 @@
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)