Loading build/cl.py +1 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ def InvokeClWithDependencyGeneration(cmdline): f = open(depstarget, "w") for dep in sorted(deps): print >>f, "%s: %s" % (target, dep) print >>f, "%s:" % dep if __name__ == "__main__": InvokeClWithDependencyGeneration(sys.argv[1:]) build/unix/add_phony_targets.py 0 → 100644 +37 −0 Original line number Diff line number Diff line # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. 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) config/expandlibs_exec.py +3 −0 Original line number Diff line number Diff line Loading @@ -325,6 +325,9 @@ def main(): with open(options.depend, 'w') as depfile: depfile.write("%s : %s\n" % (options.target, ' '.join(dep for dep in deps if os.path.isfile(dep) and dep != options.target))) for dep in deps: if os.path.isfile(dep) and dep != options.target: depfile.write("%s :\n" % dep) if __name__ == '__main__': main() config/expandlibs_gen.py +4 −1 Original line number Diff line number Diff line Loading @@ -44,4 +44,7 @@ if __name__ == '__main__': if options.depend: ensureParentDir(options.depend) with open(options.depend, 'w') as depfile: depfile.write("%s : %s\n" % (options.output, ' '.join(ExpandLibsDeps(args)))) deps = ExpandLibsDeps(args) depfile.write("%s : %s\n" % (options.output, ' '.join(deps))) for dep in deps: depfile.write("%s :\n" % dep) config/rules.mk +4 −9 Original line number Diff line number Diff line Loading @@ -986,17 +986,19 @@ define MAKE_DEPS_AUTO_CC if test -d $(@D); then \ echo "Building deps for $< using Sun Studio cc"; \ $(CC) $(COMPILE_CFLAGS) -xM $< >$(_MDDEPFILE) ; \ $(PYTHON) $(topsrcdir)/build/unix/add_phony_targets.py $(_MDDEPFILE) ; \ fi endef define MAKE_DEPS_AUTO_CXX if test -d $(@D); then \ echo "Building deps for $< using Sun Studio CC"; \ $(CXX) $(COMPILE_CXXFLAGS) -xM $< >$(_MDDEPFILE) ; \ $(PYTHON) $(topsrcdir)/build/unix/add_phony_targets.py $(_MDDEPFILE) ; \ fi endef endif # Sun Studio on Solaris $(OBJS) $(HOST_OBJS): $(GLOBAL_DEPS) $(OBJS) $(HOST_OBJS) $(PROGOBJS) $(HOST_PROGOBJS): $(GLOBAL_DEPS) # Rules for building native targets must come first because of the host_ prefix $(HOST_COBJS): host_%.$(OBJ_SUFFIX): %.c Loading Loading @@ -1613,14 +1615,7 @@ ifneq (,$(filter-out all chrome default export realchrome tools clean clobber cl MDDEPEND_FILES := $(strip $(wildcard $(foreach file,$(OBJS) $(PROGOBJS) $(HOST_OBJS) $(HOST_PROGOBJS) $(TARGETS) $(XPIDLSRCS:.idl=.h) $(XPIDLSRCS:.idl=.xpt),$(MDDEPDIR)/$(notdir $(file)).pp) $(addprefix $(MDDEPDIR)/,$(EXTRA_MDDEPEND_FILES)))) ifneq (,$(MDDEPEND_FILES)) # The script mddepend.pl checks the dependencies and writes to stdout # one rule to force out-of-date objects. For example, # foo.o boo.o: FORCE # The script has an advantage over including the *.pp files directly # because it handles the case when header files are removed from the build. # 'make' would complain that there is no way to build missing headers. ALL_PP_RESULTS = $(shell $(PERL) $(BUILD_TOOLS)/mddepend.pl - $(MDDEPEND_FILES)) $(eval $(ALL_PP_RESULTS)) include $(MDDEPEND_FILES) endif endif Loading Loading
build/cl.py +1 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,7 @@ def InvokeClWithDependencyGeneration(cmdline): f = open(depstarget, "w") for dep in sorted(deps): print >>f, "%s: %s" % (target, dep) print >>f, "%s:" % dep if __name__ == "__main__": InvokeClWithDependencyGeneration(sys.argv[1:])
build/unix/add_phony_targets.py 0 → 100644 +37 −0 Original line number Diff line number Diff line # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. 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)
config/expandlibs_exec.py +3 −0 Original line number Diff line number Diff line Loading @@ -325,6 +325,9 @@ def main(): with open(options.depend, 'w') as depfile: depfile.write("%s : %s\n" % (options.target, ' '.join(dep for dep in deps if os.path.isfile(dep) and dep != options.target))) for dep in deps: if os.path.isfile(dep) and dep != options.target: depfile.write("%s :\n" % dep) if __name__ == '__main__': main()
config/expandlibs_gen.py +4 −1 Original line number Diff line number Diff line Loading @@ -44,4 +44,7 @@ if __name__ == '__main__': if options.depend: ensureParentDir(options.depend) with open(options.depend, 'w') as depfile: depfile.write("%s : %s\n" % (options.output, ' '.join(ExpandLibsDeps(args)))) deps = ExpandLibsDeps(args) depfile.write("%s : %s\n" % (options.output, ' '.join(deps))) for dep in deps: depfile.write("%s :\n" % dep)
config/rules.mk +4 −9 Original line number Diff line number Diff line Loading @@ -986,17 +986,19 @@ define MAKE_DEPS_AUTO_CC if test -d $(@D); then \ echo "Building deps for $< using Sun Studio cc"; \ $(CC) $(COMPILE_CFLAGS) -xM $< >$(_MDDEPFILE) ; \ $(PYTHON) $(topsrcdir)/build/unix/add_phony_targets.py $(_MDDEPFILE) ; \ fi endef define MAKE_DEPS_AUTO_CXX if test -d $(@D); then \ echo "Building deps for $< using Sun Studio CC"; \ $(CXX) $(COMPILE_CXXFLAGS) -xM $< >$(_MDDEPFILE) ; \ $(PYTHON) $(topsrcdir)/build/unix/add_phony_targets.py $(_MDDEPFILE) ; \ fi endef endif # Sun Studio on Solaris $(OBJS) $(HOST_OBJS): $(GLOBAL_DEPS) $(OBJS) $(HOST_OBJS) $(PROGOBJS) $(HOST_PROGOBJS): $(GLOBAL_DEPS) # Rules for building native targets must come first because of the host_ prefix $(HOST_COBJS): host_%.$(OBJ_SUFFIX): %.c Loading Loading @@ -1613,14 +1615,7 @@ ifneq (,$(filter-out all chrome default export realchrome tools clean clobber cl MDDEPEND_FILES := $(strip $(wildcard $(foreach file,$(OBJS) $(PROGOBJS) $(HOST_OBJS) $(HOST_PROGOBJS) $(TARGETS) $(XPIDLSRCS:.idl=.h) $(XPIDLSRCS:.idl=.xpt),$(MDDEPDIR)/$(notdir $(file)).pp) $(addprefix $(MDDEPDIR)/,$(EXTRA_MDDEPEND_FILES)))) ifneq (,$(MDDEPEND_FILES)) # The script mddepend.pl checks the dependencies and writes to stdout # one rule to force out-of-date objects. For example, # foo.o boo.o: FORCE # The script has an advantage over including the *.pp files directly # because it handles the case when header files are removed from the build. # 'make' would complain that there is no way to build missing headers. ALL_PP_RESULTS = $(shell $(PERL) $(BUILD_TOOLS)/mddepend.pl - $(MDDEPEND_FILES)) $(eval $(ALL_PP_RESULTS)) include $(MDDEPEND_FILES) endif endif Loading