diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk index c98dec9045b..1d4a97134d4 100644 --- a/share/mk/bsd.lib.mk +++ b/share/mk/bsd.lib.mk @@ -262,6 +262,13 @@ SHLIB_NAME_FULL=${SHLIB_NAME} .if !empty(VERSION_MAP) ${SHLIB_NAME_FULL}: ${VERSION_MAP} LDFLAGS+= -Wl,--version-script=${VERSION_MAP} + +# lld >= 16 turned on --no-undefined-version by default, but we have several +# symbols in our version maps that may or may not exist, depending on +# compile-time defines. +.if ${LINKER_TYPE} == "lld" && ${LINKER_VERSION} >= 160000 +LDFLAGS+= -Wl,--undefined-version +.endif .endif .if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME)