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