Re: meson: Specify -Wformat as a common warning flag for extensions - Mailing list pgsql-hackers
From | Sutou Kouhei |
---|---|
Subject | Re: meson: Specify -Wformat as a common warning flag for extensions |
Date | |
Msg-id | 20240315.183655.616433279210896579.kou@clear-code.com Whole thread Raw |
In response to | Re: meson: Specify -Wformat as a common warning flag for extensions (Peter Eisentraut <peter@eisentraut.org>) |
Responses |
Re: meson: Specify -Wformat as a common warning flag for extensions
|
List | pgsql-hackers |
Hi, In <49e97fd0-c17e-4cbc-aeee-80ac51400736@eisentraut.org> "Re: meson: Specify -Wformat as a common warning flag for extensions" on Wed, 13 Mar 2024 08:38:28 +0100, Peter Eisentraut <peter@eisentraut.org> wrote: > I think the fix then is to put -Wall into CFLAGS in > Makefile.global. Looking at a diff of Makefile.global between an > autoconf and a meson build, I also see that under meson, CFLAGS > doesn't get -O2 -g (or similar, depending on settings). This > presumably has the same underlying issue that meson handles those > flags internally. > > For someone who wants to write a fix for this, the relevant variable > is var_cflags in our meson scripts. And var_cxxflags as well. How about the attached v4 patch? Thanks, -- kou From a515720338dc49e764f598021200316c6d01ddf9 Mon Sep 17 00:00:00 2001 From: Sutou Kouhei <kou@clear-code.com> Date: Fri, 15 Mar 2024 18:27:30 +0900 Subject: [PATCH v4] meson: Restore implicit warning/debug/optimize flags for extensions Meson specifies warning/debug/optimize flags such as "-Wall", "-g" and "-O2" automatically based on "--warnlevel" and "--buildtype" options. And we use "--warning_level=1" and "--buildtype=debugoptimized" by default. We don't specify warning/debug/optimize flags explicitly to build PostgreSQL with Meson. Because Meson does it automatically as we said. But Meson doesn't care about flags in Makefile.global and pg_config. So we need to care about them manually. This changes do it. They detect warning/debug/optimize flags based on warning_level/debug/optimization option values because Meson doesn't tell us flags Meson guessed. --- meson.build | 40 ++++++++++++++++++++++++++++++++++++++++ src/include/meson.build | 4 ++-- 2 files changed, 42 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index c8fdfeb0ec..3c5c449a0a 100644 --- a/meson.build +++ b/meson.build @@ -1824,6 +1824,46 @@ endif vectorize_cflags = cc.get_supported_arguments(['-ftree-vectorize']) unroll_loops_cflags = cc.get_supported_arguments(['-funroll-loops']) +# They aren't used for building PostgreSQL itself because Meson does +# everything internally. They are used by extensions via pg_config or +# Makefile.global. +common_builtin_flags = [] + +warning_level = get_option('warning_level') +# See https://mesonbuild.com/Builtin-options.html#details-for-warning_level for +# warning_level values. +if warning_level == '1' + common_builtin_flags += ['-Wall', '/W2'] +elif warning_level == '2' + common_builtin_flags += ['-Wall', '-Wextra', '/W3'] +elif warning_level == '3' + common_builtin_flags += ['-Wall', '-Wextra', '-Wpedantic', '/W4'] +elif warning_level == 'everything' + common_builtin_flags += ['-Weverything', '/Wall'] +endif + +if get_option('debug') + common_builtin_flags += ['-g'] +endif + +optimization = get_option('optimization') +if optimization == '0' + common_builtin_flags += ['-O0'] +elif optimization == '1' + common_builtin_flags += ['-O1'] +elif optimization == '2' + common_builtin_flags += ['-O2'] +elif optimization == '3' + common_builtin_flags += ['-O3'] +elif optimization == 's' + common_builtin_flags += ['-Os'] +endif + +cflags_builtin = cc.get_supported_arguments(common_builtin_flags) +if llvm.found() + cxxflags_builtin = cpp.get_supported_arguments(common_builtin_flags) +endif + common_warning_flags = [ '-Wmissing-prototypes', '-Wpointer-arith', diff --git a/src/include/meson.build b/src/include/meson.build index a28f115d86..58b7a9c1e7 100644 --- a/src/include/meson.build +++ b/src/include/meson.build @@ -44,9 +44,9 @@ config_paths_data.set_quoted('MANDIR', dir_prefix / dir_man) var_cc = ' '.join(cc.cmd_array()) var_cpp = ' '.join(cc.cmd_array() + ['-E']) -var_cflags = ' '.join(cflags + cflags_warn + get_option('c_args')) +var_cflags = ' '.join(cflags + cflags_builtin + cflags_warn + get_option('c_args')) if llvm.found() - var_cxxflags = ' '.join(cxxflags + cxxflags_warn + get_option('cpp_args')) + var_cxxflags = ' '.join(cxxflags + cxxflags_builtin + cxxflags_warn + get_option('cpp_args')) else var_cxxflags = '' endif -- 2.43.0
pgsql-hackers by date: