| @@ -1,15 +1,15 @@ | | | @@ -1,15 +1,15 @@ |
1 | #!/bin/sh | | 1 | #!/bin/sh |
2 | # $NetBSD: mknative-gcc,v 1.42 2009/12/01 03:13:26 uebayasi Exp $ | | 2 | # $NetBSD: mknative-gcc,v 1.43 2009/12/01 04:59:24 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 | |
| @@ -80,75 +80,80 @@ get_libgcc_list_funcs_asm () { | | | @@ -80,75 +80,80 @@ get_libgcc_list_funcs_asm () { |
80 | p | | 80 | p |
81 | s,$,_s, | | 81 | s,$,_s, |
82 | p | | 82 | p |
83 | } | | 83 | } |
84 | ' | | 84 | ' |
85 | } | sort | | 85 | } | sort |
86 | } | | 86 | } |
87 | | | 87 | |
88 | get_libgcc_list_funcs_lib () { | | 88 | get_libgcc_list_funcs_lib () { |
89 | local _lib=$1 | | 89 | local _lib=$1 |
90 | local _lib_prefix=${_lib%.*} | | 90 | local _lib_prefix=${_lib%.*} |
91 | local _lib_suffix=${_lib#*.} | | 91 | local _lib_suffix=${_lib#*.} |
92 | | | 92 | |
| | | 93 | cat build/gcc/libgcc.mk | \ |
| | | 94 | grep -v '/32/' | \ |
93 | sed -ne ' | | 95 | sed -ne ' |
94 | /^\.\/'${_lib_prefix}'\.'${_lib_suffix}': .*\.o$/ { | | 96 | /^\.\/'${_lib_prefix}'\.'${_lib_suffix}': .*\.o$/ { |
95 | s,^.*/,, | | 97 | s,^.*/,, |
96 | s,\.o$,, | | 98 | s,\.o$,, |
97 | p | | 99 | p |
98 | } | | 100 | } |
99 | ' build/gcc/libgcc.mk | sort | | 101 | ' | sort |
100 | } | | 102 | } |
101 | | | 103 | |
102 | get_libgcc_list_objs_libs () { | | 104 | get_libgcc_list_objs_libs () { |
103 | cat build/gcc/libgcc.mk | \ | | 105 | cat build/gcc/libgcc.mk | \ |
| | | 106 | grep -v '/32/' | \ |
104 | egrep '^\.\/(libgcc_s\.so|libgcc\.a|libgcc_eh\.a|libgcov\.a): (libgcc_s|libgcc|libgcc_eh|libgcov)\/.*\.o$' | \ | | 107 | egrep '^\.\/(libgcc_s\.so|libgcc\.a|libgcc_eh\.a|libgcov\.a): (libgcc_s|libgcc|libgcc_eh|libgcov)\/.*\.o$' | \ |
105 | sed -e ' | | 108 | sed -e ' |
106 | s,^\.\/,, | | 109 | s,^\.\/,, |
107 | s,: .*/, , | | 110 | s,: .*/, , |
108 | s,^\(.*\) \(.*\)$,\2 \1, | | 111 | s,^\(.*\) \(.*\)$,\2 \1, |
109 | ' | sort | | 112 | ' | sort |
110 | } | | 113 | } |
111 | | | 114 | |
112 | get_libgcc_list_objs_srcs () { | | 115 | get_libgcc_list_objs_srcs () { |
113 | if [ -e $_TOP/${libgcc_db_funcs}.S ]; then | | 116 | if [ -e $_TOP/${libgcc_db_funcs}.S ]; then |
114 | cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \ | | 117 | cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \ |
115 | comm -23 /dev/stdin $_TOP/${libgcc_db_funcs}.S | \ | | 118 | comm -23 /dev/stdin $_TOP/${libgcc_db_funcs}.S | \ |
116 | sed -e 's,\(.*\),\1.o \1.c,' | | 119 | sed -e 's,\(.*\),\1.o \1.c,' |
117 | | | 120 | |
118 | cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \ | | 121 | cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \ |
119 | comm -12 /dev/stdin $_TOP/${libgcc_db_funcs}.S | \ | | 122 | comm -12 /dev/stdin $_TOP/${libgcc_db_funcs}.S | \ |
120 | sed -e 's,\(.*\),\1.o \1.S,' | | 123 | sed -e 's,\(.*\),\1.o \1.S,' |
121 | else | | 124 | else |
122 | cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \ | | 125 | cut -f1 $_TOP/${libgcc_db_objs_libs} | sed -e 's,\.o$,,' | \ |
123 | sed -e 's,\(.*\),\1.o \1.c,' | | 126 | sed -e 's,\(.*\),\1.o \1.c,' |
124 | fi | sort | | 127 | fi | sort |
125 | } | | 128 | } |
126 | | | 129 | |
127 | get_libgcc_list_objs_tmplsrcs () { | | 130 | get_libgcc_list_objs_tmplsrcs () { |
128 | grep 'GCC_FOR_TARGET.*\.o$' build/gcc/libgcc.mk | \ | | 131 | grep 'GCC_FOR_TARGET.*\.o$' build/gcc/libgcc.mk | \ |
| | | 132 | grep -v '/32/' | \ |
129 | sed -ne ' | | 133 | sed -ne ' |
130 | s,^.* -c \([^ ]*\).* -o .*/\([^ ]*\.o\)$,\2 \1, | | 134 | s,^.* -c \([^ ]*\).* -o .*/\([^ ]*\.o\)$,\2 \1, |
131 | # basename | | 135 | # basename |
132 | /\$/ { s,\$.*/,,; } | | 136 | /\$/ { s,\$.*/,,; } |
133 | /\// { s,\/.*/,,; } | | 137 | /\// { s,\/.*/,,; } |
134 | p | | 138 | p |
135 | ' | sort | | 139 | ' | sort -u |
136 | } | | 140 | } |
137 | | | 141 | |
138 | get_libgcc_list_objs_xflags () { | | 142 | get_libgcc_list_objs_xflags () { |
139 | local _flags=$1 | | 143 | local _flags=$1 |
140 | | | 144 | |
141 | grep 'GCC_FOR_TARGET.*\.o$' build/gcc/libgcc.mk | \ | | 145 | grep 'GCC_FOR_TARGET.*\.o$' build/gcc/libgcc.mk | \ |
| | | 146 | grep -v '/32/' | \ |
142 | sed -n ' | | 147 | sed -n ' |
143 | x | | 148 | x |
144 | :loop | | 149 | :loop |
145 | g | | 150 | g |
146 | s/^\(.*\) \(-['${_flags}'][^ ][^ ]*\) \(.*\) \(-o .*\)\/\(.*\.o\)$/\5 \2/p | | 151 | s/^\(.*\) \(-['${_flags}'][^ ][^ ]*\) \(.*\) \(-o .*\)\/\(.*\.o\)$/\5 \2/p |
147 | g | | 152 | g |
148 | s/^\(.*\) \(-['${_flags}'][^ ][^ ]*\) \(.*\) \(-o .*\)\/\(.*\.o\)$/\1 \3 \4\/\5/ | | 153 | s/^\(.*\) \(-['${_flags}'][^ ][^ ]*\) \(.*\) \(-o .*\)\/\(.*\.o\)$/\1 \3 \4\/\5/ |
149 | h | | 154 | h |
150 | t loop | | 155 | t loop |
151 | ' | sort | | 156 | ' | sort |
152 | } | | 157 | } |
153 | | | 158 | |
154 | get_libgcc_list_objs_cppflags () { | | 159 | get_libgcc_list_objs_cppflags () { |