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