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.284 retrieving revision 1.294 diff -u -p -r1.284 -r1.294 --- src/share/mk/bsd.lib.mk 2008/08/10 11:06:43 1.284 +++ src/share/mk/bsd.lib.mk 2009/01/17 12:07:59 1.294 @@ -1,4 +1,4 @@ -# $NetBSD: bsd.lib.mk,v 1.284 2008/08/10 11:06:43 lukem Exp $ +# $NetBSD: bsd.lib.mk,v 1.294 2009/01/17 12:07:59 he 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}} @@ -55,9 +68,13 @@ DPADD+= ${LIBDO.${_lib}}/lib${_lib}.so .endif # } ##### Build and install rules -MKDEP_SUFFIXES?= .o .po .so .ln +MKDEP_SUFFIXES?= .o .po .so .go .ln + +# Use purely kernel private headers in rump builds +.if !defined(RUMPKERNEL) CPPFLAGS+= ${DESTDIR:D-nostdinc ${CPPFLAG_ISYSTEM} ${DESTDIR}/usr/include} CXXFLAGS+= ${DESTDIR:D-nostdinc++ ${CPPFLAG_ISYSTEMXX} ${DESTDIR}/usr/include/g++} +.endif .if !defined(SHLIB_MAJOR) && exists(${SHLIB_VERSION_FILE}) # { SHLIB_MAJOR != . ${SHLIB_VERSION_FILE} ; echo $$major @@ -69,6 +86,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 @@ -359,7 +377,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 +416,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" @@ -420,6 +436,8 @@ _YLSRCS= ${SRCS:M*.[ly]:C/\..$/.c/} ${YH realall: ${SRCS} ${ALLOBJS:O} ${_LIBS} +# If you change this, please consider reflecting the change in +# the override in sys/rump/Makefile.rump. .if !target(__archivebuild) __archivebuild: .USE ${_MKTARGET_BUILD} @@ -481,19 +499,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/ \ - ${_LIBLDOPTS} \ - -Wl,-x -shared ${SHLIB_SHFLAGS} ${LDFLAGS} -o ${.TARGET} \ + ${LIBCC} ${LDLIBC} -Wl,-nostdlib -B${_GCC_CRTDIR}/ -B${DESTDIR}/usr/lib/ \ + -Wl,-x -shared ${SHLIB_SHFLAGS} -o ${.TARGET} \ -Wl,--whole-archive ${SOLIB} \ -Wl,--no-whole-archive ${LDADD} \ + ${_LIBLDOPTS} ${LDFLAGS} \ -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 +533,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