aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/build.py13
-rw-r--r--mesonbuild/cmake/interpreter.py22
-rw-r--r--mesonbuild/compilers/compilers.py3
-rw-r--r--mesonbuild/compilers/d.py8
-rw-r--r--mesonbuild/compilers/mixins/clike.py6
-rw-r--r--mesonbuild/compilers/mixins/gnu.py3
-rw-r--r--mesonbuild/dependencies/dev.py3
7 files changed, 31 insertions, 27 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 616a183..b1bf9d4 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -922,16 +922,17 @@ This will become a hard error in a future Meson release.''')
name_prefix = kwargs['name_prefix']
if isinstance(name_prefix, list):
if name_prefix:
- raise InvalidArguments('name_prefix array must be empty to signify null.')
- elif not isinstance(name_prefix, str):
- raise InvalidArguments('name_prefix must be a string.')
- self.prefix = name_prefix
- self.name_prefix_set = True
+ raise InvalidArguments('name_prefix array must be empty to signify default.')
+ else:
+ if not isinstance(name_prefix, str):
+ raise InvalidArguments('name_prefix must be a string.')
+ self.prefix = name_prefix
+ self.name_prefix_set = True
if 'name_suffix' in kwargs:
name_suffix = kwargs['name_suffix']
if isinstance(name_suffix, list):
if name_suffix:
- raise InvalidArguments('name_suffix array must be empty to signify null.')
+ raise InvalidArguments('name_suffix array must be empty to signify default.')
else:
if not isinstance(name_suffix, str):
raise InvalidArguments('name_suffix must be a string.')
diff --git a/mesonbuild/cmake/interpreter.py b/mesonbuild/cmake/interpreter.py
index 2e33be6..f2f635c 100644
--- a/mesonbuild/cmake/interpreter.py
+++ b/mesonbuild/cmake/interpreter.py
@@ -22,7 +22,7 @@ from .executor import CMakeExecutor
from .traceparser import CMakeTraceParser, CMakeGeneratorTarget
from .. import mlog
from ..environment import Environment
-from ..mesonlib import MachineChoice, version_compare
+from ..mesonlib import MachineChoice, OrderedSet, version_compare
from ..compilers.compilers import lang_suffixes, header_suffixes, obj_suffixes, lib_suffixes, is_header
from enum import Enum
from functools import lru_cache
@@ -441,8 +441,8 @@ class ConverterTarget:
return x
build_dir_rel = os.path.relpath(self.build_dir, os.path.join(self.env.get_build_dir(), subdir))
- self.includes = list(set([rel_path(x, True, False) for x in set(self.includes)] + [build_dir_rel]))
- self.sys_includes = list(set([rel_path(x, True, False) for x in set(self.sys_includes)]))
+ self.includes = list(OrderedSet([rel_path(x, True, False) for x in OrderedSet(self.includes)] + [build_dir_rel]))
+ self.sys_includes = list(OrderedSet([rel_path(x, True, False) for x in OrderedSet(self.sys_includes)]))
self.sources = [rel_path(x, False, False) for x in self.sources]
self.generated = [rel_path(x, False, True) for x in self.generated]
@@ -507,7 +507,7 @@ class ConverterTarget:
self._append_objlib_sources(i)
else:
self.includes += i.includes
- self.includes = list(set(self.includes))
+ self.includes = list(OrderedSet(self.includes))
self.object_libs += [i]
break
@@ -518,9 +518,9 @@ class ConverterTarget:
self.includes += tgt.includes
self.sources += tgt.sources
self.generated += tgt.generated
- self.sources = list(set(self.sources))
- self.generated = list(set(self.generated))
- self.includes = list(set(self.includes))
+ self.sources = list(OrderedSet(self.sources))
+ self.generated = list(OrderedSet(self.generated))
+ self.includes = list(OrderedSet(self.includes))
# Inherit compiler arguments since they may be required for building
for lang, opts in tgt.compile_opts.items():
@@ -546,7 +546,7 @@ class ConverterTarget:
to_process += [x for x in i.depends if x not in processed]
else:
new_deps += [i]
- self.depends = list(set(new_deps))
+ self.depends = list(OrderedSet(new_deps))
def cleanup_dependencies(self):
# Clear the dependencies from targets that where moved from
@@ -720,7 +720,7 @@ class ConverterCustomTarget:
to_process += [x for x in i.depends if x not in processed]
else:
new_deps += [i]
- self.depends = list(set(new_deps))
+ self.depends = list(OrderedSet(new_deps))
def get_ref(self, fname: str) -> T.Optional[CustomTargetReference]:
fname = os.path.basename(fname)
@@ -863,7 +863,7 @@ class CMakeInterpreter:
cmake_files = self.fileapi.get_cmake_sources()
self.bs_files = [x.file for x in cmake_files if not x.is_cmake and not x.is_temp]
self.bs_files = [os.path.relpath(x, self.env.get_source_dir()) for x in self.bs_files]
- self.bs_files = list(set(self.bs_files))
+ self.bs_files = list(OrderedSet(self.bs_files))
# Load the codemodel configurations
self.codemodel_configs = self.fileapi.get_cmake_configurations()
@@ -888,7 +888,7 @@ class CMakeInterpreter:
src_dir = bs_reply.src_dir
self.bs_files = [x.file for x in bs_reply.build_files if not x.is_cmake and not x.is_temp]
self.bs_files = [os.path.relpath(os.path.join(src_dir, x), self.env.get_source_dir()) for x in self.bs_files]
- self.bs_files = list(set(self.bs_files))
+ self.bs_files = list(OrderedSet(self.bs_files))
self.codemodel_configs = cm_reply.configs
def analyse(self) -> None:
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index 2caddde..52b9592 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -1201,6 +1201,9 @@ class Compiler:
"""
return []
+ def get_coverage_link_args(self) -> T.List[str]:
+ return self.linker.get_coverage_args()
+
def get_largefile_args(compiler):
'''
diff --git a/mesonbuild/compilers/d.py b/mesonbuild/compilers/d.py
index a86f254..a83e221 100644
--- a/mesonbuild/compilers/d.py
+++ b/mesonbuild/compilers/d.py
@@ -105,6 +105,9 @@ class DmdLikeCompilerMixin:
def get_coverage_args(self):
return ['-cov']
+ def get_coverage_link_args(self):
+ return []
+
def get_preprocess_only_args(self):
return ['-E']
@@ -642,7 +645,7 @@ class GnuDCompiler(GnuCompiler, DCompiler):
'1': default_warn_args,
'2': default_warn_args + ['-Wextra'],
'3': default_warn_args + ['-Wextra', '-Wpedantic']}
- self.base_options = ['b_colorout', 'b_sanitize', 'b_staticpic', 'b_vscrt']
+ self.base_options = ['b_colorout', 'b_sanitize', 'b_staticpic', 'b_vscrt', 'b_coverage']
self._has_color_support = version_compare(self.version, '>=4.9')
# dependencies were implemented before, but broken - support was fixed in GCC 7.1+
@@ -662,9 +665,6 @@ class GnuDCompiler(GnuCompiler, DCompiler):
def get_warn_args(self, level):
return self.warn_args[level]
- def get_coverage_args(self):
- return []
-
def get_buildtype_args(self, buildtype):
return d_gdc_buildtype_args[buildtype]
diff --git a/mesonbuild/compilers/mixins/clike.py b/mesonbuild/compilers/mixins/clike.py
index 93c1a7c..cd16f86 100644
--- a/mesonbuild/compilers/mixins/clike.py
+++ b/mesonbuild/compilers/mixins/clike.py
@@ -114,12 +114,6 @@ class CLikeCompiler:
def get_output_args(self, target):
return ['-o', target]
- def get_coverage_args(self):
- return ['--coverage']
-
- def get_coverage_link_args(self) -> T.List[str]:
- return self.linker.get_coverage_args()
-
def get_werror_args(self):
return ['-Werror']
diff --git a/mesonbuild/compilers/mixins/gnu.py b/mesonbuild/compilers/mixins/gnu.py
index 5072b11..29552f3 100644
--- a/mesonbuild/compilers/mixins/gnu.py
+++ b/mesonbuild/compilers/mixins/gnu.py
@@ -312,6 +312,9 @@ class GnuLikeCompiler(metaclass=abc.ABCMeta):
'not {}.'.format(linker))
return ['-fuse-ld={}'.format(linker)]
+ def get_coverage_args(self) -> T.List[str]:
+ return ['--coverage']
+
class GnuCompiler(GnuLikeCompiler):
"""
diff --git a/mesonbuild/dependencies/dev.py b/mesonbuild/dependencies/dev.py
index b6ac331..67d7e65 100644
--- a/mesonbuild/dependencies/dev.py
+++ b/mesonbuild/dependencies/dev.py
@@ -406,6 +406,9 @@ class LLVMDependencyCMake(CMakeDependency):
# Extract extra include directories and definitions
inc_dirs = self.traceparser.get_cmake_var('PACKAGE_INCLUDE_DIRS')
defs = self.traceparser.get_cmake_var('PACKAGE_DEFINITIONS')
+ # LLVM explicitly uses space-separated variables rather than semicolon lists
+ if len(defs) == 1:
+ defs = defs[0].split(' ')
temp = ['-I' + x for x in inc_dirs] + defs
self.compile_args += [x for x in temp if x not in self.compile_args]
if not self._add_sub_dependency(threads_factory(env, self.for_machine, {})):