Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/share/mk/bsd.lib.mk,v rcsdiff: /ftp/cvs/cvsroot/src/share/mk/bsd.lib.mk,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.281.2.1 retrieving revision 1.289.2.2.2.1.2.1 diff -u -p -r1.281.2.1 -r1.289.2.2.2.1.2.1 --- src/share/mk/bsd.lib.mk 2008/09/18 04:38:09 1.281.2.1 +++ src/share/mk/bsd.lib.mk 2009/12/14 06:33:16 1.289.2.2.2.1.2.1 @@ -1,4 +1,4 @@ -# $NetBSD: bsd.lib.mk,v 1.281.2.1 2008/09/18 04:38:09 wrstuden Exp $ +# $NetBSD: bsd.lib.mk,v 1.289.2.2.2.1.2.1 2009/12/14 06:33:16 mrg Exp $ # @(#)bsd.lib.mk 8.3 (Berkeley) 4/22/94 .include @@ -9,6 +9,7 @@ LIBISMODULE?= no LIBISPRIVATE?= no +LIBISCXX?= no _LIB_PREFIX= lib @@ -24,7 +25,12 @@ MKSTATICLIB:= no .if ${LIBISPRIVATE} != "no" MKDEBUGLIB:= no MKLINT:= no +MKPICINSTALL:= no +. if defined(NOSTATICLIB) && ${MKPICLIB} != "no" +MKSTATICLIB:= no +. else MKPIC:= no +. endif MKPROFILE:= no .endif @@ -34,6 +40,13 @@ realinstall: checkver libinstall clean: cleanlib ##### LIB specific flags. +# XXX: This is needed for programs that link with .a libraries +# Perhaps a more correct solution is to always generate _pic.a +# files or always have a shared library. +.if defined(MKPIE) && (${MKPIE} != "no") +CFLAGS+= ${PIE_CFLAGS} +AFLAGS+= ${PIE_AFLAGS} +.endif COPTS+= ${COPTS.lib${LIB}} CPPFLAGS+= ${CPPFLAGS.lib${LIB}} CXXFLAGS+= ${CXXFLAGS.lib${LIB}} @@ -69,6 +82,7 @@ SHLIB_TEENY != . ${SHLIB_VERSION_FILE} ; exists(${NETBSDSRCDIR}/lib/checkver) checkver: @(cd ${.CURDIR} && \ + HOST_SH=${HOST_SH:Q} AWK=${TOOL_AWK:Q} \ ${HOST_SH} ${NETBSDSRCDIR}/lib/checkver -v ${SHLIB_VERSION_FILE} \ -d ${DESTDIR}${_LIBSODIR} ${LIB}) .endif @@ -188,8 +202,8 @@ MKSHLIBOBJS= no SHLIB_SOVERSION= ${SHLIB_MAJOR} SHLIB_SHFLAGS= -Wl,-soname,${_LIB_PREFIX}${LIB}.so.${SHLIB_SOVERSION} SHLIB_SHFLAGS+= -Wl,--warn-shared-textrel -SHLIB_LDSTARTFILE?= ${DESTDIR}/usr/lib/crti.o ${_GCC_CRTBEGINS} -SHLIB_LDENDFILE?= ${_GCC_CRTENDS} ${DESTDIR}/usr/lib/crtn.o +SHLIB_LDSTARTFILE?= ${_GCC_CRTDIR}/crti.o ${_GCC_CRTBEGINS} +SHLIB_LDENDFILE?= ${_GCC_CRTENDS} ${_GCC_CRTDIR}/crtn.o .endif CFLAGS+= ${COPTS} @@ -359,7 +373,7 @@ LOBJS+=${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.l .if ${LIBISPRIVATE} != "no" # No installation is required libinstall:: -.else # ${LIBISPRIVATE} == "no" # { +.endif # ${LIBISPRIVATE} == "no" # { .if ${MKDEBUGLIB} != "no" _LIBS+=lib${LIB}_g.a @@ -398,8 +412,6 @@ _LIBS+=lib${LIB}.so.${SHLIB_FULLVERSION} _LIBS+=llib-l${LIB}.ln .endif -.endif # ${LIBISPRIVATE} == "no" # } - ALLOBJS= .if (${MKPIC} == "no" || (defined(LDSTATIC) && ${LDSTATIC} != "") \ || ${MKLINKLIB} != "no") && ${MKSTATICLIB} != "no" @@ -481,19 +493,25 @@ LDADD+= -lgcc_pic .endif .endif +.if ${LIBISCXX} != "no" +LIBCC:= ${CXX} +.else +LIBCC:= ${CC} +.endif + lib${LIB}.so.${SHLIB_FULLVERSION}: ${SOLIB} ${DPADD} ${DPLIBC} \ ${SHLIB_LDSTARTFILE} ${SHLIB_LDENDFILE} ${_MKTARGET_BUILD} rm -f lib${LIB}.so.${SHLIB_FULLVERSION} .if defined(DESTDIR) - ${CC} ${LDLIBC} -Wl,-nostdlib -B${_GCC_CRTDIR}/ -B${DESTDIR}/usr/lib/ \ + ${LIBCC} ${LDLIBC} -Wl,-nostdlib -B${_GCC_CRTDIR}/ -B${DESTDIR}${SHLIBDIR}/ \ ${_LIBLDOPTS} \ -Wl,-x -shared ${SHLIB_SHFLAGS} ${LDFLAGS} -o ${.TARGET} \ -Wl,--whole-archive ${SOLIB} \ -Wl,--no-whole-archive ${LDADD} \ -L${_GCC_LIBGCCDIR} .else - ${CC} ${LDLIBC} -Wl,-x -shared ${SHLIB_SHFLAGS} ${LDFLAGS} \ + ${LIBCC} ${LDLIBC} -Wl,-x -shared ${SHLIB_SHFLAGS} ${LDFLAGS} \ -o ${.TARGET} ${_LIBLDOPTS} \ -Wl,--whole-archive ${SOLIB} -Wl,--no-whole-archive ${LDADD} .endif @@ -509,6 +527,9 @@ lib${LIB}.so.${SHLIB_FULLVERSION}: ${SOL ${HOST_LN} -sf lib${LIB}.so.${SHLIB_FULLVERSION} lib${LIB}.so.tmp mv -f lib${LIB}.so.tmp lib${LIB}.so .endif +.if ${MKSTRIPIDENT} != "no" + ${OBJCOPY} -R .ident ${.TARGET} +.endif .if !empty(LOBJS) # { LLIBS?= -lc @@ -693,6 +714,9 @@ ${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln: .endif # !target(libinstall) # } ##### Pull in related .mk logic +LINKSOWN?= ${LIBOWN} +LINKSGRP?= ${LIBGRP} +LINKSMODE?= ${LIBMODE} .include .include .include