Makefile.inc revision 1.27
11.27Sskrll#	$NetBSD: Makefile.inc,v 1.27 2016/03/29 21:23:05 skrll 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.13Sjoerg
161.13Sjoerg.if ${MKPIC} == "yes"
171.13SjoergOBJS+=		crtbeginS.o
181.15SmattCFLAGS.crtbegin.c+= -fPIE
191.26Smrg# XXXGCC5 - GCC 5 miscompiles crtbeginS.c on many platforms.  on SPARC it
201.26Smrg# XXXGCC5   emits "clr %g1; call %g1", which is effectively jumping to zero.
211.26Smrg. if defined(HAVE_GCC) && ${HAVE_GCC} == 53 && \
221.26Smrg     ${MACHINE_ARCH} != "i386" && ${MACHINE_ARCH} != "amd64"
231.27SskrllCFLAGS.crt0-common.c+=	-O1
241.26SmrgCFLAGS.crtbeginS.c+=	-O1
251.26Smrg. endif
261.13Sjoerg.endif
271.26Smrg
281.16Smatt.if ${MACHINE_ARCH} == "alpha"
291.16SmattOBJS+=		crtfm.o
301.16Smatt.endif
311.1Sjoerg
321.23Smartin.if ${CSU_MACHINE_ARCH} == "sparc64"
331.21Smartin# create helper objects for the compiler to mark compiler memory models
341.21Smartin.for m in medlow medmid medany
351.21Smartinsparc_mc${m}.o:	compident.S sysident_assym.h
361.21Smartin	${CC} ${ASFLAGS} -I. -DCONTENT=\"${m}\\0\\0\" -DCONTENTLENGTH=8 -c \
371.21Smartin		-o $@ ${COMMON_DIR}/compident.S
381.21Smartin.endfor
391.21SmartinOBJS += sparc_mcmedlow.o sparc_mcmedmid.o sparc_mcmedany.o
401.21Smartin.endif
411.21Smartin
421.1Sjoergrealall: ${OBJS}
431.1Sjoerg
441.10Smatt.if exists(${ARCHDIR}/crtbegin.S)
451.10Smattcrtbegin.o: crtbegin.S
461.8Smatt	${_MKTARGET_COMPILE}
471.10Smatt	${COMPILE.S} ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o
481.8Smatt.else
491.10Smattcrtbegin.o: crtbegin.c crtbegin.h
501.1Sjoerg	${_MKTARGET_COMPILE}
511.15Smatt	${COMPILE.c} ${CFLAGS.crtbegin.c} ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o
521.8Smatt.endif
531.24Smatt	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} 
541.1Sjoerg	rm -f ${.TARGET}.o
551.1Sjoerg.if ${MKSTRIPIDENT} != "no"
561.1Sjoerg	${OBJCOPY} -R .ident ${.TARGET}
571.1Sjoerg.endif
581.1Sjoerg
591.10Smatt.if exists(${ARCHDIR}/crtbegin.S)
601.10SmattcrtbeginS.o: crtbegin.S
611.8Smatt	${_MKTARGET_COMPILE}
621.19Suwe	${COMPILE.S} ${PICFLAGS} -DSHARED ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o
631.8Smatt.else
641.10SmattcrtbeginS.o: crtbegin.c crtbegin.h
651.1Sjoerg	${_MKTARGET_COMPILE}
661.26Smrg	${COMPILE.c} ${CFLAGS.crtbeginS.c} ${PICFLAGS} -DSHARED ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o
671.8Smatt.endif
681.24Smatt	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} 
691.1Sjoerg	rm -f ${.TARGET}.o
701.1Sjoerg.if ${MKSTRIPIDENT} != "no"
711.1Sjoerg	${OBJCOPY} -R .ident ${.TARGET}
721.1Sjoerg.endif
731.1Sjoerg
741.1Sjoergcrtend.o: crtend.S
751.1Sjoerg	${_MKTARGET_COMPILE}
761.2Sjoerg	${COMPILE.S} ${ARCHDIR}/crtend.S -o ${.TARGET}.o
771.24Smatt	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} 
781.1Sjoerg	rm -f ${.TARGET}.o
791.1Sjoerg.if ${MKSTRIPIDENT} != "no"
801.1Sjoerg	${OBJCOPY} -R .ident ${.TARGET}
811.1Sjoerg.endif
821.1Sjoerg
831.1Sjoerg.if ${MKPIC} != "no"
841.18SjoergMY_PICFLAGS=	${PICFLAGS}
851.1Sjoerg.else
861.18SjoergMY_PICFLAGS=
871.1Sjoerg.endif
881.1Sjoerg
891.6Suwecrt0.o: crt0.S crt0-common.c
901.1Sjoerg	${_MKTARGET_COMPILE}
911.6Suwe	${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o
921.27Sskrll	${COMPILE.c} ${CFLAGS.crt0-common.c} ${MY_PICFLAGS} ${COMMON_DIR}/crt0-common.c -o ${.TARGET}.c.o
931.24Smatt	${LD} -r -o ${.TARGET}.o ${.TARGET}.S.o ${.TARGET}.c.o
941.24Smatt	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} 
951.24Smatt	rm -f ${.TARGET}.S.o ${.TARGET}.c.o ${.TARGET}.o
961.1Sjoerg.if ${MKSTRIPIDENT} != "no"
971.1Sjoerg	${OBJCOPY} -R .ident ${.TARGET}
981.1Sjoerg.endif
991.1Sjoerg
1001.6Suwegcrt0.o: crt0.S crt0-common.c
1011.1Sjoerg	${_MKTARGET_COMPILE}
1021.6Suwe	${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o
1031.18Sjoerg	${COMPILE.c} ${MY_PICFLAGS} -DMCRT0 ${COMMON_DIR}/crt0-common.c -o ${.TARGET}.c.o
1041.24Smatt	${LD} -r -o ${.TARGET}.o ${.TARGET}.S.o ${.TARGET}.c.o
1051.24Smatt	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} 
1061.24Smatt	rm -f ${.TARGET}.S.o ${.TARGET}.c.o ${.TARGET}.o
1071.1Sjoerg.if ${MKSTRIPIDENT} != "no"
1081.1Sjoerg	${OBJCOPY} -R .ident ${.TARGET}
1091.1Sjoerg.endif
1101.1Sjoerg
1111.16Smatt.if ${MACHINE_ARCH} == "alpha"
1121.16Smatt# can't do this in Makefile.inc otherwise it will before realall:
1131.16Smattcrtfm.o: crtfm.c
1141.16Smatt	${_MKTARGET_COMPILE}
1151.16Smatt	${COMPILE.c} ${.ALLSRC} -o ${.TARGET}.o
1161.24Smatt	${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} 
1171.16Smatt	rm -f ${.TARGET}.o
1181.16Smatt.endif
1191.16Smatt
1201.17SmattGENASSYM_CONF=	${COMMON_DIR}/sysident_assym.cf 
1211.20Sjoergsysident_assym.h: ${GENASSYM_CONF} ${GENASSYM_EXTRAS} ${NETBSDSRCDIR}/sys/sys/param.h
1221.1Sjoerg	${_MKTARGET_CREATE}
1231.1Sjoerg	cat ${COMMON_DIR}/sysident_assym.cf | \
1241.7Sjoerg	    ${TOOL_GENASSYM} -- ${CC} ${CFLAGS:N-Wa,*} ${CPPFLAGS} ${PROF} \
1251.25Sjoerg	    ${GENASSYM_CPPFLAGS} > sysident_assym.h.tmp && \
1261.1Sjoerg	mv -f sysident_assym.h.tmp sysident_assym.h
1271.1Sjoerg
1281.1SjoergCLEANFILES+=	sysident_assym.h
1291.1Sjoerg
1301.17Smattcrti.o: crti.S sysident_assym.h sysident.S
1311.1Sjoergcrtn.o: crtn.S
1321.1Sjoerg
1331.1SjoergFILES=${OBJS}
1341.1SjoergFILESDIR=${LIBDIR}
1351.1SjoergCLEANFILES+=${OBJS}
1361.13Sjoerg
1371.13Sjoerg.if ${MKPIC} == "yes"
1381.1SjoergSYMLINKS+=	crtbegin.o ${LIBDIR}/crtbeginT.o
1391.1SjoergSYMLINKS+=	crtend.o ${LIBDIR}/crtendS.o
1401.13Sjoerg.endif
1411.1Sjoerg
1421.1Sjoerg.include <bsd.prog.mk>
143