diff options
Diffstat (limited to 'share/mk/bsd.lib.mk')
-rw-r--r-- | share/mk/bsd.lib.mk | 56 |
1 files changed, 32 insertions, 24 deletions
diff --git a/share/mk/bsd.lib.mk b/share/mk/bsd.lib.mk index 5e58e1d010ab..981d0b49df39 100644 --- a/share/mk/bsd.lib.mk +++ b/share/mk/bsd.lib.mk @@ -1,10 +1,8 @@ -# from: @(#)bsd.lib.mk 5.26 (Berkeley) 5/2/91 -# $FreeBSD$ -# .include <bsd.init.mk> .include <bsd.compiler.mk> .include <bsd.linker.mk> +.include <bsd.compat.pre.mk> __<bsd.lib.mk>__: @@ -64,9 +62,11 @@ CTFFLAGS+= -g STRIP?= -s .endif -.if ${SHLIBDIR:M*lib32*} -TAGS+= lib32 +.for _libcompat in ${_ALL_libcompats} +.if ${SHLIBDIR:M*/lib${_libcompat}} || ${SHLIBDIR:M*/lib${_libcompat}/*} +TAGS+= lib${_libcompat} .endif +.endfor .if defined(NO_ROOT) .if !defined(TAGS) || ! ${TAGS:Mpackage=*} @@ -95,23 +95,20 @@ LDFLAGS+= -Wl,-zretpolineplt .warning Retpoline requested but not supported by compiler or linker .endif .endif +# LLD sensibly defaults to -znoexecstack, so do the same for BFD +LDFLAGS.bfd+= -Wl,-znoexecstack # Initialize stack variables on function entry -.if ${MK_INIT_ALL_ZERO} == "yes" +.if ${OPT_INIT_ALL} != "none" .if ${COMPILER_FEATURES:Minit-all} -CFLAGS+= -ftrivial-auto-var-init=zero \ - -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang -CXXFLAGS+= -ftrivial-auto-var-init=zero \ - -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang -.else -.warning InitAll (zeros) requested but not support by compiler +CFLAGS+= -ftrivial-auto-var-init=${OPT_INIT_ALL} +CXXFLAGS+= -ftrivial-auto-var-init=${OPT_INIT_ALL} +.if ${OPT_INIT_ALL} == "zero" && ${COMPILER_TYPE} == "clang" && ${COMPILER_VERSION} < 160000 +CFLAGS+= -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang +CXXFLAGS+= -enable-trivial-auto-var-init-zero-knowing-it-will-be-removed-from-clang .endif -.elif ${MK_INIT_ALL_PATTERN} == "yes" -.if ${COMPILER_FEATURES:Minit-all} -CFLAGS+= -ftrivial-auto-var-init=pattern -CXXFLAGS+= -ftrivial-auto-var-init=pattern .else -.warning InitAll (pattern) requested but not support by compiler +.warning INIT_ALL (${OPT_INIT_ALL}) requested but not supported by compiler .endif .endif @@ -190,7 +187,7 @@ PO_FLAG=-pg ${CTFCONVERT_CMD} .s.po .s.pico .s.nossppico .s.pieo: - ${AS} ${AFLAGS} -o ${.TARGET} ${.IMPSRC} + ${CC:N${CCACHE_BIN}} -x assembler ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET} ${CTFCONVERT_CMD} .asm.po: @@ -262,6 +259,15 @@ SHLIB_NAME_FULL=${SHLIB_NAME} .if !empty(VERSION_MAP) ${SHLIB_NAME_FULL}: ${VERSION_MAP} LDFLAGS+= -Wl,--version-script=${VERSION_MAP} + +# Ideally we'd always enable --no-undefined-version (default for lld >= 16), +# but we have several symbols in our version maps that may or may not exist, +# depending on compile-time defines and that needs to be handled first. +.if ${MK_UNDEFINED_VERSION} == "no" +LDFLAGS+= -Wl,--no-undefined-version +.else +LDFLAGS+= -Wl,--undefined-version +.endif .endif .if defined(LIB) && !empty(LIB) || defined(SHLIB_NAME) @@ -371,7 +377,7 @@ ${SHLIB_NAME}.debug: ${SHLIB_NAME_FULL} .endif .endif #defined(SHLIB_NAME) -.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no" +.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) _LIBS+= lib${LIB_PRIVATE}${LIB}_pic.a lib${LIB_PRIVATE}${LIB}_pic.a: ${SOBJS} @@ -430,6 +436,7 @@ _EXTRADEPEND: .if !target(install) +INSTALLFLAGS+= -C .if defined(PRECIOUSLIB) .if !defined(NO_FSCHG) SHLINSTALLFLAGS+= -fschg @@ -470,7 +477,7 @@ installpcfiles: installpcfiles-${pcfile} installpcfiles-${pcfile}: ${pcfile} ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${_INSTALLFLAGS} \ - ${.ALLSRC} ${DESTDIR}${LIBDATADIR}/pkgconfig + ${.ALLSRC} ${DESTDIR}${LIBDATADIR}/pkgconfig/ .endfor .endif installpcfiles: .PHONY @@ -480,10 +487,10 @@ realinstall: _libinstall installpcfiles .ORDER: beforeinstall _libinstall _libinstall: .if defined(LIB) && !empty(LIB) && ${MK_INSTALLLIB} != "no" - ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}${_STATICLIB_SUFFIX}.a ${DESTDIR}${_LIBDIR}/ .if ${MK_PROFILE} != "no" - ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${_INSTALLFLAGS} lib${LIB_PRIVATE}${LIB}_p.a ${DESTDIR}${_LIBDIR}/ .endif .endif @@ -501,7 +508,7 @@ _libinstall: .endif .if defined(SHLIB_LINK) .if commands(${SHLIB_LINK:R}.ld) - ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -S -C -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -S -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${_INSTALLFLAGS} ${SHLIB_LINK:R}.ld \ ${DESTDIR}${_LIBDIR}/${SHLIB_LINK} .for _SHLIB_LINK_LINK in ${SHLIB_LDSCRIPT_LINKS} @@ -533,7 +540,7 @@ _libinstall: .endif # SHLIB_LDSCRIPT .endif # SHLIB_LINK .endif # SHIB_NAME -.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) && ${MK_TOOLCHAIN} != "no" +.if defined(INSTALL_PIC_ARCHIVE) && defined(LIB) && !empty(LIB) ${INSTALL} ${TAG_ARGS:D${TAG_ARGS},dev} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${_INSTALLFLAGS} lib${LIB}_pic.a ${DESTDIR}${_LIBDIR}/ .endif @@ -554,6 +561,7 @@ LINKGRP?= ${LIBGRP} LINKMODE?= ${LIBMODE} SYMLINKOWN?= ${LIBOWN} SYMLINKGRP?= ${LIBGRP} +LINKTAGS= dev .include <bsd.links.mk> .if ${MK_MAN} != "no" && !defined(LIBRARIES_ONLY) |