Makefile.inc revision 1.23
1#	$NetBSD: Makefile.inc,v 1.23 2013/11/17 11:16:09 martin 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
24.if ${CSU_MACHINE_ARCH} == "sparc64"
25# create helper objects for the compiler to mark compiler memory models
26.for m in medlow medmid medany
27sparc_mc${m}.o:	compident.S sysident_assym.h
28	${CC} ${ASFLAGS} -I. -DCONTENT=\"${m}\\0\\0\" -DCONTENTLENGTH=8 -c \
29		-o $@ ${COMMON_DIR}/compident.S
30.endfor
31OBJS += sparc_mcmedlow.o sparc_mcmedmid.o sparc_mcmedany.o
32.endif
33
34realall: ${OBJS}
35
36.if exists(${ARCHDIR}/crtbegin.S)
37crtbegin.o: crtbegin.S
38	${_MKTARGET_COMPILE}
39	${COMPILE.S} ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o
40.else
41crtbegin.o: crtbegin.c crtbegin.h
42	${_MKTARGET_COMPILE}
43	${COMPILE.c} ${CFLAGS.crtbegin.c} ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o
44.endif
45	${LD} -x -r -o ${.TARGET} ${.TARGET}.o
46	rm -f ${.TARGET}.o
47.if ${MKSTRIPIDENT} != "no"
48	${OBJCOPY} -R .ident ${.TARGET}
49.endif
50
51.if exists(${ARCHDIR}/crtbegin.S)
52crtbeginS.o: crtbegin.S
53	${_MKTARGET_COMPILE}
54	${COMPILE.S} ${PICFLAGS} -DSHARED ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o
55.else
56crtbeginS.o: crtbegin.c crtbegin.h
57	${_MKTARGET_COMPILE}
58	${COMPILE.c} ${PICFLAGS} -DSHARED ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o
59.endif
60	${LD} -x -r -o ${.TARGET} ${.TARGET}.o
61	rm -f ${.TARGET}.o
62.if ${MKSTRIPIDENT} != "no"
63	${OBJCOPY} -R .ident ${.TARGET}
64.endif
65
66crtend.o: crtend.S
67	${_MKTARGET_COMPILE}
68	${COMPILE.S} ${ARCHDIR}/crtend.S -o ${.TARGET}.o
69	${LD} -x -r -o ${.TARGET} ${.TARGET}.o
70	rm -f ${.TARGET}.o
71.if ${MKSTRIPIDENT} != "no"
72	${OBJCOPY} -R .ident ${.TARGET}
73.endif
74
75.if ${MKPIC} != "no"
76MY_PICFLAGS=	${PICFLAGS}
77.else
78MY_PICFLAGS=
79.endif
80
81crt0.o: crt0.S crt0-common.c
82	${_MKTARGET_COMPILE}
83	${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o
84	${COMPILE.c} ${MY_PICFLAGS} ${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
91gcrt0.o: crt0.S crt0-common.c
92	${_MKTARGET_COMPILE}
93	${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o
94	${COMPILE.c} ${MY_PICFLAGS} -DMCRT0 ${COMMON_DIR}/crt0-common.c -o ${.TARGET}.c.o
95	${LD} -x -r -o ${.TARGET} ${.TARGET}.S.o ${.TARGET}.c.o
96	rm -f ${.TARGET}.S.o ${.TARGET}.c.o
97.if ${MKSTRIPIDENT} != "no"
98	${OBJCOPY} -R .ident ${.TARGET}
99.endif
100
101.if ${MACHINE_ARCH} == "alpha"
102# can't do this in Makefile.inc otherwise it will before realall:
103crtfm.o: crtfm.c
104	${_MKTARGET_COMPILE}
105	${COMPILE.c} ${.ALLSRC} -o ${.TARGET}.o
106	${LD} -x -r -o ${.TARGET} ${.TARGET}.o
107	rm -f ${.TARGET}.o
108.endif
109
110GENASSYM_CONF=	${COMMON_DIR}/sysident_assym.cf 
111sysident_assym.h: ${GENASSYM_CONF} ${GENASSYM_EXTRAS} ${NETBSDSRCDIR}/sys/sys/param.h
112	${_MKTARGET_CREATE}
113	cat ${COMMON_DIR}/sysident_assym.cf | \
114	    ${TOOL_GENASSYM} -- ${CC} ${CFLAGS:N-Wa,*} ${CPPFLAGS} ${PROF} \
115	    > sysident_assym.h.tmp && \
116	mv -f sysident_assym.h.tmp sysident_assym.h
117
118CLEANFILES+=	sysident_assym.h
119
120crti.o: crti.S sysident_assym.h sysident.S
121crtn.o: crtn.S
122
123FILES=${OBJS}
124FILESDIR=${LIBDIR}
125CLEANFILES+=${OBJS}
126
127.if ${MKPIC} == "yes"
128SYMLINKS+=	crtbegin.o ${LIBDIR}/crtbeginT.o
129SYMLINKS+=	crtend.o ${LIBDIR}/crtendS.o
130.endif
131
132.include <bsd.prog.mk>
133