diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2015-12-28 18:39:21 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2015-12-28 18:39:21 +0200 |
commit | 23b1ac795b6699d4ca6d5a2c1244664f7fc511f6 (patch) | |
tree | 78456bd9e43ea0bdbfa2edc9b367ffa6410a15ed /ninjabackend.py | |
parent | 5e12c03db6c0bf7b266fc351dc24e13d4e6f737e (diff) | |
parent | 9bf641e545f163cd5e9e7e3b5e9aa1f9e002e5d9 (diff) | |
download | meson-23b1ac795b6699d4ca6d5a2c1244664f7fc511f6.zip meson-23b1ac795b6699d4ca6d5a2c1244664f7fc511f6.tar.gz meson-23b1ac795b6699d4ca6d5a2c1244664f7fc511f6.tar.bz2 |
Merge pull request #338 from mesonbuild/multigen
Custom target libgen
Diffstat (limited to 'ninjabackend.py')
-rw-r--r-- | ninjabackend.py | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/ninjabackend.py b/ninjabackend.py index c465f7c..8fc1772 100644 --- a/ninjabackend.py +++ b/ninjabackend.py @@ -264,6 +264,8 @@ int dummy; header_deps)) elif self.environment.is_object(src): obj_list.append(src) + elif self.environment.is_library(src): + pass else: # Assume anything not specifically a source file is a header. This is because # people generate files with weird suffixes (.inc, .fh) that they then include @@ -1674,17 +1676,29 @@ rule FORTRAN_DEP_HACK self.determine_rpath_dirs(target), target.install_rpath) if self.environment.coredata.get_builtin_option('coverage'): commands += linker.get_coverage_link_args() + custom_target_libraries = self.get_custom_target_provided_libraries(target) commands += extra_args + commands += custom_target_libraries commands = linker.unixtype_flags_to_native(commands) dep_targets = [self.get_dependency_filename(t) for t in dependencies] dep_targets += [os.path.join(self.environment.source_dir, target.subdir, t) for t in target.link_depends] elem = NinjaBuildElement(outname, linker_rule, obj_list) - elem.add_dep(dep_targets) + elem.add_dep(dep_targets + custom_target_libraries) elem.add_item('LINK_ARGS', commands) self.check_outputs(elem) return elem + def get_custom_target_provided_libraries(self, target): + libs = [] + for t in target.get_generated_sources(): + if not isinstance(t, build.CustomTarget): + continue + for f in t.output: + if self.environment.is_library(f): + libs.append(os.path.join(self.get_target_dir(t), f)) + return libs + def determine_rpath_dirs(self, target): link_deps = target.get_all_link_deps() result = [] |