diff options
author | Nicolas Schneider <nioncode+git@gmail.com> | 2016-03-29 23:23:08 +0200 |
---|---|---|
committer | Nicolas Schneider <nioncode+git@gmail.com> | 2016-04-19 23:25:45 +0200 |
commit | 060f195fe01009c613a524fde1e119b84e86a83c (patch) | |
tree | 53ae7e9777353208cc431f51e7e43edb4d850d0e /mesonbuild/backend | |
parent | 1ccb4b3a51fab62d0501febcf9f72f0b86b3eea5 (diff) | |
download | meson-060f195fe01009c613a524fde1e119b84e86a83c.zip meson-060f195fe01009c613a524fde1e119b84e86a83c.tar.gz meson-060f195fe01009c613a524fde1e119b84e86a83c.tar.bz2 |
vs2010: add generated libs as link dependencies
Diffstat (limited to 'mesonbuild/backend')
-rw-r--r-- | mesonbuild/backend/backends.py | 10 | ||||
-rw-r--r-- | mesonbuild/backend/ninjabackend.py | 10 | ||||
-rw-r--r-- | mesonbuild/backend/vs2010backend.py | 4 |
3 files changed, 14 insertions, 10 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py index ceb466b..209c977 100644 --- a/mesonbuild/backend/backends.py +++ b/mesonbuild/backend/backends.py @@ -387,6 +387,16 @@ class Backend(): final_args.append(a) return final_args + 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 eval_custom_target_command(self, target, absolute_paths=False): if not absolute_paths: ofilenames = [os.path.join(self.get_target_dir(target), i) for i in target.output] diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py index 201b2d1..1c9196d 100644 --- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -1704,16 +1704,6 @@ rule FORTRAN_DEP_HACK elem.add_item('LINK_ARGS', commands) 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 = [] diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py index 6df29f2..5df2e11 100644 --- a/mesonbuild/backend/vs2010backend.py +++ b/mesonbuild/backend/vs2010backend.py @@ -264,6 +264,8 @@ class Vs2010Backend(backends.Backend): lang = self.lang_from_source_file(i) if lang not in languages: languages.append(lang) + elif self.environment.is_library(i): + pass else: # Everything that is not an object or source file is considered a header. headers.append(i) @@ -565,6 +567,8 @@ class Vs2010Backend(backends.Backend): rel_path = self.relpath(lobj.subdir, target.subdir) linkname = os.path.join(rel_path, lobj.get_import_filename()) additional_links.append(linkname) + for lib in self.get_custom_target_provided_libraries(target): + additional_links.append(self.relpath(lib, self.get_target_dir(target))) additional_objects = [] for o in self.flatten_object_list(target, down): assert(isinstance(o, str)) |