https://github.com/mozilla/gecko-dev
Raw File
Tip revision: b5161b3c4718a49e6b27ccb9110eb01af9c0d8d7 authored by ffxbld on 06 June 2014, 00:16:44 UTC
Added FIREFOX_30_0_RELEASE FIREFOX_30_0_BUILD2 tag(s) for changeset 529a45c94e5a. DONTBUILD CLOSED TREE a=release
Tip revision: b5161b3
add_phony_targets.py
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)
back to top