https://github.com/mozilla/gecko-dev
Raw File
Tip revision: de4e627fe71fb6f92ebee01d7e0b6647eb68615f authored by ffxbld on 03 June 2014, 17:12:56 UTC
Added FIREFOX_24_6_0esr_RELEASE FIREFOX_24_6_0esr_BUILD1 tag(s) for changeset 3d5f5d04e2b7. DONTBUILD CLOSED TREE a=release
Tip revision: de4e627
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