aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBedarkar, Malhar <malhar.bedarkar@cirrus.com>2018-03-14 22:42:06 -0500
committerBedarkar, Malhar <malhar.bedarkar@cirrus.com>2018-03-14 22:42:06 -0500
commit831d1e4c2e7b0ce8dfd0b2471bf2dab499181d66 (patch)
treeade32058b5efce128ee8be3502f30e1bec3a53be
parent93bdbc3162213bec9ce47303c780531e50da1ff8 (diff)
downloadmeson-831d1e4c2e7b0ce8dfd0b2471bf2dab499181d66.zip
meson-831d1e4c2e7b0ce8dfd0b2471bf2dab499181d66.tar.gz
meson-831d1e4c2e7b0ce8dfd0b2471bf2dab499181d66.tar.bz2
- Updating cpp_std options similar to other compiler classes
- Updating environment.py for selecting '--vsn' option for armcc only. - Updating build type arguments from GitHub pull request - 3157 Change-Id: Id3151e7715ec1016afdbd65391bb0d414ec7de13
-rw-r--r--mesonbuild/compilers/__init__.py2
-rw-r--r--mesonbuild/compilers/c.py20
-rw-r--r--mesonbuild/compilers/compilers.py34
-rw-r--r--mesonbuild/compilers/cpp.py30
-rw-r--r--mesonbuild/environment.py9
5 files changed, 66 insertions, 29 deletions
diff --git a/mesonbuild/compilers/__init__.py b/mesonbuild/compilers/__init__.py
index a0ec469..e58a604 100644
--- a/mesonbuild/compilers/__init__.py
+++ b/mesonbuild/compilers/__init__.py
@@ -43,6 +43,7 @@ __all__ = [
'ARMCompiler',
'ARMCCompiler',
+ 'ARMCPPCompiler',
'CCompiler',
'ClangCCompiler',
'ClangCompiler',
@@ -125,6 +126,7 @@ from .c import (
VisualStudioCCompiler,
)
from .cpp import (
+ ARMCPPCompiler,
CPPCompiler,
ClangCPPCompiler,
GnuCPPCompiler,
diff --git a/mesonbuild/compilers/c.py b/mesonbuild/compilers/c.py
index 01f76ef..a77842c 100644
--- a/mesonbuild/compilers/c.py
+++ b/mesonbuild/compilers/c.py
@@ -917,10 +917,6 @@ class ARMCCompiler(ARMCompiler, CCompiler):
def get_coverage_link_args(self):
return []
- # Override CCompiler.get_always_args
- def get_always_args(self):
- return []
-
def get_option_compile_args(self, options):
return []
@@ -928,22 +924,6 @@ class ARMCCompiler(ARMCompiler, CCompiler):
args = ['armlink']
return args
- # 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_compile_only_args(self):
return ['-c']
diff --git a/mesonbuild/compilers/compilers.py b/mesonbuild/compilers/compilers.py
index 47e3daa..556d881 100644
--- a/mesonbuild/compilers/compilers.py
+++ b/mesonbuild/compilers/compilers.py
@@ -114,10 +114,10 @@ gnulike_buildtype_args = {'plain': [],
'minsize': ['-Os', '-g']}
arm_buildtype_args = {'plain': [],
- 'debug': ['-O0', '-g'],
- 'debugoptimized': ['-O2', '-g'],
- 'release': ['-O2'],
- 'minsize': ['-Os', '-g'],
+ 'debug': ['-O0', '--debug'],
+ 'debugoptimized': ['-O1', '--debug'],
+ 'release': ['-O3', '-Otime'],
+ 'minsize': ['-O3', '-Ospace'],
}
msvc_buildtype_args = {'plain': [],
@@ -1118,6 +1118,26 @@ class ARMCompiler:
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
@@ -1128,6 +1148,12 @@ class ARMCompiler:
def split_shlib_to_parts(self, fname):
return os.path.split(fname)[0], fname
+ def thread_flags(self, env):
+ return []
+
+ def thread_link_flags(self, env):
+ return []
+
class ClangCompiler:
def __init__(self, clang_type):
diff --git a/mesonbuild/compilers/cpp.py b/mesonbuild/compilers/cpp.py
index 1fa6f15..15e8457 100644
--- a/mesonbuild/compilers/cpp.py
+++ b/mesonbuild/compilers/cpp.py
@@ -26,6 +26,7 @@ from .compilers import (
ClangCompiler,
GnuCompiler,
IntelCompiler,
+ ARMCompiler,
)
class CPPCompiler(CCompiler):
@@ -133,6 +134,35 @@ class GnuCPPCompiler(GnuCompiler, CPPCompiler):
return ['-fpch-preprocess', '-include', os.path.basename(header)]
+class ARMCPPCompiler(ARMCompiler, CPPCompiler):
+ def __init__(self, exelist, version, is_cross, exe_wrap=None, defines=None, **kwargs):
+ CPPCompiler.__init__(self, exelist, version, is_cross, exe_wrap, **kwargs)
+ ARMCompiler.__init__(self, defines)
+ default_warn_args = []
+ self.warn_args = {'1': default_warn_args,
+ '2': default_warn_args + [],
+ '3': default_warn_args + []}
+
+ def get_options(self):
+ opts = {'cpp_std': coredata.UserComboOption('cpp_std', 'C++ language standard to use',
+ ['none', 'c++11'],
+ 'none')}
+ return opts
+
+ def get_option_compile_args(self, options):
+ args = []
+ std = options['cpp_std']
+ if std.value == 'c++11':
+ args.append('--cpp11')
+ return args
+
+ def get_option_link_args(self, options):
+ return []
+
+ def get_compiler_check_args(self):
+ return []
+
+
class IntelCPPCompiler(IntelCompiler, CPPCompiler):
def __init__(self, exelist, version, icc_type, is_cross, exe_wrap, **kwargs):
CPPCompiler.__init__(self, exelist, version, is_cross, exe_wrap, **kwargs)
diff --git a/mesonbuild/environment.py b/mesonbuild/environment.py
index 1d3ba72..f9cd9ca 100644
--- a/mesonbuild/environment.py
+++ b/mesonbuild/environment.py
@@ -39,6 +39,7 @@ from .compilers import (
)
from .compilers import (
ARMCCompiler,
+ ARMCPPCompiler,
ClangCCompiler,
ClangCPPCompiler,
ClangObjCCompiler,
@@ -493,7 +494,7 @@ class Environment:
continue
arg = '/?'
else:
- if re.search('.*arm.*', compiler[0]):
+ if compiler[0] == 'armcc':
arg = '--vsn'
else:
arg = '--version'
@@ -542,7 +543,8 @@ class Environment:
cls = IntelCCompiler if lang == 'c' else IntelCPPCompiler
return cls(ccache + compiler, version, inteltype, is_cross, exe_wrap, full_version=full_version)
if 'ARM' in out:
- return ARMCCompiler(ccache + compiler, version, is_cross, exe_wrap, full_version=full_version)
+ cls = ARMCCompiler if lang == 'c' else ARMCPPCompiler
+ return cls(ccache + compiler, version, is_cross, exe_wrap, full_version=full_version)
self._handle_exceptions(popen_exceptions, compilers)
def detect_c_compiler(self, want_cross):
@@ -797,9 +799,6 @@ class Environment:
if 'lib' in linker or 'lib.exe' in linker:
arg = '/?'
else:
- if re.search('.*arm.*', linker[0]):
- arg = '--vsn'
- else:
arg = '--version'
try:
p, out, err = Popen_safe(linker + [arg])