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