Mon Nov 30 14:34:17 2009 UTC ()
Handle cases where database text files don't exist.


(uebayasi)
diff -r1.40 -r1.41 src/tools/gcc/mknative-gcc

cvs diff -r1.40 -r1.41 src/tools/gcc/mknative-gcc (expand / switch to unified diff)

--- src/tools/gcc/mknative-gcc 2009/11/30 10:03:57 1.40
+++ src/tools/gcc/mknative-gcc 2009/11/30 14:34:17 1.41
@@ -1,15 +1,15 @@ @@ -1,15 +1,15 @@
1#!/bin/sh 1#!/bin/sh
2# $NetBSD: mknative-gcc,v 1.40 2009/11/30 10:03:57 uebayasi Exp $ 2# $NetBSD: mknative-gcc,v 1.41 2009/11/30 14:34:17 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
@@ -85,35 +85,38 @@ get_libgcc_list_funcs_lib () { @@ -85,35 +85,38 @@ get_libgcc_list_funcs_lib () {
85} 85}
86 86
87get_libgcc_list_objs_libs () { 87get_libgcc_list_objs_libs () {
88 cat build/gcc/libgcc.mk | \ 88 cat build/gcc/libgcc.mk | \
89 egrep '^\.\/(libgcc_s\.so|libgcc\.a|libgcc_eh\.a|libgcov\.a): (libgcc_s|libgcc|libgcc_eh|libgcov)\/.*\.o$' | \ 89 egrep '^\.\/(libgcc_s\.so|libgcc\.a|libgcc_eh\.a|libgcov\.a): (libgcc_s|libgcc|libgcc_eh|libgcov)\/.*\.o$' | \
90 sed -e ' 90 sed -e '
91 s,^\.\/,, 91 s,^\.\/,,
92 s,: .*/, , 92 s,: .*/, ,
93 s,^\(.*\) \(.*\)$,\2 \1, 93 s,^\(.*\) \(.*\)$,\2 \1,
94 ' | sort 94 ' | sort
95} 95}
96 96
97get_libgcc_list_objs_srcs () { 97get_libgcc_list_objs_srcs () {
98 { 98 if [ -e $_TOP/${libgcc_db_funcs}.S ]; then
99 cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \ 99 cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \
100 comm -23 /dev/stdin $_TOP/${libgcc_db_funcs}.S | \ 100 comm -23 /dev/stdin $_TOP/${libgcc_db_funcs}.S | \
101 sed -e 's,\(.*\),\1.o \1.c,' 101 sed -e 's,\(.*\),\1.o \1.c,'
102 102
103 cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \ 103 cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \
104 comm -12 /dev/stdin $_TOP/${libgcc_db_funcs}.S | \ 104 comm -12 /dev/stdin $_TOP/${libgcc_db_funcs}.S | \
105 sed -e 's,\(.*\),\1.o \1.S,' 105 sed -e 's,\(.*\),\1.o \1.S,'
106 } | sort 106 else
 107 cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \
 108 sed -e 's,\(.*\),\1.o \1.c,'
 109 fi | sort
107} 110}
108 111
109get_libgcc_list_objs_tmplsrcs () { 112get_libgcc_list_objs_tmplsrcs () {
110 grep 'GCC_FOR_TARGET.*\.o$' build/gcc/libgcc.mk | \ 113 grep 'GCC_FOR_TARGET.*\.o$' build/gcc/libgcc.mk | \
111 sed -ne ' 114 sed -ne '
112 s,^.* -c \([^ ]*\).* -o .*/\([^ ]*\.o\)$,\2 \1, 115 s,^.* -c \([^ ]*\).* -o .*/\([^ ]*\.o\)$,\2 \1,
113 # basename 116 # basename
114 /\$/ { s,\$.*/,,; } 117 /\$/ { s,\$.*/,,; }
115 /\// { s,\/.*/,,; } 118 /\// { s,\/.*/,,; }
116 p 119 p
117 ' | sort 120 ' | sort
118} 121}
119 122
@@ -166,30 +169,32 @@ get_libgcc_list_tmplsrcs () { @@ -166,30 +169,32 @@ get_libgcc_list_tmplsrcs () {
166 169
167 # TMPLSRCS is anything else; exclude TMPLFPSRCS and TMPLASMSRCS 170 # TMPLSRCS is anything else; exclude TMPLFPSRCS and TMPLASMSRCS
168 cat $_tmplallsrcs | \ 171 cat $_tmplallsrcs | \
169 comm -23 /dev/stdin $_TOP/${libgcc_db_tmplsrcs}.tmplfpsrcs.${_lib%.*} | \ 172 comm -23 /dev/stdin $_TOP/${libgcc_db_tmplsrcs}.tmplfpsrcs.${_lib%.*} | \
170 comm -23 /dev/stdin $_TOP/${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*} | \ 173 comm -23 /dev/stdin $_TOP/${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*} | \
171 writefile ${libgcc_db_tmplsrcs}.tmplsrcs.${_lib%.*} 174 writefile ${libgcc_db_tmplsrcs}.tmplsrcs.${_lib%.*}
172 175
173 rm -f $_tmplallsrcs 176 rm -f $_tmplallsrcs
174} 177}
175 178
176get_libgcc_new_analyze () { 179get_libgcc_new_analyze () {
177 mkdir -p $_TOP/${_machine_arch_subdir} 180 mkdir -p $_TOP/${_machine_arch_subdir}
178 181
 182 touch $_TOP/${libgcc_db_funcs}.S
179 get_libgcc_list_funcs_asm | \ 183 get_libgcc_list_funcs_asm | \
180 writefile ${libgcc_db_funcs}.S 184 writefile ${libgcc_db_funcs}.S
181 185
182 for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do 186 for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do
 187 touch $_TOP/${libgcc_db_funcs}.${_lib%.*}
183 get_libgcc_list_funcs_lib $_lib | \ 188 get_libgcc_list_funcs_lib $_lib | \
184 writefile ${libgcc_db_funcs}.${_lib%.*} 189 writefile ${libgcc_db_funcs}.${_lib%.*}
185 done 190 done
186 191
187 get_libgcc_list_objs_libs | writefile ${libgcc_db_objs_libs} 192 get_libgcc_list_objs_libs | writefile ${libgcc_db_objs_libs}
188 get_libgcc_list_objs_srcs | writefile ${libgcc_db_objs_srcs} 193 get_libgcc_list_objs_srcs | writefile ${libgcc_db_objs_srcs}
189 get_libgcc_list_objs_tmplsrcs | writefile ${libgcc_db_objs_tmplsrcs} 194 get_libgcc_list_objs_tmplsrcs | writefile ${libgcc_db_objs_tmplsrcs}
190 get_libgcc_list_objs_cppflags | writefile ${libgcc_db_objs_cppflags} 195 get_libgcc_list_objs_cppflags | writefile ${libgcc_db_objs_cppflags}
191 get_libgcc_list_objs_copts | writefile ${libgcc_db_objs_copts} 196 get_libgcc_list_objs_copts | writefile ${libgcc_db_objs_copts}
192 197
193 for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do 198 for _lib in libgcc_s.so libgcc.a libgcc_eh.a libgcov.a; do
194 get_libgcc_list_tmplsrcs $_lib 199 get_libgcc_list_tmplsrcs $_lib
195 done 200 done
@@ -217,32 +222,35 @@ get_libgcc_gen_tmplsrcs_tmplasmsrcs () { @@ -217,32 +222,35 @@ get_libgcc_gen_tmplsrcs_tmplasmsrcs () {
217 local _lib=$1 222 local _lib=$1
218 223
219 printf '\n' 224 printf '\n'
220 printf 'TMPLASMSRCS.%s = \\\n' $_lib 225 printf 'TMPLASMSRCS.%s = \\\n' $_lib
221 sed -e 's,^, ,; s,$, \\,' $_TOP/${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*} | \ 226 sed -e 's,^, ,; s,$, \\,' $_TOP/${libgcc_db_tmplsrcs}.tmplasmsrcs.${_lib%.*} | \
222 sed -e 's,LIB1ASMSRC,G_&,' 227 sed -e 's,LIB1ASMSRC,G_&,'
223} 228}
224 229
225get_libgcc_gen_srcs () { 230get_libgcc_gen_srcs () {
226 local _lib=$1 231 local _lib=$1
227 232
228 printf '\n' 233 printf '\n'
229 printf 'SRCS.%s = \\\n' $_lib 234 printf 'SRCS.%s = \\\n' $_lib
230 { 235 if [ -e $_TOP/${libgcc_db_funcs}.S ]; then
231 comm -23 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \ 236 comm -23 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \
232 sed -e 's,$,.c,; s,^,tmp_,' 237 sed -e 's,$,.c,; s,^,tmp_,'
233 comm -12 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \ 238 comm -12 $_TOP/${libgcc_db_funcs}.${_lib%.*} $_TOP/${libgcc_db_funcs}.S | \
234 sed -e 's,$,.S,; s,^,tmp_,' 239 sed -e 's,$,.S,; s,^,tmp_,'
235 } | sort | \ 240 else
 241 cat $_TOP/${libgcc_db_funcs}.${_lib%.*} | \
 242 sed -e 's,$,.c,; s,^,tmp_,'
 243 fi | sort | \
236 sed -e 's,^, ,; s,$, \\,' 244 sed -e 's,^, ,; s,$, \\,'
237} 245}
238 246
239_lookup_objs () { 247_lookup_objs () {
240 local _obj=$1; local _key=$2 248 local _obj=$1; local _key=$2
241 249
242 eval grep \^$_obj\\\ \$_TOP/\${libgcc_db_objs_${_key}} | cut -f2 250 eval grep \^$_obj\\\ \$_TOP/\${libgcc_db_objs_${_key}} | cut -f2
243} 251}
244 252
245get_libgcc_gen_srcs_tmplsrcs () { 253get_libgcc_gen_srcs_tmplsrcs () {
246 cut -f1 $_TOP/${libgcc_db_objs_libs} | \ 254 cut -f1 $_TOP/${libgcc_db_objs_libs} | \
247 while read _obj; do 255 while read _obj; do
248 printf 'SRCS.tmp_%s=%s\n' \ 256 printf 'SRCS.tmp_%s=%s\n' \