[libcamera-devel] [PATCH v2 2/2] meson: Define _FORTIFY_SOURCE for optimised builds
Kieran Bingham
kieran.bingham at ideasonboard.com
Wed Aug 21 13:12:14 CEST 2019
Hi Laurent,
On 19/08/2019 18:02, Laurent Pinchart wrote:
> _FORTIFY_SOURCE adds useful checks during compilation. The option is
> enabled by default by gcc on all non-optimised builds (as it requires
> -O1 or higher). Enable it explicitly for clang.
>
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> ---
> Changes since v1:
>
> - Condition _FORTIFY_SOURCE on the optimisation level, not the build
> type
> - Enable _FORTIFY_SOURCE on clang only as gcc does it by default
>
> This patch has been tested with gcc5, gcc6, gcc7, gcc8, gcc9, clang7 and
> clang8, with all the meson built types (plain, debug, debugoptimized,
> release and minsize).
>
> ---
> meson.build | 22 ++++++++++++++++------
> 1 file changed, 16 insertions(+), 6 deletions(-)
>
> diff --git a/meson.build b/meson.build
> index 13d0605f903c..c30287e262a5 100644
> --- a/meson.build
> +++ b/meson.build
> @@ -38,12 +38,22 @@ common_arguments = [
> c_arguments = common_arguments
> cpp_arguments = common_arguments
>
> -# Use libc++ by default if available instead of libstdc++ when compiling with
> -# clang.
> -if cc.get_id() == 'clang' and cc.find_library('libc++', required: false).found()
> - cpp_arguments += [
> - '-stdlib=libc++',
> - ]
> +if cc.get_id() == 'clang'
> + # 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.
> + if get_option('optimization') != '0'
> + common_arguments += [
> + '-D_FORTIFY_SOURCE=1',
GCC enables _FORTIFY_SOURCE level 2 by default.
Should we match that here with clang ?
$ g++ -dM -E -x c++ -O2 - < /dev/null | grep -i FORT
#define _FORTIFY_SOURCE 2
Also note, that gcc only does this for C++ builds (which shouldn't
matter in our case, until we start adding C-bindings) ...
$ gcc -dM -E - < /dev/null | grep -i FORT
$
Otherwise though,
Acked-by: Kieran Bingham <kieran.bingham at ideasonboard.com>
Now we just need more build options covered by the automated builds at
linuxtv.org ...
> + ]
> + endif
> +
> + # Use libc++ by default if available instead of libstdc++ when compiling
> + # with clang.
> + if cc.find_library('libc++', required: false).found()
> + cpp_arguments += [
> + '-stdlib=libc++',
> + ]
> + endif
> endif
>
> add_project_arguments(c_arguments, language : 'c')
>
--
Regards
--
Kieran
More information about the libcamera-devel
mailing list