diff options
author | Dylan Baker <dylan@pnwbakers.com> | 2019-07-02 10:58:07 -0700 |
---|---|---|
committer | Dylan Baker <dylan@pnwbakers.com> | 2019-07-15 10:59:22 -0700 |
commit | ef448b95aef43a1c4e0e2cb0c173b68ab78f220c (patch) | |
tree | 857ce65690360ece189dc393292229e6c908c185 /mesonbuild | |
parent | 675874c303222b1cd9df05e70757a6d802d44e6e (diff) | |
download | meson-ef448b95aef43a1c4e0e2cb0c173b68ab78f220c.zip meson-ef448b95aef43a1c4e0e2cb0c173b68ab78f220c.tar.gz meson-ef448b95aef43a1c4e0e2cb0c173b68ab78f220c.tar.bz2 |
compilers: Move ArmCompiler to a mixin module
Diffstat (limited to 'mesonbuild')
-rw-r--r-- | mesonbuild/compilers/c.py | 2 | ||||
-rw-r--r-- | mesonbuild/compilers/compilers.py | 109 | ||||
-rw-r--r-- | mesonbuild/compilers/cpp.py | 2 | ||||
-rw-r--r-- | mesonbuild/compilers/mixins/arm.py | 128 |
4 files changed, 130 insertions, 111 deletions
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py index bfd4629..90dd51f 100644 --- a/mesonbuild/compilers/c.py +++ b/mesonbuild/compilers/c.py @@ -20,10 +20,10 @@ from ..mesonlib import MachineChoice, MesonException, mlog, version_compare from .c_function_attributes import C_FUNC_ATTRIBUTES from .mixins.clike import CLikeCompiler from .mixins.ccrx import CcrxCompiler +from .mixins.arm import ArmCompiler from .compilers import ( gnu_winlibs, msvc_winlibs, - ArmCompiler, ArmclangCompiler, ClangCompiler, Compiler, diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py index edff756..7304954 100644 --- a/mesonbuild/compilers/compilers.py +++ b/mesonbuild/compilers/compilers.py @@ -160,15 +160,6 @@ cuda_buildtype_args = {'plain': [], 'release': [], 'minsize': [], } - -arm_buildtype_args = {'plain': [], - 'debug': ['-O0', '--debug'], - 'debugoptimized': ['-O1', '--debug'], - 'release': ['-O3', '-Otime'], - 'minsize': ['-O3', '-Ospace'], - 'custom': [], - } - msvc_buildtype_args = {'plain': [], 'debug': ["/ZI", "/Ob0", "/Od", "/RTC1"], 'debugoptimized': ["/Zi", "/Ob1"], @@ -200,13 +191,6 @@ gnulike_buildtype_linker_args = {'plain': [], 'custom': [], } -arm_buildtype_linker_args = {'plain': [], - 'debug': [], - 'debugoptimized': [], - 'release': [], - 'minsize': [], - 'custom': [], - } pgi_buildtype_linker_args = {'plain': [], 'debug': [], @@ -300,14 +284,6 @@ clang_color_args = {'auto': ['-Xclang', '-fcolor-diagnostics'], 'never': ['-Xclang', '-fno-color-diagnostics'], } -arm_optimization_args = {'0': ['-O0'], - 'g': ['-g'], - '1': ['-O1'], - '2': ['-O2'], - '3': ['-O3'], - 's': [], - } - armclang_optimization_args = {'0': ['-O0'], 'g': ['-g'], '1': ['-O1'], @@ -2425,88 +2401,3 @@ class IntelVisualStudioLikeCompiler(VisualStudioLikeCompiler): def openmp_flags(self): return ['/Qopenmp'] - - -class ArmCompiler: - # Functionality that is common to all ARM family compilers. - def __init__(self, compiler_type): - if not self.is_cross: - raise EnvironmentException('armcc supports only cross-compilation.') - self.id = 'arm' - self.compiler_type = compiler_type - default_warn_args = [] - self.warn_args = {'0': [], - '1': default_warn_args, - '2': default_warn_args + [], - '3': default_warn_args + []} - # Assembly - self.can_compile_suffixes.add('s') - - def can_linker_accept_rsp(self): - return False - - def get_pic_args(self): - # FIXME: Add /ropi, /rwpi, /fpic etc. qualifiers to --apcs - return [] - - def get_buildtype_args(self, buildtype): - return arm_buildtype_args[buildtype] - - def get_buildtype_linker_args(self, buildtype): - return arm_buildtype_linker_args[buildtype] - - # Override CCompiler.get_always_args - def get_always_args(self): - return [] - - # Override CCompiler.get_dependency_gen_args - def get_dependency_gen_args(self, outtarget, outfile): - return [] - - # Override CCompiler.get_std_shared_lib_link_args - def get_std_shared_lib_link_args(self): - return [] - - def get_pch_use_args(self, pch_dir, header): - # FIXME: Add required arguments - # NOTE from armcc user guide: - # "Support for Precompiled Header (PCH) files is deprecated from ARM Compiler 5.05 - # onwards on all platforms. Note that ARM Compiler on Windows 8 never supported - # PCH files." - return [] - - def get_pch_suffix(self): - # NOTE from armcc user guide: - # "Support for Precompiled Header (PCH) files is deprecated from ARM Compiler 5.05 - # onwards on all platforms. Note that ARM Compiler on Windows 8 never supported - # PCH files." - return 'pch' - - def thread_flags(self, env): - return [] - - def thread_link_flags(self, env): - return [] - - def get_linker_exelist(self): - args = ['armlink'] - return args - - def get_coverage_args(self): - return [] - - def get_coverage_link_args(self): - return [] - - def get_optimization_args(self, optimization_level): - return arm_optimization_args[optimization_level] - - 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 diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py index 3a40ff8..15edea0 100644 --- a/mesonbuild/compilers/cpp.py +++ b/mesonbuild/compilers/cpp.py @@ -30,7 +30,6 @@ from .compilers import ( IntelGnuLikeCompiler, IntelVisualStudioLikeCompiler, PGICompiler, - ArmCompiler, ArmclangCompiler, Compiler, VisualStudioLikeCompiler, @@ -38,6 +37,7 @@ from .compilers import ( from .c_function_attributes import CXX_FUNC_ATTRIBUTES, C_FUNC_ATTRIBUTES from .mixins.clike import CLikeCompiler from .mixins.ccrx import CcrxCompiler +from .mixins.arm import ArmCompiler def non_msvc_eh_options(eh, args): diff --git a/mesonbuild/compilers/mixins/arm.py b/mesonbuild/compilers/mixins/arm.py new file mode 100644 index 0000000..d0faf94 --- /dev/null +++ b/mesonbuild/compilers/mixins/arm.py @@ -0,0 +1,128 @@ +# Copyright 2012-2019 The Meson development team + +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at + +# http://www.apache.org/licenses/LICENSE-2.0 + +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +"""Representations specific to the arm family of compilers.""" + +import os +import typing + +from ...mesonlib import EnvironmentException + +arm_buildtype_args = {'plain': [], + 'debug': ['-O0', '--debug'], + 'debugoptimized': ['-O1', '--debug'], + 'release': ['-O3', '-Otime'], + 'minsize': ['-O3', '-Ospace'], + 'custom': [], + } + +arm_buildtype_linker_args = {'plain': [], + 'debug': [], + 'debugoptimized': [], + 'release': [], + 'minsize': [], + 'custom': [], + } + +arm_optimization_args = {'0': ['-O0'], + 'g': ['-g'], + '1': ['-O1'], + '2': ['-O2'], + '3': ['-O3'], + 's': [], + } + +class ArmCompiler: + # Functionality that is common to all ARM family compilers. + def __init__(self, compiler_type): + if not self.is_cross: + raise EnvironmentException('armcc supports only cross-compilation.') + self.id = 'arm' + self.compiler_type = compiler_type + default_warn_args = [] + self.warn_args = {'0': [], + '1': default_warn_args, + '2': default_warn_args + [], + '3': default_warn_args + []} + # Assembly + self.can_compile_suffixes.add('s') + + def can_linker_accept_rsp(self): + return False + + def get_pic_args(self): + # FIXME: Add /ropi, /rwpi, /fpic etc. qualifiers to --apcs + return [] + + def get_buildtype_args(self, buildtype): + return arm_buildtype_args[buildtype] + + def get_buildtype_linker_args(self, buildtype): + return arm_buildtype_linker_args[buildtype] + + # Override CCompiler.get_always_args + def get_always_args(self): + return [] + + # Override CCompiler.get_dependency_gen_args + def get_dependency_gen_args(self, outtarget, outfile): + return [] + + # Override CCompiler.get_std_shared_lib_link_args + def get_std_shared_lib_link_args(self): + return [] + + def get_pch_use_args(self, pch_dir, header): + # FIXME: Add required arguments + # NOTE from armcc user guide: + # "Support for Precompiled Header (PCH) files is deprecated from ARM Compiler 5.05 + # onwards on all platforms. Note that ARM Compiler on Windows 8 never supported + # PCH files." + return [] + + def get_pch_suffix(self): + # NOTE from armcc user guide: + # "Support for Precompiled Header (PCH) files is deprecated from ARM Compiler 5.05 + # onwards on all platforms. Note that ARM Compiler on Windows 8 never supported + # PCH files." + return 'pch' + + def thread_flags(self, env): + return [] + + def thread_link_flags(self, env): + return [] + + def get_linker_exelist(self): + args = ['armlink'] + return args + + def get_coverage_args(self): + return [] + + def get_coverage_link_args(self): + return [] + + def get_optimization_args(self, optimization_level): + return arm_optimization_args[optimization_level] + + 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
\ No newline at end of file |