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