summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAleksey Filippov <alekseyf@google.com>2018-02-18 03:16:29 +0000
committerAleksey Filippov <alekseyf@google.com>2018-03-06 01:44:26 +0000
commit077d59daa4593ae6586eeaafb53713907c7180db (patch)
tree4eb5bccc90a7dbd1d339f654ed4f229aec84f045
parent7842bc03dd581c4beaa1b94746b5dfe5d38986c6 (diff)
downloadmeson-077d59daa4593ae6586eeaafb53713907c7180db.tar.gz
Add link_whole argument to declare_dependency()
-rw-r--r--mesonbuild/build.py4
-rw-r--r--mesonbuild/dependencies/base.py3
-rw-r--r--mesonbuild/interpreter.py5
-rw-r--r--mesonbuild/modules/gnome.py2
4 files changed, 9 insertions, 5 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 9eb74e9c6..d162e60c7 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -838,12 +838,14 @@ This will become a hard error in a future Meson release.''')
self.add_include_dirs(dep.include_directories)
for l in dep.libraries:
self.link(l)
+ for l in dep.whole_libraries:
+ self.link_whole(l)
# Those parts that are external.
extpart = dependencies.InternalDependency('undefined',
[],
dep.compile_args,
dep.link_args,
- [], [], [])
+ [], [], [], [])
self.external_deps.append(extpart)
# Deps of deps.
self.add_deps(dep.ext_deps)
diff --git a/mesonbuild/dependencies/base.py b/mesonbuild/dependencies/base.py
index 7a652a4cf..b6d19831d 100644
--- a/mesonbuild/dependencies/base.py
+++ b/mesonbuild/dependencies/base.py
@@ -145,7 +145,7 @@ class Dependency:
class InternalDependency(Dependency):
- def __init__(self, version, incdirs, compile_args, link_args, libraries, sources, ext_deps):
+ def __init__(self, version, incdirs, compile_args, link_args, libraries, whole_libraries, sources, ext_deps):
super().__init__('internal', {})
self.version = version
self.is_found = True
@@ -153,6 +153,7 @@ class InternalDependency(Dependency):
self.compile_args = compile_args
self.link_args = link_args
self.libraries = libraries
+ self.whole_libraries = whole_libraries
self.sources = sources
self.ext_deps = ext_deps
diff --git a/mesonbuild/interpreter.py b/mesonbuild/interpreter.py
index 7a76fad52..8421d703f 100644
--- a/mesonbuild/interpreter.py
+++ b/mesonbuild/interpreter.py
@@ -1390,7 +1390,7 @@ permitted_kwargs = {'add_global_arguments': {'language'},
'configure_file': {'input', 'output', 'configuration', 'command', 'install_dir', 'capture', 'install'},
'custom_target': {'input', 'output', 'command', 'install', 'install_dir', 'build_always', 'capture', 'depends', 'depend_files', 'depfile', 'build_by_default'},
'dependency': {'default_options', 'fallback', 'language', 'main', 'method', 'modules', 'optional_modules', 'native', 'required', 'static', 'version'},
- 'declare_dependency': {'include_directories', 'link_with', 'sources', 'dependencies', 'compile_args', 'link_args', 'version'},
+ 'declare_dependency': {'include_directories', 'link_with', 'sources', 'dependencies', 'compile_args', 'link_args', 'link_whole', 'version'},
'executable': exe_kwargs,
'find_program': {'required', 'native'},
'generator': {'arguments', 'output', 'depfile', 'capture', 'preserve_path_from'},
@@ -1622,6 +1622,7 @@ class Interpreter(InterpreterBase):
raise InterpreterException('Version must be a string.')
incs = extract_as_list(kwargs, 'include_directories', unholder=True)
libs = extract_as_list(kwargs, 'link_with', unholder=True)
+ libs_whole = extract_as_list(kwargs, 'link_whole', unholder=True)
sources = extract_as_list(kwargs, 'sources')
sources = listify(self.source_strings_to_files(sources), unholder=True)
deps = extract_as_list(kwargs, 'dependencies', unholder=True)
@@ -1641,7 +1642,7 @@ class Interpreter(InterpreterBase):
raise InterpreterException('''Entries in "link_with" may only be self-built targets,
external dependencies (including libraries) must go to "dependencies".''')
dep = dependencies.InternalDependency(version, incs, compile_args,
- link_args, libs, sources, final_deps)
+ link_args, libs, libs_whole, sources, final_deps)
return DependencyHolder(dep)
@noKwargs
diff --git a/mesonbuild/modules/gnome.py b/mesonbuild/modules/gnome.py
index 569011e45..8b6397ea6 100644
--- a/mesonbuild/modules/gnome.py
+++ b/mesonbuild/modules/gnome.py
@@ -1350,7 +1350,7 @@ G_END_DECLS'''
# - add relevant directories to include dirs
incs = [build.IncludeDirs(state.subdir, ['.'] + vapi_includes, False)]
sources = [vapi_target] + vapi_depends
- rv = InternalDependency(None, incs, [], [], link_with, sources, [])
+ rv = InternalDependency(None, incs, [], [], link_with, [], sources, [])
created_values.append(rv)
return ModuleReturnValue(rv, created_values)