| @@ -1,15 +1,15 @@ | | | @@ -1,15 +1,15 @@ |
1 | #!/bin/sh | | 1 | #!/bin/sh |
2 | # $NetBSD: mknative-gcc,v 1.37 2009/11/30 09:33:36 uebayasi Exp $ | | 2 | # $NetBSD: mknative-gcc,v 1.38 2009/11/30 09:50:59 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 | |
| @@ -226,59 +226,98 @@ get_libgcc_gen_srcs () { | | | @@ -226,59 +226,98 @@ get_libgcc_gen_srcs () { |
226 | local _lib=$1 | | 226 | local _lib=$1 |
227 | | | 227 | |
228 | printf '\n' | | 228 | printf '\n' |
229 | printf 'SRCS.%s = \\\n' $_lib | | 229 | printf 'SRCS.%s = \\\n' $_lib |
230 | { | | 230 | { |
231 | comm -23 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \ | | 231 | comm -23 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \ |
232 | sed -e 's,$,.c,; s,^,tmp_,' | | 232 | sed -e 's,$,.c,; s,^,tmp_,' |
233 | comm -12 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \ | | 233 | comm -12 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \ |
234 | sed -e 's,$,.S,; s,^,tmp_,' | | 234 | sed -e 's,$,.S,; s,^,tmp_,' |
235 | } | sort | \ | | 235 | } | sort | \ |
236 | sed -e 's,^, ,; s,$, \\,' | | 236 | sed -e 's,^, ,; s,$, \\,' |
237 | } | | 237 | } |
238 | | | 238 | |
| | | 239 | _lookup_objs () { |
| | | 240 | local _obj=$1; local _key=$2 |
| | | 241 | |
| | | 242 | eval grep \^$_obj\\\ \$_TOP/\${libgcc_db_objs_${_key}} | cut -f2 |
| | | 243 | } |
| | | 244 | |
| | | 245 | get_libgcc_gen_srcs_tmpsrcs () { |
| | | 246 | cut -f1 $_TOP/${libgcc_db_objs_libs} | \ |
| | | 247 | while read _obj; do |
| | | 248 | printf 'SRCS.tmp_%s=%s\n' \ |
| | | 249 | "$( _lookup_objs $_obj srcs )" \ |
| | | 250 | "$( _lookup_objs $_obj tmpsrcs )" |
| | | 251 | done | \ |
| | | 252 | sed -e 's,\$(\(.*\)),${G_\1},' |
| | | 253 | } |
| | | 254 | |
| | | 255 | get_libgcc_gen_srcs_cppflags () { |
| | | 256 | cut -f1 $_TOP/${libgcc_db_objs_libs} | \ |
| | | 257 | while read _obj; do |
| | | 258 | printf '_CPPFLAGS.tmp_%s=%s\n' \ |
| | | 259 | "$( _lookup_objs $_obj srcs )" \ |
| | | 260 | "$( _lookup_objs $_obj cppflags | xargs )" |
| | | 261 | done |
| | | 262 | } |
| | | 263 | |
| | | 264 | get_libgcc_gen_srcs_copts () { |
| | | 265 | cut -f1 $_TOP/${libgcc_db_objs_libs} | \ |
| | | 266 | while read _obj; do |
| | | 267 | printf 'COPTS.tmp_%s=%s\n' \ |
| | | 268 | "$( _lookup_objs $_obj srcs )" \ |
| | | 269 | "$( _lookup_objs $_obj copts | xargs )" |
| | | 270 | done |
| | | 271 | } |
| | | 272 | |
239 | get_libgcc_new_generate () { | | 273 | get_libgcc_new_generate () { |
240 | for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do | | 274 | for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do |
241 | for _tmp in tmpsrcs tmpfpsrcs tmpasmsrcs; do | | 275 | for _tmp in tmpsrcs tmpfpsrcs tmpasmsrcs; do |
242 | eval get_libgcc_gen_tmpsrcs_${_tmp} $_lib | \ | | 276 | eval get_libgcc_gen_tmpsrcs_${_tmp} $_lib | \ |
243 | write_mk ${_machine_arch_subdir}/${_lib%.*}.tmpsrcs.${_tmp}.mk | | 277 | write_mk ${_machine_arch_subdir}/${_lib%.*}.tmpsrcs.${_tmp}.mk |
244 | done | | 278 | done |
245 | | | 279 | |
246 | get_libgcc_gen_srcs $_lib | \ | | 280 | get_libgcc_gen_srcs $_lib | \ |
247 | write_mk ${_machine_arch_subdir}/${_lib%.*}.srcs.mk | | 281 | write_mk ${_machine_arch_subdir}/${_lib%.*}.srcs.mk |
248 | done | | 282 | done |
| | | 283 | |
| | | 284 | for _arg in tmpsrcs cppflags copts; do |
| | | 285 | eval get_libgcc_gen_srcs_${_arg} | \ |
| | | 286 | eval writefile \$libgcc_srcs_mk_${_arg} |
| | | 287 | done |
249 | } | | 288 | } |
250 | | | 289 | |
251 | ##### | | 290 | ##### |
252 | | | 291 | |
253 | get_libgcc_new () { | | 292 | get_libgcc_new () { |
254 | _subdir="$1" | | 293 | _subdir="$1" |
255 | | | 294 | |
256 | # List of generated files. | | 295 | # List of generated files. |
257 | | | 296 | |
258 | _machine_arch_subdir=gnu/lib/lib$_subdir/arch${_archsubdir}/$MACHINE_ARCH | | 297 | _machine_arch_subdir=gnu/lib/lib$_subdir/arch${_archsubdir}/$MACHINE_ARCH |
259 | | | 298 | |
260 | libgcc_db_funcs=${_machine_arch_subdir}/funcs | | 299 | libgcc_db_funcs=${_machine_arch_subdir}/funcs |
261 | libgcc_db_tmpsrcs=${_machine_arch_subdir}/tmpsrcs | | 300 | libgcc_db_tmpsrcs=${_machine_arch_subdir}/tmpsrcs |
262 | libgcc_db_objs_libs=${_machine_arch_subdir}/objs.libs | | 301 | libgcc_db_objs_libs=${_machine_arch_subdir}/objs.libs |
263 | libgcc_db_objs_srcs=${_machine_arch_subdir}/objs.srcs | | 302 | libgcc_db_objs_srcs=${_machine_arch_subdir}/objs.srcs |
264 | libgcc_db_objs_tmpsrcs=${_machine_arch_subdir}/objs.tmpsrcs | | 303 | libgcc_db_objs_tmpsrcs=${_machine_arch_subdir}/objs.tmpsrcs |
265 | libgcc_db_objs_cppflags=${_machine_arch_subdir}/objs.cppflags | | 304 | libgcc_db_objs_cppflags=${_machine_arch_subdir}/objs.cppflags |
266 | libgcc_db_objs_copts=${_machine_arch_subdir}/objs.copts | | 305 | libgcc_db_objs_copts=${_machine_arch_subdir}/objs.copts |
267 | | | 306 | |
268 | get_libgcc_new_analyze | | 307 | get_libgcc_new_analyze |
269 | | | 308 | |
270 | libgcc_srcs_mk=${_machine_arch_subdir}/srcs.mk | | 309 | libgcc_srcs_mk=${_machine_arch_subdir}/srcs.mk |
271 | libgcc_srcs_mk_tmpsrc=${_machine_arch_subdir}/srcs.tmpsrc.mk | | 310 | libgcc_srcs_mk_tmpsrcs=${_machine_arch_subdir}/srcs.tmpsrcs.mk |
272 | libgcc_srcs_mk_cppflags=${_machine_arch_subdir}/srcs.cppflags.mk | | 311 | libgcc_srcs_mk_cppflags=${_machine_arch_subdir}/srcs.cppflags.mk |
273 | libgcc_srcs_mk_copts=${_machine_arch_subdir}/srcs.copts.mk | | 312 | libgcc_srcs_mk_copts=${_machine_arch_subdir}/srcs.copts.mk |
274 | | | 313 | |
275 | get_libgcc_new_generate | | 314 | get_libgcc_new_generate |
276 | } | | 315 | } |
277 | | | 316 | |
278 | get_libgcc () { | | 317 | get_libgcc () { |
279 | _subdir="$1" | | 318 | _subdir="$1" |
280 | mkdir -p $_TOP/gnu/lib/lib$_subdir/arch | | 319 | mkdir -p $_TOP/gnu/lib/lib$_subdir/arch |
281 | | | 320 | |
282 | case "$_subdir" in | | 321 | case "$_subdir" in |
283 | gcc3) | | 322 | gcc3) |
284 | _extravars="USE_COLLECT2 LIB2FUNCS_1 LIB2FUNCS_2 xm_file" | | 323 | _extravars="USE_COLLECT2 LIB2FUNCS_1 LIB2FUNCS_2 xm_file" |