| @@ -1,35 +1,36 @@ | | | @@ -1,35 +1,36 @@ |
1 | # $NetBSD: Makefile.inc,v 1.26 2016/03/27 00:03:06 mrg Exp $ | | 1 | # $NetBSD: Makefile.inc,v 1.27 2016/03/29 21:23:05 skrll Exp $ |
2 | | | 2 | |
3 | .include <bsd.own.mk> | | 3 | .include <bsd.own.mk> |
4 | | | 4 | |
5 | # XXX: FIXME: This is defined in bsd.lib.mk | | 5 | # XXX: FIXME: This is defined in bsd.lib.mk |
6 | PICFLAGS ?= -fPIC | | 6 | PICFLAGS ?= -fPIC |
7 | | | 7 | |
8 | COMMON_DIR:= ${.CURDIR}/common | | 8 | COMMON_DIR:= ${.CURDIR}/common |
9 | .PATH: ${COMMON_DIR} | | 9 | .PATH: ${COMMON_DIR} |
10 | | | 10 | |
11 | CPPFLAGS+= -I${NETBSDSRCDIR}/libexec/ld.elf_so -I${COMMON_DIR} -I. | | 11 | CPPFLAGS+= -I${NETBSDSRCDIR}/libexec/ld.elf_so -I${COMMON_DIR} -I. |
12 | | | 12 | |
13 | OBJS+= crt0.o gcrt0.o crti.o crtn.o | | 13 | OBJS+= crt0.o gcrt0.o crti.o crtn.o |
14 | OBJS+= crtbegin.o crtend.o | | 14 | OBJS+= crtbegin.o crtend.o |
15 | | | 15 | |
16 | .if ${MKPIC} == "yes" | | 16 | .if ${MKPIC} == "yes" |
17 | OBJS+= crtbeginS.o | | 17 | OBJS+= crtbeginS.o |
18 | CFLAGS.crtbegin.c+= -fPIE | | 18 | CFLAGS.crtbegin.c+= -fPIE |
19 | # XXXGCC5 - GCC 5 miscompiles crtbeginS.c on many platforms. on SPARC it | | 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. | | 20 | # XXXGCC5 emits "clr %g1; call %g1", which is effectively jumping to zero. |
21 | . if defined(HAVE_GCC) && ${HAVE_GCC} == 53 && \ | | 21 | . if defined(HAVE_GCC) && ${HAVE_GCC} == 53 && \ |
22 | ${MACHINE_ARCH} != "i386" && ${MACHINE_ARCH} != "amd64" | | 22 | ${MACHINE_ARCH} != "i386" && ${MACHINE_ARCH} != "amd64" |
| | | 23 | CFLAGS.crt0-common.c+= -O1 |
23 | CFLAGS.crtbeginS.c+= -O1 | | 24 | CFLAGS.crtbeginS.c+= -O1 |
24 | . endif | | 25 | . endif |
25 | .endif | | 26 | .endif |
26 | | | 27 | |
27 | .if ${MACHINE_ARCH} == "alpha" | | 28 | .if ${MACHINE_ARCH} == "alpha" |
28 | OBJS+= crtfm.o | | 29 | OBJS+= crtfm.o |
29 | .endif | | 30 | .endif |
30 | | | 31 | |
31 | .if ${CSU_MACHINE_ARCH} == "sparc64" | | 32 | .if ${CSU_MACHINE_ARCH} == "sparc64" |
32 | # create helper objects for the compiler to mark compiler memory models | | 33 | # create helper objects for the compiler to mark compiler memory models |
33 | .for m in medlow medmid medany | | 34 | .for m in medlow medmid medany |
34 | sparc_mc${m}.o: compident.S sysident_assym.h | | 35 | sparc_mc${m}.o: compident.S sysident_assym.h |
35 | ${CC} ${ASFLAGS} -I. -DCONTENT=\"${m}\\0\\0\" -DCONTENTLENGTH=8 -c \ | | 36 | ${CC} ${ASFLAGS} -I. -DCONTENT=\"${m}\\0\\0\" -DCONTENTLENGTH=8 -c \ |
| @@ -78,27 +79,27 @@ crtend.o: crtend.S | | | @@ -78,27 +79,27 @@ crtend.o: crtend.S |
78 | .if ${MKSTRIPIDENT} != "no" | | 79 | .if ${MKSTRIPIDENT} != "no" |
79 | ${OBJCOPY} -R .ident ${.TARGET} | | 80 | ${OBJCOPY} -R .ident ${.TARGET} |
80 | .endif | | 81 | .endif |
81 | | | 82 | |
82 | .if ${MKPIC} != "no" | | 83 | .if ${MKPIC} != "no" |
83 | MY_PICFLAGS= ${PICFLAGS} | | 84 | MY_PICFLAGS= ${PICFLAGS} |
84 | .else | | 85 | .else |
85 | MY_PICFLAGS= | | 86 | MY_PICFLAGS= |
86 | .endif | | 87 | .endif |
87 | | | 88 | |
88 | crt0.o: crt0.S crt0-common.c | | 89 | crt0.o: crt0.S crt0-common.c |
89 | ${_MKTARGET_COMPILE} | | 90 | ${_MKTARGET_COMPILE} |
90 | ${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o | | 91 | ${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o |
91 | ${COMPILE.c} ${MY_PICFLAGS} ${COMMON_DIR}/crt0-common.c -o ${.TARGET}.c.o | | 92 | ${COMPILE.c} ${CFLAGS.crt0-common.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 | ${LD} -r -o ${.TARGET}.o ${.TARGET}.S.o ${.TARGET}.c.o |
93 | ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} | | 94 | ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} |
94 | rm -f ${.TARGET}.S.o ${.TARGET}.c.o ${.TARGET}.o | | 95 | rm -f ${.TARGET}.S.o ${.TARGET}.c.o ${.TARGET}.o |
95 | .if ${MKSTRIPIDENT} != "no" | | 96 | .if ${MKSTRIPIDENT} != "no" |
96 | ${OBJCOPY} -R .ident ${.TARGET} | | 97 | ${OBJCOPY} -R .ident ${.TARGET} |
97 | .endif | | 98 | .endif |
98 | | | 99 | |
99 | gcrt0.o: crt0.S crt0-common.c | | 100 | gcrt0.o: crt0.S crt0-common.c |
100 | ${_MKTARGET_COMPILE} | | 101 | ${_MKTARGET_COMPILE} |
101 | ${COMPILE.S} ${ARCHDIR}/crt0.S -o ${.TARGET}.S.o | | 102 | ${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 | ${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 | ${LD} -r -o ${.TARGET}.o ${.TARGET}.S.o ${.TARGET}.c.o |
104 | ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} | | 105 | ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} |