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