Makefile.inc revision 1.28
11.28Smartin#	$NetBSD: Makefile.inc,v 1.28 2016/04/04 18:29:07 martin Exp $
21.1Sjoerg
31.1Sjoerg.include <bsd.own.mk>
41.1Sjoerg
51.19Suwe# XXX: FIXME: This is defined in bsd.lib.mk
61.19SuwePICFLAGS ?= -fPIC
71.19Suwe
81.3SdrochnerCOMMON_DIR:=	${.CURDIR}/common
91.1Sjoerg.PATH:		${COMMON_DIR}
101.1Sjoerg
111.1SjoergCPPFLAGS+=	-I${NETBSDSRCDIR}/libexec/ld.elf_so -I${COMMON_DIR} -I.
121.1Sjoerg
131.1SjoergOBJS+=		crt0.o gcrt0.o crti.o crtn.o
141.13SjoergOBJS+=		crtbegin.o crtend.o
151.28SmartinOBJS+=		sysident.o
161.13Sjoerg
171.13Sjoerg.if ${MKPIC} == "yes"
181.13SjoergOBJS+=		crtbeginS.o
191.15SmattCFLAGS.crtbegin.c+= -fPIE
201.26Smrg# XXXGCC5 - GCC 5 miscompiles crtbeginS.c on many platforms.  on SPARC it
211.26Smrg# XXXGCC5   emits "clr %g1; call %g1", which is effectively jumping to zero.
221.26Smrg. if defined(HAVE_GCC) && ${HAVE_GCC} == 53 && \
231.26Smrg     ${MACHINE_ARCH} != "i386" && ${MACHINE_ARCH} != "amd64"
241.27SskrllCFLAGS.crt0-common.c+=	-O1
251.26SmrgCFLAGS.crtbeginS.c+=	-O1
261.26Smrg. endif
271.13Sjoerg.endif
281.26Smrg
291.16Smatt.if ${MACHINE_ARCH} == "alpha"
301.16SmattOBJS+=		crtfm.o
311.16Smatt.endif
321.1Sjoerg
331.23Smartin.if ${CSU_MACHINE_ARCH} == "sparc64"
341.21Smartin# create helper objects for the compiler to mark compiler memory models
351.21Smartin.for m in medlow medmid medany
361.21Smartinsparc_mc${m}.o:	compident.S sysident_assym.h
371.21Smartin	${CC} ${ASFLAGS} -I. -DCONTENT=\"${m}\\0\\0\" -DCONTENTLENGTH=8 -c \
381.21Smartin		-o $@ ${COMMON_DIR}/compident.S
391.21Smartin.endfor
401.21SmartinOBJS += sparc_mcmedlow.o sparc_mcmedmid.o sparc_mcmedany.o
411.21Smartin.endif
421.21Smartin
431.1Sjoergrealall: ${OBJS}
441.1Sjoerg
451.10Smatt.if exists(${ARCHDIR}/crtbegin.S)
461.10Smattcrtbegin.o: crtbegin.S
471.8Smatt	${_MKTARGET_COMPILE}
481.10Smatt	${COMPILE.S} ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o
491.8Smatt.else
501.10Smattcrtbegin.o: crtbegin.c crtbegin.h
511.1Sjoerg	${_MKTARGET_COMPILE}
521.15Smatt	${COMPILE.c} ${CFLAGS.crtbegin.c} ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o
531.8Smatt.endif
541.24Smatt	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} 
551.1Sjoerg	rm -f ${.TARGET}.o
561.1Sjoerg.if ${MKSTRIPIDENT} != "no"
571.1Sjoerg	${OBJCOPY} -R .ident ${.TARGET}
581.1Sjoerg.endif
591.1Sjoerg
601.10Smatt.if exists(${ARCHDIR}/crtbegin.S)
611.10SmattcrtbeginS.o: crtbegin.S
621.8Smatt	${_MKTARGET_COMPILE}
631.19Suwe	${COMPILE.S} ${PICFLAGS} -DSHARED ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o
641.8Smatt.else
651.10SmattcrtbeginS.o: crtbegin.c crtbegin.h
661.1Sjoerg	${_MKTARGET_COMPILE}
671.26Smrg	${COMPILE.c} ${CFLAGS.crtbeginS.c} ${PICFLAGS} -DSHARED ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o
681.8Smatt.endif
691.24Smatt	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} 
701.1Sjoerg	rm -f ${.TARGET}.o
711.1Sjoerg.if ${MKSTRIPIDENT} != "no"
721.1Sjoerg	${OBJCOPY} -R .ident ${.TARGET}
731.1Sjoerg.endif
741.1Sjoerg
751.1Sjoergcrtend.o: crtend.S
761.1Sjoerg	${_MKTARGET_COMPILE}
771.2Sjoerg	${COMPILE.S} ${ARCHDIR}/crtend.S -o ${.TARGET}.o
781.24Smatt	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} 
791.1Sjoerg	rm -f ${.TARGET}.o
801.1Sjoerg.if ${MKSTRIPIDENT} != "no"
811.1Sjoerg	${OBJCOPY} -R .ident ${.TARGET}
821.1Sjoerg.endif
831.1Sjoerg
841.1Sjoerg.if ${MKPIC} != "no"
851.18SjoergMY_PICFLAGS=	${PICFLAGS}
861.1Sjoerg.else
871.18SjoergMY_PICFLAGS=
881.1Sjoerg.endif
891.1Sjoerg
901.6Suwecrt0.o: crt0.S crt0-common.c
911.1Sjoerg	${_MKTARGET_COMPILE}
921.6Suwe	${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o
931.27Sskrll	${COMPILE.c} ${CFLAGS.crt0-common.c} ${MY_PICFLAGS} ${COMMON_DIR}/crt0-common.c -o ${.TARGET}.c.o
941.24Smatt	${LD} -r -o ${.TARGET}.o ${.TARGET}.S.o ${.TARGET}.c.o
951.24Smatt	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} 
961.24Smatt	rm -f ${.TARGET}.S.o ${.TARGET}.c.o ${.TARGET}.o
971.1Sjoerg.if ${MKSTRIPIDENT} != "no"
981.1Sjoerg	${OBJCOPY} -R .ident ${.TARGET}
991.1Sjoerg.endif
1001.1Sjoerg
1011.6Suwegcrt0.o: crt0.S crt0-common.c
1021.1Sjoerg	${_MKTARGET_COMPILE}
1031.6Suwe	${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o
1041.18Sjoerg	${COMPILE.c} ${MY_PICFLAGS} -DMCRT0 ${COMMON_DIR}/crt0-common.c -o ${.TARGET}.c.o
1051.24Smatt	${LD} -r -o ${.TARGET}.o ${.TARGET}.S.o ${.TARGET}.c.o
1061.24Smatt	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} 
1071.24Smatt	rm -f ${.TARGET}.S.o ${.TARGET}.c.o ${.TARGET}.o
1081.1Sjoerg.if ${MKSTRIPIDENT} != "no"
1091.1Sjoerg	${OBJCOPY} -R .ident ${.TARGET}
1101.1Sjoerg.endif
1111.1Sjoerg
1121.16Smatt.if ${MACHINE_ARCH} == "alpha"
1131.16Smatt# can't do this in Makefile.inc otherwise it will before realall:
1141.16Smattcrtfm.o: crtfm.c
1151.16Smatt	${_MKTARGET_COMPILE}
1161.16Smatt	${COMPILE.c} ${.ALLSRC} -o ${.TARGET}.o
1171.24Smatt	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} 
1181.16Smatt	rm -f ${.TARGET}.o
1191.16Smatt.endif
1201.16Smatt
1211.17SmattGENASSYM_CONF=	${COMMON_DIR}/sysident_assym.cf 
1221.20Sjoergsysident_assym.h: ${GENASSYM_CONF} ${GENASSYM_EXTRAS} ${NETBSDSRCDIR}/sys/sys/param.h
1231.1Sjoerg	${_MKTARGET_CREATE}
1241.1Sjoerg	cat ${COMMON_DIR}/sysident_assym.cf | \
1251.7Sjoerg	    ${TOOL_GENASSYM} -- ${CC} ${CFLAGS:N-Wa,*} ${CPPFLAGS} ${PROF} \
1261.25Sjoerg	    ${GENASSYM_CPPFLAGS} > sysident_assym.h.tmp && \
1271.1Sjoerg	mv -f sysident_assym.h.tmp sysident_assym.h
1281.1Sjoerg
1291.1SjoergCLEANFILES+=	sysident_assym.h
1301.1Sjoerg
1311.17Smattcrti.o: crti.S sysident_assym.h sysident.S
1321.1Sjoergcrtn.o: crtn.S
1331.28Smartinsysident.o:	sysident.S sysident_assym.h
1341.1Sjoerg
1351.1SjoergFILES=${OBJS}
1361.1SjoergFILESDIR=${LIBDIR}
1371.1SjoergCLEANFILES+=${OBJS}
1381.13Sjoerg
1391.13Sjoerg.if ${MKPIC} == "yes"
1401.1SjoergSYMLINKS+=	crtbegin.o ${LIBDIR}/crtbeginT.o
1411.1SjoergSYMLINKS+=	crtend.o ${LIBDIR}/crtendS.o
1421.13Sjoerg.endif
1431.1Sjoerg
1441.1Sjoerg.include <bsd.prog.mk>
145