source: trunk/third/gcc/config-ml.in @ 16960

Revision 16960, 23.4 KB checked in by ghudson, 22 years ago (diff)
This commit was generated by cvs2svn to compensate for changes in r16959, which included commits to RCS files with non-trunk default branches.
Line 
1# Configure fragment invoked in the post-target section for subdirs
2# wanting multilib support.
3#
4# It is advisable to support a few --enable/--disable options to let the
5# user select which libraries s/he really wants.
6#
7# Subdirectories wishing to use multilib should put the following lines
8# in the "post-target" section of configure.in.
9#
10# if [ "${srcdir}" = "." ] ; then
11#   if [ "${with_target_subdir}" != "." ] ; then
12#     . ${with_multisrctop}../../config-ml.in
13#   else
14#     . ${with_multisrctop}../config-ml.in
15#   fi
16# else
17#   . ${srcdir}/../config-ml.in
18# fi
19#
20#
21# Things are complicated because 6 separate cases must be handled:
22# 2 (native, cross) x 3 (absolute-path, relative-not-dot, dot) = 6.
23#
24# srcdir=. is special.  It must handle make programs that don't handle VPATH.
25# To implement this, a symlink tree is built for each library and for each
26# multilib subdir.
27#
28# The build tree is layed out as
29#
30# ./
31#   newlib
32#   m68020/
33#          newlib
34#          m68881/
35#                 newlib
36#
37# The nice feature about this arrangement is that inter-library references
38# in the build tree work without having to care where you are.  Note that
39# inter-library references also work in the source tree because symlink trees
40# are built when srcdir=.
41#
42# Unfortunately, trying to access the libraries in the build tree requires
43# the user to manually choose which library to use as GCC won't be able to
44# find the right one.  This is viewed as the lesser of two evils.
45#
46# Configure variables:
47# ${with_target_subdir} = "." for native, or ${target_alias} for cross.
48# Set by top level Makefile.
49# ${with_multisrctop} = how many levels of multilibs there are in the source
50# tree.  It exists to handle the case of configuring in the source tree:
51# ${srcdir} is not constant.
52# ${with_multisubdir} = name of multilib subdirectory (eg: m68020/m68881).
53#
54# Makefile variables:
55# MULTISRCTOP = number of multilib levels in source tree (+1 if cross)
56# (FIXME: note that this is different than ${with_multisrctop}.  Check out.).
57# MULTIBUILDTOP = number of multilib levels in build tree
58# MULTIDIRS = list of multilib subdirs (eg: m68000 m68020 ...)
59# (only defined in each library's main Makefile).
60# MULTISUBDIR = installed subdirectory name with leading '/' (eg: /m68000)
61# (only defined in each multilib subdir).
62
63# FIXME: Multilib is currently disabled by default for everything other than
64# newlib.  It is up to each target to turn on multilib support for the other
65# libraries as desired.
66
67# We have to handle being invoked by both Cygnus configure and Autoconf.
68#
69# Cygnus configure incoming variables:
70# srcdir, subdir, host, arguments
71#
72# Autoconf incoming variables:
73# srcdir, host, ac_configure_args
74#
75# We *could* figure srcdir and host out, but we'd have to do work that
76# our caller has already done to figure them out and requiring these two
77# seems reasonable.
78# Note that `host' in this case is GCC's `target'.  Target libraries are
79# configured for a particular host.
80
81if [ -n "${ac_configure_args}" ]; then
82  Makefile=${ac_file-Makefile}
83  ml_config_shell=${CONFIG_SHELL-/bin/sh}
84  ml_arguments="${ac_configure_args}"
85  ml_realsrcdir=${srcdir}
86else
87  Makefile=${Makefile-Makefile}
88  ml_config_shell=${config_shell-/bin/sh}
89  ml_arguments="${arguments}"
90  if [ -n "${subdir}" -a "${subdir}" != "." ] ; then
91    ml_realsrcdir=${srcdir}/${subdir}
92  else
93    ml_realsrcdir=${srcdir}
94  fi
95fi
96
97# Scan all the arguments and set all the ones we need.
98
99ml_verbose=--verbose
100for option in ${ml_arguments}
101do
102  case $option in
103  --*) ;;
104  -*) option=-$option ;;
105  esac
106
107  case $option in
108  --*=*)
109        optarg=`echo $option | sed -e 's/^[^=]*=//'`
110        ;;
111  esac
112
113  case $option in
114  --disable-*)
115        enableopt=`echo ${option} | sed 's:^--disable-:enable_:;s:-:_:g'`
116        eval $enableopt=no
117        ;;
118  --enable-*)
119        case "$option" in
120        *=*)    ;;
121        *)      optarg=yes ;;
122        esac
123        enableopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
124        eval $enableopt="$optarg"
125        ;;
126  --norecursion | --no*)
127        ml_norecursion=yes
128        ;;
129  --silent | --sil* | --quiet | --q*)
130        ml_verbose=--silent
131        ;;
132  --verbose | --v | --verb*)
133        ml_verbose=--verbose
134        ;;
135  --with-*)
136        case "$option" in
137        *=*)    ;;
138        *)      optarg=yes ;;
139        esac
140        withopt=`echo ${option} | sed 's:^--::;s:=.*$::;s:-:_:g'`
141        eval $withopt="$optarg"
142        ;;
143  --without-*)
144        withopt=`echo ${option} | sed 's:^--::;s:out::;s:-:_:g'`
145        eval $withopt=no
146        ;;
147  esac
148done
149
150# Only do this if --enable-multilib.
151if [ "${enable_multilib}" = yes ]; then
152
153# Compute whether this is the library's top level directory
154# (ie: not a multilib subdirectory, and not a subdirectory like newlib/src).
155# ${with_multisubdir} tells us we're in the right branch, but we could be
156# in a subdir of that.
157# ??? The previous version could void this test by separating the process into
158# two files: one that only the library's toplevel configure.in ran (to
159# configure the multilib subdirs), and another that all configure.in's ran to
160# update the Makefile.  It seemed reasonable to collapse all multilib support
161# into one file, but it does leave us with having to perform this test.
162ml_toplevel_p=no
163if [ -z "${with_multisubdir}" ]; then
164  if [ "${srcdir}" = "." ]; then
165    # Use ${ml_realsrcdir} instead of ${srcdir} here to account for ${subdir}.
166    # ${with_target_subdir} = "." for native, otherwise target alias.
167    if [ "${with_target_subdir}" = "." ]; then
168      if [ -f ${ml_realsrcdir}/../config-ml.in ]; then
169        ml_toplevel_p=yes
170      fi
171    else
172      if [ -f ${ml_realsrcdir}/../../config-ml.in ]; then
173        ml_toplevel_p=yes
174      fi
175    fi
176  else
177    # Use ${ml_realsrcdir} instead of ${srcdir} here to account for ${subdir}.
178    if [ -f ${ml_realsrcdir}/../config-ml.in ]; then
179      ml_toplevel_p=yes
180    fi
181  fi
182fi
183
184# If this is the library's top level directory, set multidirs to the
185# multilib subdirs to support.  This lives at the top because we need
186# `multidirs' set right away.
187
188if [ "${ml_toplevel_p}" = yes ]; then
189
190multidirs=
191for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do
192  dir=`echo $i | sed -e 's/;.*$//'`
193  if [ "${dir}" = "." ]; then
194    true
195  else
196    if [ -z "${multidirs}" ]; then
197      multidirs="${dir}"
198    else
199      multidirs="${multidirs} ${dir}"
200    fi
201  fi
202done
203
204# Target libraries are configured for the host they run on, so we check
205# $host here, not $target.
206
207case "${host}" in
208arc-*-elf*)
209        if [ x$enable_biendian != xyes ]
210        then
211          old_multidirs=${multidirs}
212          multidirs=""
213          for x in ${old_multidirs}; do
214            case "${x}" in
215              *be*) : ;;
216              *) multidirs="${multidirs} ${x}" ;;
217            esac
218          done
219        fi
220        ;;
221arm-*-*)
222        if [ x"$enable_fpu" = xno ]
223        then
224          old_multidirs=${multidirs}
225          multidirs=""
226          for x in ${old_multidirs}; do
227            case "${x}" in
228              *fpu*) : ;;
229              *) multidirs="${multidirs} ${x}" ;;
230            esac
231          done
232        fi
233        if [ x"$enable_26bit" = xno ]
234        then
235          old_multidirs=${multidirs}
236          multidirs=""
237          for x in ${old_multidirs}; do
238            case "${x}" in
239              *26bit*) : ;;
240              *) multidirs="${multidirs} ${x}" ;;
241            esac
242          done
243        fi
244        if [ x"$enable_underscore" = xno ]
245        then
246          old_multidirs=${multidirs}
247          multidirs=""
248          for x in ${old_multidirs}; do
249            case "${x}" in
250              *under*) : ;;
251              *) multidirs="${multidirs} ${x}" ;;
252            esac
253          done
254        fi
255        if [ x"$enable_interwork" = xno ]
256        then
257          old_multidirs=${multidirs}
258          multidirs=""
259          for x in ${old_multidirs}; do
260            case "${x}" in
261              *interwork*) : ;;
262              *) multidirs="${multidirs} ${x}" ;;
263            esac
264          done
265        fi
266        if [ x$enable_biendian = xno ]
267        then
268          old_multidirs="${multidirs}"
269          multidirs=""
270          for x in ${old_multidirs}; do
271            case "$x" in
272              *le* ) : ;;
273              *be* ) : ;;
274              *) multidirs="${multidirs} ${x}" ;;
275            esac
276          done
277        fi
278        if [ x"$enable_nofmult" = xno ]
279        then
280          old_multidirs="${multidirs}"
281          multidirs=""
282          for x in ${old_multidirs}; do
283            case "$x" in
284              *nofmult* ) : ;;
285              *) multidirs="${multidirs} ${x}" ;;
286            esac
287          done
288        fi
289        ;;
290m68*-*-*)
291        if [ x$enable_softfloat = xno ]
292        then
293          old_multidirs="${multidirs}"
294          multidirs=""
295          for x in ${old_multidirs}; do
296            case "$x" in
297              *soft-float* ) : ;;
298              *) multidirs="${multidirs} ${x}" ;;
299            esac
300          done
301        fi
302        if [ x$enable_m68881 = xno ]
303        then
304          old_multidirs="${multidirs}"
305          multidirs=""
306          for x in ${old_multidirs}; do
307            case "$x" in
308              *m68881* ) : ;;
309              *) multidirs="${multidirs} ${x}" ;;
310            esac
311          done
312        fi
313        if [ x$enable_m68000 = xno ]
314        then
315          old_multidirs="${multidirs}"
316          multidirs=""
317          for x in ${old_multidirs}; do
318            case "$x" in
319              *m68000* ) : ;;
320              *) multidirs="${multidirs} ${x}" ;;
321            esac
322          done
323        fi
324        if [ x$enable_m68020 = xno ]
325        then
326          old_multidirs="${multidirs}"
327          multidirs=""
328          for x in ${old_multidirs}; do
329            case "$x" in
330              *m68020* ) : ;;
331              *) multidirs="${multidirs} ${x}" ;;
332            esac
333          done
334        fi
335        ;;
336mips*-*-*)
337        if [ x$enable_single_float = xno ]
338        then
339          old_multidirs="${multidirs}"
340          multidirs=""
341          for x in ${old_multidirs}; do
342            case "$x" in
343              *single* ) : ;;
344              *) multidirs="${multidirs} ${x}" ;;
345            esac
346          done
347        fi
348        if [ x$enable_biendian = xno ]
349        then
350          old_multidirs="${multidirs}"
351          multidirs=""
352          for x in ${old_multidirs}; do
353            case "$x" in
354              *el* ) : ;;
355              *eb* ) : ;;
356              *) multidirs="${multidirs} ${x}" ;;
357            esac
358          done
359        fi
360        if [ x$enable_softfloat = xno ]
361        then
362          old_multidirs="${multidirs}"
363          multidirs=""
364          for x in ${old_multidirs}; do
365            case "$x" in
366              *soft-float* ) : ;;
367              *) multidirs="${multidirs} ${x}" ;;
368            esac
369          done
370        fi
371        case " $multidirs " in
372        *" mabi=64 "*)
373          # We will not be able to create libraries with -mabi=64 if
374          # we cannot even link a trivial program.  It usually
375          # indicates the 64bit libraries are missing.
376          if echo 'main() {}' > conftest.c &&
377             ${CC-gcc} -mabi=64 conftest.c -o conftest; then
378            :
379          else
380            echo Could not link program with -mabi=64, disabling it.
381            old_multidirs="${multidirs}"
382            multidirs=""
383            for x in ${old_multidirs}; do
384              case "$x" in
385              *mabi=64* ) : ;;
386              *) multidirs="${multidirs} ${x}" ;;
387              esac
388            done
389          fi
390          rm -f conftest.c conftest
391          ;;
392        esac
393        ;;
394powerpc*-*-* | rs6000*-*-*)
395        if [ x$enable_aix64 = xno ]
396        then
397          old_multidirs="${multidirs}"
398          multidirs=""
399          for x in ${old_multidirs}; do
400            case "$x" in
401              *ppc64* ) : ;;
402              *) multidirs="${multidirs} ${x}" ;;
403            esac
404          done
405        fi
406        if [ x$enable_pthread = xno ]
407        then
408          old_multidirs="${multidirs}"
409          multidirs=""
410          for x in ${old_multidirs}; do
411            case "$x" in
412              *pthread* ) : ;;
413              *) multidirs="${multidirs} ${x}" ;;
414            esac
415          done
416        fi
417        if [ x$enable_softfloat = xno ]
418        then
419          old_multidirs="${multidirs}"
420          multidirs=""
421          for x in ${old_multidirs}; do
422            case "$x" in
423              *soft-float* ) : ;;
424              *) multidirs="${multidirs} ${x}" ;;
425            esac
426          done
427        fi
428        if [ x$enable_powercpu = xno ]
429        then
430          old_multidirs="${multidirs}"
431          multidirs=""
432          for x in ${old_multidirs}; do
433            case "$x" in
434              power | */power | */power/* ) : ;;
435              *) multidirs="${multidirs} ${x}" ;;
436            esac
437          done
438        fi
439        if [ x$enable_powerpccpu = xno ]
440        then
441          old_multidirs="${multidirs}"
442          multidirs=""
443          for x in ${old_multidirs}; do
444            case "$x" in
445              *powerpc* ) : ;;
446              *) multidirs="${multidirs} ${x}" ;;
447            esac
448          done
449        fi
450        if [ x$enable_powerpcos = xno ]
451        then
452          old_multidirs="${multidirs}"
453          multidirs=""
454          for x in ${old_multidirs}; do
455            case "$x" in
456              *mcall-linux* | *mcall-solaris* ) : ;;
457              *) multidirs="${multidirs} ${x}" ;;
458            esac
459          done
460        fi
461        if [ x$enable_biendian = xno ]
462        then
463          old_multidirs="${multidirs}"
464          multidirs=""
465          for x in ${old_multidirs}; do
466            case "$x" in
467              *mlittle* | *mbig* ) : ;;
468              *) multidirs="${multidirs} ${x}" ;;
469            esac
470          done
471        fi
472        if [ x$enable_sysv = xno ]
473        then
474          old_multidirs="${multidirs}"
475          multidirs=""
476          for x in ${old_multidirs}; do
477            case "$x" in
478              *mcall-sysv* ) : ;;
479              *) multidirs="${multidirs} ${x}" ;;
480            esac
481          done
482        fi
483        if [ x$enable_aix = xno ]
484        then
485          old_multidirs="${multidirs}"
486          multidirs=""
487          for x in ${old_multidirs}; do
488            case "$x" in
489              *mcall-aix* ) : ;;
490              *) multidirs="${multidirs} ${x}" ;;
491            esac
492          done
493        fi
494        ;;
495sparc*-*-*)
496        case " $multidirs " in
497        *" m64 "*)
498          # We will not be able to create libraries with -m64 if
499          # we cannot even link a trivial program.  It usually
500          # indicates the 64bit libraries are missing.
501          if echo 'main() {}' > conftest.c &&
502             ${CC-gcc} -m64 conftest.c -o conftest; then
503            :
504          else
505            echo Could not link program with -m64, disabling it.
506            old_multidirs="${multidirs}"
507            multidirs=""
508            for x in ${old_multidirs}; do
509              case "$x" in
510              *m64* ) : ;;
511              *) multidirs="${multidirs} ${x}" ;;
512              esac
513            done
514          fi
515          rm -f conftest.c conftest
516          ;;
517        esac
518        ;;
519esac
520
521# Remove extraneous blanks from multidirs.
522# Tests like `if [ -n "$multidirs" ]' require it.
523multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'`
524
525# Add code to library's top level makefile to handle building the multilib
526# subdirs.
527
528cat > Multi.tem <<\EOF
529
530# FIXME: There should be an @-sign in front of the `if'.
531# Leave out until this is tested a bit more.
532multi-do:
533        if [ -z "$(MULTIDIRS)" ]; then \
534          true; \
535        else \
536          rootpre=`pwd`/; export rootpre; \
537          srcrootpre=`cd $(srcdir); pwd`/; export srcrootpre; \
538          lib=`echo $${rootpre} | sed -e 's,^.*/\([^/][^/]*\)/$$,\1,'`; \
539          compiler="$(CC)"; \
540          for i in `$${compiler} --print-multi-lib 2>/dev/null`; do \
541            dir=`echo $$i | sed -e 's/;.*$$//'`; \
542            if [ "$${dir}" = "." ]; then \
543              true; \
544            else \
545              if [ -d ../$${dir}/$${lib} ]; then \
546                flags=`echo $$i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
547                if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) \
548                                CFLAGS="$(CFLAGS) $${flags}" \
549                                prefix="$(prefix)" \
550                                exec_prefix="$(exec_prefix)" \
551                                GCJFLAGS="$(GCJFLAGS) $${flags}" \
552                                CXXFLAGS="$(CXXFLAGS) $${flags}" \
553                                LIBCFLAGS="$(LIBCFLAGS) $${flags}" \
554                                LIBCXXFLAGS="$(LIBCXXFLAGS) $${flags}" \
555                                LDFLAGS="$(LDFLAGS) $${flags}" \
556                                $(DO)); then \
557                  true; \
558                else \
559                  exit 1; \
560                fi; \
561              else true; \
562              fi; \
563            fi; \
564          done; \
565        fi
566
567# FIXME: There should be an @-sign in front of the `if'.
568# Leave out until this is tested a bit more.
569multi-clean:
570        if [ -z "$(MULTIDIRS)" ]; then \
571          true; \
572        else \
573          lib=`pwd | sed -e 's,^.*/\([^/][^/]*\)$$,\1,'`; \
574          for dir in Makefile $(MULTIDIRS); do \
575            if [ -f ../$${dir}/$${lib}/Makefile ]; then \
576              if (cd ../$${dir}/$${lib}; $(MAKE) $(FLAGS_TO_PASS) $(DO)); \
577              then true; \
578              else exit 1; \
579              fi; \
580            else true; \
581            fi; \
582          done; \
583        fi
584EOF
585
586cat ${Makefile} Multi.tem > Makefile.tem
587rm -f ${Makefile} Multi.tem
588mv Makefile.tem ${Makefile}
589
590fi # ${ml_toplevel_p} = yes
591
592if [ "${ml_verbose}" = --verbose ]; then
593  echo "Adding multilib support to Makefile in ${ml_realsrcdir}"
594  if [ "${ml_toplevel_p}" = yes ]; then
595    echo "multidirs=${multidirs}"
596  fi
597  echo "with_multisubdir=${with_multisubdir}"
598fi
599
600if [ "${srcdir}" = "." ]; then
601  if [ "${with_target_subdir}" != "." ]; then
602    ml_srcdotdot="../"
603  else
604    ml_srcdotdot=""
605  fi
606else
607  ml_srcdotdot=""
608fi
609
610if [ -z "${with_multisubdir}" ]; then
611  ml_subdir=
612  ml_builddotdot=
613  : # ml_srcdotdot= # already set
614else
615  ml_subdir="/${with_multisubdir}"
616  # The '[^/][^/]*' appears that way to work around a SunOS sed bug.
617  ml_builddotdot=`echo ${with_multisubdir} | sed -e 's:[^/][^/]*:..:g'`/
618  if [ "$srcdir" = "." ]; then
619    ml_srcdotdot=${ml_srcdotdot}${ml_builddotdot}
620  else
621    : # ml_srcdotdot= # already set
622  fi
623fi
624
625if [ "${ml_toplevel_p}" = yes ]; then
626  ml_do='$(MAKE)'
627  ml_clean='$(MAKE)'
628else
629  ml_do=true
630  ml_clean=true
631fi
632
633# TOP is used by newlib and should not be used elsewhere for this purpose.
634# MULTI{SRC,BUILD}TOP are the proper ones to use.  MULTISRCTOP is empty
635# when srcdir != builddir.  MULTIBUILDTOP is always some number of ../'s.
636# FIXME: newlib needs to be updated to use MULTI{SRC,BUILD}TOP so we can
637# delete TOP.  Newlib may wish to continue to use TOP for its own purposes
638# of course.
639# MULTIDIRS is non-empty for the cpu top level Makefile (eg: newlib/Makefile)
640# and lists the subdirectories to recurse into.
641# MULTISUBDIR is non-empty in each cpu subdirectory's Makefile
642# (eg: newlib/h8300h/Makefile) and is the installed subdirectory name with
643# a leading '/'.
644# MULTIDO is used for targets like all, install, and check where
645# $(FLAGS_TO_PASS) augmented with the subdir's compiler option is needed.
646# MULTICLEAN is used for the *clean targets.
647#
648# ??? It is possible to merge MULTIDO and MULTICLEAN into one.  They are
649# currently kept separate because we don't want the *clean targets to require
650# the existence of the compiler (which MULTIDO currently requires) and
651# therefore we'd have to record the directory options as well as names
652# (currently we just record the names and use --print-multi-lib to get the
653# options).
654
655sed -e "s:^TOP[         ]*=[    ]*\([./]*\)[    ]*$:TOP = ${ml_builddotdot}\1:" \
656    -e "s:^MULTISRCTOP[         ]*=.*$:MULTISRCTOP = ${ml_srcdotdot}:" \
657    -e "s:^MULTIBUILDTOP[       ]*=.*$:MULTIBUILDTOP = ${ml_builddotdot}:" \
658    -e "s:^MULTIDIRS[   ]*=.*$:MULTIDIRS = ${multidirs}:" \
659    -e "s:^MULTISUBDIR[         ]*=.*$:MULTISUBDIR = ${ml_subdir}:" \
660    -e "s:^MULTIDO[     ]*=.*$:MULTIDO = $ml_do:" \
661    -e "s:^MULTICLEAN[  ]*=.*$:MULTICLEAN = $ml_clean:" \
662        ${Makefile} > Makefile.tem
663rm -f ${Makefile}
664mv Makefile.tem ${Makefile}
665
666# If this is the library's top level, configure each multilib subdir.
667# This is done at the end because this is the loop that runs configure
668# in each multilib subdir and it seemed reasonable to finish updating the
669# Makefile before going on to configure the subdirs.
670
671if [ "${ml_toplevel_p}" = yes ]; then
672
673# We must freshly configure each subdirectory.  This bit of code is
674# actually partially stolen from the main configure script.  FIXME.
675
676if [ -n "${multidirs}" ] && [ -z "${ml_norecursion}" ]; then
677
678  if [ "${ml_verbose}" = --verbose ]; then
679    echo "Running configure in multilib subdirs ${multidirs}"
680    echo "pwd: `pwd`"
681  fi
682
683  ml_origdir=`pwd`
684  ml_libdir=`echo $ml_origdir | sed -e 's,^.*/,,'`
685  # cd to top-level-build-dir/${with_target_subdir}
686  cd ..
687
688  for ml_dir in ${multidirs}; do
689
690    if [ "${ml_verbose}" = --verbose ]; then
691      echo "Running configure in multilib subdir ${ml_dir}"
692      echo "pwd: `pwd`"
693    fi
694
695    if [ -d ${ml_dir} ]; then true; else
696      # ``mkdir -p ${ml_dir}'' See also mkinstalldirs.
697      pathcomp=""
698      for d in `echo ":${ml_dir}" | sed -ne 's/^:\//#/;s/^://;s/\// /g;s/^#/\//;p'`; do
699        pathcomp="$pathcomp$d"
700        case "$pathcomp" in
701          -* ) pathcomp=./$pathcomp ;;
702        esac
703        if test ! -d "$pathcomp"; then
704           echo "mkdir $pathcomp" 1>&2
705           mkdir "$pathcomp" > /dev/null 2>&1 || lasterr=$?
706        fi
707        if test ! -d "$pathcomp"; then
708           exit $lasterr
709        fi
710        pathcomp="$pathcomp/"
711      done
712    fi
713    if [ -d ${ml_dir}/${ml_libdir} ]; then true; else mkdir ${ml_dir}/${ml_libdir}; fi
714
715    # Eg: if ${ml_dir} = m68000/m68881, dotdot = ../../
716    dotdot=../`echo ${ml_dir} | sed -e 's|[^/]||g' -e 's|/|../|g'`
717
718    case ${srcdir} in
719    ".")
720      echo Building symlink tree in `pwd`/${ml_dir}/${ml_libdir}
721      if [ "${with_target_subdir}" != "." ]; then
722        ml_unsubdir="../"
723      else
724        ml_unsubdir=""
725      fi
726      (cd ${ml_dir}/${ml_libdir};
727       ../${dotdot}${ml_unsubdir}symlink-tree ../${dotdot}${ml_unsubdir}${ml_libdir} "")
728      if [ -f ${ml_dir}/${ml_libdir}/Makefile ]; then
729        if [ x"${MAKE}" = x ]; then
730          (cd ${ml_dir}/${ml_libdir}; make distclean)
731        else
732          (cd ${ml_dir}/${ml_libdir}; ${MAKE} distclean)
733        fi
734      fi
735      ml_newsrcdir="."
736      ml_srcdiroption=
737      multisrctop=${dotdot}
738      ;;
739    *)
740      case "${srcdir}" in
741      /* | [A-Za-z]:[\\/]* ) # absolute path
742        ml_newsrcdir=${srcdir}
743        ;;
744      *) # otherwise relative
745        ml_newsrcdir=${dotdot}${srcdir}
746        ;;
747      esac
748      ml_srcdiroption="-srcdir=${ml_newsrcdir}"
749      multisrctop=
750      ;;
751    esac
752
753    case "${progname}" in
754    /* | [A-Za-z]:[\\/]* )     ml_recprog=${progname} ;;
755    *)      ml_recprog=${dotdot}${progname} ;;
756    esac
757
758    # FIXME: POPDIR=${PWD=`pwd`} doesn't work here.
759    ML_POPDIR=`pwd`
760    cd ${ml_dir}/${ml_libdir}
761
762    if [ -f ${ml_newsrcdir}/configure ]; then
763      ml_recprog="${ml_newsrcdir}/configure --cache-file=../config.cache"
764    fi
765
766    # find compiler flag corresponding to ${ml_dir}
767    for i in `${CC-gcc} --print-multi-lib 2>/dev/null`; do
768      dir=`echo $i | sed -e 's/;.*$//'`
769      if [ "${dir}" = "${ml_dir}" ]; then
770        flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`
771        break
772      fi
773    done
774    ml_config_env='CC="${CC_}$flags" CXX="${CXX_}$flags" GCJ="${GCJ_}$flags"'
775
776    if [ "${with_target_subdir}" = "." ]; then
777        CC_=$CC' '
778        CXX_=$CXX' '
779        GCJ_=$GCJ' '
780    else
781        # Create a regular expression that matches any string as long
782        # as ML_POPDIR.
783        popdir_rx=`echo ${ML_POPDIR} | sed 's,.,.,g'`
784        CC_=
785        for arg in ${CC}; do
786          case $arg in
787          -[BIL]"${ML_POPDIR}"/*)
788            CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;;
789          "${ML_POPDIR}"/*)
790            CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
791          *)
792            CC_="${CC_}${arg} " ;;
793          esac
794        done
795
796        CXX_=
797        for arg in ${CXX}; do
798          case $arg in
799          -[BIL]"${ML_POPDIR}"/*)
800            CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
801          "${ML_POPDIR}"/*)
802            CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
803          *)
804            CXX_="${CXX_}${arg} " ;;
805          esac
806        done
807
808        GCJ_=
809        for arg in ${GCJ}; do
810          case $arg in
811          -[BIL]"${ML_POPDIR}"/*)
812            GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
813          "${ML_POPDIR}"/*)
814            GCJ_="${GCJ_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;;
815          *)
816            GCJ_="${GCJ_}${arg} " ;;
817          esac
818        done
819
820        if test "x${LD_LIBRARY_PATH+set}" = xset; then
821          LD_LIBRARY_PATH_=
822          for arg in `echo "$LD_LIBRARY_PATH" | tr ':' ' '`; do
823            case "$arg" in
824            "${ML_POPDIR}"/*)
825              arg=`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`
826              ;;
827            esac
828            if test "x$LD_LIBRARY_PATH_" != x; then
829              LD_LIBRARY_PATH_=$LD_LIBRARY_PATH_:$arg
830            else
831              LD_LIBRARY_PATH_=$arg
832            fi
833          done
834          ml_config_env="$ml_config_env LD_LIBRARY_PATH=$LD_LIBRARY_PATH_"
835        fi
836
837        if test "x${SHLIB_PATH+set}" = xset; then
838          SHLIB_PATH_=
839          for arg in `echo "$SHLIB_PATH" | tr ':' ' '`; do
840            case "$arg" in
841            "${ML_POPDIR}"/*)
842              arg=`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`
843              ;;
844            esac
845            if test "x$SHLIB_PATH_" != x; then
846              SHLIB_PATH_=$SHLIB_PATH_:$arg
847            else
848              SHLIB_PATH_=$arg
849            fi
850          done
851          ml_config_env="$ml_config_env SHLIB_PATH=$SHLIB_PATH_"
852        fi
853    fi
854
855    if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \
856        --with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \
857        ${ml_arguments} ${ml_srcdiroption} ; then
858      true
859    else
860      exit 1
861    fi
862
863    cd ${ML_POPDIR}
864
865  done
866
867  cd ${ml_origdir}
868fi
869
870fi # ${ml_toplevel_p} = yes
871fi # ${enable_multilib} = yes
Note: See TracBrowser for help on using the repository browser.