aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/backend
diff options
context:
space:
mode:
authorJussi Pakkanen <jpakkane@gmail.com>2018-04-17 21:39:13 +0300
committerGitHub <noreply@github.com>2018-04-17 21:39:13 +0300
commit88ca3805e74e67d81499bcf02362d8935dd8ec7a (patch)
tree29bd531405a41e29ccabb9a3fb7c416b4ba3a977 /mesonbuild/backend
parent348248f0a19bdc80e8a184befb2faaa1d5e66f40 (diff)
parent46ccbe48e7dc902f699d0554055f89c49df4d415 (diff)
downloadmeson-88ca3805e74e67d81499bcf02362d8935dd8ec7a.zip
meson-88ca3805e74e67d81499bcf02362d8935dd8ec7a.tar.gz
meson-88ca3805e74e67d81499bcf02362d8935dd8ec7a.tar.bz2
Merge pull request #1852 from QuLogic/openmp
Add an OpenMP dependency.
Diffstat (limited to 'mesonbuild/backend')
-rw-r--r--mesonbuild/backend/backends.py2
-rw-r--r--mesonbuild/backend/ninjabackend.py2
-rw-r--r--mesonbuild/backend/vs2010backend.py15
3 files changed, 16 insertions, 3 deletions
diff --git a/mesonbuild/backend/backends.py b/mesonbuild/backend/backends.py
index 916f680..694700e 100644
--- a/mesonbuild/backend/backends.py
+++ b/mesonbuild/backend/backends.py
@@ -540,6 +540,8 @@ class Backend:
# pkg-config puts the thread flags itself via `Cflags:`
if dep.need_threads():
commands += compiler.thread_flags(self.environment)
+ elif dep.need_openmp():
+ commands += compiler.openmp_flags()
# Fortran requires extra include directives.
if compiler.language == 'fortran':
for lt in target.link_targets:
diff --git a/mesonbuild/backend/ninjabackend.py b/mesonbuild/backend/ninjabackend.py
index 466a677..bc3a8ef 100644
--- a/mesonbuild/backend/ninjabackend.py
+++ b/mesonbuild/backend/ninjabackend.py
@@ -2551,6 +2551,8 @@ rule FORTRAN_DEP_HACK
for d in target.external_deps:
if d.need_threads():
commands += linker.thread_link_flags(self.environment)
+ elif d.need_openmp():
+ commands += linker.openmp_flags()
# Only non-static built targets need link args and link dependencies
if not isinstance(target, build.StaticLibrary):
commands += target.link_args
diff --git a/mesonbuild/backend/vs2010backend.py b/mesonbuild/backend/vs2010backend.py
index 3171451..22383dc 100644
--- a/mesonbuild/backend/vs2010backend.py
+++ b/mesonbuild/backend/vs2010backend.py
@@ -824,7 +824,10 @@ class Vs2010Backend(backends.Backend):
for d in reversed(target.get_external_deps()):
# Cflags required by external deps might have UNIX-specific flags,
# so filter them out if needed
- d_compile_args = compiler.unix_args_to_native(d.get_compile_args())
+ if isinstance(d, dependencies.OpenMPDependency):
+ d_compile_args = compiler.openmp_flags()
+ else:
+ d_compile_args = compiler.unix_args_to_native(d.get_compile_args())
for arg in d_compile_args:
if arg.startswith(('-D', '/D')):
define = arg[2:]
@@ -915,11 +918,17 @@ class Vs2010Backend(backends.Backend):
for dep in target.get_external_deps():
# Extend without reordering or de-dup to preserve `-L -l` sets
# https://github.com/mesonbuild/meson/issues/1718
- extra_link_args.extend_direct(dep.get_link_args())
+ if isinstance(dep, dependencies.OpenMPDependency):
+ extra_link_args.extend_direct(compiler.openmp_flags())
+ else:
+ extra_link_args.extend_direct(dep.get_link_args())
for d in target.get_dependencies():
if isinstance(d, build.StaticLibrary):
for dep in d.get_external_deps():
- extra_link_args.extend_direct(dep.get_link_args())
+ if isinstance(dep, dependencies.OpenMPDependency):
+ extra_link_args.extend_direct(compiler.openmp_flags())
+ else:
+ extra_link_args.extend_direct(dep.get_link_args())
# Add link args for c_* or cpp_* build options. Currently this only
# adds c_winlibs and cpp_winlibs when building for Windows. This needs
# to be after all internal and external libraries so that unresolved