| @@ -1,14 +1,14 @@ | | | @@ -1,14 +1,14 @@ |
1 | # $NetBSD: bsd.lib.mk,v 1.351 2014/04/09 19:23:09 christos Exp $ | | 1 | # $NetBSD: bsd.lib.mk,v 1.352 2014/04/11 15:56:09 christos Exp $ |
2 | # @(#)bsd.lib.mk 8.3 (Berkeley) 4/22/94 | | 2 | # @(#)bsd.lib.mk 8.3 (Berkeley) 4/22/94 |
3 | | | 3 | |
4 | .include <bsd.init.mk> | | 4 | .include <bsd.init.mk> |
5 | .include <bsd.shlib.mk> | | 5 | .include <bsd.shlib.mk> |
6 | .include <bsd.gcc.mk> | | 6 | .include <bsd.gcc.mk> |
7 | # Pull in <bsd.sys.mk> here so we can override its .c.o rule | | 7 | # Pull in <bsd.sys.mk> here so we can override its .c.o rule |
8 | .include <bsd.sys.mk> | | 8 | .include <bsd.sys.mk> |
9 | | | 9 | |
10 | LIBISMODULE?= no | | 10 | LIBISMODULE?= no |
11 | LIBISPRIVATE?= no | | 11 | LIBISPRIVATE?= no |
12 | LIBISCXX?= no | | 12 | LIBISCXX?= no |
13 | | | 13 | |
14 | .if ${LIBISMODULE} != "no" | | 14 | .if ${LIBISMODULE} != "no" |
| @@ -612,46 +612,52 @@ LIBCC:= ${CC} | | | @@ -612,46 +612,52 @@ LIBCC:= ${CC} |
612 | .endif | | 612 | .endif |
613 | | | 613 | |
614 | _LDADD.${_LIB}= ${LDADD} ${LDADD.${_LIB}} | | 614 | _LDADD.${_LIB}= ${LDADD} ${LDADD.${_LIB}} |
615 | _LDFLAGS.${_LIB}= ${LDFLAGS} ${LDFLAGS.${_LIB}} | | 615 | _LDFLAGS.${_LIB}= ${LDFLAGS} ${LDFLAGS.${_LIB}} |
616 | | | 616 | |
617 | ${_LIB.so.full}: ${SOLIB} ${DPADD} ${DPLIBC} \ | | 617 | ${_LIB.so.full}: ${SOLIB} ${DPADD} ${DPLIBC} \ |
618 | ${SHLIB_LDSTARTFILE} ${SHLIB_LDENDFILE} | | 618 | ${SHLIB_LDSTARTFILE} ${SHLIB_LDENDFILE} |
619 | ${_MKTARGET_BUILD} | | 619 | ${_MKTARGET_BUILD} |
620 | rm -f ${.TARGET} | | 620 | rm -f ${.TARGET} |
621 | ${LIBCC} ${LDLIBC} -shared ${SHLIB_SHFLAGS} \ | | 621 | ${LIBCC} ${LDLIBC} -shared ${SHLIB_SHFLAGS} \ |
622 | ${_LDFLAGS.${_LIB}} -o ${.TARGET} ${_LIBLDOPTS} \ | | 622 | ${_LDFLAGS.${_LIB}} -o ${.TARGET} ${_LIBLDOPTS} \ |
623 | -Wl,--whole-archive ${SOLIB} \ | | 623 | -Wl,--whole-archive ${SOLIB} \ |
624 | -Wl,--no-whole-archive ${_LDADD.${_LIB}} | | 624 | -Wl,--no-whole-archive ${_LDADD.${_LIB}} |
625 | .if !defined(_LIB.so.debug) | | 625 | # XXX[1]: When the arm linker bug where -Wl,-x eats $a,$d,$t from shared |
| | | 626 | # libraries remove the following conditional and put this back in the linker |
| | | 627 | # line. For now we delay stripping symbols until the debug split step or skip |
| | | 628 | # it alltogether if we are using -g |
| | | 629 | .if !defined(_LIB.so.debug) && !empty(CFLAGS:M*-g*) |
626 | ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET} | | 630 | ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET} |
627 | .endif | | 631 | .endif |
628 | # We don't use INSTALL_SYMLINK here because this is just | | 632 | # We don't use INSTALL_SYMLINK here because this is just |
629 | # happening inside the build directory/objdir. XXX Why does | | 633 | # happening inside the build directory/objdir. XXX Why does |
630 | # this spend so much effort on libraries that aren't live??? XXX | | 634 | # this spend so much effort on libraries that aren't live??? XXX |
631 | .if defined(SHLIB_FULLVERSION) && defined(SHLIB_MAJOR) && \ | | 635 | .if defined(SHLIB_FULLVERSION) && defined(SHLIB_MAJOR) && \ |
632 | "${SHLIB_FULLVERSION}" != "${SHLIB_MAJOR}" | | 636 | "${SHLIB_FULLVERSION}" != "${SHLIB_MAJOR}" |
633 | ${HOST_LN} -sf ${_LIB.so.full} ${_LIB.so.major}.tmp | | 637 | ${HOST_LN} -sf ${_LIB.so.full} ${_LIB.so.major}.tmp |
634 | mv -f ${_LIB.so.major}.tmp ${_LIB.so.major} | | 638 | mv -f ${_LIB.so.major}.tmp ${_LIB.so.major} |
635 | .endif | | 639 | .endif |
636 | ${HOST_LN} -sf ${_LIB.so.full} ${_LIB.so}.tmp | | 640 | ${HOST_LN} -sf ${_LIB.so.full} ${_LIB.so}.tmp |
637 | mv -f ${_LIB.so}.tmp ${_LIB.so} | | 641 | mv -f ${_LIB.so}.tmp ${_LIB.so} |
638 | .if ${MKSTRIPIDENT} != "no" | | 642 | .if ${MKSTRIPIDENT} != "no" |
639 | ${OBJCOPY} -R .ident ${.TARGET} | | 643 | ${OBJCOPY} -R .ident ${.TARGET} |
640 | .endif | | 644 | .endif |
641 | | | 645 | |
642 | .if defined(_LIB.so.debug) | | 646 | .if defined(_LIB.so.debug) |
643 | ${_LIB.so.debug}: ${_LIB.so.full} | | 647 | ${_LIB.so.debug}: ${_LIB.so.full} |
644 | ${_MKTARGET_CREATE} | | 648 | ${_MKTARGET_CREATE} |
| | | 649 | # XXX[2]: OBJCOPYLIBFLAGS is used to strip the symbols because it was not |
| | | 650 | # done above. |
645 | ( ${OBJCOPY} --only-keep-debug ${_LIB.so.full} ${_LIB.so.debug} \ | | 651 | ( ${OBJCOPY} --only-keep-debug ${_LIB.so.full} ${_LIB.so.debug} \ |
646 | && ${OBJCOPY} ${OBJCOPYLIBFLAGS} --strip-debug -p -R .gnu_debuglink \ | | 652 | && ${OBJCOPY} ${OBJCOPYLIBFLAGS} --strip-debug -p -R .gnu_debuglink \ |
647 | --add-gnu-debuglink=${_LIB.so.debug} ${_LIB.so.full} \ | | 653 | --add-gnu-debuglink=${_LIB.so.debug} ${_LIB.so.full} \ |
648 | ) || (rm -f ${.TARGET}; false) | | 654 | ) || (rm -f ${.TARGET}; false) |
649 | .endif | | 655 | .endif |
650 | | | 656 | |
651 | .if !empty(LOBJS) # { | | 657 | .if !empty(LOBJS) # { |
652 | LLIBS?= -lc | | 658 | LLIBS?= -lc |
653 | ${_LIB.ln}: ${LOBJS} | | 659 | ${_LIB.ln}: ${LOBJS} |
654 | ${_MKTARGET_COMPILE} | | 660 | ${_MKTARGET_COMPILE} |
655 | rm -f ${.TARGET} | | 661 | rm -f ${.TARGET} |
656 | .if defined(DESTDIR) | | 662 | .if defined(DESTDIR) |
657 | ${LINT} -C${LIB} ${.ALLSRC} -L${DESTDIR}/usr/libdata ${LLIBS} | | 663 | ${LINT} -C${LIB} ${.ALLSRC} -L${DESTDIR}/usr/libdata ${LLIBS} |