aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDylan Baker <dylan@pnwbakers.com>2017-10-05 11:42:44 -0700
committerDylan Baker <dylan@pnwbakers.com>2017-10-25 10:03:34 -0700
commit55844093468d09005350baf9bd21a5022cfc30b2 (patch)
tree829c78cb37b24213d0758ced3870548ddb573452
parent6cbbbd546e0e86ea90df6899fb247b7ad9743a65 (diff)
downloadmeson-55844093468d09005350baf9bd21a5022cfc30b2.zip
meson-55844093468d09005350baf9bd21a5022cfc30b2.tar.gz
meson-55844093468d09005350baf9bd21a5022cfc30b2.tar.bz2
llvm: Add support for linking statically
This adds support for the static kwarg to the llvm dependency.
-rw-r--r--mesonbuild/dependencies/dev.py4
-rw-r--r--test cases/frameworks/15 llvm/meson.build33
2 files changed, 23 insertions, 14 deletions
diff --git a/mesonbuild/dependencies/dev.py b/mesonbuild/dependencies/dev.py
index 858f12f..b9e35e1 100644
--- a/mesonbuild/dependencies/dev.py
+++ b/mesonbuild/dependencies/dev.py
@@ -139,6 +139,7 @@ class LLVMDependency(ExternalDependency):
self.provided_modules = []
self.required_modules = set()
self.llvmconfig = None
+ self.static = kwargs.get('static', False)
self.__best_found = None
# FIXME: Support multiple version requirements ala PkgConfigDependency
req_version = kwargs.get('version', None)
@@ -180,8 +181,9 @@ class LLVMDependency(ExternalDependency):
opt_modules = stringlistify(extract_as_list(kwargs, 'optional_modules'))
self.check_components(opt_modules, required=False)
+ link_args = ['--link-static', '--system-libs'] if self.static else ['--link-shared']
p, out = Popen_safe(
- [self.llvmconfig, '--libs', '--ldflags'] + list(self.required_modules))[:2]
+ [self.llvmconfig, '--libs', '--ldflags'] + link_args + list(self.required_modules))[:2]
if p.returncode != 0:
raise DependencyException('Could not generate libs for LLVM.')
self.link_args = strip_system_libdirs(environment, shlex.split(out))
diff --git a/test cases/frameworks/15 llvm/meson.build b/test cases/frameworks/15 llvm/meson.build
index ee6f556..eb1b8d5 100644
--- a/test cases/frameworks/15 llvm/meson.build
+++ b/test cases/frameworks/15 llvm/meson.build
@@ -1,12 +1,5 @@
project('llvmtest', ['c', 'cpp'], default_options : ['c_std=c99'])
-llvm_dep = dependency(
- 'llvm',
- modules : ['bitwriter', 'asmprinter', 'executionengine', 'target',
- 'mcjit', 'nativecodegen'],
- required : true,
-)
-
d = dependency('llvm', modules : 'not-found', required : false)
assert(d.found() == false, 'not-found llvm module found')
@@ -16,9 +9,23 @@ assert(d.found() == false, 'ancient llvm module found')
d = dependency('llvm', optional_modules : 'not-found', required : false)
assert(d.found() == true, 'optional module stopped llvm from being found.')
-executable('sum', 'sum.c', dependencies : [
- llvm_dep,
- dependency('zlib'),
- meson.get_compiler('c').find_library('dl', required : false),
- dependency('glib-2.0'),
- ])
+foreach static : [true, false]
+ llvm_dep = dependency(
+ 'llvm',
+ modules : ['bitwriter', 'asmprinter', 'executionengine', 'target',
+ 'mcjit', 'nativecodegen'],
+ required : true,
+ static : static,
+ )
+ name = static ? 'static' : 'dynamic'
+ executable(
+ 'sum-@0@'.format(name),
+ 'sum.c',
+ dependencies : [
+ llvm_dep,
+ dependency('zlib'),
+ dependency('glib-2.0'),
+ meson.get_compiler('c').find_library('dl', required : false),
+ ]
+ )
+endforeach