Index: bsd.lib.mk =================================================================== RCS file: /cvs/src/share/mk/bsd.lib.mk,v retrieving revision 1.79 diff -u -p -r1.79 bsd.lib.mk --- bsd.lib.mk 8 Nov 2016 19:04:49 -0000 1.79 +++ bsd.lib.mk 12 Feb 2017 11:54:52 -0000 @@ -144,6 +144,8 @@ _LIBS+=lib${LIB}_p.a .if !defined(NOPIC) .if defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) FULLSHLIBNAME=lib${LIB}.so.${SHLIB_MAJOR}.${SHLIB_MINOR} +FULLSHLIBNAMEF=${FULLSHLIBNAME}.full +FULLSHLIBNAMED=${FULLSHLIBNAME}.debug _LIBS+=${FULLSHLIBNAME} .endif @@ -180,12 +182,19 @@ lib${LIB}_p.a: ${POBJS} ${RANLIB} lib${LIB}_p.a SOBJS+= ${OBJS:.o=.so} -${FULLSHLIBNAME}: ${SOBJS} ${DPADD} +${FULLSHLIBNAMEF}: ${SOBJS} ${DPADD} @echo building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\) @rm -f ${.TARGET} ${CC} -shared ${PICFLAG} -o ${.TARGET} \ `echo ${SOBJS} | tr ' ' '\n' | sort -R` ${LDADD} +${FULLSHLIBNAMED}: ${FULLSHLIBNAMEF} + ${OBJCOPY} --only-keep-debug ${FULLSHLIBNAMEF} ${.TARGET} + +${FULLSHLIBNAME}: ${FULLSHLIBNAMEF} ${FULLSHLIBNAMED} + ${OBJCOPY} --strip-debug --add-gnu-debuglink=${FULLSHLIBNAMED} \ + ${FULLSHLIBNAMEF} ${.TARGET} + ${FULLSHLIBNAME}.a: ${SOBJS} @echo building shared ${LIB} library \(version ${SHLIB_MAJOR}.${SHLIB_MINOR}\) ar @rm -f ${.TARGET} @@ -253,8 +262,17 @@ realinstall: chmod ${LIBMODE} ${DESTDIR}${LIBDIR}/lib${LIB}_p.a .endif .if !defined(NOPIC) && defined(SHLIB_MAJOR) && defined(SHLIB_MINOR) +.if ${INSTALL_DEBUG} == "yes" ${INSTALL} ${INSTALL_COPY} -S -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${FULLSHLIBNAME} ${DESTDIR}${LIBDIR} + ${INSTALL} ${INSTALL_COPY} -S \ + -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${FULLSHLIBNAMED} ${DESTDIR}${DEBUGDIR}${LIBDIR} +.else # install the full lib with debug until /usr/lib/debug is set up + ${INSTALL} ${INSTALL_COPY} -S \ + -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ + ${FULLSHLIBNAMEF} ${DESTDIR}${LIBDIR}/${FULLSHLIBNAME} +.endif .if defined(LIBREBUILD) ${INSTALL} ${INSTALL_COPY} -S -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} \ ${FULLSHLIBNAME}.a ${DESTDIR}${LIBDIR} Index: bsd.own.mk =================================================================== RCS file: /cvs/src/share/mk/bsd.own.mk,v retrieving revision 1.182 diff -u -p -r1.182 bsd.own.mk --- bsd.own.mk 18 Dec 2016 17:02:21 -0000 1.182 +++ bsd.own.mk 12 Feb 2017 11:54:52 -0000 @@ -81,6 +81,8 @@ LOCALEGRP?= wheel LOCALEOWN?= root LOCALEMODE?= ${NONBINMODE} +DEBUGDIR?= /usr/lib/debug + .if !defined(CDIAGFLAGS) CDIAGFLAGS= -Wall -Wpointer-arith -Wuninitialized -Wstrict-prototypes CDIAGFLAGS+= -Wmissing-prototypes -Wunused -Wsign-compare @@ -94,9 +96,7 @@ CDIAGFLAGS+= -Wdeclaration-after-stateme GNUSYSTEM_AUX_DIR?=${BSDSRCDIR}/share/gnu INSTALL_COPY?= -c -.ifndef DEBUG -INSTALL_STRIP?= -s -.endif +INSTALL_DEBUG?= no STATIC?= -static ${STATICPIE} Index: bsd.prog.mk =================================================================== RCS file: /cvs/src/share/mk/bsd.prog.mk,v retrieving revision 1.70 diff -u -p -r1.70 bsd.prog.mk --- bsd.prog.mk 14 Nov 2015 23:56:50 -0000 1.70 +++ bsd.prog.mk 12 Feb 2017 11:54:52 -0000 @@ -68,7 +68,12 @@ LIBARCH?= ${DESTDIR}/usr/lib/lib${MACHIN LIBARCH?= .endif +DEBUG?= -g + .if defined(PROG) +PROGF= ${PROG}.full +PROGD= ${PROG}.debug + SRCS?= ${PROG}.c . if !empty(SRCS:N*.h:N*.sh) OBJS+= ${SRCS:N*.h:N*.sh:R:S/$/.o/} @@ -79,12 +84,21 @@ _YACCINTM+=${SRCS:M*.y:.y=.c} . if defined(OBJS) && !empty(OBJS) . if !empty(SRCS:M*.C) || !empty(SRCS:M*.cc) || !empty(SRCS:M*.cpp) || \ !empty(SRCS:M*.cxx) -${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${CRTBEGIN} ${CRTEND} ${DPADD} +${PROGF}: ${LIBCRT0} ${OBJS} ${LIBC} ${CRTBEGIN} ${CRTEND} ${DPADD} ${CXX} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD} . else -${PROG}: ${LIBCRT0} ${OBJS} ${LIBC} ${CRTBEGIN} ${CRTEND} ${DPADD} +${PROGF}: ${LIBCRT0} ${OBJS} ${LIBC} ${CRTBEGIN} ${CRTEND} ${DPADD} ${CC} ${LDFLAGS} ${LDSTATIC} -o ${.TARGET} ${OBJS} ${LDADD} . endif + +${PROGD}: ${PROGF} + ${OBJCOPY} --only-keep-debug \ + ${PROGF} ${.TARGET} + +${PROG}: ${PROGF} ${PROGD} + ${OBJCOPY} --strip-debug --add-gnu-debuglink=${PROGD} \ + ${PROGF} ${.TARGET} + . endif # defined(OBJS) && !empty(OBJS) . if !defined(MAN) @@ -98,7 +112,8 @@ all: ${PROG} _SUBDIRUSE .if !target(clean) clean: _SUBDIRUSE rm -f a.out [Ee]rrs mklog *.core y.tab.h \ - ${PROG} ${OBJS} ${_LEXINTM} ${_YACCINTM} ${CLEANFILES} + ${PROG} ${PROGD} ${PROGF} ${OBJS} ${_LEXINTM} ${_YACCINTM} \ + ${CLEANFILES} .endif cleandir: _SUBDIRUSE clean @@ -114,11 +129,16 @@ afterinstall: .if !target(realinstall) realinstall: .if defined(PROG) - ${INSTALL} ${INSTALL_COPY} -S ${INSTALL_STRIP} \ + ${INSTALL} ${INSTALL_COPY} -S \ -o ${BINOWN} -g ${BINGRP} \ -m ${BINMODE} ${PROG} ${DESTDIR}${BINDIR}/${PROG} +.if ${INSTALL_DEBUG} == "yes" + ${INSTALL} ${INSTALL_COPY} -S \ + -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ + ${PROGD} ${DESTDIR}${DEBUGDIR}${BINDIR}/${PROGD} .endif -.endif +.endif # defined(PROG) +.endif # !target(realinstall) install: maninstall _SUBDIRUSE .if defined(LINKS) && !empty(LINKS) Index: sys.mk =================================================================== RCS file: /cvs/src/share/mk/sys.mk,v retrieving revision 1.76 diff -u -p -r1.76 sys.mk --- sys.mk 26 May 2016 20:13:44 -0000 1.76 +++ sys.mk 12 Feb 2017 11:54:52 -0000 @@ -76,6 +76,8 @@ YACC?= yacc YFLAGS?= -d YACC.y?= ${YACC} ${YFLAGS} +OBJCOPY?= objcopy + INSTALL?= install CTAGS?= /usr/bin/ctags