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