diff --git a/share/mk/bsd.crunchgen.mk b/share/mk/bsd.crunchgen.mk index 95f1aa3..cb0ce65 100644 --- a/share/mk/bsd.crunchgen.mk +++ b/share/mk/bsd.crunchgen.mk @@ -47,6 +47,9 @@ CRUNCH_GENERATE_LINKS?= yes CLEANFILES+= $(CONF) *.o *.lo *.c *.mk *.cache *.a *.h +# Don't try to extract debug info from ${PROG}. +.undef DEBUG_FLAGS + # Program names and their aliases contribute hardlinks to 'rescue' executable, # except for those that get suppressed. .for D in $(CRUNCH_SRCDIRS) diff --git a/share/mk/bsd.prog.mk b/share/mk/bsd.prog.mk index 950d381..b032eee 100644 --- a/share/mk/bsd.prog.mk +++ b/share/mk/bsd.prog.mk @@ -48,7 +48,11 @@ OBJS+= ${SRCS:N*.h:R:S/$/.o/g} .if target(beforelinking) ${PROG}: beforelinking .endif +.if defined(DEBUG_FLAGS) +${PROG}.debug: ${OBJS} +.else ${PROG}: ${OBJS} +.endif .if defined(PROG_CXX) ${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD} .else @@ -77,7 +81,11 @@ OBJS= ${PROG}.o .if target(beforelinking) ${PROG}: beforelinking .endif +.if defined(DEBUG_FLAGS) +${PROG}.debug: ${OBJS} +.else ${PROG}: ${OBJS} +.endif .if defined(PROG_CXX) ${CXX} ${CXXFLAGS} ${LDFLAGS} -o ${.TARGET} ${OBJS} ${LDADD} .else @@ -98,6 +106,18 @@ ${PROG}: ${OBJS} MAN= ${PROG}.1 MAN1= ${MAN} .endif + +PROGNAME?= ${PROG} + +.if defined(DEBUG_FLAGS) +${PROG}: ${PROG}.debug ${PROG}.symbols + ${OBJCOPY} --strip-debug --add-gnu-debuglink=${PROG}.symbols \ + ${PROG}.debug ${.TARGET} || cp -f ${PROG}.debug ${.TARGET} + +${PROG}.symbols: ${PROG}.debug + ${OBJCOPY} --only-keep-debug ${PROG}.debug ${.TARGET} || \ + touch ${.TARGET} +.endif .endif # defined(PROG) all: objwarn ${PROG} ${SCRIPTS} @@ -106,7 +126,10 @@ all: _manpages .endif .if defined(PROG) -CLEANFILES+= ${PROG} +CLEANFILES+= ${PROG} +.if defined(DEBUG_FLAGS) +CLEANFILES+= ${PROG}.debug ${PROG}.symbols +.endif .endif .if defined(OBJS) @@ -152,12 +175,11 @@ realinstall: _proginstall .ORDER: beforeinstall _proginstall _proginstall: .if defined(PROG) -.if defined(PROGNAME) ${INSTALL} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR}/${PROGNAME} -.else - ${INSTALL} ${STRIP} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ - ${_INSTALLFLAGS} ${PROG} ${DESTDIR}${BINDIR} +.if defined(DEBUG_FLAGS) + -${INSTALL} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} \ + ${_INSTALLFLAGS} ${PROG}.symbols ${DESTDIR}${BINDIR} .endif .endif .endif # !target(realinstall)