Thread: BUG #17466: Is it possible to supplement the default compilation options of CFLAGS in configure file?
BUG #17466: Is it possible to supplement the default compilation options of CFLAGS in configure file?
From
PG Bug reporting form
Date:
The following bug has been logged on the website: Bug reference: 17466 Logged by: xavier Email address: wysunxavier@gmail.com PostgreSQL version: 14.2 Operating system: CentOS 7.9 Description: Hello, When I try to specify some compilation options in CFLAGS, such as compiling with macros, when I execute “./configure CFLAGS='-DUSE_TOOLS'”,it will use '-O0' to compile by default, which is easy to miscompile into a debug version. I wonder if it is possible to supplement the judgment conditions in the postgresql source code: If the compilation option is not specified in CFLAGS, '-O2' is used by default to avoid compiling the wrong debug version. I tried making modifications to the configure.ac of master branch. diff --git a/configure.ac b/configure.ac index 44d35e1..36e3fc5 100644 --- a/configure.ac +++ b/configure.ac @@ -427,6 +427,10 @@ else fi fi +if [[[ ! $CFLAGS[@] =~ "-O" ]]]; then + CFLAGS="$CFLAGS -O2" +fi + if test "$ac_env_CXXFLAGS_set" = set; then CXXFLAGS=$ac_env_CXXFLAGS_value elif test "${CXXFLAGS+set}" = set; then
Re: BUG #17466: Is it possible to supplement the default compilation options of CFLAGS in configure file?
From
Peter Eisentraut
Date:
On 19.04.22 05:36, PG Bug reporting form wrote: > When I try to specify some compilation options in CFLAGS, such as compiling > with macros, when I execute “./configure CFLAGS='-DUSE_TOOLS'”,it will use > '-O0' to compile by default, which is easy to miscompile into a debug > version. I wonder if it is possible to supplement the judgment conditions in > the postgresql source code: If the compilation option is not specified in > CFLAGS, '-O2' is used by default to avoid compiling the wrong debug > version. The use case you are describing is not without merit. But ultimately, the handling of these compiler option variables has decades of history behind it, and just poking at that for one specific case is going to break someone else's use case somehow. We generally avoid the need to add CFLAGS to the configure command line except in cases where you actually want to override the defaults. Other cases should have a command-line option or perhaps a spot in pg_config_manual.h. In your specific case you could also pass CPPFLAGS instead, which is more correct anyway, and it doesn't have a default that you can accidentally override.