OSDN Git Service

* Makefile.in (LIB2FUNCS_ST): Remove _gcov.
[pf3gnuchains/gcc-fork.git] / gcc / mklibgcc.in
1 #!/bin/sh
2 # Construct makefile for libgcc.
3 #   Copyright (C) 2000, 2002, 2003 Free Software Foundation, Inc.
4 #
5 # This file is part of GCC.
6
7 # Arguments, taken from the environment, since there are a lot
8 # of them, and positional args becomes quite ugly.
9 #
10 # objext
11 # LIB1ASMFUNCS
12 # LIB2FUNCS_1
13 # LIB2FUNCS_2
14 # LIB2FUNCS_ST
15 # LIBGCOV
16 # LIB2ADD
17 # LIB2ADD_ST 
18 # LIB2ADDEH
19 # LIB2ADDEHDEP
20 # FPBIT
21 # FPBIT_FUNCS
22 # LIB2_DIVMOD_FUNCS
23 # DPBIT
24 # DPBIT_FUNCS
25 # TPBIT
26 # TPBIT_FUNCS
27 # LIBGCC
28 # MULTILIBS
29 # EXTRA_MULTILIB_PARTS
30 # SHLIB_EXT
31 # SHLIB_LINK
32 # SHLIB_MULTILIB
33 # SHLIB_MKMAP
34 # SHLIB_MKMAP_OPTS
35 # SHLIB_MAPFILES
36 # SHLIB_NM_FLAGS
37 # SHLIB_INSTALL
38 # MULTILIB_OSDIRNAMES
39
40 # Make needs VPATH to be literal.
41 echo 'srcdir = @srcdir@'
42 echo 'VPATH = @srcdir@'
43 echo 'EQ = ='
44 echo
45 echo 'force:'
46 echo
47
48 # Disable SHLIB_LINK if shared libgcc not enabled.
49 if [ "@enable_shared@" = "no" ]; then
50   SHLIB_LINK=""
51 fi
52
53 # Build lines.
54
55 gcc_compile='$(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) $(INCLUDES)'
56 make_compile='$(MAKE) GCC_FOR_TARGET="$(GCC_FOR_TARGET)" \
57           AR_FOR_TARGET="$(AR_FOR_TARGET)" \
58           AR_CREATE_FOR_TARGET="$(AR_CREATE_FOR_TARGET)" \
59           AR_EXTRACT_FOR_TARGET="$(AR_EXTRACT_FOR_TARGET)" \
60           AR_FLAGS_FOR_TARGET="$(AR_FLAGS_FOR_TARGET)" \
61           CC="$(CC)" CFLAGS="$(CFLAGS)" \
62           BUILD_PREFIX="$(BUILD_PREFIX)" \
63           BUILD_PREFIX_1="$(BUILD_PREFIX_1)" \
64           LANGUAGES="$(LANGUAGES)"'
65
66 # Dependencies for libgcc2.c
67 libgcc2_c_dep='stmp-dirs $(srcdir)/libgcc2.c $(CONFIG_H) coretypes.h $(TM_H) $(MACHMODE_H) longlong.h gbl-ctors.h config.status stmp-int-hdrs tsystem.h'" $LIB2ADDEHDEP"
68
69 # Dependencies for libgcov.c
70 libgcov_c_dep='stmp-dirs $(srcdir)/libgcov.c $(CONFIG_H) coretypes.h $(TM_H) $(MACHMODE_H) longlong.h gbl-ctors.h config.status stmp-int-hdrs tsystem.h'
71
72 # Dependencies for fp-bit.c
73 fpbit_c_dep='stmp-dirs config.status tsystem.h'
74
75 #
76 # Build libgcc1 components.
77 #
78
79 libgcc1_objs=""
80
81 for name in $LIB1ASMFUNCS; do
82   for ml in $MULTILIBS; do
83     dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
84     flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
85     out="libgcc/${dir}/${name}${objext}"
86
87     echo ${out}: stmp-dirs '$(srcdir)/config/$(LIB1ASMSRC)'
88     echo "      $gcc_compile" $flags -DL$name -xassembler-with-cpp \
89           -c '$(srcdir)/config/$(LIB1ASMSRC)' -o $out
90
91     # Remove any objects from LIB2FUNCS and LIB2_DIVMOD_FUNCS that are
92     # defined as optimized assembly code in LIB1ASMFUNCS.
93     LIB2FUNCS_1=`echo $LIB2FUNCS_1 | sed -e 's/^'$name' //' \
94                                          -e 's/ '$name' / /' \
95                                          -e 's/ '$name'$//'`
96     LIB2FUNCS_2=`echo $LIB2FUNCS_2 | sed -e 's/^'$name' //' \
97                                          -e 's/ '$name' / /' \
98                                          -e 's/ '$name'$//'`
99     LIB2_DIVMOD_FUNCS=`echo $LIB2_DIVMOD_FUNCS | sed -e 's/^'$name' //' \
100                                                      -e 's/ '$name' / /' \
101                                                      -e 's/ '$name'$//'`
102   done
103   libgcc1_objs="$libgcc1_objs ${name}${objext}"
104 done
105
106 #
107 # Build libgcc2 components.
108 #
109
110 libgcc2_objs=""
111 libgcc2_st_objs=""
112 libgcc2_eh_objs=""
113
114 for name in $LIB2FUNCS_1 $LIB2FUNCS_2; do
115   for ml in $MULTILIBS; do
116     dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
117     flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
118     out="libgcc/${dir}/${name}${objext}"
119
120     echo $out: $libgcc2_c_dep
121     echo "      $gcc_compile" '$(MAYBE_USE_COLLECT2)' $flags -DL$name \
122       -c '$(srcdir)/libgcc2.c' -o $out
123   done
124   libgcc2_objs="$libgcc2_objs ${name}${objext}"
125 done
126
127 for name in $LIB2FUNCS_ST; do
128   for ml in $MULTILIBS; do
129     dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
130     flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
131     out="libgcc/${dir}/${name}${objext}"
132
133     echo $out: $libgcc2_c_dep
134     echo "      $gcc_compile" '$(MAYBE_USE_COLLECT2)' $flags -DL$name \
135       -c '$(srcdir)/libgcc2.c' -o $out
136   done
137   libgcc2_st_objs="$libgcc2_st_objs ${name}${objext}"
138 done
139
140 for name in $LIB2_DIVMOD_FUNCS; do
141   for ml in $MULTILIBS; do
142     dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
143     flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
144     out="libgcc/${dir}/${name}${objext}"
145
146     echo $out: $libgcc2_c_dep
147     echo "      $gcc_compile" '$(MAYBE_USE_COLLECT2)' $flags -DL$name \
148       -c '$(srcdir)/libgcc2.c' -fexceptions -fnon-call-exceptions -o $out
149   done
150   libgcc2_objs="$libgcc2_objs ${name}${objext}"
151 done
152
153 if [ "$FPBIT" ]; then
154   for name in $FPBIT_FUNCS; do
155     for ml in $MULTILIBS; do
156       dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
157       flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
158       out="libgcc/${dir}/${name}${objext}"
159
160       echo $out: $FPBIT $fpbit_c_dep
161       echo "    $gcc_compile" -DFINE_GRAINED_LIBRARIES $flags -DL$name \
162         -c $FPBIT -o $out
163     done
164     libgcc2_objs="$libgcc2_objs ${name}${objext}"
165   done
166 fi
167
168 if [ "$DPBIT" ]; then
169   for name in $DPBIT_FUNCS; do
170     for ml in $MULTILIBS; do
171       dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
172       flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
173       out="libgcc/${dir}/${name}${objext}"
174
175       echo $out: $DPBIT $fpbit_c_dep
176       echo "    $gcc_compile" -DFINE_GRAINED_LIBRARIES $flags -DL$name \
177         -c $DPBIT -o $out
178     done
179     libgcc2_objs="$libgcc2_objs ${name}${objext}"
180   done
181 fi
182
183 if [ "$TPBIT" ]; then
184   for name in $TPBIT_FUNCS; do
185     for ml in $MULTILIBS; do
186       dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
187       flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
188       out="libgcc/${dir}/${name}${objext}"
189
190       echo $out: $TPBIT $fpbit_c_dep
191       echo "    $gcc_compile" -DFINE_GRAINED_LIBRARIES $flags -DL$name \
192         -c $TPBIT -o $out
193     done
194     libgcc2_objs="$libgcc2_objs ${name}${objext}"
195   done
196 fi
197
198 for file in $LIB2ADD; do
199   name=`echo $file | sed -e 's/[.][cSo]$//' -e 's/[.]asm$//' -e 's/[.]txt$//'`
200   oname=`echo $name | sed -e 's,.*/,,'`
201
202   for ml in $MULTILIBS; do
203     dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
204     flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
205     out="libgcc/${dir}/${oname}${objext}"
206     if [ ${name}.asm = ${file} ]; then
207       flags="$flags -xassembler-with-cpp"
208     fi
209
210     echo $out: stmp-dirs $file
211     echo "      $gcc_compile" $flags -c $file -o $out
212   done
213   libgcc2_objs="$libgcc2_objs ${oname}${objext}"
214 done
215
216 for file in $LIB2ADDEH; do
217   name=`echo $file | sed -e 's/[.][cSo]$//' -e 's/[.]asm$//' -e 's/[.]txt$//'`
218   oname=`echo $name | sed -e 's,.*/,,'`
219
220   for ml in $MULTILIBS; do
221     dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
222     flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
223     out="libgcc/${dir}/${oname}${objext}"
224     if [ ${name}.asm = ${file} ]; then
225       flags="$flags -xassembler-with-cpp"
226     fi
227
228     echo $out: stmp-dirs $file
229     echo "      $gcc_compile" $flags -fexceptions -c $file -o $out
230   done
231   if [ "$SHLIB_LINK" ]; then
232     libgcc2_eh_objs="$libgcc2_eh_objs ${oname}${objext}"
233   else
234     libgcc2_objs="$libgcc2_objs ${oname}${objext}"
235   fi
236 done
237
238 for file in $LIB2ADD_ST; do
239   name=`echo $file | sed -e 's/[.][cSo]$//' -e 's/[.]asm$//' -e 's/[.]txt$//'`
240   oname=`echo $name | sed -e 's,.*/,,'`
241
242   for ml in $MULTILIBS; do
243     dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
244     flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
245     out="libgcc/${dir}/${oname}${objext}"
246     if [ ${name}.asm = ${file} ]; then
247       flags="$flags -xassembler-with-cpp"
248     fi
249
250     echo $out: stmp-dirs $file
251     echo "      $gcc_compile" $flags -c $file -o $out
252   done
253   libgcc2_st_objs="$libgcc2_st_objs ${oname}${objext}"
254 done
255
256 #
257 # build libgcov components
258 #
259
260 libgcov_objs=""
261
262 for name in $LIBGCOV; do
263   for ml in $MULTILIBS; do
264     dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
265     flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
266     out="libgcc/${dir}/${name}${objext}"
267
268     echo $out: $libgcov_c_dep
269     echo "      $gcc_compile" '$(MAYBE_USE_COLLECT2)' $flags -DL$name \
270       -c '$(srcdir)/libgcov.c' -o $out
271   done
272   libgcov_objs="$libgcov_objs ${name}${objext}"
273 done
274
275 # SHLIB_MKMAP
276 # SHLIB_MKMAP_OPTS
277 # SHLIB_MAPFILES
278 for ml in $MULTILIBS; do
279   dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
280   flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
281
282   libgcc_objs=""
283   libgcc_eh_objs=""
284   for o in $libgcc1_objs; do
285     libgcc_objs="$libgcc_objs libgcc/${dir}/$o"
286   done
287   for o in $libgcc2_objs; do
288     libgcc_objs="$libgcc_objs libgcc/${dir}/$o"
289   done
290   for o in $libgcc2_eh_objs; do
291     libgcc_eh_objs="$libgcc_eh_objs libgcc/${dir}/$o"
292   done
293   libgcc_sh_objs="$libgcc_objs $libgcc_eh_objs"
294   shlib_deps="$libgcc_sh_objs"
295
296   libgcc_st_objs=""
297   for o in $libgcc2_st_objs; do
298     libgcc_st_objs="$libgcc_st_objs libgcc/${dir}/$o"
299   done
300
301   libgcov_a_objs=""
302   for o in $libgcov_objs; do
303     libgcov_a_objs="$libgcov_a_objs libgcc/${dir}/$o"
304   done
305   
306   if [ "$SHLIB_LINK" -a "$SHLIB_MKMAP" ]; then
307     mapfile="libgcc/${dir}/libgcc.map"
308     tmpmapfile="libgcc/${dir}/tmp-libgcc.map"
309     echo ""
310     echo "${mapfile}: $SHLIB_MKMAP $SHLIB_MAPFILES $libgcc_sh_objs"
311     echo '      { $(NM_FOR_TARGET)'" $SHLIB_NM_FLAGS $libgcc_sh_objs; echo %%; \\"
312     echo "        cat $SHLIB_MAPFILES | sed -e "'"/^[   ]*#/d" -e '\''s/^%\(if\|else\|elif\|endif\|define\)/#\1/'\'" \\"
313     echo "        | $gcc_compile $flags -E -xassembler-with-cpp -; \\"
314     echo '      } | $(AWK)'" -f $SHLIB_MKMAP $SHLIB_MKMAP_OPTS > ${tmpmapfile}"
315     echo '      mv '"$tmpmapfile"' $@'
316   fi
317   shlib_deps="$shlib_deps $mapfile"
318
319   # Depend on EXTRA_MULTILIB_PARTS, since that's where crtbegin/end
320   # usually are put in a true multilib situation.
321   for f in $EXTRA_MULTILIB_PARTS; do
322     shlib_deps="$shlib_deps $dir/$f"
323   done
324
325   libgcc_a_objs="$libgcc_objs $libgcc_st_objs"
326
327   if [ "@libgcc_visibility@" = yes -a "$SHLIB_LINK" ]; then
328     libgcc_a_objs=
329     echo ""
330     for o in $libgcc_objs $libgcc_st_objs; do
331       # .oS objects will have all non-local symbol definitions .hidden
332       oS=`echo ${o} | sed s~${objext}'$~.oS~g'`
333       echo "${oS}: stmp-dirs ${o}"
334       echo '    $(NM_FOR_TARGET) '${SHLIB_NM_FLAGS} ${o}' | $(AWK) '\''NF == 3 { print "\t.hidden", $$3 }'\'' | $(GCC_FOR_TARGET) $(LIBGCC2_CFLAGS) '${flags}' -r -nostdinc -nostdlib -o $@ '${o}' -xassembler -'
335       libgcc_a_objs="${libgcc_a_objs} ${oS}"
336     done
337   fi
338
339   echo ""
340   echo "${dir}/libgcc.a: $libgcc_a_objs"
341   echo "        -rm -rf ${dir}/libgcc.a"
342   echo '        $(AR_CREATE_FOR_TARGET)' ${dir}/libgcc.a $libgcc_a_objs
343   echo '        $(RANLIB_FOR_TARGET)' ${dir}/libgcc.a
344
345   echo ""
346   echo "${dir}/libgcov.a: $libgcov_a_objs"
347   echo "        -rm -rf ${dir}/libgcov.a"
348   echo '        $(AR_CREATE_FOR_TARGET)' ${dir}/libgcov.a $libgcov_a_objs
349   echo '        $(RANLIB_FOR_TARGET)' ${dir}/libgcov.a
350
351   if [ "$SHLIB_LINK" ]; then
352
353     echo ""
354     echo "${dir}/libgcc_eh.a: $libgcc_eh_objs"
355     echo "      -rm -rf ${dir}/libgcc_eh.a"
356     echo '      $(AR_CREATE_FOR_TARGET)' ${dir}/libgcc_eh.a $libgcc_eh_objs
357     echo '      $(RANLIB_FOR_TARGET)' ${dir}/libgcc_eh.a
358
359     if [ -z "$SHLIB_MULTILIB" ]; then
360       if [ "$dir" = . ]; then
361         shlib_base_name=libgcc_s
362       else
363         shlib_base_name=libgcc_s_`echo $dir | sed s,/,_,g`
364       fi
365       shlib_so_name="$shlib_base_name"
366       shlib_dir=
367       if [ -n "$MULTILIB_OSDIRNAMES" ]; then
368         if [ "$dir" != . ]; then
369           gcc_multilib_dir=`./xgcc -B./ $flags --print-multi-directory`
370           os_multilib_dir=`./xgcc -B./ $flags --print-multi-os-directory`
371           shlib_dir="$dir"/
372           gcc_multilib_sup=`echo $gcc_multilib_dir | sed 's~^[^/]*/~~'`
373           os_multilib_base=`echo $os_multilib_dir | sed -n "s~/${gcc_multilib_sup}\$~~p"`
374           if [ -z "$os_multilib_base" ]; then
375             shlib_so_name=libgcc_s
376           else
377             shlib_so_name=libgcc_s_`echo $gcc_multilib_sup | sed s,/,_,g`
378           fi
379         fi
380       fi
381       echo ""
382       echo "${dir}/${shlib_base_name}${SHLIB_EXT}: $shlib_deps"
383       echo "    $SHLIB_LINK" \
384          | sed -e "s%@multilib_flags@%$flags%g" \
385                -e "s%@multilib_dir@%$dir%g" \
386                -e "s%@shlib_objs@%$libgcc_sh_objs%g" \
387                -e "s%@shlib_base_name@%$shlib_base_name%g" \
388                -e "s%@shlib_map_file@%$mapfile%g" \
389                -e "s%@shlib_so_name@%$shlib_so_name%g" \
390                -e "s%@shlib_dir@%$shlib_dir%g"
391     elif [ "$SHLIB_MULTILIB" = "$dir" ]; then
392       shlib_base_name="libgcc_s";
393       echo ""
394       echo "${shlib_base_name}${SHLIB_EXT}: $shlib_deps"
395       echo "    $SHLIB_LINK" \
396          | sed -e "s%@multilib_flags@%$flags%g" \
397                -e "s%@multilib_dir@%$dir%g" \
398                -e "s%@shlib_objs@%$libgcc_sh_objs%g" \
399                -e "s%@shlib_base_name@%$shlib_base_name%g" \
400                -e "s%@shlib_map_file@%$mapfile%g" \
401                -e "s%@shlib_so_name@%$shlib_base_name%g" \
402                -e "s%@shlib_dir@%%g"
403     fi
404   fi
405 done
406
407 dirs=libgcc
408 for ml in $MULTILIBS; do
409   dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
410   if [ $dir != . ]; then
411     dirs="$dirs libgcc/${dir}"
412   fi
413 done
414 echo ''
415 echo 'libgcc-stage-start:'
416 echo '  for dir in '"${dirs}"'; do \'
417 echo '    if [ -d $(stage)/$$dir ]; then true; else mkdir $(stage)/$$dir; fi; \'
418 echo '  done'
419 echo '  -for dir in '"${dirs}"'; do \'
420 echo '    mv $$dir/*'"${objext}"' $(stage)/$$dir; \'
421 echo '  done'
422
423 echo ""
424 all=stmp-dirs
425 dirs=libgcc
426
427 for ml in $MULTILIBS; do
428   dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
429   if [ $dir != . ]; then
430     dirs="$dirs ${dir} libgcc/${dir}"
431   fi
432   all="$all ${dir}/libgcc.a ${dir}/libgcov.a"
433   if [ "$SHLIB_LINK" ]; then
434     all="$all ${dir}/libgcc_eh.a"
435     if [ -z "$SHLIB_MULTILIB" ]; then
436       if [ "$dir" = "." ]; then
437         suff="";
438       else
439         suff=_`echo $dir | sed s,/,_,g`
440       fi
441       all="$all ${dir}/libgcc_s${suff}${SHLIB_EXT}"
442     elif [ "$SHLIB_MULTILIB" = "$dir" ]; then
443       all="$all libgcc_s${SHLIB_EXT}"
444     fi
445   fi
446 done
447
448 echo 'stmp-dirs: force'
449 echo '  for d in '"$dirs"'; do \'
450 echo '    if [ -d $$d ]; then true; else '$mkinstalldirs' $$d; fi; \'
451 echo '  done'
452 echo '  if [ -f stmp-dirs ]; then true; else touch stmp-dirs; fi'
453
454 for f in $EXTRA_MULTILIB_PARTS; do
455   for ml in $MULTILIBS; do
456     dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
457     flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
458     case $dir in
459     .) out=$f ; t= ;;
460     *) out=$dir/$f ; t=$dir/ ;;
461     esac
462     case $out in
463     # Prevent `make' from interpreting $out as a macro assignment
464     *'$(EQ)'*) targ="T_TARGET=$out T_TARGET" ;;
465     *) targ=$out ;;
466     esac
467
468     echo $out: stmp-dirs
469     echo "      $make_compile" \\
470     echo '        LIBGCC2_CFLAGS="$(LIBGCC2_CFLAGS)' $flags '" ' \\
471     echo '        MULTILIB_CFLAGS="'$flags'"' T=$t $targ
472
473     all="$all $out"
474   done
475 done
476
477 echo ""
478 echo "all: $all"
479
480 echo ""
481 echo "install: $all"
482 for ml in $MULTILIBS; do
483   dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
484   flags=`echo ${ml} | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`;
485   if [ $dir != . ]; then
486     ldir='$(DESTDIR)$(libsubdir)'/$dir
487     echo "      if [ -d $ldir ]; then true; else mkdir $ldir; chmod a+rx $ldir; fi;"
488   else
489     ldir='$(DESTDIR)$(libsubdir)'
490   fi
491   echo '        $(INSTALL_DATA)' ${dir}/libgcc.a ${ldir}/
492   echo '        $(RANLIB_FOR_TARGET)' ${ldir}/libgcc.a
493   echo '        $(INSTALL_DATA)' ${dir}/libgcov.a ${ldir}/
494   echo '        $(RANLIB_FOR_TARGET)' ${ldir}/libgcov.a
495
496   if [ "$SHLIB_LINK" ]; then
497     echo '      $(INSTALL_DATA)' ${dir}/libgcc_eh.a ${ldir}/
498     echo '      $(RANLIB_FOR_TARGET)' ${ldir}/libgcc_eh.a
499
500     if [ -z "$SHLIB_MULTILIB" ]; then
501       if [ "$dir" = . ]; then
502         shlib_base_name=libgcc_s
503       else
504         shlib_base_name=libgcc_s_`echo $dir | sed s,/,_,g`
505       fi
506       shlib_so_name="$shlib_base_name"
507       shlib_dir=
508       shlib_slibdir_qual=
509       if [ -n "$MULTILIB_OSDIRNAMES" ]; then
510         gcc_multilib_dir=`./xgcc -B./ $flags --print-multi-directory`
511         os_multilib_dir=`./xgcc -B./ $flags --print-multi-os-directory`
512         if [ "$dir" != . ]; then
513           shlib_dir="$dir"/
514         fi
515         gcc_multilib_sup=`echo $gcc_multilib_dir | sed 's~^[^/]*/~~'`
516         os_multilib_base=`echo $os_multilib_dir | sed -n "s~/${gcc_multilib_sup}\$~~p"`
517         if [ -z "$os_multilib_base" ]; then
518           shlib_so_name=libgcc_s
519           if [ "$os_multilib_dir" != "." ]; then
520             shlib_slibdir_qual="/$os_multilib_dir"
521           fi
522         else
523           shlib_so_name=libgcc_s_`echo $gcc_multilib_sup | sed s,/,_,g`
524           shlib_slibdir_qual="/$os_multilib_base"
525         fi
526       fi
527       echo "    $SHLIB_INSTALL" \
528         | sed -e "s%@shlib_base_name@%$shlib_base_name%g" \
529               -e "s%@shlib_so_name@%$shlib_so_name%g" \
530               -e "s%@shlib_dir@%$shlib_dir%g" \
531               -e "s%@shlib_slibdir_qual@%$shlib_slibdir_qual%g"
532     elif [ "$SHLIB_MULTILIB" = "$dir" ]; then
533       shlib_base_name="libgcc_s";
534       echo "    $SHLIB_INSTALL" \
535         | sed -e "s%@shlib_base_name@%$shlib_base_name%g" \
536               -e "s%@shlib_so_name@%$shlib_base_name%g" \
537               -e "s%@shlib_dir@%%g" \
538               -e "s%@shlib_slibdir_qual@%%g"
539     fi
540   fi
541 done
542 for f in $EXTRA_MULTILIB_PARTS; do
543   for ml in $MULTILIBS; do
544     dir=`echo ${ml} | sed -e 's/;.*$//' -e 's/=/$(EQ)/g'`
545     if [ $dir != . ]; then
546       out=${dir}/$f
547       ldir='$(DESTDIR)$(libsubdir)'/$dir
548     else
549       out=$f
550       ldir='$(DESTDIR)$(libsubdir)'
551     fi
552     echo '      $(INSTALL_DATA)' $out $ldir/
553   done
554 done