diff options
author | Daniel Mensinger <daniel@mensinger-ka.de> | 2018-12-30 13:37:41 +0100 |
---|---|---|
committer | Daniel Mensinger <daniel@mensinger-ka.de> | 2019-01-06 12:19:32 +0100 |
commit | 97429279031d9b9f0ad9e2e66511c67d2dd0c6a0 (patch) | |
tree | a20c483fc3b3c836d9f1bdb45d26022d7c137b01 /mesonbuild/compilers | |
parent | 2487e0a1fbf8ac33b95467f7428afd78a39537ed (diff) | |
download | meson-97429279031d9b9f0ad9e2e66511c67d2dd0c6a0.zip meson-97429279031d9b9f0ad9e2e66511c67d2dd0c6a0.tar.gz meson-97429279031d9b9f0ad9e2e66511c67d2dd0c6a0.tar.bz2 |
Absolute path generation refactoring
Diffstat (limited to 'mesonbuild/compilers')
-rw-r--r-- | mesonbuild/compilers/__init__.py | 2 | ||||
-rw-r--r-- | mesonbuild/compilers/c.py | 9 | ||||
-rw-r--r-- | mesonbuild/compilers/compilers.py | 31 | ||||
-rw-r--r-- | mesonbuild/compilers/cs.py | 3 | ||||
-rw-r--r-- | mesonbuild/compilers/d.py | 14 | ||||
-rw-r--r-- | mesonbuild/compilers/fortran.py | 7 | ||||
-rw-r--r-- | mesonbuild/compilers/java.py | 3 | ||||
-rw-r--r-- | mesonbuild/compilers/rust.py | 3 | ||||
-rw-r--r-- | mesonbuild/compilers/swift.py | 7 | ||||
-rw-r--r-- | mesonbuild/compilers/vala.py | 3 |
10 files changed, 82 insertions, 0 deletions
diff --git a/mesonbuild/compilers/__init__.py b/mesonbuild/compilers/__init__.py index 31b7b89..b5b2475 100644 --- a/mesonbuild/compilers/__init__.py +++ b/mesonbuild/compilers/__init__.py @@ -15,6 +15,7 @@ # Public symbols for compilers sub-package when using 'from . import compilers' __all__ = [ 'CompilerType', + 'Compiler', 'all_languages', 'base_options', @@ -91,6 +92,7 @@ __all__ = [ # Bring symbols from each module into compilers sub-package namespace from .compilers import ( CompilerType, + Compiler, all_languages, base_options, clib_langs, diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py index 92a9fa6..6350eee 100644 --- a/mesonbuild/compilers/c.py +++ b/mesonbuild/compilers/c.py @@ -1475,6 +1475,15 @@ class VisualStudioCCompiler(CCompiler): # msvc does not have a concept of system header dirs. return ['-I' + path] + def compute_parameters_with_absolute_paths(self, parameter_list, build_dir): + for idx, i in enumerate(parameter_list): + if i[:2] == '-I' or i[:2] == '/I': + parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:])) + elif i[:9] == '/LIBPATH:': + parameter_list[idx] = i[:9] + os.path.normpath(os.path.join(build_dir, i[9:])) + + return parameter_list + # Visual Studio is special. It ignores some arguments it does not # understand and you can't tell it to error out on those. # http://stackoverflow.com/questions/15259720/how-can-i-make-the-microsoft-c-compiler-treat-unknown-flags-as-errors-rather-t diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index 2be6ef1..3ef4ffc 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -884,6 +884,9 @@ class Compiler: def compute_int(self, expression, low, high, guess, prefix, env, extra_args, dependencies): raise EnvironmentException('%s does not support compute_int ' % self.get_id()) + def compute_parameters_with_absolute_paths(self, parameter_list, build_dir): + raise EnvironmentException('%s does not support compute_parameters_with_absolute_paths ' % self.get_id()) + def has_members(self, typename, membernames, prefix, env, *, extra_args=None, dependencies=None): raise EnvironmentException('%s does not support has_member(s) ' % self.get_id()) @@ -1547,6 +1550,13 @@ class GnuLikeCompiler(abc.ABC): return ['-mwindows'] return [] + def compute_parameters_with_absolute_paths(self, parameter_list, build_dir): + for idx, i in enumerate(parameter_list): + if i[:2] == '-I' or i[:2] == '-L': + parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:])) + + return parameter_list + class GnuCompiler(GnuLikeCompiler): """ GnuCompiler represents an actual GCC in its many incarnations. @@ -1776,6 +1786,13 @@ class ArmclangCompiler: """ return ['--symdefs=' + implibname] + def compute_parameters_with_absolute_paths(self, parameter_list, build_dir): + for idx, i in enumerate(parameter_list): + if i[:2] == '-I' or i[:2] == '-L': + parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:])) + + return parameter_list + # Tested on linux for ICC 14.0.3, 15.0.6, 16.0.4, 17.0.1, 19.0.0 class IntelCompiler(GnuLikeCompiler): @@ -1910,6 +1927,13 @@ class ArmCompiler: def get_debug_args(self, is_debug): return clike_debug_args[is_debug] + def compute_parameters_with_absolute_paths(self, parameter_list, build_dir): + for idx, i in enumerate(parameter_list): + if i[:2] == '-I' or i[:2] == '-L': + parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:])) + + return parameter_list + class CcrxCompiler: def __init__(self, compiler_type): if not self.is_cross: @@ -2003,3 +2027,10 @@ class CcrxCompiler: continue result.append(i) return result + + def compute_parameters_with_absolute_paths(self, parameter_list, build_dir): + for idx, i in enumerate(parameter_list): + if i[:9] == '-include=': + parameter_list[idx] = i[:9] + os.path.normpath(os.path.join(build_dir, i[9:])) + + return parameter_list diff --git a/mesonbuild/compilers/cs.py b/mesonbuild/compilers/cs.py index a6c74d2..a504f80 100644 --- a/mesonbuild/compilers/cs.py +++ b/mesonbuild/compilers/cs.py @@ -88,6 +88,9 @@ class CsCompiler(Compiler): def get_pic_args(self): return [] + def compute_parameters_with_absolute_paths(self, parameter_list, build_dir): + return parameter_list + def name_string(self): return ' '.join(self.exelist) diff --git a/mesonbuild/compilers/d.py b/mesonbuild/compilers/d.py index 2cf0fbd..a3e3369 100644 --- a/mesonbuild/compilers/d.py +++ b/mesonbuild/compilers/d.py @@ -111,6 +111,13 @@ class DCompiler(Compiler): def get_include_args(self, path, is_system): return ['-I=' + path] + def compute_parameters_with_absolute_paths(self, parameter_list, build_dir): + for idx, i in enumerate(parameter_list): + if i[:3] == '-I=': + parameter_list[idx] = i[:3] + os.path.normpath(os.path.join(build_dir, i[3:])) + + return parameter_list + def get_warn_args(self, level): return ['-wi'] @@ -511,6 +518,13 @@ class GnuDCompiler(DCompiler): def get_buildtype_args(self, buildtype): return d_gdc_buildtype_args[buildtype] + def compute_parameters_with_absolute_paths(self, parameter_list, build_dir): + for idx, i in enumerate(parameter_list): + if i[:2] == '-I': + parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:])) + + return parameter_list + def build_rpath_args(self, build_dir, from_dir, rpath_paths, build_rpath, install_rpath): return self.build_unix_rpath_args(build_dir, from_dir, rpath_paths, build_rpath, install_rpath) diff --git a/mesonbuild/compilers/fortran.py b/mesonbuild/compilers/fortran.py index 75db26d..456e63e 100644 --- a/mesonbuild/compilers/fortran.py +++ b/mesonbuild/compilers/fortran.py @@ -171,6 +171,13 @@ end program prog def get_module_outdir_args(self, path): return ['-module', path] + def compute_parameters_with_absolute_paths(self, parameter_list, build_dir): + for idx, i in enumerate(parameter_list): + if i[:2] == '-I': + parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:])) + + return parameter_list + def module_name_to_filename(self, module_name): return module_name.lower() + '.mod' diff --git a/mesonbuild/compilers/java.py b/mesonbuild/compilers/java.py index 978562c..89d4c9c 100644 --- a/mesonbuild/compilers/java.py +++ b/mesonbuild/compilers/java.py @@ -81,6 +81,9 @@ class JavaCompiler(Compiler): def get_buildtype_args(self, buildtype): return java_buildtype_args[buildtype] + def compute_parameters_with_absolute_paths(self, parameter_list, build_dir): + return parameter_list + def sanity_check(self, work_dir, environment): src = 'SanityCheck.java' obj = 'SanityCheck' diff --git a/mesonbuild/compilers/rust.py b/mesonbuild/compilers/rust.py index 93c2917..b569566 100644 --- a/mesonbuild/compilers/rust.py +++ b/mesonbuild/compilers/rust.py @@ -82,3 +82,6 @@ class RustCompiler(Compiler): def get_optimization_args(self, optimization_level): return rust_optimization_args[optimization_level] + + def compute_parameters_with_absolute_paths(self, parameter_list, build_dir): + return parameter_list diff --git a/mesonbuild/compilers/swift.py b/mesonbuild/compilers/swift.py index 4d5dd0c..1d12cbc 100644 --- a/mesonbuild/compilers/swift.py +++ b/mesonbuild/compilers/swift.py @@ -91,6 +91,13 @@ class SwiftCompiler(Compiler): def get_compile_only_args(self): return ['-c'] + def compute_parameters_with_absolute_paths(self, parameter_list, build_dir): + for idx, i in enumerate(parameter_list): + if i[:2] == '-I': + parameter_list[idx] = i[:2] + os.path.normpath(os.path.join(build_dir, i[2:])) + + return parameter_list + def sanity_check(self, work_dir, environment): src = 'swifttest.swift' source_name = os.path.join(work_dir, src) diff --git a/mesonbuild/compilers/vala.py b/mesonbuild/compilers/vala.py index 46bb210..bfe48f4 100644 --- a/mesonbuild/compilers/vala.py +++ b/mesonbuild/compilers/vala.py @@ -66,6 +66,9 @@ class ValaCompiler(Compiler): return ['--color=' + colortype] return [] + def compute_parameters_with_absolute_paths(self, parameter_list, build_dir): + return parameter_list + def sanity_check(self, work_dir, environment): code = 'class MesonSanityCheck : Object { }' args = self.get_cross_extra_flags(environment, link=False) |