Makefile.inc revision 1.17
1#	$NetBSD: Makefile.inc,v 1.17 2013/09/10 16:45:33 matt Exp $
2
3.include <bsd.own.mk>
4
5COMMON_DIR:=	${.CURDIR}/common
6.PATH:		${COMMON_DIR}
7
8CPPFLAGS+=	-I${NETBSDSRCDIR}/libexec/ld.elf_so -I${COMMON_DIR} -I.
9
10OBJS+=		crt0.o gcrt0.o crti.o crtn.o
11OBJS+=		crtbegin.o crtend.o
12
13.if ${MKPIC} == "yes"
14OBJS+=		crtbeginS.o
15CFLAGS.crtbegin.c+= -fPIE
16.endif
17.if ${MACHINE_ARCH} == "alpha"
18OBJS+=		crtfm.o
19.endif
20
21realall: ${OBJS}
22
23.if exists(${ARCHDIR}/crtbegin.S)
24crtbegin.o: crtbegin.S
25	${_MKTARGET_COMPILE}
26	${COMPILE.S} ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o
27.else
28crtbegin.o: crtbegin.c crtbegin.h
29	${_MKTARGET_COMPILE}
30	${COMPILE.c} ${CFLAGS.crtbegin.c} ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o
31.endif
32	${LD} -x -r -o ${.TARGET} ${.TARGET}.o
33	rm -f ${.TARGET}.o
34.if ${MKSTRIPIDENT} != "no"
35	${OBJCOPY} -R .ident ${.TARGET}
36.endif
37
38.if exists(${ARCHDIR}/crtbegin.S)
39crtbeginS.o: crtbegin.S
40	${_MKTARGET_COMPILE}
41	${COMPILE.S} -DPIC -DSHARED ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o
42.else
43crtbeginS.o: crtbegin.c crtbegin.h
44	${_MKTARGET_COMPILE}
45	${COMPILE.c} -fPIC -DPIC -DSHARED ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o
46.endif
47	${LD} -x -r -o ${.TARGET} ${.TARGET}.o
48	rm -f ${.TARGET}.o
49.if ${MKSTRIPIDENT} != "no"
50	${OBJCOPY} -R .ident ${.TARGET}
51.endif
52
53crtend.o: crtend.S
54	${_MKTARGET_COMPILE}
55	${COMPILE.S} ${ARCHDIR}/crtend.S -o ${.TARGET}.o
56	${LD} -x -r -o ${.TARGET} ${.TARGET}.o
57	rm -f ${.TARGET}.o
58.if ${MKSTRIPIDENT} != "no"
59	${OBJCOPY} -R .ident ${.TARGET}
60.endif
61
62.if ${MKPIC} != "no"
63PICFLAGS=	-fPIC
64.else
65PICFLAGS=
66.endif
67
68crt0.o: crt0.S crt0-common.c
69	${_MKTARGET_COMPILE}
70	${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o
71	${COMPILE.c} ${PICFLAGS} ${COMMON_DIR}/crt0-common.c -o ${.TARGET}.c.o
72	${LD} -x -r -o ${.TARGET} ${.TARGET}.S.o ${.TARGET}.c.o
73	rm -f ${.TARGET}.S.o ${.TARGET}.c.o
74.if ${MKSTRIPIDENT} != "no"
75	${OBJCOPY} -R .ident ${.TARGET}
76.endif
77
78gcrt0.o: crt0.S crt0-common.c
79	${_MKTARGET_COMPILE}
80	${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o
81	${COMPILE.c} ${PICFLAGS} -DMCRT0 ${COMMON_DIR}/crt0-common.c -o ${.TARGET}.c.o
82	${LD} -x -r -o ${.TARGET} ${.TARGET}.S.o ${.TARGET}.c.o
83	rm -f ${.TARGET}.S.o ${.TARGET}.c.o
84.if ${MKSTRIPIDENT} != "no"
85	${OBJCOPY} -R .ident ${.TARGET}
86.endif
87
88.if ${MACHINE_ARCH} == "alpha"
89# can't do this in Makefile.inc otherwise it will before realall:
90crtfm.o: crtfm.c
91	${_MKTARGET_COMPILE}
92	${COMPILE.c} ${.ALLSRC} -o ${.TARGET}.o
93	${LD} -x -r -o ${.TARGET} ${.TARGET}.o
94	rm -f ${.TARGET}.o
95.endif
96
97GENASSYM_CONF=	${COMMON_DIR}/sysident_assym.cf 
98sysident_assym.h: ${GENASSYM_CONF} ${GENASSYM_EXTRAS}
99	${_MKTARGET_CREATE}
100	cat ${COMMON_DIR}/sysident_assym.cf | \
101	    ${TOOL_GENASSYM} -- ${CC} ${CFLAGS:N-Wa,*} ${CPPFLAGS} ${PROF} \
102	    > sysident_assym.h.tmp && \
103	mv -f sysident_assym.h.tmp sysident_assym.h
104
105CLEANFILES+=	sysident_assym.h
106
107crti.o: crti.S sysident_assym.h sysident.S
108crtn.o: crtn.S
109
110FILES=${OBJS}
111FILESDIR=${LIBDIR}
112CLEANFILES+=${OBJS}
113
114.if ${MKPIC} == "yes"
115SYMLINKS+=	crtbegin.o ${LIBDIR}/crtbeginT.o
116SYMLINKS+=	crtend.o ${LIBDIR}/crtendS.o
117.endif
118
119.include <bsd.prog.mk>
120