| @@ -1,15 +1,15 @@ | | | @@ -1,15 +1,15 @@ |
1 | #!/bin/sh | | 1 | #!/bin/sh |
2 | # $NetBSD: mknative-gcc,v 1.34 2009/11/30 08:05:41 uebayasi Exp $ | | 2 | # $NetBSD: mknative-gcc,v 1.35 2009/11/30 08:20:23 uebayasi Exp $ |
3 | # | | 3 | # |
4 | # Shell script for generating all the constants needed for a native | | 4 | # Shell script for generating all the constants needed for a native |
5 | # platform build of src/gnu/dist/gcc. | | 5 | # platform build of src/gnu/dist/gcc. |
6 | # | | 6 | # |
7 | | | 7 | |
8 | # initialise | | 8 | # initialise |
9 | | | 9 | |
10 | _TMPDIR=$2 | | 10 | _TMPDIR=$2 |
11 | _TOP=$3 | | 11 | _TOP=$3 |
12 | _PLATFORM=$4 | | 12 | _PLATFORM=$4 |
13 | _VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ ]*,,'` | | 13 | _VPATH=`grep VPATH ${_TMPDIR}/Makefile | sed 's,^.*=[ ]*,,'` |
14 | _GNU_DIST=`cd ${_VPATH}; pwd` | | 14 | _GNU_DIST=`cd ${_VPATH}; pwd` |
15 | | | 15 | |
| @@ -131,27 +131,27 @@ get_libgcc_list_objs_xflags () { | | | @@ -131,27 +131,27 @@ get_libgcc_list_objs_xflags () { |
131 | h | | 131 | h |
132 | t loop | | 132 | t loop |
133 | ' | sort | | 133 | ' | sort |
134 | } | | 134 | } |
135 | | | 135 | |
136 | get_libgcc_list_objs_cppflags () { | | 136 | get_libgcc_list_objs_cppflags () { |
137 | get_libgcc_list_objs_xflags D | | 137 | get_libgcc_list_objs_xflags D |
138 | } | | 138 | } |
139 | | | 139 | |
140 | get_libgcc_list_objs_copts () { | | 140 | get_libgcc_list_objs_copts () { |
141 | get_libgcc_list_objs_xflags fmx | | 141 | get_libgcc_list_objs_xflags fmx |
142 | } | | 142 | } |
143 | | | 143 | |
144 | get_libgcc_libgcc_mk_libs_list_tmpsrcs_files () { | | 144 | get_libgcc_list_tmpsrcs () { |
145 | local _lib=$1 | | 145 | local _lib=$1 |
146 | local _tmpallsrcs=$( mktemp /tmp/mknative-gcc._tmpallsrcs.XXXXXX ) | | 146 | local _tmpallsrcs=$( mktemp /tmp/mknative-gcc._tmpallsrcs.XXXXXX ) |
147 | | | 147 | |
148 | touch $_TOP/${libgcc_db_tmpsrcs}.tmpsrcs.${_lib%.*} | | 148 | touch $_TOP/${libgcc_db_tmpsrcs}.tmpsrcs.${_lib%.*} |
149 | touch $_TOP/${libgcc_db_tmpsrcs}.tmpfpsrcs.${_lib%.*} | | 149 | touch $_TOP/${libgcc_db_tmpsrcs}.tmpfpsrcs.${_lib%.*} |
150 | touch $_TOP/${libgcc_db_tmpsrcs}.tmpasmsrcs.${_lib%.*} | | 150 | touch $_TOP/${libgcc_db_tmpsrcs}.tmpasmsrcs.${_lib%.*} |
151 | | | 151 | |
152 | # all files | | 152 | # all files |
153 | local _lib_prefix=${_lib%.*} | | 153 | local _lib_prefix=${_lib%.*} |
154 | local _lib_suffix=${_lib#*.} | | 154 | local _lib_suffix=${_lib#*.} |
155 | join $_TOP/$libgcc_db_objs_libs $_TOP/$libgcc_db_objs_tmpsrcs | \ | | 155 | join $_TOP/$libgcc_db_objs_libs $_TOP/$libgcc_db_objs_tmpsrcs | \ |
156 | grep ${_lib_prefix}'\.'${_lib_suffix} | cut -d' ' -f 3 | sort -u > \ | | 156 | grep ${_lib_prefix}'\.'${_lib_suffix} | cut -d' ' -f 3 | sort -u > \ |
157 | $_tmpallsrcs | | 157 | $_tmpallsrcs |
| @@ -163,69 +163,78 @@ get_libgcc_libgcc_mk_libs_list_tmpsrcs_f | | | @@ -163,69 +163,78 @@ get_libgcc_libgcc_mk_libs_list_tmpsrcs_f |
163 | # TMPASMSRCS = $(LIB1ASMSRC) | | 163 | # TMPASMSRCS = $(LIB1ASMSRC) |
164 | grep '\$(LIB1ASMSRC)' <$_tmpallsrcs | sort -u | \ | | 164 | grep '\$(LIB1ASMSRC)' <$_tmpallsrcs | sort -u | \ |
165 | writefile ${libgcc_db_tmpsrcs}.tmpasmsrcs.${_lib%.*} | | 165 | writefile ${libgcc_db_tmpsrcs}.tmpasmsrcs.${_lib%.*} |
166 | | | 166 | |
167 | # TMPSRCS is anything else; exclude TMPFPSRCS and TMPASMSRCS | | 167 | # TMPSRCS is anything else; exclude TMPFPSRCS and TMPASMSRCS |
168 | cat $_tmpallsrcs | \ | | 168 | cat $_tmpallsrcs | \ |
169 | comm -23 /dev/stdin $_TOP/${libgcc_db_tmpsrcs}.tmpfpsrcs.${_lib%.*} | \ | | 169 | comm -23 /dev/stdin $_TOP/${libgcc_db_tmpsrcs}.tmpfpsrcs.${_lib%.*} | \ |
170 | comm -23 /dev/stdin $_TOP/${libgcc_db_tmpsrcs}.tmpasmsrcs.${_lib%.*} | \ | | 170 | comm -23 /dev/stdin $_TOP/${libgcc_db_tmpsrcs}.tmpasmsrcs.${_lib%.*} | \ |
171 | writefile ${libgcc_db_tmpsrcs}.tmpsrcs.${_lib%.*} | | 171 | writefile ${libgcc_db_tmpsrcs}.tmpsrcs.${_lib%.*} |
172 | | | 172 | |
173 | rm -f $_tmpallsrcs | | 173 | rm -f $_tmpallsrcs |
174 | } | | 174 | } |
175 | | | 175 | |
| | | 176 | get_libgcc_new_analyze () { |
| | | 177 | mkdir -p $_TOP/${_machine_arch_subdir} |
| | | 178 | |
| | | 179 | get_libgcc_list_funcs_asm | \ |
| | | 180 | writefile ${libgcc_db_funcs}.S |
| | | 181 | |
| | | 182 | for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do |
| | | 183 | get_libgcc_list_funcs_lib $_lib | \ |
| | | 184 | writefile ${libgcc_db_funcs}.${_lib%.*} |
| | | 185 | done |
| | | 186 | |
| | | 187 | get_libgcc_list_objs_libs | writefile ${libgcc_db_objs_libs} |
| | | 188 | get_libgcc_list_objs_srcs | writefile ${libgcc_db_objs_srcs} |
| | | 189 | get_libgcc_list_objs_tmpsrcs | writefile ${libgcc_db_objs_tmpsrcs} |
| | | 190 | get_libgcc_list_objs_cppflags | writefile ${libgcc_db_objs_cppflags} |
| | | 191 | get_libgcc_list_objs_copts | writefile ${libgcc_db_objs_copts} |
| | | 192 | |
| | | 193 | for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do |
| | | 194 | get_libgcc_list_tmpsrcs $_lib |
| | | 195 | done |
| | | 196 | } |
| | | 197 | |
| | | 198 | ##### |
| | | 199 | |
| | | 200 | get_libgcc_new_generate () { |
| | | 201 | } |
| | | 202 | |
176 | ##### | | 203 | ##### |
177 | | | 204 | |
178 | get_libgcc_new () { | | 205 | get_libgcc_new () { |
179 | _subdir="$1" | | 206 | _subdir="$1" |
180 | | | 207 | |
181 | # List of generated files. | | 208 | # List of generated files. |
182 | | | 209 | |
183 | _machine_arch_subdir=gnu/lib/lib$_subdir/arch${_archsubdir}/$MACHINE_ARCH | | 210 | _machine_arch_subdir=gnu/lib/lib$_subdir/arch${_archsubdir}/$MACHINE_ARCH |
184 | | | 211 | |
185 | libgcc_db_funcs=${_machine_arch_subdir}/funcs | | 212 | libgcc_db_funcs=${_machine_arch_subdir}/funcs |
186 | libgcc_db_tmpsrcs=${_machine_arch_subdir}/tmpsrcs | | 213 | libgcc_db_tmpsrcs=${_machine_arch_subdir}/tmpsrcs |
187 | libgcc_db_objs_libs=${_machine_arch_subdir}/objs.libs | | 214 | libgcc_db_objs_libs=${_machine_arch_subdir}/objs.libs |
188 | libgcc_db_objs_srcs=${_machine_arch_subdir}/objs.srcs | | 215 | libgcc_db_objs_srcs=${_machine_arch_subdir}/objs.srcs |
189 | libgcc_db_objs_tmpsrcs=${_machine_arch_subdir}/objs.tmpsrcs | | 216 | libgcc_db_objs_tmpsrcs=${_machine_arch_subdir}/objs.tmpsrcs |
190 | libgcc_db_objs_cppflags=${_machine_arch_subdir}/objs.cppflags | | 217 | libgcc_db_objs_cppflags=${_machine_arch_subdir}/objs.cppflags |
191 | libgcc_db_objs_copts=${_machine_arch_subdir}/objs.copts | | 218 | libgcc_db_objs_copts=${_machine_arch_subdir}/objs.copts |
192 | | | 219 | |
193 | libgcc_srcs_mk=${_machine_arch_subdir}/srcs.mk | | 220 | libgcc_srcs_mk=${_machine_arch_subdir}/srcs.mk |
194 | libgcc_srcs_mk_tmpsrc=${_machine_arch_subdir}/srcs.tmpsrc.mk | | 221 | libgcc_srcs_mk_tmpsrc=${_machine_arch_subdir}/srcs.tmpsrc.mk |
195 | libgcc_srcs_mk_cppflags=${_machine_arch_subdir}/srcs.cppflags.mk | | 222 | libgcc_srcs_mk_cppflags=${_machine_arch_subdir}/srcs.cppflags.mk |
196 | libgcc_srcs_mk_copts=${_machine_arch_subdir}/srcs.copts.mk | | 223 | libgcc_srcs_mk_copts=${_machine_arch_subdir}/srcs.copts.mk |
197 | | | 224 | |
198 | # Collect data from gcc/Makefile and gcc/libgcc.mk. | | 225 | get_libgcc_new_analyze |
199 | | | 226 | |
200 | mkdir -p $_TOP/${_machine_arch_subdir} | | 227 | get_libgcc_new_generate |
201 | | | | |
202 | get_libgcc_list_funcs_asm | \ | | | |
203 | writefile ${libgcc_db_funcs}.S | | | |
204 | | | | |
205 | for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do | | | |
206 | get_libgcc_list_funcs_lib $_lib | \ | | | |
207 | writefile ${libgcc_db_funcs}.${_lib%.*} | | | |
208 | done | | | |
209 | | | | |
210 | get_libgcc_list_objs_libs | writefile ${libgcc_db_objs_libs} | | | |
211 | get_libgcc_list_objs_srcs | writefile ${libgcc_db_objs_srcs} | | | |
212 | get_libgcc_list_objs_tmpsrcs | writefile ${libgcc_db_objs_tmpsrcs} | | | |
213 | get_libgcc_list_objs_cppflags | writefile ${libgcc_db_objs_cppflags} | | | |
214 | get_libgcc_list_objs_copts | writefile ${libgcc_db_objs_copts} | | | |
215 | | | | |
216 | for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do | | | |
217 | get_libgcc_libgcc_mk_libs_list_tmpsrcs_files $_lib | | | |
218 | done | | | |
219 | } | | 228 | } |
220 | | | 229 | |
221 | get_libgcc () { | | 230 | get_libgcc () { |
222 | _subdir="$1" | | 231 | _subdir="$1" |
223 | mkdir -p $_TOP/gnu/lib/lib$_subdir/arch | | 232 | mkdir -p $_TOP/gnu/lib/lib$_subdir/arch |
224 | | | 233 | |
225 | case "$_subdir" in | | 234 | case "$_subdir" in |
226 | gcc3) | | 235 | gcc3) |
227 | _extravars="USE_COLLECT2 LIB2FUNCS_1 LIB2FUNCS_2 xm_file" | | 236 | _extravars="USE_COLLECT2 LIB2FUNCS_1 LIB2FUNCS_2 xm_file" |
228 | _archsubdir="" | | 237 | _archsubdir="" |
229 | ;; | | 238 | ;; |
230 | gcc4) | | 239 | gcc4) |
231 | _extravars="COLLECT2 UNWIND_H xm_include_list" | | 240 | _extravars="COLLECT2 UNWIND_H xm_include_list" |