diff options
Diffstat (limited to 'mesonbuild/compilers/compilers.py')
-rw-r--r-- | mesonbuild/compilers/compilers.py | 122 |
1 files changed, 121 insertions, 1 deletions
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index a038abf..514aa38 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -147,6 +147,14 @@ arm_buildtype_args = {'plain': [], 'custom': [], } +ccrx_buildtype_args = {'plain': [], + 'debug': [], + 'debugoptimized': [], + 'release': [], + 'minsize': [], + 'custom': [], + } + msvc_buildtype_args = {'plain': [], 'debug': ["/ZI", "/Ob0", "/Od", "/RTC1"], 'debugoptimized': ["/Zi", "/Ob1"], @@ -179,6 +187,14 @@ arm_buildtype_linker_args = {'plain': [], 'custom': [], } +ccrx_buildtype_linker_args = {'plain': [], + 'debug': [], + 'debugoptimized': [], + 'release': [], + 'minsize': [], + 'custom': [], + } + msvc_buildtype_linker_args = {'plain': [], 'debug': [], 'debugoptimized': [], @@ -295,6 +311,14 @@ gnu_optimization_args = {'0': [], 's': ['-Os'], } +ccrx_optimization_args = {'0': ['-optimize=0'], + 'g': ['-optimize=0'], + '1': ['-optimize=1'], + '2': ['-optimize=2'], + '3': ['-optimize=max'], + 's': ['-optimize=2', '-size'] + } + msvc_optimization_args = {'0': [], 'g': ['/O0'], '1': ['/O1'], @@ -309,6 +333,9 @@ clike_debug_args = {False: [], msvc_debug_args = {False: [], True: []} # Fixme! +ccrx_debug_args = {False: [], + True: ['-debug']} + base_options = {'b_pch': coredata.UserBooleanOption('b_pch', 'Use precompiled headers', True), 'b_lto': coredata.UserBooleanOption('b_lto', 'Use link time optimization', False), 'b_sanitize': coredata.UserComboOption('b_sanitize', @@ -1244,6 +1271,8 @@ class CompilerType(enum.Enum): ARM_WIN = 30 + CCRX_WIN = 40 + @property def is_standard_compiler(self): return self.name in ('GCC_STANDARD', 'CLANG_STANDARD', 'ICC_STANDARD') @@ -1254,7 +1283,7 @@ class CompilerType(enum.Enum): @property def is_windows_compiler(self): - return self.name in ('GCC_MINGW', 'GCC_CYGWIN', 'CLANG_MINGW', 'ICC_WIN', 'ARM_WIN') + return self.name in ('GCC_MINGW', 'GCC_CYGWIN', 'CLANG_MINGW', 'ICC_WIN', 'ARM_WIN', 'CCRX_WIN') def get_macos_dylib_install_name(prefix, shlib_name, suffix, soversion): @@ -1804,3 +1833,94 @@ class ArmCompiler: def get_debug_args(self, is_debug): return clike_debug_args[is_debug] + +class CcrxCompiler: + def __init__(self, compiler_type): + if not self.is_cross: + raise EnvironmentException('ccrx supports only cross-compilation.') + # Check whether 'rlink.exe' is available in path + self.linker_exe = 'rlink.exe' + args = '--version' + try: + p, stdo, stderr = Popen_safe(self.linker_exe, args) + except OSError as e: + err_msg = 'Unknown linker\nRunning "{0}" gave \n"{1}"'.format(' '.join([self.linker_exe] + [args]), e) + raise EnvironmentException(err_msg) + self.id = 'ccrx' + self.compiler_type = compiler_type + # Assembly + self.can_compile_suffixes.update('s') + default_warn_args = [] + self.warn_args = {'1': default_warn_args, + '2': default_warn_args + [], + '3': default_warn_args + []} + + def can_linker_accept_rsp(self): + return False + + def get_pic_args(self): + # PIC support is not enabled by default for CCRX, + # if users want to use it, they need to add the required arguments explicitly + return [] + + def get_buildtype_args(self, buildtype): + return ccrx_buildtype_args[buildtype] + + def get_buildtype_linker_args(self, buildtype): + return ccrx_buildtype_linker_args[buildtype] + + # Override CCompiler.get_std_shared_lib_link_args + def get_std_shared_lib_link_args(self): + return [] + + def get_pch_suffix(self): + return 'pch' + + def get_pch_use_args(self, pch_dir, header): + return [] + + # Override CCompiler.get_dependency_gen_args + def get_dependency_gen_args(self, outtarget, outfile): + return [] + + # Override CCompiler.build_rpath_args + def build_rpath_args(self, build_dir, from_dir, rpath_paths, build_rpath, install_rpath): + return [] + + def thread_flags(self, env): + return [] + + def thread_link_flags(self, env): + return [] + + def get_linker_exelist(self): + return [self.linker_exe] + + def get_coverage_args(self): + return [] + + def get_coverage_link_args(self): + return [] + + def get_optimization_args(self, optimization_level): + return ccrx_optimization_args[optimization_level] + + def get_debug_args(self, is_debug): + return ccrx_debug_args[is_debug] + + @classmethod + def unix_args_to_native(cls, args): + result = [] + for i in args: + if i.startswith('-D'): + i = '-define=' + i[2:] + if i.startswith('-I'): + i = '-include=' + i[2:] + if i.startswith('-Wl,-rpath='): + continue + elif i == '--print-search-dirs': + continue + elif i.startswith('-L'): + continue + result.append(i) + return result |