From 2f6686cbec54308e005af44c72cc1dc4852cb741 Mon Sep 17 00:00:00 2001 From: Nathan Froyd Date: Tue, 15 May 2018 10:05:24 -0400 Subject: [PATCH] Bug 1459721 - part 5 - explicitly specify include directories for xpidl files; r=chmanchester The previous patch required us to pass a single -I argument pointing at $(DIST)/idl so IDL include statements would work correctly. This patch lifts that limitation and explicitly points xpidl-process.py at the locations of all the IDL source directories to search for included IDL files. Invocations of xpidl-process.py no longer depend on IDL files being copied to the objdir. --- config/makefiles/xpidl/Makefile.in | 2 +- python/mozbuild/mozbuild/action/xpidl-process.py | 3 ++- python/mozbuild/mozbuild/backend/recursivemake.py | 4 ++++ python/mozbuild/mozbuild/backend/tup.py | 6 +++++- 4 files changed, 12 insertions(+), 3 deletions(-) diff --git a/config/makefiles/xpidl/Makefile.in b/config/makefiles/xpidl/Makefile.in index ad58ef6c4174..e24db70bb4bf 100644 --- a/config/makefiles/xpidl/Makefile.in +++ b/config/makefiles/xpidl/Makefile.in @@ -42,7 +42,7 @@ code_gen_deps := $(topsrcdir)/xpcom/reflect/xptinfo/perfecthash.py $(process_py) --cache-dir $(DEPTH)/xpcom/idl-parser/xpidl --depsdir $(idl_deps_dir) \ --bindings-conf $(topsrcdir)/dom/bindings/Bindings.conf \ $(foreach dir,$($(basename $(notdir $@))_dirs),--input-dir $(dir)) \ - -I $(dist_idl_dir) \ + $(foreach dir,$(all_idl_dirs),-I $(dir)) \ $(dist_include_dir) $(dist_xpcrs_dir) $(@D) \ $(basename $(notdir $@)) $($(basename $(notdir $@))_deps) # When some IDL is added or removed, if the actual IDL file was already, or diff --git a/python/mozbuild/mozbuild/action/xpidl-process.py b/python/mozbuild/mozbuild/action/xpidl-process.py index f8d349632b17..bdf0f64761bf 100755 --- a/python/mozbuild/mozbuild/action/xpidl-process.py +++ b/python/mozbuild/mozbuild/action/xpidl-process.py @@ -116,7 +116,8 @@ def main(argv): help='Extra directories where to look for included .idl files.') args = parser.parse_args(argv) - process(args.input_dirs, args.incpath, args.bindings_conf, args.cache_dir, + incpath = [os.path.join(topsrcdir, p) for p in args.incpath] + process(args.input_dirs, incpath, args.bindings_conf, args.cache_dir, args.headerdir, args.xpcrsdir, args.xptdir, args.depsdir, args.module, args.idls) diff --git a/python/mozbuild/mozbuild/backend/recursivemake.py b/python/mozbuild/mozbuild/backend/recursivemake.py index 015d280a90dc..c1adaacda4eb 100644 --- a/python/mozbuild/mozbuild/backend/recursivemake.py +++ b/python/mozbuild/mozbuild/backend/recursivemake.py @@ -1052,9 +1052,11 @@ class RecursiveMakeBackend(CommonBackend): xpt_modules = sorted(modules.keys()) mk = Makefile() + all_directories = set() for module in xpt_modules: sources, directories = modules[module] + all_directories |= directories deps = sorted(sources) directories = sorted(directories) @@ -1074,6 +1076,8 @@ class RecursiveMakeBackend(CommonBackend): build_files.add_optional_exists('%s.xpt' % module) + mk.add_statement('all_idl_dirs = %s' % ' '.join(sorted(all_directories))) + rules = StringIO() mk.dump(rules, removal_guard=False) diff --git a/python/mozbuild/mozbuild/backend/tup.py b/python/mozbuild/mozbuild/backend/tup.py index b8fdbcd5d55e..dc99cfc99018 100644 --- a/python/mozbuild/mozbuild/backend/tup.py +++ b/python/mozbuild/mozbuild/backend/tup.py @@ -786,6 +786,9 @@ class TupBackend(CommonBackend): backend_file = self._get_backend_file('xpcom/xpidl') backend_file.export_shell() + all_idl_directories = set() + all_idl_directories.update(*map(lambda x: x[1], manager.modules.itervalues())) + all_xpts = [] for module, (idls, directories) in sorted(manager.modules.iteritems()): cmd = [ @@ -800,9 +803,10 @@ class TupBackend(CommonBackend): for d in directories: cmd.extend(['--input-dir', d]) + for d in all_idl_directories: + cmd.extend(['-I', d]) cmd.extend([ - '-I', '$(DIST)/idl', '$(DIST)/include', '$(DIST)/xpcrs', '.',