source: branches/libc-0.6/src/gcc/config-ml.in@ 3058

Last change on this file since 3058 was 1392, checked in by bird, 21 years ago

This commit was generated by cvs2svn to compensate for changes in r1391,
which included commits to RCS files with non-trunk default branches.

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