xref: /freebsd/share/mk/bsd.suffixes-extra.mk (revision 92f340d137ba5d6db7610ba1dae35842e2c9c8ea)
1.if !target(__<bsd.suffixes-extra.mk>__)
2__<bsd.suffixes-extra.mk>__:	.NOTMAIN
3
4# prefer .s to a .c, remove stuff not used in the BSD libraries
5# .pico used for PIC object files
6# .nossppico used for NOSSP PIC object files
7# .pieo used for PIE object files
8.SUFFIXES: .out .o .bc .ll .pico .nossppico .pieo .S .asm .s .c .cc .cpp .cxx .C .f .y .l .ln
9
10PICFLAG?=-fpic
11PIEFLAG?=-fpie
12
13.c.pico:
14	${CC} ${PICFLAG} -DPIC ${SHARED_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
15	${CTFCONVERT_CMD}
16
17.c.nossppico:
18	${CC} ${PICFLAG} -DPIC ${SHARED_CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//:C/^-fsanitize.*$//} ${CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//:C/^-fsanitize.*$//} -c ${.IMPSRC} -o ${.TARGET}
19	${CTFCONVERT_CMD}
20
21.c.pieo:
22	${CC} ${PIEFLAG} -DPIC ${SHARED_CFLAGS} ${CFLAGS} -c ${.IMPSRC} -o ${.TARGET}
23	${CTFCONVERT_CMD}
24
25.cc.pico .C.pico .cpp.pico .cxx.pico:
26	${CXX} ${PICFLAG} -DPIC ${SHARED_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
27
28.cc.nossppico .C.nossppico .cpp.nossppico .cxx.nossppico:
29	${CXX} ${PICFLAG} -DPIC ${SHARED_CXXFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//:C/^-fsanitize.*$//} ${CXXFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//:C/^-fsanitize.*$//} -c ${.IMPSRC} -o ${.TARGET}
30
31.cc.pieo .C.pieo .cpp.pieo .cxx.pieo:
32	${CXX} ${PIEFLAG} ${SHARED_CXXFLAGS} ${CXXFLAGS} -c ${.IMPSRC} -o ${.TARGET}
33
34.f.pico:
35	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
36	${CTFCONVERT_CMD}
37
38.f.nossppico:
39	${FC} ${PICFLAG} -DPIC ${FFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//} -o ${.TARGET} -c ${.IMPSRC}
40	${CTFCONVERT_CMD}
41
42.s.pico .s.nossppico .s.pieo:
43	${CC:N${CCACHE_BIN}} -x assembler ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
44	${CTFCONVERT_CMD}
45
46.asm.pico:
47	${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${PICFLAG} -DPIC \
48	    ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
49	${CTFCONVERT_CMD}
50
51.asm.nossppico:
52	${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${PICFLAG} -DPIC \
53	    ${CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
54	${CTFCONVERT_CMD}
55
56.asm.pieo:
57	${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${PIEFLAG} -DPIC \
58	    ${CFLAGS} ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
59	${CTFCONVERT_CMD}
60
61.S.pico:
62	${CC:N${CCACHE_BIN}} ${PICFLAG} -DPIC ${CFLAGS} ${ACFLAGS} \
63	    -c ${.IMPSRC} -o ${.TARGET}
64	${CTFCONVERT_CMD}
65
66.S.nossppico:
67	${CC:N${CCACHE_BIN}} ${PICFLAG} -DPIC ${CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//} ${ACFLAGS} \
68	    -c ${.IMPSRC} -o ${.TARGET}
69	${CTFCONVERT_CMD}
70
71.S.pieo:
72	${CC:N${CCACHE_BIN}} ${PIEFLAG} -DPIC ${CFLAGS} ${ACFLAGS} \
73	    -c ${.IMPSRC} -o ${.TARGET}
74	${CTFCONVERT_CMD}
75
76.endif	# !target(__<bsd.suffixes-extra.mk>__)
77