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