xref: /minix/lib/csu/common/Makefile.inc (revision 0a6a1f1d)
1#	$NetBSD: Makefile.inc,v 1.25 2014/03/04 17:57:56 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
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	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}
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	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}
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	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}
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} -r -o ${.TARGET}.o ${.TARGET}.S.o ${.TARGET}.c.o
86	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}
87	rm -f ${.TARGET}.S.o ${.TARGET}.c.o ${.TARGET}.o
88.if ${MKSTRIPIDENT} != "no"
89	${OBJCOPY} -R .ident ${.TARGET}
90.endif
91
92gcrt0.o: crt0.S crt0-common.c
93	${_MKTARGET_COMPILE}
94	${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o
95	${COMPILE.c} ${MY_PICFLAGS} -DMCRT0 ${COMMON_DIR}/crt0-common.c -o ${.TARGET}.c.o
96	${LD} -r -o ${.TARGET}.o ${.TARGET}.S.o ${.TARGET}.c.o
97	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}
98	rm -f ${.TARGET}.S.o ${.TARGET}.c.o ${.TARGET}.o
99.if ${MKSTRIPIDENT} != "no"
100	${OBJCOPY} -R .ident ${.TARGET}
101.endif
102
103.if ${MACHINE_ARCH} == "alpha"
104# can't do this in Makefile.inc otherwise it will before realall:
105crtfm.o: crtfm.c
106	${_MKTARGET_COMPILE}
107	${COMPILE.c} ${.ALLSRC} -o ${.TARGET}.o
108	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET}
109	rm -f ${.TARGET}.o
110.endif
111
112GENASSYM_CONF=	${COMMON_DIR}/sysident_assym.cf
113sysident_assym.h: ${GENASSYM_CONF} ${GENASSYM_EXTRAS} ${NETBSDSRCDIR}/sys/sys/param.h
114	${_MKTARGET_CREATE}
115	cat ${COMMON_DIR}/sysident_assym.cf | \
116	    ${TOOL_GENASSYM} -- ${CC} ${CFLAGS:N-Wa,*} ${CPPFLAGS} ${PROF} \
117	    ${GENASSYM_CPPFLAGS} > sysident_assym.h.tmp && \
118	mv -f sysident_assym.h.tmp sysident_assym.h
119
120CLEANFILES+=	sysident_assym.h
121
122crti.o: crti.S sysident_assym.h sysident.S
123crtn.o: crtn.S
124
125FILES=${OBJS}
126FILESDIR=${LIBDIR}
127CLEANFILES+=${OBJS}
128
129.if ${MKPIC} == "yes"
130SYMLINKS+=	crtbegin.o ${LIBDIR}/crtbeginT.o
131SYMLINKS+=	crtend.o ${LIBDIR}/crtendS.o
132.endif
133
134.include <bsd.prog.mk>
135