| @@ -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 | |
87 | get_libgcc_list_objs_libs () { | | 87 | get_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 | |
97 | get_libgcc_list_objs_srcs () { | | 97 | get_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 | |
109 | get_libgcc_list_objs_tmplsrcs () { | | 112 | get_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 | |
176 | get_libgcc_new_analyze () { | | 179 | get_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 | |
225 | get_libgcc_gen_srcs () { | | 230 | get_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 | |
245 | get_libgcc_gen_srcs_tmplsrcs () { | | 253 | get_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' \ |