agora inbox for pgsql-hackers@postgresql.org
help / color / mirror / Atom feedFrom: Andres Freund <andres@anarazel.de>
Subject: [PATCH v4 2/4] autoconf: Don't AC_SUBST() LD in configure
Date: Mon, 26 Sep 2022 14:42:01 -0700
The only use of $(LD) in Makefiles is for AIX, to generate the export file for
the backend. We only support the system linker on AIX and we already hardcode
the path to a number of other binaries. Removing LD substitution will simplify
the upcoming meson PGXS compatibility.
While at it, add a comment why -r is used.
A subsequent commit will remove the determination of LD from configure as
well.
Discussion: https://postgr.es/m/20221005200710.luvw5evhwf6clig6@awork3.anarazel.de
---
configure.ac | 1 -
src/backend/Makefile | 8 +++++++-
configure | 2 --
src/Makefile.global.in | 3 ---
4 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/configure.ac b/configure.ac
index 6e7c8e09411..61e6da6eb37 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1132,7 +1132,6 @@ AC_ARG_VAR(LDFLAGS_EX, [extra linker flags for linking executables only])
AC_ARG_VAR(LDFLAGS_SL, [extra linker flags for linking shared libraries only])
PGAC_PROG_LD
-AC_SUBST(LD)
AC_SUBST(with_gnu_ld)
PGAC_CHECK_STRIP
AC_CHECK_TOOL(AR, ar, ar)
diff --git a/src/backend/Makefile b/src/backend/Makefile
index 181c217fae4..efd4d30a28d 100644
--- a/src/backend/Makefile
+++ b/src/backend/Makefile
@@ -100,8 +100,14 @@ ifeq ($(PORTNAME), aix)
postgres: $(POSTGRES_IMP)
$(CC) $(CFLAGS) $(call expand_subsys,$(OBJS)) $(LDFLAGS) $(LDFLAGS_EX) -Wl,-bE:$(top_builddir)/src/backend/$(POSTGRES_IMP) $(LIBS) -Wl,-brtllib -o $@
+# Linking to a single .o with -r is a lot faster than building a .a or passing
+# all objects to MKLDEXPORT.
+#
+# It looks alluring to use $(CC) -r instead of ld -r, but that doesn't
+# trivially work with gcc, due to gcc specific static libraries linked in with
+# -r.
$(POSTGRES_IMP): $(OBJS)
- $(LD) $(LDREL) $(LDOUT) SUBSYS.o $(call expand_subsys,$^)
+ ld -r -o SUBSYS.o $(call expand_subsys,$^)
$(MKLDEXPORT) SUBSYS.o . > $@
@rm -f SUBSYS.o
diff --git a/configure b/configure
index f62fbc5d0f5..4b24e36a93b 100755
--- a/configure
+++ b/configure
@@ -693,7 +693,6 @@ STRIP_SHARED_LIB
STRIP_STATIC_LIB
STRIP
with_gnu_ld
-LD
LDFLAGS_SL
LDFLAGS_EX
ZSTD_LIBS
@@ -9645,7 +9644,6 @@ with_gnu_ld=$ac_cv_prog_gnu_ld
-
if test -n "$ac_tool_prefix"; then
# Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
set dummy ${ac_tool_prefix}strip; ac_word=$2
diff --git a/src/Makefile.global.in b/src/Makefile.global.in
index 346b73260fc..6ee0f513018 100644
--- a/src/Makefile.global.in
+++ b/src/Makefile.global.in
@@ -289,7 +289,6 @@ LDAP_LIBS_FE = @LDAP_LIBS_FE@
LDAP_LIBS_BE = @LDAP_LIBS_BE@
UUID_LIBS = @UUID_LIBS@
LLVM_LIBS=@LLVM_LIBS@
-LD = @LD@
with_gnu_ld = @with_gnu_ld@
# It's critical that within LDFLAGS, all -L switches pointing to build-tree
@@ -316,8 +315,6 @@ LDFLAGS = $(LDFLAGS_INTERNAL) @LDFLAGS@
LDFLAGS_EX = @LDFLAGS_EX@
# LDFLAGS_SL might have already been assigned by calling makefile
LDFLAGS_SL += @LDFLAGS_SL@
-LDREL = -r
-LDOUT = -o
WINDRES = @WINDRES@
X = @EXEEXT@
--
2.38.0
--qh3eagtoyzwfapdm
Content-Type: text/x-diff; charset=us-ascii
Content-Disposition: attachment;
filename="v4-0003-autoconf-Move-export_dynamic-determination-to-con.patch"
view thread (3+ messages) latest in thread
reply
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Reply to all the recipients using the --to and --cc options:
reply via email
To: pgsql-hackers@postgresql.org
Cc: andres@anarazel.de
Subject: Re: [PATCH v4 2/4] autoconf: Don't AC_SUBST() LD in configure
In-Reply-To: <no-message-id-630990@localhost>
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
This inbox is served by agora; see mirroring instructions
for how to clone and mirror all data and code used for this inbox