git: 145ca5487348 - main - audio/openal-soft: fix build with lld 15 on i386

From: Dimitry Andric <dim_at_FreeBSD.org>
Date: Sun, 25 Dec 2022 17:54:42 UTC
The branch main has been updated by dim (src committer):

URL: https://cgit.FreeBSD.org/ports/commit/?id=145ca54873489e7d45eac99de62f733a54dc294d

commit 145ca54873489e7d45eac99de62f733a54dc294d
Author:     Dimitry Andric <dim@FreeBSD.org>
AuthorDate: 2022-12-20 22:28:41 +0000
Commit:     Dimitry Andric <dim@FreeBSD.org>
CommitDate: 2022-12-25 17:53:21 +0000

    audio/openal-soft: fix build with lld 15 on i386
    
    During an exp-run for llvm 15 (see bug 265425), it turned out that
    audio/openal-soft failed to link with lld 15, on i386:
    
      : && /usr/bin/c++ -O2 -pipe -fstack-protector-strong -fno-strict-aliasing -O2 -pipe -fstack-protector-strong -fno-strict-aliasing   -DNDEBUG -Wl,--as-needed -fstack-protector-strong -Wl,-z,notext CMakeFiles/makemhr.dir/utils/makemhr/loaddef.cpp.o CMakeFiles/makemhr.dir/utils/makemhr/loadsofa.cpp.o CMakeFiles/makemhr.dir/utils/makemhr/makemhr.cpp.o -o makemhr  -Wl,-rpath,/usr/local/lib:  -pthread  libsofa-support.a  -pthread  libcommon.a  /usr/local/lib/libmysofa.so  /usr/lib/libz.so  -lm && :
      ld: error: makemhr:(.eh_frame+0x14cf): internal linker error: wrote incorrect addend value 0x3400 instead of 0x0 for dynamic relocation R_386_32 at offset 0x408417 against symbol __gxx_personality_v0
    
    This is because lld 15 with assertions enabled (which is default on
    -CURRENT) checks dynamic relocations more thoroughly, and in combination
    with -z notext (which was added earlier for bug 242307) results in the
    above diagnostic.
    
    Work around it by disabling the dynamic relations checks on i386.
    
    PR:             268495
    Approved by:    maintainer timeout (2 weeks)
    MFH:            2022Q4
---
 audio/openal-soft/Makefile | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/audio/openal-soft/Makefile b/audio/openal-soft/Makefile
index 61c9c48644bd..0ff75a86b989 100644
--- a/audio/openal-soft/Makefile
+++ b/audio/openal-soft/Makefile
@@ -23,6 +23,16 @@ CMAKE_ON=	ALSOFT_BACKEND_WAVE
 LDFLAGS+=	-Wl,--as-needed
 LDFLAGS_i386=	-Wl,-z,notext
 
+.include <bsd.port.pre.mk>
+
+# The following is actually meant for lld 15.0 and later, but the ports
+# framework does not support LINKER_TYPE and LINKER_VERSION yet.
+.if ${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} >= 150
+# Turn off checking of dynamic relocations, to avoid lld diagnostics about
+# possibly incorrect addend values.
+LDFLAGS_i386+=	-Wl,--no-check-dynamic-relocations
+.endif
+
 PLIST_SUB=	SOVERSION=${PORTVERSION}
 
 OPTIONS_DEFINE=		CONFIG EXAMPLES JACK OSS PORTAUDIO PULSEAUDIO \