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