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 retrieving revision 1.273.4.2 retrieving revision 1.274 diff -u -p -r1.273.4.2 -r1.274 --- src/share/mk/bsd.lib.mk 2008/10/05 20:11:24 1.273.4.2 +++ src/share/mk/bsd.lib.mk 2008/04/26 20:03:44 1.274 @@ -1,4 +1,4 @@ -# $NetBSD: bsd.lib.mk,v 1.273.4.2 2008/10/05 20:11:24 mjf Exp $ +# $NetBSD: bsd.lib.mk,v 1.274 2008/04/26 20:03:44 christos Exp $ # @(#)bsd.lib.mk 8.3 (Berkeley) 4/22/94 .include @@ -7,27 +7,6 @@ # Pull in here so we can override its .c.o rule .include -LIBISMODULE?= no -LIBISPRIVATE?= no - -_LIB_PREFIX= lib - -.if ${LIBISMODULE} != "no" -_LIB_PREFIX= # empty -MKDEBUGLIB:= no -MKLINT:= no -MKPICINSTALL:= no -MKPROFILE:= no -MKSTATICLIB:= no -.endif - -.if ${LIBISPRIVATE} != "no" -MKDEBUGLIB:= no -MKLINT:= no -MKPIC:= no -MKPROFILE:= no -.endif - ##### Basic targets .PHONY: checkver libinstall realinstall: checkver libinstall @@ -55,7 +34,7 @@ DPADD+= ${LIBDO.${_lib}}/lib${_lib}.so .endif # } ##### Build and install rules -MKDEP_SUFFIXES?= .o .po .so .go .ln +MKDEP_SUFFIXES?= .o .po .so .ln CPPFLAGS+= ${DESTDIR:D-nostdinc ${CPPFLAG_ISYSTEM} ${DESTDIR}/usr/include} CXXFLAGS+= ${DESTDIR:D-nostdinc++ ${CPPFLAG_ISYSTEMXX} ${DESTDIR}/usr/include/g++} @@ -186,7 +165,7 @@ MKSHLIBOBJS= no # Platform-independent linker flags for ELF shared libraries .if ${OBJECT_FMT} == "ELF" SHLIB_SOVERSION= ${SHLIB_MAJOR} -SHLIB_SHFLAGS= -Wl,-soname,${_LIB_PREFIX}${LIB}.so.${SHLIB_SOVERSION} +SHLIB_SHFLAGS= -Wl,-soname,lib${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 @@ -354,12 +333,10 @@ OBJS+=${SRCS:N*.h:N*.sh:R:S/$/.o/g} STOBJS+=${OBJS} -LOBJS+=${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln} - -.if ${LIBISPRIVATE} != "no" +.if ${MKPRIVATELIB} != "no" # No installation is required libinstall:: -.else # ${LIBISPRIVATE} == "no" # { +.else # ${MKPRIVATELIB} == "no" # { .if ${MKDEBUGLIB} != "no" _LIBS+=lib${LIB}_g.a @@ -394,11 +371,12 @@ _LIBS+=lib${LIB}.so.${SHLIB_FULLVERSION} .endif .endif # } -.if ${MKLINT} != "no" && !empty(LOBJS) +LOBJS+=${LSRCS:.c=.ln} ${SRCS:M*.c:.c=.ln} +.if ${MKLINT} != "no" && ${MKLINKLIB} != "no" && !empty(LOBJS) _LIBS+=llib-l${LIB}.ln .endif -.endif # ${LIBISPRIVATE} == "no" # } +.endif # ${MKPRIVATELIB} == "no" # } ALLOBJS= .if (${MKPIC} == "no" || (defined(LDSTATIC) && ${LDSTATIC} != "") \ @@ -406,7 +384,7 @@ ALLOBJS= ALLOBJS+=${STOBJS} .endif ALLOBJS+=${POBJS} ${SOBJS} -.if ${MKLINT} != "no" && !empty(LOBJS) +.if ${MKLINT} != "no" && ${MKLINKLIB} != "no" && !empty(LOBJS) ALLOBJS+=${LOBJS} .endif .else # !defined(LIB) # } { @@ -463,22 +441,9 @@ _LIBLDOPTS+= -Wl,-rpath-link,${DESTDIR}$ -L${DESTDIR}${SHLIBINSTALLDIR} .endif -# gcc -shared now adds -lc automatically. For libraries other than libc and -# libgcc* we add as a dependency the installed shared libc. For libc and -# libgcc* we avoid adding libc as a dependency by using -nostdlib. Note that -# -Xl,-nostdlib is not enough because we want to tell the compiler-driver not -# to add standard libraries, not the linker. -.if !defined(LIB) -DPLIBC ?= ${DESTDIR}${LIBC_SO} -.else -.if ${LIB} != "c" && ${LIB:Mgcc*} == "" +.if ${LIB} != "c" DPLIBC ?= ${DESTDIR}${LIBC_SO} -.else -LDLIBC ?= -nodefaultlibs -.if ${LIB} == "c" -LDADD+= -lgcc_pic -.endif -.endif +LDLIBC ?= -lc .endif lib${LIB}.so.${SHLIB_FULLVERSION}: ${SOLIB} ${DPADD} ${DPLIBC} \ @@ -486,32 +451,27 @@ lib${LIB}.so.${SHLIB_FULLVERSION}: ${SOL ${_MKTARGET_BUILD} rm -f lib${LIB}.so.${SHLIB_FULLVERSION} .if defined(DESTDIR) - ${CC} ${LDLIBC} -Wl,-nostdlib -B${_GCC_CRTDIR}/ -B${DESTDIR}/usr/lib/ \ + ${CC} -Wl,-nostdlib -B${_GCC_CRTDIR}/ -B${DESTDIR}/usr/lib/ \ ${_LIBLDOPTS} \ -Wl,-x -shared ${SHLIB_SHFLAGS} ${LDFLAGS} -o ${.TARGET} \ -Wl,--whole-archive ${SOLIB} \ -Wl,--no-whole-archive ${LDADD} \ - -L${_GCC_LIBGCCDIR} + -L${_GCC_LIBGCCDIR} ${LDLIBC} .else - ${CC} ${LDLIBC} -Wl,-x -shared ${SHLIB_SHFLAGS} ${LDFLAGS} \ - -o ${.TARGET} ${_LIBLDOPTS} \ - -Wl,--whole-archive ${SOLIB} -Wl,--no-whole-archive ${LDADD} + ${CC} -Wl,-x -shared ${SHLIB_SHFLAGS} ${LDFLAGS} -o ${.TARGET} \ + ${_LIBLDOPTS} \ + -Wl,--whole-archive ${SOLIB} -Wl,--no-whole-archive ${LDADD} \ + ${LDLIBC} .endif .if ${OBJECT_FMT} == "ELF" # We don't use INSTALL_SYMLINK here because this is just # happening inside the build directory/objdir. XXX Why does # this spend so much effort on libraries that aren't live??? XXX -.if defined(SHLIB_FULLVERSION) && defined(SHLIB_MAJOR) && \ - "${SHLIB_FULLVERSION}" != "${SHLIB_MAJOR}" ${HOST_LN} -sf lib${LIB}.so.${SHLIB_FULLVERSION} lib${LIB}.so.${SHLIB_MAJOR}.tmp mv -f lib${LIB}.so.${SHLIB_MAJOR}.tmp lib${LIB}.so.${SHLIB_MAJOR} -.endif ${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 @@ -525,11 +485,6 @@ llib-l${LIB}.ln: ${LOBJS} .endif .endif # } -lint: ${LOBJS} -.if defined(LOBJS) && !empty(LOBJS) - ${LINT} ${LINTFLAGS} ${LOBJS} -.endif - cleanlib: .PHONY rm -f a.out [Ee]rrs mklog core *.core ${CLEANFILES} rm -f lib${LIB}.a ${STOBJS} @@ -621,60 +576,54 @@ ${DESTDIR}${LIBDIR}/lib${LIB}_pic.a: lib .endif .if ${MKPIC} != "no" && defined(SHLIB_FULLVERSION) -_LIB_SO_TGT= ${DESTDIR}${_LIBSODIR}/${_LIB_PREFIX}${LIB}.so -_LIB_SO_TGTLIBDIR= ${DESTDIR}${LIBDIR}/${_LIB_PREFIX}${LIB}.so - -libinstall:: ${_LIB_SO_TGT}.${SHLIB_FULLVERSION} -.PRECIOUS: ${_LIB_SO_TGT}.${SHLIB_FULLVERSION} +libinstall:: ${DESTDIR}${_LIBSODIR}/lib${LIB}.so.${SHLIB_FULLVERSION} +.PRECIOUS: ${DESTDIR}${_LIBSODIR}/lib${LIB}.so.${SHLIB_FULLVERSION} .if ${MKUPDATE} == "no" .if !defined(BUILD) && !make(all) && !make(lib${LIB}.so.${SHLIB_FULLVERSION}) -${_LIB_SO_TGT}.${SHLIB_FULLVERSION}! .MADE +${DESTDIR}${_LIBSODIR}/lib${LIB}.so.${SHLIB_FULLVERSION}! .MADE .endif -${_LIB_SO_TGT}.${SHLIB_FULLVERSION}! lib${LIB}.so.${SHLIB_FULLVERSION} +${DESTDIR}${_LIBSODIR}/lib${LIB}.so.${SHLIB_FULLVERSION}! lib${LIB}.so.${SHLIB_FULLVERSION} .else .if !defined(BUILD) && !make(all) && !make(lib${LIB}.so.${SHLIB_FULLVERSION}) -${_LIB_SO_TGT}.${SHLIB_FULLVERSION}: .MADE +${DESTDIR}${_LIBSODIR}/lib${LIB}.so.${SHLIB_FULLVERSION}: .MADE .endif -${_LIB_SO_TGT}.${SHLIB_FULLVERSION}: lib${LIB}.so.${SHLIB_FULLVERSION} +${DESTDIR}${_LIBSODIR}/lib${LIB}.so.${SHLIB_FULLVERSION}: lib${LIB}.so.${SHLIB_FULLVERSION} .endif ${_MKTARGET_INSTALL} ${INSTALL_FILE} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${.ALLSRC} ${.TARGET} .if ${_LIBSODIR} != ${LIBDIR} - ${INSTALL_SYMLINK} -l r \ - ${_LIB_SO_TGT}.${SHLIB_FULLVERSION} \ - ${_LIB_SO_TGTLIBDIR}.${SHLIB_FULLVERSION} + ${INSTALL_SYMLINK} \ + -l r ${DESTDIR}${_LIBSODIR}/lib${LIB}.so.${SHLIB_FULLVERSION} \ + ${DESTDIR}${LIBDIR}/lib${LIB}.so.${SHLIB_FULLVERSION} .endif .if ${OBJECT_FMT} == "a.out" && !defined(DESTDIR) /sbin/ldconfig -m ${_LIBSODIR} ${LIBDIR} .endif .if ${OBJECT_FMT} == "ELF" -.if defined(SHLIB_FULLVERSION) && defined(SHLIB_MAJOR) && \ - "${SHLIB_FULLVERSION}" != "${SHLIB_MAJOR}" ${INSTALL_SYMLINK} \ - ${_LIB_PREFIX}${LIB}.so.${SHLIB_FULLVERSION} \ - ${_LIB_SO_TGT}.${SHLIB_MAJOR} + lib${LIB}.so.${SHLIB_FULLVERSION} \ + ${DESTDIR}${_LIBSODIR}/lib${LIB}.so.${SHLIB_MAJOR} .if ${_LIBSODIR} != ${LIBDIR} - ${INSTALL_SYMLINK} -l r \ - ${_LIB_SO_TGT}.${SHLIB_FULLVERSION} \ - ${_LIB_SO_TGTLIBDIR}.${SHLIB_MAJOR} -.endif + ${INSTALL_SYMLINK} \ + -l r ${DESTDIR}${_LIBSODIR}/lib${LIB}.so.${SHLIB_FULLVERSION} \ + ${DESTDIR}${LIBDIR}/lib${LIB}.so.${SHLIB_MAJOR} .endif .if ${MKLINKLIB} != "no" ${INSTALL_SYMLINK} \ - ${_LIB_PREFIX}${LIB}.so.${SHLIB_FULLVERSION} \ - ${_LIB_SO_TGT} + lib${LIB}.so.${SHLIB_FULLVERSION} \ + ${DESTDIR}${_LIBSODIR}/lib${LIB}.so .if ${_LIBSODIR} != ${LIBDIR} - ${INSTALL_SYMLINK} -l r \ - ${_LIB_SO_TGT}.${SHLIB_FULLVERSION} \ - ${_LIB_SO_TGTLIBDIR} + ${INSTALL_SYMLINK} \ + -l r ${DESTDIR}${_LIBSODIR}/lib${LIB}.so.${SHLIB_FULLVERSION} \ + ${DESTDIR}${LIBDIR}/lib${LIB}.so .endif .endif .endif .endif -.if ${MKLINT} != "no" && !empty(LOBJS) +.if ${MKLINT} != "no" && ${MKLINKLIB} != "no" && !empty(LOBJS) libinstall:: ${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln .PRECIOUS: ${DESTDIR}${LINTLIBDIR}/llib-l${LIB}.ln