meson: Switch to C++17
Due to popular request, move from C++14 to C++17. This will allow dropping some custom constructs (such as a custom utils::clamp), benefiting from new language features, and dropping gcc 5 and 6 from the compilation tests. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>
This commit is contained in:
parent
f976eb5cb6
commit
b869d4463e
2 changed files with 24 additions and 14 deletions
|
@ -88,13 +88,12 @@ headers, and with double quotes for other libcamera headers.
|
||||||
C++ Specific Rules
|
C++ Specific Rules
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
The code shall be implemented in C++14, with the following caveats:
|
The code shall be implemented in C++17, with the following caveats:
|
||||||
|
|
||||||
* Type inference (auto and decltype) shall be used with caution, to avoid
|
* Type inference (auto and decltype) shall be used with caution, to avoid
|
||||||
drifting towards an untyped language.
|
drifting towards an untyped language.
|
||||||
* The explicit, override and final specifiers are to be used where applicable.
|
* The explicit, override and final specifiers are to be used where applicable.
|
||||||
* General-purpose smart pointers (std::unique_ptr) deprecate std::auto_ptr.
|
* Smart pointers, as well as shared pointers and weak pointers, shall not be
|
||||||
Smart pointers, as well as shared pointers and weak pointers, shall not be
|
|
||||||
overused.
|
overused.
|
||||||
* Classes are encouraged to define move constructors and assignment operators
|
* Classes are encouraged to define move constructors and assignment operators
|
||||||
where applicable, and generally make use of the features offered by rvalue
|
where applicable, and generally make use of the features offered by rvalue
|
||||||
|
|
33
meson.build
33
meson.build
|
@ -6,7 +6,7 @@ project('libcamera', 'c', 'cpp',
|
||||||
default_options : [
|
default_options : [
|
||||||
'werror=true',
|
'werror=true',
|
||||||
'warning_level=2',
|
'warning_level=2',
|
||||||
'cpp_std=c++14',
|
'cpp_std=c++17',
|
||||||
],
|
],
|
||||||
license : 'LGPL 2.1+')
|
license : 'LGPL 2.1+')
|
||||||
|
|
||||||
|
@ -45,6 +45,10 @@ c_arguments = []
|
||||||
cpp_arguments = []
|
cpp_arguments = []
|
||||||
|
|
||||||
if cc.get_id() == 'clang'
|
if cc.get_id() == 'clang'
|
||||||
|
if cc.version().version_compare('<5')
|
||||||
|
error('clang version is too old, libcamera requires 5.0 or newer')
|
||||||
|
endif
|
||||||
|
|
||||||
# Turn _FORTIFY_SOURCE by default on optimised builds (as it requires -O1
|
# Turn _FORTIFY_SOURCE by default on optimised builds (as it requires -O1
|
||||||
# or higher). This is needed on clang only as gcc enables it by default.
|
# or higher). This is needed on clang only as gcc enables it by default.
|
||||||
if get_option('optimization') != '0'
|
if get_option('optimization') != '0'
|
||||||
|
@ -62,6 +66,23 @@ if cc.get_id() == 'clang'
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
if cc.get_id() == 'gcc'
|
||||||
|
if cc.version().version_compare('<7')
|
||||||
|
error('gcc version is too old, libcamera requires 7.0 or newer')
|
||||||
|
endif
|
||||||
|
|
||||||
|
# gcc 7.1 introduced processor-specific ABI breakages related to parameter
|
||||||
|
# passing on ARM platforms. This generates a large number of messages
|
||||||
|
# during compilation with gcc >=7.1 until gcc 9. Silence them.
|
||||||
|
if (host_machine.cpu_family() == 'arm' and
|
||||||
|
cc.version().version_compare('>=7.1') and
|
||||||
|
cc.version().version_compare('<9'))
|
||||||
|
cpp_arguments += [
|
||||||
|
'-Wno-psabi',
|
||||||
|
]
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
# We use C99 designated initializers for arrays as C++ has no equivalent
|
# We use C99 designated initializers for arrays as C++ has no equivalent
|
||||||
# feature. Both gcc and clang support this extension, but recent
|
# feature. Both gcc and clang support this extension, but recent
|
||||||
# versions of clang generate a warning that needs to be disabled.
|
# versions of clang generate a warning that needs to be disabled.
|
||||||
|
@ -71,16 +92,6 @@ if cc.has_argument('-Wno-c99-designator')
|
||||||
]
|
]
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# gcc 7.1 introduced processor-specific ABI breakages related to parameter
|
|
||||||
# passing on ARM platforms. This generates a large number of messages during
|
|
||||||
# compilation with gcc >=7.1 until gcc 9. Silence them.
|
|
||||||
if (host_machine.cpu_family() == 'arm' and cc.get_id() == 'gcc' and
|
|
||||||
cc.version().version_compare('>=7.1') and cc.version().version_compare('<9'))
|
|
||||||
cpp_arguments += [
|
|
||||||
'-Wno-psabi',
|
|
||||||
]
|
|
||||||
endif
|
|
||||||
|
|
||||||
c_arguments += common_arguments
|
c_arguments += common_arguments
|
||||||
cpp_arguments += common_arguments
|
cpp_arguments += common_arguments
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue