aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/dependencies/dev.py
diff options
context:
space:
mode:
authorDaniel Mensinger <daniel@mensinger-ka.de>2019-04-12 13:08:47 +0200
committerDaniel Mensinger <daniel@mensinger-ka.de>2019-05-03 01:39:16 +0200
commit1fba945b61619a344c21468eb2bb36604f1cb975 (patch)
tree5aaa40ffaa9f3504f44a4c68110a45023d9dbfc9 /mesonbuild/dependencies/dev.py
parent3f539e01aedd1a3498c341efadb591a8a90e6995 (diff)
downloadmeson-1fba945b61619a344c21468eb2bb36604f1cb975.zip
meson-1fba945b61619a344c21468eb2bb36604f1cb975.tar.gz
meson-1fba945b61619a344c21468eb2bb36604f1cb975.tar.bz2
cmake: LLVM better modules handling
Diffstat (limited to 'mesonbuild/dependencies/dev.py')
-rw-r--r--mesonbuild/dependencies/dev.py32
1 files changed, 18 insertions, 14 deletions
diff --git a/mesonbuild/dependencies/dev.py b/mesonbuild/dependencies/dev.py
index 2ad506e..646293b 100644
--- a/mesonbuild/dependencies/dev.py
+++ b/mesonbuild/dependencies/dev.py
@@ -20,7 +20,7 @@ import glob
import os
import re
-from .. import mesonlib
+from .. import mesonlib, mlog
from ..mesonlib import version_compare, stringlistify, extract_as_list, MachineChoice
from .base import (
DependencyException, DependencyMethods, ExternalDependency, PkgConfigDependency,
@@ -405,7 +405,6 @@ class LLVMDependencyCMake(CMakeDependency):
def __init__(self, env, kwargs):
self.llvm_modules = stringlistify(extract_as_list(kwargs, 'modules'))
self.llvm_opt_modules = stringlistify(extract_as_list(kwargs, 'optional_modules'))
- self.module_map = {}
super().__init__(name='LLVM', environment=env, language='cpp', kwargs=kwargs)
# Extract extra include directories and definitions
@@ -419,22 +418,27 @@ class LLVMDependencyCMake(CMakeDependency):
return 'CMakeListsLLVM.txt'
def _extra_cmake_opts(self) -> List[str]:
- return ['-DLLVM_MESON_MODULES={}'.format(';'.join(self.llvm_modules)),
- '-DLLVM_MESON_OPT_MODULES={}'.format(';'.join(self.llvm_opt_modules))]
+ return ['-DLLVM_MESON_MODULES={}'.format(';'.join(self.llvm_modules + self.llvm_opt_modules))]
def _map_module_list(self, modules: List[Tuple[str, bool]]) -> List[Tuple[str, bool]]:
- res_modules = self.get_cmake_var('MESON_RESOLVED_LLVM_MODULES')
- res_opt_modules = self.get_cmake_var('MESON_RESOLVED_LLVM_MODULES_OPT')
- modules = [(x, True) for x in res_modules]
- modules += [(x, False) for x in res_opt_modules]
- self.module_map = {
- **dict(zip(res_modules, self.llvm_modules)),
- **dict(zip(res_opt_modules, self.llvm_opt_modules))
- }
- return modules
+ res = []
+ for mod, required in modules:
+ cm_targets = self.get_cmake_var('MESON_LLVM_TARGETS_{}'.format(mod))
+ if not cm_targets:
+ if required:
+ raise self._gen_exception('LLVM module {} was not found'.format(mod))
+ else:
+ mlog.warning('Optional LLVM module', mlog.bold(mod), 'was not found')
+ continue
+ for i in cm_targets:
+ res += [(i, required)]
+ return res
def _original_module_name(self, module: str) -> str:
- return self.module_map.get(module, module)
+ orig_name = self.get_cmake_var('MESON_TARGET_TO_LLVM_{}'.format(module))
+ if orig_name:
+ return orig_name[0]
+ return module
def need_threads(self) -> bool:
return True