| @@ -1,141 +1,142 @@ | | | @@ -1,141 +1,142 @@ |
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 \ |
36 | -o $@ ${COMMON_DIR}/compident.S | | 37 | -o $@ ${COMMON_DIR}/compident.S |
37 | .endfor | | 38 | .endfor |
38 | OBJS += sparc_mcmedlow.o sparc_mcmedmid.o sparc_mcmedany.o | | 39 | OBJS += sparc_mcmedlow.o sparc_mcmedmid.o sparc_mcmedany.o |
39 | .endif | | 40 | .endif |
40 | | | 41 | |
41 | realall: ${OBJS} | | 42 | realall: ${OBJS} |
42 | | | 43 | |
43 | .if exists(${ARCHDIR}/crtbegin.S) | | 44 | .if exists(${ARCHDIR}/crtbegin.S) |
44 | crtbegin.o: crtbegin.S | | 45 | crtbegin.o: crtbegin.S |
45 | ${_MKTARGET_COMPILE} | | 46 | ${_MKTARGET_COMPILE} |
46 | ${COMPILE.S} ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o | | 47 | ${COMPILE.S} ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o |
47 | .else | | 48 | .else |
48 | crtbegin.o: crtbegin.c crtbegin.h | | 49 | crtbegin.o: crtbegin.c crtbegin.h |
49 | ${_MKTARGET_COMPILE} | | 50 | ${_MKTARGET_COMPILE} |
50 | ${COMPILE.c} ${CFLAGS.crtbegin.c} ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o | | 51 | ${COMPILE.c} ${CFLAGS.crtbegin.c} ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o |
51 | .endif | | 52 | .endif |
52 | ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} | | 53 | ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} |
53 | rm -f ${.TARGET}.o | | 54 | rm -f ${.TARGET}.o |
54 | .if ${MKSTRIPIDENT} != "no" | | 55 | .if ${MKSTRIPIDENT} != "no" |
55 | ${OBJCOPY} -R .ident ${.TARGET} | | 56 | ${OBJCOPY} -R .ident ${.TARGET} |
56 | .endif | | 57 | .endif |
57 | | | 58 | |
58 | .if exists(${ARCHDIR}/crtbegin.S) | | 59 | .if exists(${ARCHDIR}/crtbegin.S) |
59 | crtbeginS.o: crtbegin.S | | 60 | crtbeginS.o: crtbegin.S |
60 | ${_MKTARGET_COMPILE} | | 61 | ${_MKTARGET_COMPILE} |
61 | ${COMPILE.S} ${PICFLAGS} -DSHARED ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o | | 62 | ${COMPILE.S} ${PICFLAGS} -DSHARED ${ARCHDIR}/crtbegin.S -o ${.TARGET}.o |
62 | .else | | 63 | .else |
63 | crtbeginS.o: crtbegin.c crtbegin.h | | 64 | crtbeginS.o: crtbegin.c crtbegin.h |
64 | ${_MKTARGET_COMPILE} | | 65 | ${_MKTARGET_COMPILE} |
65 | ${COMPILE.c} ${CFLAGS.crtbeginS.c} ${PICFLAGS} -DSHARED ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o | | 66 | ${COMPILE.c} ${CFLAGS.crtbeginS.c} ${PICFLAGS} -DSHARED ${COMMON_DIR}/crtbegin.c -o ${.TARGET}.o |
66 | .endif | | 67 | .endif |
67 | ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} | | 68 | ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} |
68 | rm -f ${.TARGET}.o | | 69 | rm -f ${.TARGET}.o |
69 | .if ${MKSTRIPIDENT} != "no" | | 70 | .if ${MKSTRIPIDENT} != "no" |
70 | ${OBJCOPY} -R .ident ${.TARGET} | | 71 | ${OBJCOPY} -R .ident ${.TARGET} |
71 | .endif | | 72 | .endif |
72 | | | 73 | |
73 | crtend.o: crtend.S | | 74 | crtend.o: crtend.S |
74 | ${_MKTARGET_COMPILE} | | 75 | ${_MKTARGET_COMPILE} |
75 | ${COMPILE.S} ${ARCHDIR}/crtend.S -o ${.TARGET}.o | | 76 | ${COMPILE.S} ${ARCHDIR}/crtend.S -o ${.TARGET}.o |
76 | ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} | | 77 | ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} |
77 | rm -f ${.TARGET}.o | | 78 | rm -f ${.TARGET}.o |
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} |
105 | rm -f ${.TARGET}.S.o ${.TARGET}.c.o ${.TARGET}.o | | 106 | rm -f ${.TARGET}.S.o ${.TARGET}.c.o ${.TARGET}.o |
106 | .if ${MKSTRIPIDENT} != "no" | | 107 | .if ${MKSTRIPIDENT} != "no" |
107 | ${OBJCOPY} -R .ident ${.TARGET} | | 108 | ${OBJCOPY} -R .ident ${.TARGET} |
108 | .endif | | 109 | .endif |
109 | | | 110 | |
110 | .if ${MACHINE_ARCH} == "alpha" | | 111 | .if ${MACHINE_ARCH} == "alpha" |
111 | # can't do this in Makefile.inc otherwise it will before realall: | | 112 | # can't do this in Makefile.inc otherwise it will before realall: |
112 | crtfm.o: crtfm.c | | 113 | crtfm.o: crtfm.c |
113 | ${_MKTARGET_COMPILE} | | 114 | ${_MKTARGET_COMPILE} |
114 | ${COMPILE.c} ${.ALLSRC} -o ${.TARGET}.o | | 115 | ${COMPILE.c} ${.ALLSRC} -o ${.TARGET}.o |
115 | ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} | | 116 | ${OBJCOPY} ${OBJCOPYLIBFLAGS} ${.TARGET}.o ${.TARGET} |
116 | rm -f ${.TARGET}.o | | 117 | rm -f ${.TARGET}.o |
117 | .endif | | 118 | .endif |
118 | | | 119 | |
119 | GENASSYM_CONF= ${COMMON_DIR}/sysident_assym.cf | | 120 | GENASSYM_CONF= ${COMMON_DIR}/sysident_assym.cf |
120 | sysident_assym.h: ${GENASSYM_CONF} ${GENASSYM_EXTRAS} ${NETBSDSRCDIR}/sys/sys/param.h | | 121 | sysident_assym.h: ${GENASSYM_CONF} ${GENASSYM_EXTRAS} ${NETBSDSRCDIR}/sys/sys/param.h |
121 | ${_MKTARGET_CREATE} | | 122 | ${_MKTARGET_CREATE} |
122 | cat ${COMMON_DIR}/sysident_assym.cf | \ | | 123 | cat ${COMMON_DIR}/sysident_assym.cf | \ |
123 | ${TOOL_GENASSYM} -- ${CC} ${CFLAGS:N-Wa,*} ${CPPFLAGS} ${PROF} \ | | 124 | ${TOOL_GENASSYM} -- ${CC} ${CFLAGS:N-Wa,*} ${CPPFLAGS} ${PROF} \ |
124 | ${GENASSYM_CPPFLAGS} > sysident_assym.h.tmp && \ | | 125 | ${GENASSYM_CPPFLAGS} > sysident_assym.h.tmp && \ |
125 | mv -f sysident_assym.h.tmp sysident_assym.h | | 126 | mv -f sysident_assym.h.tmp sysident_assym.h |
126 | | | 127 | |
127 | CLEANFILES+= sysident_assym.h | | 128 | CLEANFILES+= sysident_assym.h |
128 | | | 129 | |
129 | crti.o: crti.S sysident_assym.h sysident.S | | 130 | crti.o: crti.S sysident_assym.h sysident.S |
130 | crtn.o: crtn.S | | 131 | crtn.o: crtn.S |
131 | | | 132 | |
132 | FILES=${OBJS} | | 133 | FILES=${OBJS} |
133 | FILESDIR=${LIBDIR} | | 134 | FILESDIR=${LIBDIR} |
134 | CLEANFILES+=${OBJS} | | 135 | CLEANFILES+=${OBJS} |
135 | | | 136 | |
136 | .if ${MKPIC} == "yes" | | 137 | .if ${MKPIC} == "yes" |
137 | SYMLINKS+= crtbegin.o ${LIBDIR}/crtbeginT.o | | 138 | SYMLINKS+= crtbegin.o ${LIBDIR}/crtbeginT.o |
138 | SYMLINKS+= crtend.o ${LIBDIR}/crtendS.o | | 139 | SYMLINKS+= crtend.o ${LIBDIR}/crtendS.o |
139 | .endif | | 140 | .endif |
140 | | | 141 | |
141 | .include <bsd.prog.mk> | | 142 | .include <bsd.prog.mk> |