xref: /freebsd/share/mk/bsd.suffixes-extra.mk (revision 9c20010361854a6034595fdb13cd3583ea13f289)
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 \
15	    ${SHARED_CFLAGS} ${CFLAGS} \
16	    -c ${.IMPSRC} -o ${.TARGET}
17	${CTFCONVERT_CMD}
18
19.c.nossppico:
20	${CC} ${PICFLAG} -DPIC \
21	    ${SHARED_CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//:C/^-fsanitize.*$//} \
22	    ${CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//:C/^-fsanitize.*$//} \
23	    -c ${.IMPSRC} -o ${.TARGET}
24	${CTFCONVERT_CMD}
25
26.c.pieo:
27	${CC} ${PIEFLAG} -DPIC \
28	    ${SHARED_CFLAGS} ${CFLAGS} \
29	    -c ${.IMPSRC} -o ${.TARGET}
30	${CTFCONVERT_CMD}
31
32.cc.pico .C.pico .cpp.pico .cxx.pico:
33	${CXX} ${PICFLAG} -DPIC \
34	    ${SHARED_CXXFLAGS} ${CXXFLAGS} \
35	    -c ${.IMPSRC} -o ${.TARGET}
36
37.cc.nossppico .C.nossppico .cpp.nossppico .cxx.nossppico:
38	${CXX} ${PICFLAG} -DPIC \
39	    ${SHARED_CXXFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//:C/^-fsanitize.*$//} \
40	    ${CXXFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//:C/^-fsanitize.*$//} \
41	    -c ${.IMPSRC} -o ${.TARGET}
42
43.cc.pieo .C.pieo .cpp.pieo .cxx.pieo:
44	${CXX} ${PIEFLAG} ${SHARED_CXXFLAGS} ${CXXFLAGS} \
45	    -c ${.IMPSRC} -o ${.TARGET}
46
47.f.pico:
48	${FC} ${PICFLAG} -DPIC ${FFLAGS} -o ${.TARGET} -c ${.IMPSRC}
49	${CTFCONVERT_CMD}
50
51.f.nossppico:
52	${FC} ${PICFLAG} -DPIC \
53	    ${FFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//} \
54	    -o ${.TARGET} -c ${.IMPSRC}
55	${CTFCONVERT_CMD}
56
57.s.pico .s.nossppico .s.pieo:
58	${CC:N${CCACHE_BIN}} -x assembler ${ACFLAGS} -c ${.IMPSRC} -o ${.TARGET}
59	${CTFCONVERT_CMD}
60
61.asm.pico:
62	${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${PICFLAG} -DPIC \
63	    ${SHARED_CFLAGS} ${CFLAGS} ${ACFLAGS} \
64	    -c ${.IMPSRC} -o ${.TARGET}
65	${CTFCONVERT_CMD}
66
67.asm.nossppico:
68	${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${PICFLAG} -DPIC \
69	    ${SHARED_CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//} \
70	    ${CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//} \
71	    ${ACFLAGS} \
72	    -c ${.IMPSRC} -o ${.TARGET}
73	${CTFCONVERT_CMD}
74
75.asm.pieo:
76	${CC:N${CCACHE_BIN}} -x assembler-with-cpp ${PIEFLAG} -DPIC \
77	    ${SHARED_CFLAGS} ${CFLAGS} ${ACFLAGS} \
78	    -c ${.IMPSRC} -o ${.TARGET}
79	${CTFCONVERT_CMD}
80
81.S.pico:
82	${CC:N${CCACHE_BIN}} ${PICFLAG} -DPIC \
83	    ${SHARED_CFLAGS} ${CFLAGS} ${ACFLAGS} \
84	    -c ${.IMPSRC} -o ${.TARGET}
85	${CTFCONVERT_CMD}
86
87.S.nossppico:
88	${CC:N${CCACHE_BIN}} ${PICFLAG} -DPIC \
89	    ${SHARED_CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//} \
90	    ${CFLAGS:C/^-fstack-protector.*$//:C/^-fstack-clash-protection.*$//} \
91	    ${ACFLAGS} \
92	    -c ${.IMPSRC} -o ${.TARGET}
93	${CTFCONVERT_CMD}
94
95.S.pieo:
96	${CC:N${CCACHE_BIN}} ${PIEFLAG} -DPIC \
97	    ${SHARED_CFLAGS} ${CFLAGS} ${ACFLAGS} \
98	    -c ${.IMPSRC} -o ${.TARGET}
99	${CTFCONVERT_CMD}
100
101.endif	# !target(__<bsd.suffixes-extra.mk>__)
102