Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rtdOC-00GLD1-9V for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Apr 2024 01:01:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1rtdOB-00EswE-7L for pgsql-hackers@arkaria.postgresql.org; Mon, 08 Apr 2024 01:01:35 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rtdOA-00Esw4-4Q for pgsql-hackers@lists.postgresql.org; Mon, 08 Apr 2024 01:01:34 +0000 Received: from mail.clear-code.com ([2401:2500:102:3039:153:126:206:245]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1rtdO5-001Tta-7F for pgsql-hackers@postgresql.org; Mon, 08 Apr 2024 01:01:33 +0000 Received: from localhost (unknown [IPv6:2404:7a80:89c1:1200:6af9:2266:1443:f149]) by mail.clear-code.com (Postfix) with ESMTPSA id 032CCFE8C8; Mon, 8 Apr 2024 10:01:19 +0900 (JST) DKIM-Filter: OpenDKIM Filter v2.11.0 mail.clear-code.com 032CCFE8C8 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=clear-code.com; s=default; t=1712538080; bh=eKmi956uaK2a0HwK7YqNZJ80NYOL8Hwgy1RT3Bt8evk=; h=Date:To:Cc:Subject:From:In-Reply-To:References:From; b=WfDF6Rmyf5W/nkKG5qYQMcTFxuFEgND8J5pURy8hkfFDjCaDLhNv0n6z7uQqHA29e IreMYT4WuJNjPHKuePBaPkEkXlEvzngB5eZ+Lk4gqwtWCPvdMN6h14xkWDFN+qRgif ycbQyKstVkEqaI7fLjcbLUeYpNP/NVdApWwgzqVc= Date: Mon, 08 Apr 2024 10:01:17 +0900 (JST) Message-Id: <20240408.100117.1165016889947781960.kou@clear-code.com> To: andres@anarazel.de Cc: peter@eisentraut.org, tristan@neon.tech, michael@paquier.xyz, pgsql-hackers@postgresql.org Subject: Re: meson: Specify -Wformat as a common warning flag for extensions From: Sutou Kouhei In-Reply-To: <20240407232635.fq4kc5556lahaoej@awork3.anarazel.de> References: <49e97fd0-c17e-4cbc-aeee-80ac51400736@eisentraut.org> <20240315.183655.616433279210896579.kou@clear-code.com> <20240407232635.fq4kc5556lahaoej@awork3.anarazel.de> X-Mailer: Mew version 6.8 on Emacs 29.1 Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Mon_Apr__8_10_01_17_2024_730)--" Content-Transfer-Encoding: 7bit X-Spamd-Result: default: False [1.40 / 999.00]; MID_CONTAINS_FROM(1.00)[]; MV_CASE(0.50)[]; MIME_GOOD(-0.10)[multipart/mixed,text/plain,text/x-patch]; RCVD_COUNT_ZERO(0.00)[0]; MIME_TRACE(0.00)[0:+,1:+,2:+]; ARC_NA(0.00)[]; ASN(0.00)[asn:2518, ipnet:2404:7a80::/29, country:JP]; FROM_HAS_DN(0.00)[]; URIBL_BLOCKED(0.00)[mesonbuild.com:url,anarazel.de:email,localhost:helo]; FROM_EQ_ENVFROM(0.00)[]; RCPT_COUNT_FIVE(0.00)[5]; TO_DN_NONE(0.00)[]; TO_MATCH_ENVRCPT_ALL(0.00)[]; SURBL_MULTI_FAIL(0.00)[anarazel.de:server fail,localhost:server fail,mesonbuild.com:server fail] X-Rspamd-Server: mail.clear-code.com X-Rspamd-Action: no action X-Rspamd-Queue-Id: 032CCFE8C8 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk ----Next_Part(Mon_Apr__8_10_01_17_2024_730)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit Hi Andres, Thanks for reviewing this! In <20240407232635.fq4kc5556lahaoej@awork3.anarazel.de> "Re: meson: Specify -Wformat as a common warning flag for extensions" on Sun, 7 Apr 2024 16:26:35 -0700, Andres Freund wrote: > This seems like a fair amount of extra configure tests. Particularly because > /W* isn't ever interesting for Makefile.global - they're msvc flags - because > you can't use that with msvc. > > I'm also doubtful that it's worth supporting warning_level=3/everything, you > end up with a completely flood of warnings that way. OK. I've removed "/W*" flags and warning_level==3/everything cases. How about the attached v5 patch? Thanks, -- kou ----Next_Part(Mon_Apr__8_10_01_17_2024_730)-- Content-Type: Text/X-Patch; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="v5-0001-meson-Restore-implicit-warning-debug-optimize-fla.patch" From 205ef88c66cf1050eedfc1e72d951de93a02e53a Mon Sep 17 00:00:00 2001 From: Sutou Kouhei Date: Fri, 15 Mar 2024 18:27:30 +0900 Subject: [PATCH v5] 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 | 41 +++++++++++++++++++++++++++++++++++++++++ src/include/meson.build | 4 ++-- 2 files changed, 43 insertions(+), 2 deletions(-) diff --git a/meson.build b/meson.build index 5acf083ce3c..11bd56f79a7 100644 --- a/meson.build +++ b/meson.build @@ -1848,6 +1848,47 @@ 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. +# +# We don't use "/W*" flags here because we don't need to care about MSVC here. +# +# We don't have "warning_level == 3" and "warning_level == +# 'everything'" here because we don't use these warning levels. +if warning_level == '1' + common_builtin_flags += ['-Wall'] +elif warning_level == '2' + common_builtin_flags += ['-Wall', '-Wextra'] +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 a28f115d867..58b7a9c1e7e 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 ----Next_Part(Mon_Apr__8_10_01_17_2024_730)----