Explicitly specify that the beforelinking target depends on the
generated object files, ensuring that the beforelinking recipe won't be executed until compilation has finished. Also define SHLIB_NAME_FULL to denote ${SHLIB_NAME}.debug if DEBUG_FILES is set and ${SHLIB_NAME} otherwise, which helps avoid obfuscating the compilation and linking rules. Reviewed by: emaste Approved by: emaste (co-mentor)
This commit is contained in:
parent
a381b05232
commit
2286811d7e
@ -165,19 +165,22 @@ SOBJS+= ${OBJS:.o=.So}
|
||||
.if defined(SHLIB_NAME)
|
||||
_LIBS+= ${SHLIB_NAME}
|
||||
|
||||
.if defined(DEBUG_FLAGS)
|
||||
SHLIB_NAME_FULL=${SHLIB_NAME}.debug
|
||||
.else
|
||||
SHLIB_NAME_FULL=${SHLIB_NAME}
|
||||
.endif
|
||||
|
||||
SOLINKOPTS= -shared -Wl,-x
|
||||
.if !defined(ALLOW_SHARED_TEXTREL)
|
||||
SOLINKOPTS+= -Wl,--fatal-warnings -Wl,--warn-shared-textrel
|
||||
.endif
|
||||
|
||||
.if target(beforelinking)
|
||||
${SHLIB_NAME}: beforelinking
|
||||
.endif
|
||||
.if defined(DEBUG_FLAGS)
|
||||
${SHLIB_NAME}.debug: ${SOBJS}
|
||||
.else
|
||||
${SHLIB_NAME}: ${SOBJS}
|
||||
beforelinking: ${SOBJS}
|
||||
${SHLIB_NAME_FULL}: beforelinking
|
||||
.endif
|
||||
${SHLIB_NAME_FULL}: ${SOBJS}
|
||||
@${ECHO} building shared library ${SHLIB_NAME}
|
||||
@rm -f ${SHLIB_NAME} ${SHLIB_LINK}
|
||||
.if defined(SHLIB_LINK)
|
||||
@ -197,12 +200,12 @@ ${SHLIB_NAME}: ${SOBJS}
|
||||
.endif
|
||||
|
||||
.if defined(DEBUG_FLAGS)
|
||||
${SHLIB_NAME}: ${SHLIB_NAME}.debug ${SHLIB_NAME}.symbols
|
||||
${SHLIB_NAME}: ${SHLIB_NAME_FULL} ${SHLIB_NAME}.symbols
|
||||
${OBJCOPY} --strip-debug --add-gnu-debuglink=${SHLIB_NAME}.symbols \
|
||||
${SHLIB_NAME}.debug ${.TARGET}
|
||||
${SHLIB_NAME_FULL} ${.TARGET}
|
||||
|
||||
${SHLIB_NAME}.symbols: ${SHLIB_NAME}.debug
|
||||
${OBJCOPY} --only-keep-debug ${SHLIB_NAME}.debug ${.TARGET}
|
||||
${SHLIB_NAME}.symbols: ${SHLIB_NAME_FULL}
|
||||
${OBJCOPY} --only-keep-debug ${SHLIB_NAME_FULL} ${.TARGET}
|
||||
.endif
|
||||
.endif
|
||||
|
||||
|
@ -46,6 +46,7 @@ PROG= ${PROG_CXX}
|
||||
OBJS+= ${SRCS:N*.h:R:S/$/.o/g}
|
||||
|
||||
.if target(beforelinking)
|
||||
beforelinking: ${OBJS}
|
||||
${PROG}: beforelinking
|
||||
.endif
|
||||
${PROG}: ${OBJS}
|
||||
@ -75,6 +76,7 @@ SRCS= ${PROG}.c
|
||||
OBJS= ${PROG}.o
|
||||
|
||||
.if target(beforelinking)
|
||||
beforelinking: ${OBJS}
|
||||
${PROG}: beforelinking
|
||||
.endif
|
||||
${PROG}: ${OBJS}
|
||||
|
Loading…
Reference in New Issue
Block a user