Currently, configure puts the configure args into the makefiles and
then have the makefiles pass them to the build of pg_config. That looks like an unnecessary redirection, and indeed that method was
put in place when pg_config was a shell script.  We can simplify that
by having configure put the value into pg_config.h directly.  This
also makes the standard build system match how the MSVC build system
already does it.

--
Peter Eisentraut              http://www.2ndQuadrant.com/
PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
From 8edb9c20cbee740b5d2acb3c68f0a3f8231fb3dc Mon Sep 17 00:00:00 2001
From: Peter Eisentraut <pe...@eisentraut.org>
Date: Mon, 2 Dec 2019 13:16:39 +0100
Subject: [PATCH] Simplify passing of configure arguments to pg_config

The previous system had configure put the value into the makefiles and
then have the makefiles pass them to the build of pg_config.  That was
put in place when pg_config was a shell script.  We can simplify that
by having configure put the value into pg_config.h directly.  This
also makes the standard build system match how the MSVC build system
already does it.
---
 configure                  | 8 ++++++--
 configure.in               | 4 +++-
 src/Makefile.global.in     | 3 ---
 src/common/Makefile        | 1 -
 src/common/config_info.c   | 6 +-----
 src/include/pg_config.h.in | 3 +++
 src/tools/msvc/Solution.pm | 2 +-
 7 files changed, 14 insertions(+), 13 deletions(-)

diff --git a/configure b/configure
index 1d88983b34..5cbe8e91d8 100755
--- a/configure
+++ b/configure
@@ -776,7 +776,6 @@ build_vendor
 build_cpu
 build
 PG_MAJORVERSION
-configure_args
 target_alias
 host_alias
 build_alias
@@ -2797,7 +2796,12 @@ ac_configure="$SHELL $ac_aux_dir/configure"  # Please 
don't use this var.
 
 
 
-configure_args=$ac_configure_args
+
+ac_configure_args_escaped=`$as_echo "$ac_configure_args" | sed 's/"/\\\\"/g'`
+
+cat >>confdefs.h <<_ACEOF
+#define CONFIGURE_ARGS "$ac_configure_args_escaped"
+_ACEOF
 
 
 PG_MAJORVERSION=`expr "$PACKAGE_VERSION" : '\([0-9][0-9]*\)'`
diff --git a/configure.in b/configure.in
index a2cb20b5e3..4f2427720c 100644
--- a/configure.in
+++ b/configure.in
@@ -27,7 +27,9 @@ AC_COPYRIGHT([Copyright (c) 1996-2019, PostgreSQL Global 
Development Group])
 AC_CONFIG_SRCDIR([src/backend/access/common/heaptuple.c])
 AC_CONFIG_AUX_DIR(config)
 AC_PREFIX_DEFAULT(/usr/local/pgsql)
-AC_SUBST(configure_args, [$ac_configure_args])
+
+ac_configure_args_escaped=`$as_echo "$ac_configure_args" | sed 's/"/\\\\"/g'`
+AC_DEFINE_UNQUOTED(CONFIGURE_ARGS, ["$ac_configure_args_escaped"], [Arguments 
passed to configure])
 
 [PG_MAJORVERSION=`expr "$PACKAGE_VERSION" : '\([0-9][0-9]*\)'`]
 AC_SUBST(PG_MAJORVERSION)
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 05b66380e0..95f5a104e5 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -74,9 +74,6 @@ endif # not PGXS
 
 vpathsearch = `for f in $(addsuffix /$(1),$(subst :, ,. $(VPATH))); do test -r 
$$f && echo $$f && break; done`
 
-# Saved arguments from configure
-configure_args = @configure_args@
-
 
 ##########################################################################
 #
diff --git a/src/common/Makefile b/src/common/Makefile
index ffb0f6edff..fd43558830 100644
--- a/src/common/Makefile
+++ b/src/common/Makefile
@@ -31,7 +31,6 @@ include $(top_builddir)/src/Makefile.global
 # don't include subdirectory-path-dependent -I and -L switches
 STD_CPPFLAGS := $(filter-out -I$(top_srcdir)/src/include 
-I$(top_builddir)/src/include,$(CPPFLAGS))
 STD_LDFLAGS := $(filter-out -L$(top_builddir)/src/common 
-L$(top_builddir)/src/port,$(LDFLAGS))
-override CPPFLAGS += -DVAL_CONFIGURE="\"$(configure_args)\""
 override CPPFLAGS += -DVAL_CC="\"$(CC)\""
 override CPPFLAGS += -DVAL_CPPFLAGS="\"$(STD_CPPFLAGS)\""
 override CPPFLAGS += -DVAL_CFLAGS="\"$(CFLAGS)\""
diff --git a/src/common/config_info.c b/src/common/config_info.c
index dd34fbfc00..902f8226a4 100644
--- a/src/common/config_info.c
+++ b/src/common/config_info.c
@@ -124,11 +124,7 @@ get_configdata(const char *my_exec_path, size_t 
*configdata_len)
        i++;
 
        configdata[i].name = pstrdup("CONFIGURE");
-#ifdef VAL_CONFIGURE
-       configdata[i].setting = pstrdup(VAL_CONFIGURE);
-#else
-       configdata[i].setting = pstrdup(_("not recorded"));
-#endif
+       configdata[i].setting = pstrdup(CONFIGURE_ARGS);
        i++;
 
        configdata[i].name = pstrdup("CC");
diff --git a/src/include/pg_config.h.in b/src/include/pg_config.h.in
index c208dcdfc7..c8384c6c04 100644
--- a/src/include/pg_config.h.in
+++ b/src/include/pg_config.h.in
@@ -42,6 +42,9 @@
    Changing BLCKSZ requires an initdb. */
 #undef BLCKSZ
 
+/* Arguments passed to configure */
+#undef CONFIGURE_ARGS
+
 /* Define to the default TCP port number on which the server listens and to
    which clients will try to connect. This can be overridden at run-time, but
    it's convenient if your clients have the right default compiled in.
diff --git a/src/tools/msvc/Solution.pm b/src/tools/msvc/Solution.pm
index 5f72530c72..e9efc97e14 100644
--- a/src/tools/msvc/Solution.pm
+++ b/src/tools/msvc/Solution.pm
@@ -247,7 +247,7 @@ sub GenerateFiles
                        print $o "#define DEF_PGPORT $port\n";
                        print $o "#define DEF_PGPORT_STR \"$port\"\n";
                }
-               print $o "#define VAL_CONFIGURE \""
+               print $o "#define CONFIGURE_ARGS \""
                  . $self->GetFakeConfigure() . "\"\n";
                print $o "#endif /* IGNORE_CONFIGURED_SETTINGS */\n";
                close($o);
-- 
2.24.0

Reply via email to