Use .pieo extension for WITH_PIE bsd.prog.mk output

When object files for programs are built using bsd.prog.mk, and WITH_PIE
is enabled, the extension used is still plain ".o". To be consistent
with bsd.lib.mk, and to allow changes in WITH_PIE settings to propagate
correctly, the extension should be ".pieo" instead.

MFC after:	1 week
Differential Revision: https://reviews.freebsd.org/D49966
This commit is contained in:
Dimitry Andric 2025-04-21 21:52:29 +02:00
parent 532b45fe10
commit 245bb01106
2 changed files with 9 additions and 8 deletions

View file

@ -4,7 +4,7 @@
.include <bsd.compiler.mk>
.include <bsd.linker.mk>
.SUFFIXES: .out .o .bc .c .cc .cpp .cxx .C .m .y .l .ll .ln .s .S .asm
.include <bsd.suffixes-extra.mk>
# XXX The use of COPTS in modern makefiles is discouraged.
.if defined(COPTS)
@ -47,13 +47,14 @@ LDFLAGS+= -Wl,-znorelro
LDFLAGS+= -Wl,-zrelro
.endif
.endif
.if ${MK_PIE} != "no"
# Static PIE is not yet supported/tested.
.if !defined(NO_SHARED) || ${NO_SHARED:tl} == "no"
.if ${MK_PIE} != "no" && (!defined(NO_SHARED) || ${NO_SHARED:tl} == "no")
CFLAGS+= -fPIE
CXXFLAGS+= -fPIE
LDFLAGS+= -pie
.endif
OBJ_EXT=pieo
.else
OBJ_EXT=o
.endif
.if ${MK_RETPOLINE} != "no"
.if ${COMPILER_FEATURES:Mretpoline} && ${LINKER_FEATURES:Mretpoline}
@ -161,7 +162,7 @@ PROGNAME?= ${PROG}
.if defined(SRCS)
OBJS+= ${SRCS:N*.h:${OBJS_SRCS_FILTER:ts:}:S/$/.o/g}
OBJS+= ${SRCS:N*.h:${OBJS_SRCS_FILTER:ts:}:S/$/.${OBJ_EXT}/g}
# LLVM bitcode / textual IR representations of the program
BCOBJS+=${SRCS:N*.[hsS]:N*.asm:${OBJS_SRCS_FILTER:ts:}:S/$/.bco/g}
@ -197,10 +198,10 @@ SRCS= ${PROG}.c
# - the name of the object gets put into the executable symbol table instead of
# the name of a variable temporary object.
# - it's useful to keep objects around for crunching.
OBJS+= ${PROG}.o
OBJS+= ${PROG}.${OBJ_EXT}
BCOBJS+= ${PROG}.bc
LLOBJS+= ${PROG}.ll
CLEANFILES+= ${PROG}.o ${PROG}.bc ${PROG}.ll
CLEANFILES+= ${PROG}.${OBJ_EXT} ${PROG}.bc ${PROG}.ll
.if target(beforelinking)
beforelinking: ${OBJS}

View file

@ -110,7 +110,7 @@ _PROGS_ALL_SRCS+= ${s}
.if !empty(_PROGS_COMMON_SRCS)
_PROGS_COMMON_OBJS= ${_PROGS_COMMON_SRCS:M*.[dhly]}
.if !empty(_PROGS_COMMON_SRCS:N*.[dhly])
_PROGS_COMMON_OBJS+= ${_PROGS_COMMON_SRCS:N*.[dhly]:${OBJS_SRCS_FILTER:ts:}:S/$/.o/g}
_PROGS_COMMON_OBJS+= ${_PROGS_COMMON_SRCS:N*.[dhly]:${OBJS_SRCS_FILTER:ts:}:S/$/.${OBJ_EXT}/g}
.endif
.endif