--- a/python/mozbuild/mozbuild/backend/tup.py
+++ b/python/mozbuild/mozbuild/backend/tup.py
@@ -95,18 +95,16 @@ class BackendTupfile(object):
self.host_programs = []
self.host_library = None
self.exports = set()
# These files are special, ignore anything that generates them or
# depends on them.
self._skip_files = [
'signmar',
- 'libxul.so',
- 'libtestcrasher.so',
]
self.fh = FileAvoidWrite(self.name, capture_diff=True, dry_run=dry_run)
self.fh.write('# THIS FILE WAS AUTOMATICALLY GENERATED. DO NOT EDIT.\n')
self.fh.write('\n')
def write(self, buf):
self.fh.write(buf)
@@ -320,16 +318,19 @@ class TupBackend(CommonBackend):
def _lib_paths(self, objdir, libs):
return [mozpath.relpath(mozpath.join(l.objdir, l.import_name), objdir)
for l in libs]
def _gen_shared_library(self, backend_file):
shlib = backend_file.shared_lib
+ if backend_file.objdir.endswith('gtest') and shlib.name == 'libxul.so':
+ return
+
if shlib.cxx_link:
mkshlib = (
[backend_file.environment.substs['CXX']] +
backend_file.local_flags['CXX_LDFLAGS']
)
else:
mkshlib = (
[backend_file.environment.substs['CC']] +
@@ -345,18 +346,27 @@ class TupBackend(CommonBackend):
objs, _, shared_libs, os_libs, static_libs = self._expand_libs(shlib)
static_libs = self._lib_paths(backend_file.objdir, static_libs)
shared_libs = self._lib_paths(backend_file.objdir, shared_libs)
list_file_name = '%s.list' % shlib.name.replace('.', '_')
list_file = self._make_list_file(backend_file.objdir, objs, list_file_name)
+ rust_linked = self._lib_paths(backend_file.objdir,
+ (l for l in backend_file.shared_lib.linked_libraries
+ if isinstance(l, RustLibrary)))
+
inputs = objs + static_libs + shared_libs
+ extra_inputs = []
+ if rust_linked:
+ extra_inputs = [self._rust_libs]
+ static_libs += rust_linked
+
symbols_file = []
if shlib.symbols_file:
inputs.append(shlib.symbols_file)
# TODO: Assumes GNU LD
symbols_file = ['-Wl,--version-script,%s' % shlib.symbols_file]
cmd = (
mkshlib +
@@ -366,16 +376,17 @@ class TupBackend(CommonBackend):
shared_libs +
symbols_file +
[backend_file.environment.substs['OS_LIBS']] +
os_libs
)
backend_file.rule(
cmd=cmd,
inputs=inputs,
+ extra_inputs=extra_inputs,
outputs=[shlib.lib_name],
display='LINK %o'
)
backend_file.symlink_rule(mozpath.join(backend_file.objdir,
shlib.lib_name),
output=mozpath.join(self.environment.topobjdir,
shlib.install_target,
shlib.lib_name))
@@ -796,22 +807,17 @@ class TupBackend(CommonBackend):
explicit_env=cargo_env)
cargo_plan = json.loads(''.join(output_lines))
self._gen_cargo_rules(backend_file, cargo_plan, cargo_env)
self.backend_input_files |= set(cargo_plan['inputs'])
def _process_generated_file(self, backend_file, obj):
- # TODO: These are directories that don't work in the tup backend
- # yet, because things they depend on aren't built yet.
- skip_directories = (
- 'toolkit/library', # libxul.so
- )
- if obj.script and obj.method and obj.relobjdir not in skip_directories:
+ if obj.script and obj.method:
backend_file.export_shell()
cmd = self._py_action('file_generate')
if obj.localized:
cmd.append('--locale=en-US')
cmd.extend([
obj.script,
obj.method,
obj.outputs[0],