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