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