This is an automated email from the ASF dual-hosted git repository.
asf-gitbox-commits pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/openoffice.git
The following commit(s) were added to refs/heads/trunk by this push:
new 3e6a53ec49 Pass --undefined-version to the linker on *nix where
supported, as we use quite loose version map scripts intended for many systems.
This is needed for building with recent versions of Clang's lld.
3e6a53ec49 is described below
commit 3e6a53ec4966bc78e4eb80339b6629fb1dcd11be
Author: Damjan Jovanovic <[email protected]>
AuthorDate: Sun Jul 5 06:21:06 2026 +0200
Pass --undefined-version to the linker on *nix where supported,
as we use quite loose version map scripts intended for many systems.
This is needed for building with recent versions of Clang's lld.
Patch by: me
---
main/configure.ac | 18 ++++++++++++++++++
main/set_soenv.in | 2 ++
main/solenv/gbuild/platform/freebsd.mk | 6 ++++++
main/solenv/gbuild/platform/linux.mk | 6 ++++++
main/solenv/inc/unxfbsd.mk | 4 ++++
main/solenv/inc/unxlng.mk | 4 ++++
6 files changed, 40 insertions(+)
diff --git a/main/configure.ac b/main/configure.ac
index 5bc8930617..50db0dbb6d 100644
--- a/main/configure.ac
+++ b/main/configure.ac
@@ -2364,6 +2364,24 @@ if test "$_os" = "FreeBSD"; then
AC_SUBST(FBSD_GCC_RPATH)
fi
+if test "$_os" = "Linux" -o "$_os" = "FreeBSD" -o "$_os" = "GNU"; then
+ AC_MSG_CHECKING( for --undefined-version linker support )
+ undefined_version_ldflags_save=$LDFLAGS
+ LDFLAGS="$LDFLAGS -Wl,--undefined-version"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([
+ #include <stdio.h>
+ ],[
+ printf ("hello world\n");
+ ])], HAVE_LD_UNDEFINED_VERSION=TRUE, HAVE_LD_UNDEFINED_VERSION=FALSE)
+ if test "z$HAVE_LD_UNDEFINED_VERSION" = "zTRUE"; then
+ AC_MSG_RESULT( found )
+ else
+ AC_MSG_RESULT( not found )
+ fi
+ LDFLAGS=$undefined_version_ldflags_save
+ AC_SUBST(HAVE_LD_UNDEFINED_VERSION)
+fi
+
dnl ===================================================================
dnl .NET needs special treatment
dnl ===================================================================
diff --git a/main/set_soenv.in b/main/set_soenv.in
index 2351ef600f..c41513079b 100644
--- a/main/set_soenv.in
+++ b/main/set_soenv.in
@@ -1885,6 +1885,8 @@ ToFile( "HAVE_GCC_VISIBILITY_FEATURE",
ToFile( "HAVE_LD_HASH_STYLE","@HAVE_LD_HASH_STYLE@","e" );
ToFile( "HAVE_LD_BSYMBOLIC_FUNCTIONS",
"@HAVE_LD_BSYMBOLIC_FUNCTIONS@","e" );
+ToFile( "HAVE_LD_UNDEFINED_VERSION",
+ "@HAVE_LD_UNDEFINED_VERSION@","e" );
ToFile( "CXX", $CXX, "e" );
ToFile( "USE_CCACHE", "@USE_CCACHE@", "e" );
ToFile( "MINGWCXX", "@MINGWCXX@", "e" );
diff --git a/main/solenv/gbuild/platform/freebsd.mk
b/main/solenv/gbuild/platform/freebsd.mk
index 6433fa2c80..18ee2fa4b8 100644
--- a/main/solenv/gbuild/platform/freebsd.mk
+++ b/main/solenv/gbuild/platform/freebsd.mk
@@ -145,6 +145,12 @@ gb_LinkTarget_LDFLAGS += \
endif
+ifneq ($(HAVE_LD_UNDEFINED_VERSION),)
+gb_LinkTarget_LDFLAGS += \
+ -Wl,--undefined-version \
+
+endif
+
ifneq ($(filter $(CPUNAME),INTEL X86_64),)
gb_CFLAGS += -fstack-protector
gb_CXXFLAGS += -fstack-protector
diff --git a/main/solenv/gbuild/platform/linux.mk
b/main/solenv/gbuild/platform/linux.mk
index 5777898295..9e48a0b6dc 100644
--- a/main/solenv/gbuild/platform/linux.mk
+++ b/main/solenv/gbuild/platform/linux.mk
@@ -135,6 +135,12 @@ gb_LinkTarget_LDFLAGS += \
endif
+ifneq ($(HAVE_LD_UNDEFINED_VERSION),)
+gb_LinkTarget_LDFLAGS += \
+ -Wl,--undefined-version \
+
+endif
+
ifeq ($(gb_DEBUGLEVEL),0)
gb_LinkTarget_LDFLAGS += -Wl,-O1
endif
diff --git a/main/solenv/inc/unxfbsd.mk b/main/solenv/inc/unxfbsd.mk
index f27ef2a7ba..4ab61ba8d9 100644
--- a/main/solenv/inc/unxfbsd.mk
+++ b/main/solenv/inc/unxfbsd.mk
@@ -182,6 +182,10 @@ LINKFLAGSRUNPATH_BOXT=-Wl,-z,origin
-Wl,-rpath,\''$$ORIGIN'\'
LINKFLAGSRUNPATH_NONE=
LINKFLAGS=-Wl,-z,combreloc $(LDFLAGS) $(LINKFLAGSDEFS) $(LINKFLAGS_SYSBASE)
+.IF "$(HAVE_LD_UNDEFINED_VERSION)" == "TRUE"
+LINKFLAGS += -Wl,--undefined-version
+.ENDIF
+
# linker flags for linking applications
LINKFLAGSAPPGUI= -Wl,-export-dynamic -Wl,--noinhibit-exec \
-Wl,-rpath-link,$(LB):$(SOLARLIBDIR):$(SYSBASE)/lib:$(SYSBASE)/usr/lib
diff --git a/main/solenv/inc/unxlng.mk b/main/solenv/inc/unxlng.mk
index 5c2e13c936..abe9832f19 100644
--- a/main/solenv/inc/unxlng.mk
+++ b/main/solenv/inc/unxlng.mk
@@ -227,6 +227,10 @@ LINKFLAGS += -Wl,--hash-style=both
LINKFLAGS += -Wl,-zdynsort
.ENDIF
+.IF "$(HAVE_LD_UNDEFINED_VERSION)" == "TRUE"
+LINKFLAGS += -Wl,--undefined-version
+.ENDIF
+
# libraries for linking applications
STDLIBGUIMT+=-Wl,--as-needed -ldl -lpthread -lm -Wl,--no-as-needed
STDLIBCUIMT+=-Wl,--as-needed -ldl -lpthread -lm -Wl,--no-as-needed