xref: /freebsd/share/mk/bsd.suffixes-extra.mk (revision 9c20010361854a6034595fdb13cd3583ea13f289)
19c4f1497SDimitry Andric.if !target(__<bsd.suffixes-extra.mk>__)
29c4f1497SDimitry Andric__<bsd.suffixes-extra.mk>__:	.NOTMAIN
39c4f1497SDimitry Andric
49c4f1497SDimitry Andric# prefer .s to a .c, remove stuff not used in the BSD libraries
59c4f1497SDimitry Andric# .pico used for PIC object files
69c4f1497SDimitry Andric# .nossppico used for NOSSP PIC object files
79c4f1497SDimitry Andric# .pieo used for PIE object files
89c4f1497SDimitry Andric.SUFFIXES: .out .o .bc .ll .pico .nossppico .pieo .S .asm .s .c .cc .cpp .cxx .C .f .y .l .ln
99c4f1497SDimitry Andric
109c4f1497SDimitry AndricPICFLAG?=-fpic
119c4f1497SDimitry AndricPIEFLAG?=-fpie
129c4f1497SDimitry Andric
139c4f1497SDimitry Andric.c.pico:
1483812c4eSBrooks Davis	${CC} ${PICFLAG} -DPIC \
1583812c4eSBrooks Davis	    ${SHARED_CFLAGS} ${CFLAGS} \
1683812c4eSBrooks Davis	    -c ${.IMPSRC} -o ${.TARGET}
179c4f1497SDimitry Andric	${CTFCONVERT_CMD}
189c4f1497SDimitry Andric
199c4f1497SDimitry Andric.c.nossppico:
2083812c4eSBrooks Davis	${CC} ${PICFLAG} -DPIC \
2183812c4eSBrooks Davis	    ${SHARED_CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//:C/^-fsanitize.*$//} \
2283812c4eSBrooks Davis	    ${CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//:C/^-fsanitize.*$//} \
2383812c4eSBrooks Davis	    -c ${.IMPSRC} -o ${.TARGET}
249c4f1497SDimitry Andric	${CTFCONVERT_CMD}
259c4f1497SDimitry Andric
269c4f1497SDimitry Andric.c.pieo:
2783812c4eSBrooks Davis	${CC} ${PIEFLAG} -DPIC \
2883812c4eSBrooks Davis	    ${SHARED_CFLAGS} ${CFLAGS} \
2983812c4eSBrooks Davis	    -c ${.IMPSRC} -o ${.TARGET}
309c4f1497SDimitry Andric	${CTFCONVERT_CMD}
319c4f1497SDimitry Andric
329c4f1497SDimitry Andric.cc.pico .C.pico .cpp.pico .cxx.pico:
3383812c4eSBrooks Davis	${CXX} ${PICFLAG} -DPIC \
3483812c4eSBrooks Davis	    ${SHARED_CXXFLAGS} ${CXXFLAGS} \
3583812c4eSBrooks Davis	    -c ${.IMPSRC} -o ${.TARGET}
369c4f1497SDimitry Andric
379c4f1497SDimitry Andric.cc.nossppico .C.nossppico .cpp.nossppico .cxx.nossppico:
3883812c4eSBrooks Davis	${CXX} ${PICFLAG} -DPIC \
3983812c4eSBrooks Davis	    ${SHARED_CXXFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//:C/^-fsanitize.*$//} \
4083812c4eSBrooks Davis	    ${CXXFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//:C/^-fsanitize.*$//} \
4183812c4eSBrooks Davis	    -c ${.IMPSRC} -o ${.TARGET}
429c4f1497SDimitry Andric
439c4f1497SDimitry Andric.cc.pieo .C.pieo .cpp.pieo .cxx.pieo:
4483812c4eSBrooks Davis	${CXX} ${PIEFLAG} ${SHARED_CXXFLAGS} ${CXXFLAGS} \
4583812c4eSBrooks Davis	    -c ${.IMPSRC} -o ${.TARGET}
469c4f1497SDimitry Andric
479c4f1497SDimitry Andric.f.pico:
489c4f1497SDimitry Andric	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
499c4f1497SDimitry Andric	${CTFCONVERT_CMD}
509c4f1497SDimitry Andric
519c4f1497SDimitry Andric.f.nossppico:
5283812c4eSBrooks Davis	${FC} ${PICFLAG} -DPIC \
5383812c4eSBrooks Davis	    ${FFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//} \
5483812c4eSBrooks Davis	    -o ${.TARGET} -c ${.IMPSRC}
559c4f1497SDimitry Andric	${CTFCONVERT_CMD}
569c4f1497SDimitry Andric
579c4f1497SDimitry Andric.s.pico .s.nossppico .s.pieo:
589c4f1497SDimitry Andric	${CC:N${CCACHE_BIN}} -x assembler ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
599c4f1497SDimitry Andric	${CTFCONVERT_CMD}
609c4f1497SDimitry Andric
619c4f1497SDimitry Andric.asm.pico:
629c4f1497SDimitry Andric	${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${PICFLAG} -DPIC \
63*9c200103SBrooks Davis	    ${SHARED_CFLAGS} ${CFLAGS} ${ACFLAGS} \
6483812c4eSBrooks Davis	    -c ${.IMPSRC} -o ${.TARGET}
659c4f1497SDimitry Andric	${CTFCONVERT_CMD}
669c4f1497SDimitry Andric
679c4f1497SDimitry Andric.asm.nossppico:
689c4f1497SDimitry Andric	${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${PICFLAG} -DPIC \
69*9c200103SBrooks Davis	    ${SHARED_CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//} \
7083812c4eSBrooks Davis	    ${CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//} \
7183812c4eSBrooks Davis	    ${ACFLAGS} \
7283812c4eSBrooks Davis	    -c ${.IMPSRC} -o ${.TARGET}
739c4f1497SDimitry Andric	${CTFCONVERT_CMD}
749c4f1497SDimitry Andric
759c4f1497SDimitry Andric.asm.pieo:
769c4f1497SDimitry Andric	${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${PIEFLAG} -DPIC \
77*9c200103SBrooks Davis	    ${SHARED_CFLAGS} ${CFLAGS} ${ACFLAGS} \
7883812c4eSBrooks Davis	    -c ${.IMPSRC} -o ${.TARGET}
799c4f1497SDimitry Andric	${CTFCONVERT_CMD}
809c4f1497SDimitry Andric
819c4f1497SDimitry Andric.S.pico:
8283812c4eSBrooks Davis	${CC:N${CCACHE_BIN}} ${PICFLAG} -DPIC \
83*9c200103SBrooks Davis	    ${SHARED_CFLAGS} ${CFLAGS} ${ACFLAGS} \
849c4f1497SDimitry Andric	    -c ${.IMPSRC} -o ${.TARGET}
859c4f1497SDimitry Andric	${CTFCONVERT_CMD}
869c4f1497SDimitry Andric
879c4f1497SDimitry Andric.S.nossppico:
8883812c4eSBrooks Davis	${CC:N${CCACHE_BIN}} ${PICFLAG} -DPIC \
89*9c200103SBrooks Davis	    ${SHARED_CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//} \
9083812c4eSBrooks Davis	    ${CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//} \
9183812c4eSBrooks Davis	    ${ACFLAGS} \
929c4f1497SDimitry Andric	    -c ${.IMPSRC} -o ${.TARGET}
939c4f1497SDimitry Andric	${CTFCONVERT_CMD}
949c4f1497SDimitry Andric
959c4f1497SDimitry Andric.S.pieo:
9683812c4eSBrooks Davis	${CC:N${CCACHE_BIN}} ${PIEFLAG} -DPIC \
97*9c200103SBrooks Davis	    ${SHARED_CFLAGS} ${CFLAGS} ${ACFLAGS} \
989c4f1497SDimitry Andric	    -c ${.IMPSRC} -o ${.TARGET}
999c4f1497SDimitry Andric	${CTFCONVERT_CMD}
1009c4f1497SDimitry Andric
1019c4f1497SDimitry Andric.endif	# !target(__<bsd.suffixes-extra.mk>__)
102