meson: Restore implicit warning/debug/optimize flags for extensions

Meson uses 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.

But we need these flags for Makefile.global (for extensions) and
pg_config, so we need to compute them manually based on the
higher-level options.

Without this change, extensions building using pgxs wouldn't get -Wall
or optimization options.

Author: Sutou Kouhei <kou@clear-code.com>
Discussion: https://www.postgresql.org/message-id/flat/20240122.141139.931086145628347157.kou%40clear-code.com
This commit is contained in:
Peter Eisentraut 2024-06-07 08:50:51 +02:00
parent b560a98a17
commit 3482bab5e3
2 changed files with 34 additions and 2 deletions

View file

@ -1946,6 +1946,38 @@ if cc.get_id() == 'msvc'
endif
# Compute flags that are built into Meson. We need these to
# substitute into Makefile.global and for pg_config. We only compute
# the flags for Unix-style compilers, since that's the only style that
# would use Makefile.global or pg_config.
# We don't use get_option('warning_level') here, because the other
# warning levels are not useful with PostgreSQL source code.
common_builtin_flags = ['-Wall']
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
###############################################################
# Atomics

View file

@ -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