home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / gdb-4.16-base.tgz / gdb-4.16-base.tar / fsf / gdb / configure.in < prev    next >
Text File  |  1996-04-23  |  26KB  |  764 lines

  1. ##############################################################################
  2.  
  3. ## This file is a shell script fragment that supplies the information
  4. ## necessary to tailor a template configure script into the configure
  5. ## script appropriate for this directory.  For more information, check
  6. ## any existing configure script.  
  7.  
  8. ## Be warned, there are two types of configure.in files.  There are those
  9. ## used by Autoconf, which are macros which are expanded into a configure
  10. ## script by autoconf.  The other sort, of which this is one, is executed
  11. ## by Cygnus configure.  
  12.  
  13. ## For more information on these two systems, check out the documentation
  14. ## for 'Autoconf' (autoconf.texi) and 'Configure' (configure.texi).  
  15.  
  16. ##############################################################################
  17.  
  18. ### To add a new directory to the tree, first choose whether it is a target
  19. ### or a host dependent tool.  Then put it into the appropriate list
  20. ### (library or tools, host or target), doing a dependency sort.  For
  21. ### example, gdb requires that byacc (or bison) be built first, so it is in
  22. ### the ${host_tools} list after byacc and bison.  
  23.  
  24.  
  25. # these libraries are used by various programs built for the host environment
  26. #
  27. host_libs="mmalloc libiberty opcodes bfd readline gash tcl tk tclX"
  28.  
  29. if [ "${enable_gdbgui}" = "yes" ] ; then
  30.     host_libs="${host_libs} libgui"
  31. fi
  32.  
  33. # these tools are built for the host environment
  34. #
  35. host_tools="byacc flex bison binutils ld gas gcc gdb make patch
  36.         prms send-pr gprof gdbtest tgas etc expect dejagnu sim
  37.             m4 autoconf ispell grep diff rcs cvs fileutils shellutils
  38.         textutils wdiff find emacs emacs19 uudecode hello tar gzip indent
  39.         recode release sed utils"
  40.  
  41.  
  42. # these libraries are built for the target environment, and are built after
  43. # the host libraries and the host tools (which may be a cross compiler)
  44. #
  45. target_libs="target-libiberty target-libgloss target-newlib target-libio target-librx target-libstdc++ target-libg++"
  46.  
  47.  
  48. # these tools are built using the target libs, and are intended to run only
  49. # in the target environment
  50. #
  51. # note: any program that *uses* libraries that are in the "target_libs"
  52. # list belongs in this list.  those programs are also very likely
  53. # candidates for the "native_only" list which follows
  54. #
  55. target_tools="target-examples target-groff"
  56.  
  57. ################################################################################
  58.  
  59. ## These two lists are of directories that are to be removed from the
  60. ## ${configdirs} list for either cross-compilations or for native-
  61. ## compilations.  For example, it doesn't make that much sense to
  62. ## cross-compile Emacs, nor is it terribly useful to compile target-libiberty in
  63. ## a native environment.  
  64.  
  65. # directories to be built in the native environment only
  66. #
  67. native_only="autoconf cvs emacs emacs19 fileutils find grep gzip hello
  68.          indent ispell m4 rcs recode sed shellutils tar textutils gash
  69.          uudecode wdiff gprof target-groff"
  70.  
  71. # directories to be built in a cross environment only
  72. #
  73. cross_only="target-libiberty target-libgloss target-newlib"
  74.  
  75. ## All tools belong in one of the four categories, and are assigned above
  76. ## We assign ${configdirs} this way to remove all embedded newlines.  This
  77. ## is important because configure will choke if they ever get through.
  78. ## ${configdirs} is directories we build using the host tools.
  79. ## ${target_configdirs} is directories we build using the target tools.
  80. #
  81. configdirs=`echo ${host_libs} ${host_tools}`
  82. target_configdirs=`echo ${target_libs} ${target_tools}`
  83.  
  84. ################################################################################
  85.  
  86. srctrigger=move-if-change
  87. srcname="gnu development package"
  88.  
  89. # This gets set non-empty for some net releases of packages.
  90. appdirs=""
  91.  
  92. # per-host:
  93.  
  94. # Work in distributions that contain no compiler tools, like Autoconf.
  95. if [ -d ${srcdir}/config ]; then
  96. case "${host}" in
  97.   m68k-hp-hpux*)      host_makefile_frag=config/mh-hp300 ;;
  98.   m68k-apollo-sysv*)      host_makefile_frag=config/mh-apollo68 ;;
  99.   m68k-apollo-bsd*)       host_makefile_frag=config/mh-a68bsd ;;
  100.   m68k-*-linux*)      host_makefile_frag=config/mh-linux ;;
  101.   m88k-dg-dgux*)      host_makefile_frag=config/mh-dgux ;;
  102.   m88k-harris-cxux*)      host_makefile_frag=config/mh-cxux ;;
  103.   m88k-motorola-sysv*)    host_makefile_frag=config/mh-delta88;;
  104.   mips*-dec-ultrix*)      host_makefile_frag=config/mh-decstation ;;
  105.   mips*-nec-sysv4*)      host_makefile_frag=config/mh-necv4 ;;
  106.   mips*-sgi-irix[56]*)    host_makefile_frag=config/mh-irix5 ;;
  107.   mips*-sgi-irix4*)       host_makefile_frag=config/mh-irix4 ;;
  108.   mips*-sgi-irix3*)       host_makefile_frag=config/mh-sysv ;;
  109.   mips*-*-sysv4*)      host_makefile_frag=config/mh-sysv4 ;;
  110.   mips*-*-sysv*)      host_makefile_frag=config/mh-riscos ;;
  111.   i[345]86-ncr-sysv4.3)   host_makefile_frag=config/mh-ncrsvr43 ;;
  112.   i[345]86-ncr-sysv4*)    host_makefile_frag=config/mh-ncr3000 ;;
  113.   i[345]86-*-sco3.2v5*)   host_makefile_frag=config/mh-sysv ;;
  114.   i[345]86-*-sco*)        host_makefile_frag=config/mh-sco ;;
  115.   i[345]86-*-isc*)      host_makefile_frag=config/mh-sysv ;;
  116.   i[345]86-*-linux*)      host_makefile_frag=config/mh-linux ;;
  117.   i[345]86-*-solaris2*)   host_makefile_frag=config/mh-sysv4 ;;
  118.   i[345]86-*-aix*)      host_makefile_frag=config/mh-aix386 ;;
  119.   i[345]86-*-go32*)      host_makefile_frag=config/mh-go32 ;;
  120.   vax-*-ultrix2*)         host_makefile_frag=config/mh-vaxult2 ;;
  121.   *-*-solaris2*)          host_makefile_frag=config/mh-solaris ;;
  122.   m68k-sun-sunos*)      host_makefile_frag=config/mh-sun3 ;;
  123.   *-hp-hpux[78]*)         host_makefile_frag=config/mh-hpux8 ;;
  124.   *-hp-hpux*)             host_makefile_frag=config/mh-hpux ;;
  125.   *-*-hiux*)              host_makefile_frag=config/mh-hpux ;;
  126.   rs6000-*-lynxos*)      host_makefile_frag=config/mh-lynxrs6k ;;
  127.   *-*-lynxos*)            host_makefile_frag=config/mh-lynxos ;;
  128.   *-*-sysv4*)             host_makefile_frag=config/mh-sysv4 ;;
  129.   *-*-sysv*)              host_makefile_frag=config/mh-sysv ;;
  130. esac
  131. fi
  132.  
  133. # If we aren't going to be using gcc, see if we can extract a definition
  134. # of CC from the fragment.
  135. if [ -z "${CC}" -a "${build}" = "${host}" ]; then
  136.   IFS="${IFS=     }"; save_ifs="$IFS"; IFS="${IFS}:"
  137.   found=
  138.   for dir in $PATH; do
  139.     test -z "$dir" && dir=.
  140.     if test -f $dir/gcc; then
  141.       found=yes
  142.       break
  143.     fi
  144.   done
  145.   IFS="$save_ifs"
  146.   if [ -z "${found}" -a -n "${host_makefile_frag}" -a -f "${srcdir}/${host_makefile_frag}" ]; then
  147.     xx=`sed -n -e 's/^[     ]*CC[     ]*=[     ]*\(.*\)$/\1/p' < ${srcdir}/${host_makefile_frag}`
  148.     if [ -n "${xx}" ] ; then
  149.       CC=$xx
  150.     fi
  151.   fi
  152. fi
  153.  
  154. # We default to --with-shared on platforms where -fpic is meaningless.
  155. # Well, we don't yet, but we will.
  156. if false && [ "${host}" = "${target}" ] && [ x${enable_shared} = x ]; then
  157.   case "${target}" in
  158.     alpha-dec-osf*)    enable_shared=yes ;;
  159.     mips-sgi-irix5*)    enable_shared=yes ;;
  160.     *)            enable_shared=no ;;
  161.   esac
  162. fi
  163.  
  164. if [ x${enable_shared} = xyes ]; then
  165.   waugh=
  166.   case "${host}" in
  167.     hppa*)        waugh=config/mh-papic ;;
  168.     i[345]86-*)        waugh=config/mh-x86pic ;;
  169.     sparc64-*)        waugh=config/mh-sparcpic ;;
  170.     *)            waugh=config/mh-${host_cpu}pic ;;
  171.   esac
  172.   if [ -f ${srcdir}/${waugh} ]; then
  173.     if [ -n "${host_makefile_frag}" ] ; then
  174.       cat ${srcdir}/${host_makefile_frag} > mh-frag
  175.       cat ${srcdir}/${waugh} >> mh-frag
  176.       host_makefile_frag=mh-frag
  177.     else
  178.       host_makefile_frag=${waugh}
  179.     fi
  180.   fi
  181. fi
  182.  
  183. # per-target:
  184.  
  185. case "${target}" in
  186.   v810*)        target_makefile_frag=config/mt-v810 ;;
  187.   i[345]86-*-netware*)  target_makefile_frag=config/mt-netware ;;
  188.   powerpc-*-netware*)   target_makefile_frag=config/mt-netware ;;
  189. esac
  190.  
  191. skipdirs=
  192. gasdir=gas
  193. use_gnu_ld=
  194. use_gnu_as=
  195.  
  196. # some tools are so dependent upon X11 that if we're not building with X, 
  197. # it's not even worth trying to configure, much less build, that tool.
  198.  
  199. case ${with_x} in
  200.   yes | "")  # the default value for this tree is that X11 is available
  201.     ;;
  202.   no)
  203.     skipdirs="${skipdirs} tk gash"
  204.     ;;
  205.   *)
  206.         echo "*** bad value \"${with_x}\" for -with-x flag; ignored" 1>&2
  207.         ;;
  208. esac
  209.  
  210. # Some tools are only suitable for building in a "native" situation.
  211. # Those are added when we have a host==target configuration.  For cross
  212. # toolchains, we add some directories that should only be useful in a
  213. # cross-compiler.
  214.  
  215. is_cross_compiler=
  216.  
  217. if [ x"${host}" = x"${target}" ] ; then
  218.     # when doing a native toolchain, don't build the targets
  219.     # that are in the 'cross only' list
  220.     skipdirs="${skipdirs} ${cross_only}"
  221.     is_cross_compiler=no
  222.     target_subdir=.
  223. else
  224.     # similarly, don't build the targets in the 'native only' 
  225.     # list when building a cross compiler
  226.     skipdirs="${skipdirs} ${native_only}"
  227.     is_cross_compiler=yes
  228.     target_subdir=${target_alias}
  229.     if [ ! -d ${target_subdir} ] ; then
  230.         if mkdir ${target_subdir} ; then true
  231.         else
  232.         echo "'*** could not make ${PWD=`pwd`}/${target_subdir}" 1>&2
  233.                 exit 1
  234.         fi
  235.     fi
  236. fi    
  237.  
  238. copy_dirs=
  239.  
  240. # Handle --with-headers=XXX.  The contents of the named directory are
  241. # copied to $(tooldir)/sys-include.
  242. if [ x"${with_headers}" != x ]; then
  243.   if [ x${is_cross_compiler} = xno ]; then
  244.     echo 1>&2 '***' --with-headers is only supported when cross compiling
  245.     exit 1
  246.   fi
  247.   case "${exec_prefixoption}" in
  248.   "") x=${prefix} ;;
  249.   *) x=${exec_prefix} ;;
  250.   esac
  251.   copy_dirs="${copy_dirs} ${with_headers} $x/${target_alias}/sys-include"
  252. fi
  253.  
  254. # Handle --with-libs=XXX.  Multiple directories are permitted.  The
  255. # contents are copied to $(tooldir)/lib.
  256. if [ x"${with_libs}" != x ]; then
  257.   if [ x${is_cross_compiler} = xno ]; then
  258.     echo 1>&2 '***' --with-libs is only supported when cross compiling
  259.     exit 1
  260.   fi
  261.   # Copy the libraries in reverse order, so that files in the first named
  262.   # library override files in subsequent libraries.
  263.   case "${exec_prefixoption}" in
  264.   "") x=${prefix} ;;
  265.   *) x=${exec_prefix} ;;
  266.   esac
  267.   for l in ${with_libs}; do
  268.     copy_dirs="$l $x/${target_alias}/lib ${copy_dirs}"
  269.   done
  270. fi
  271.  
  272. # If both --with-headers and --with-libs are specified, default to
  273. # --without-newlib.
  274. if [ x"${with_headers}" != x ] && [ x"${with_libs}" != x ]; then
  275.   if [ x"${with_newlib}" = x ]; then
  276.     with_newlib=no
  277.   fi
  278. fi
  279.  
  280. # Recognize --with-newlib/--without-newlib.
  281. if [ x${with_newlib} = xno ]; then
  282.   skipdirs="${skipdirs} target-newlib"
  283. elif [ x${with_newlib} = xyes ]; then
  284.   skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
  285. fi
  286.  
  287. # Default to using --with-stabs for certain targets.
  288. if [ x${with_stabs} = x ]; then
  289.   case "${target}" in
  290.   mips*-*-* | alpha*-*-osf* | i[345]86*-*-sysv4* | i[345]86*-*-unixware*)
  291.     with_stabs=yes;
  292.     withoptions="${withoptions} --with-stabs"
  293.     ;;
  294.   esac
  295. fi
  296.  
  297. # Handle ${copy_dirs}
  298. set fnord ${copy_dirs}
  299. shift
  300. while [ $# != 0 ]; do
  301.   if [ -f $2/COPIED ] && [ x"`cat $2/COPIED`" = x"$1" ]; then
  302.     :
  303.   else
  304.     echo Copying $1 to $2
  305.  
  306.     # Use the install script to create the directory and all required
  307.     # parent directories.
  308.     if [ -d $2 ]; then
  309.       :
  310.     else
  311.       echo >config.temp
  312.       ${srcdir}/install.sh -c -m 644 config.temp $2/COPIED
  313.     fi
  314.  
  315.     # Copy the directory, assuming we have tar.
  316.     # FIXME: Should we use B in the second tar?  Not all systems support it.
  317.     (cd $1; tar -cf - .) | (cd $2; tar -xpf -)
  318.  
  319.     # It is the responsibility of the user to correctly adjust all
  320.     # symlinks.  If somebody can figure out how to handle them correctly
  321.     # here, feel free to add the code.
  322.  
  323.     echo $1 > $2/COPIED
  324.   fi
  325.   shift; shift
  326. done
  327.  
  328. # Configure extra directories which are host specific
  329.  
  330. case "${host}" in
  331.     i[345]86-*-go32*)
  332.       configdirs="$configdirs dosrel" ;;
  333. esac
  334.  
  335. # Remove more programs from consideration, based on the host or 
  336. # target this usually means that a port of the program doesn't
  337. # exist yet.
  338.  
  339. noconfigdirs=""
  340.  
  341. case "${host}" in
  342.   i[345]86-*-vsta)
  343.     noconfigdirs="tcl expect dejagnu make texinfo bison patch flex byacc send-pr gprof uudecode dejagnu diff"
  344.     ;;
  345.   i[345]86-*-go32)
  346.     noconfigdirs="tcl tk expect dejagnu make texinfo bison patch flex byacc send-pr gprof uudecode dejagnu diff"
  347.     ;;
  348.   *-*-cygwin32)
  349.      noconfigdirs="patch diff make tk tcl expect dejagnu cvs autoconf texinfo bison send-pr gprof rcs"
  350.     ;;
  351.   ppc*-*-pe)
  352.      noconfigdirs="patch diff  make tk tcl expect dejagnu cvs autoconf texinfo bison send-pr gprof rcs"
  353.     ;;
  354. esac
  355.  
  356.  
  357. case "${target}" in
  358.   *-*-netware)
  359.     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-librx target-newlib target-libiberty"
  360.     ;;
  361.   *-*-vxworks*)
  362.     noconfigdirs="$noconfigdirs target-newlib"
  363.     ;;
  364.   alpha-dec-osf*)
  365.     # ld works, but does not support shared libraries.  emacs doesn't
  366.     # work.  newlib is not 64 bit ready.  I'm not sure about fileutils or grep.
  367.     # gas doesn't generate exception information.
  368.     noconfigdirs="$noconfigdirs gas ld emacs fileutils grep target-newlib"
  369.     ;;
  370.   alpha*-*-*)
  371.     # newlib is not 64 bit ready
  372.     noconfigdirs="$noconfigdirs target-newlib"
  373.     ;;
  374.   arm-*-pe*)
  375.     ;;
  376.   arm-*-riscix*)
  377.     noconfigdirs="$noconfigdirs ld"
  378.     ;;
  379.   h8300*-*-* | \
  380.   h8500-*-*)
  381.     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx"
  382.     ;;
  383.   hppa*-*-*elf* | \
  384.   hppa*-*-lites*)
  385.     # Do configure ld/binutils/gas for this case.
  386.     ;;
  387.   hppa*-*-*)
  388.     # HP's C compiler doesn't handle Emacs correctly (but on BSD and Mach
  389.     # cc is gcc, and on any system a user should be able to link cc to
  390.     # whatever they want.  FIXME, emacs emacs19).
  391.     case "${CC}" in
  392.     "" | cc*) noconfigdirs="$noconfigdirs emacs emacs19" ;;
  393.         *) ;;
  394.     esac
  395.     noconfigdirs="$noconfigdirs ld shellutils"
  396.     ;;
  397.   i[345]86-*-go32)
  398.     # but don't build gdb
  399.     noconfigdirs="$noconfigdirs gdb target-libg++ target-libstdc++ target-libio target-librx"
  400.     ;;
  401.   *-*-cygwin32)
  402.  
  403.     # make/glob's configure uses some AC_TRY_RUN type tests
  404.     target_configdirs="$target_configdirs target-winsup"
  405.     noconfigdirs="$noconfigdirs tcl tk expect make"
  406.     # always build newlib.
  407.     skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
  408.  
  409.     # Can't build gdb for cygwin32 if not native.
  410.     case "${host}:${build}" in
  411.       *-*-cygwin32 | *-*-cygwin32:*-*-cygwin32) ;; # keep gdb
  412.       *) noconfigdirs="$noconfigdirs gdb"
  413.     esac
  414.  
  415.     ;;    
  416.   i[345]86-*-pe)
  417.     noconfigdirs="$noconfigdirs target-libg++ target-libstdc++ target-libio target-librx"
  418.     ;;
  419.   i[345]86-*-sco3.2v5*)
  420.     # The linker does not yet know about weak symbols in COFF,
  421.     # and is not configured to handle mixed ELF and COFF.
  422.     noconfigdirs="$noconfigdirs gprof ld"
  423.     ;;
  424.   i[345]86-*-sco*)
  425.     noconfigdirs="$noconfigdirs gprof"
  426.     ;;
  427.   i[345]86-*-solaris2*)
  428.     # The linker does static linking correctly, but the Solaris C library
  429.     # has bugs such that some important functions won't work when statically
  430.     # linked.  (See man pages for getpwuid, for example.)
  431.     noconfigdirs="$noconfigdirs ld"
  432.     ;;
  433.   i[345]86-*-sysv4*)
  434.     # The SYSV4 C compiler doesn't handle Emacs correctly
  435.     case "${CC}" in
  436.     "" | cc*) noconfigdirs="$noconfigdirs emacs emacs19" ;;
  437.         *) ;;
  438.     esac
  439.     # but that's okay since emacs doesn't work anyway
  440.     noconfigdirs="$noconfigdirs emacs emacs19"
  441.     ;;
  442.   powerpc-*-aix*)
  443.     # copied from rs6000-*-* entry
  444.     noconfigdirs="$noconfigdirs gprof cvs"
  445.     ;;
  446.   powerpc*-*-winnt* | powerpc*-*-pe* | ppc*-*-pe)
  447.     target_configdirs="$target_configdirs target-winsup"
  448.     noconfigdirs="$noconfigdirs gdb tcl tk make expect"
  449.     # always build newlib.
  450.     skipdirs=`echo " ${skipdirs} " | sed -e 's/ target-newlib / /'`
  451.     ;;
  452.   rs6000-*-lynxos*)
  453.     # The CVS server code doesn't work on the RS/6000
  454.     # Newlib makes problems for libg++ in crosses.
  455.     noconfigdirs="$noconfigdirs target-newlib gprof cvs"
  456.     ;;
  457.   rs6000-*-*)
  458.     noconfigdirs="$noconfigdirs gprof"
  459.     ;;
  460.   m68k-apollo-*)
  461.     noconfigdirs="$noconfigdirs ld binutils gprof"
  462.     ;;
  463.   mips*-*-irix5*)
  464.     # The GNU linker does not support shared libraries.
  465.     # emacs is emacs 18, which does not work on Irix 5 (emacs19 does work)
  466.     noconfigdirs="$noconfigdirs ld gprof emacs"
  467.     ;;
  468.   mips*-dec-bsd*)
  469.     noconfigdirs="$noconfigdirs gprof"
  470.     ;;
  471.   mips*-*-bsd*)
  472.     noconfigdirs="$noconfigdirs gprof"
  473.     ;;
  474.   mips*-*-*)
  475.     noconfigdirs="$noconfigdirs gprof"
  476.     ;;
  477.   romp-*-*)
  478.     noconfigdirs="$noconfigdirs bfd binutils ld gas opcodes"
  479.     ;;
  480.   sh-*-*)
  481.     case "${host}" in
  482.       i[345]86-*-vsta) ;; # don't add gprof back in
  483.       i[345]86-*-go32) ;; # don't add gprof back in
  484.       *) skipdirs=`echo " ${skipdirs} " | sed -e 's/ gprof / /'` ;;
  485.     esac
  486.     ;;
  487.   sparc-*-sunos4*)
  488.     if [ x${is_cross_compiler} != xno ] ; then
  489.            noconfigdirs="$noconfigdirs gdb gdbtest target-newlib"
  490.     else
  491.            use_gnu_ld=no
  492.     fi
  493.     ;;
  494.   v810-*-*)
  495.     noconfigdirs="$noconfigdirs bfd binutils gas gcc gdb ld target-libio target-libg++ target-libstdc++ opcodes"
  496.     ;;
  497.   vax-*-vms)
  498.     noconfigdirs="$noconfigdirs bfd binutils gdb ld target-newlib opcodes"
  499.     ;;
  500.   vax-*-*)
  501.     noconfigdirs="$noconfigdirs target-newlib"
  502.     ;;
  503.   *-*-lynxos*)
  504.     # Newlib makes problems for libg++ in crosses.
  505.     noconfigdirs="$noconfigdirs target-newlib"
  506.     ;; 
  507.   *-*-macos* | \
  508.   *-*-mpw*)
  509.     # Macs want a resource compiler.
  510.     configdirs="$configdirs grez"
  511.     ;;    
  512. esac
  513.  
  514. # targets that need a second pass
  515. case "${target}" in
  516.   *-gm-magic*)
  517.     noconfigdirs="$noconfigdirs libgloss"
  518.     ;;
  519. esac
  520.  
  521. # If we are building a Canadian Cross, discard tools that can not be built
  522. # using a cross compiler.  FIXME: These tools should be fixed.
  523. if [ "${build}" != "${host}" ]; then
  524.   noconfigdirs="$noconfigdirs expect dejagnu make texinfo diff"
  525. fi
  526.  
  527. # Make sure we don't let GNU ld be added if we didn't want it.
  528. if [ x$with_gnu_ld = xno ]; then
  529.   use_gnu_ld=no
  530.   noconfigdirs="$noconfigdirs ld"
  531. fi
  532.  
  533. # Make sure we don't let GNU as be added if we didn't want it.
  534. if [ x$with_gnu_as = xno ]; then
  535.   use_gnu_as=no
  536.   noconfigdirs="$noconfigdirs gas"
  537. fi
  538.  
  539. # Remove the entries in $skipdirs and $noconfigdirs from $configdirs and
  540. # $target_configdirs.
  541. # If we have the source for $noconfigdirs entries, add them to $notsupp.
  542.  
  543. notsupp=""
  544. for dir in . $skipdirs $noconfigdirs ; do
  545.   dirname=`echo $dir | sed -e s/target-//g`
  546.   if [ $dir != . ]  && echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
  547.     configdirs=`echo " ${configdirs} " | sed -e "s/ ${dir} / /"`
  548.     if [ -r $srcdir/$dirname/configure ] \
  549.     || [ -r $srcdir/$dirname/configure.in ]; then
  550.       if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
  551.     true
  552.       else
  553.     notsupp="$notsupp $dir"
  554.       fi
  555.     fi
  556.   fi
  557.   if [ $dir != . ]  && echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
  558.     target_configdirs=`echo " ${target_configdirs} " | sed -e "s/ ${dir} / /"`
  559.     if [ -r $srcdir/$dirname/configure ] \
  560.     || [ -r $srcdir/$dirname/configure.in ]; then
  561.       if echo " ${skipdirs} " | grep " ${dir} " >/dev/null 2>&1; then
  562.     true
  563.       else
  564.     notsupp="$notsupp $dir"
  565.       fi
  566.     fi
  567.   fi
  568. done
  569.  
  570. # Sometimes the tools are distributed with libiberty but with no other
  571. # libraries.  In that case, we don't want to build target-libiberty.
  572. if [ -n "${target_configdirs}" ]; then
  573.   others=
  574.   for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
  575.     if [ "$i" != "libiberty" ]; then
  576.       if [ -r $srcdir/$i/configure ] || [ -r $srcdir/$i/configure.in ]; then
  577.     others=yes;
  578.     break;
  579.       fi
  580.     fi
  581.   done
  582.   if [ -z "${others}" ]; then
  583.     target_configdirs=
  584.   fi
  585. fi
  586.  
  587. # Deconfigure all subdirectories, in case we are changing the
  588. # configuration from one where a subdirectory is supported to one where it
  589. # is not.
  590. if [ -z "${norecursion}" -a -n "${configdirs}" ]; then
  591.   for i in `echo ${configdirs} | sed -e s/target-//g` ; do
  592.     rm -f $i/Makefile
  593.   done
  594. fi
  595. if [ -z "${norecursion}" -a -n "${target_configdirs}" ]; then
  596.   for i in `echo ${target_configdirs} | sed -e s/target-//g` ; do
  597.     rm -f ${target_subdir}/$i/Makefile
  598.   done
  599. fi
  600.  
  601. # Produce a warning message for the subdirs we can't configure.
  602. # This isn't especially interesting in the Cygnus tree, but in the individual
  603. # FSF releases, it's important to let people know when their machine isn't
  604. # supported by the one or two programs in a package.
  605.  
  606. if [ -n "${notsupp}" ] && [ -z "${norecursion}" ]; then
  607.   # If $appdirs is non-empty, at least one of those directories must still
  608.   # be configured, or we error out.  (E.g., if the gas release supports a
  609.   # specified target in some subdirs but not the gas subdir, we shouldn't
  610.   # pretend that all is well.)
  611.   if [ -n "$appdirs" ]; then
  612.     for dir in $appdirs ; do
  613.       if [ -r $dir/Makefile.in ]; then
  614.     if echo " ${configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
  615.       appdirs=""
  616.       break
  617.     fi
  618.     if echo " ${target_configdirs} " | grep " ${dir} " >/dev/null 2>&1; then
  619.       appdirs=""
  620.       break
  621.     fi
  622.       fi
  623.     done
  624.     if [ -n "$appdirs" ]; then
  625.       echo "*** This configuration is not supported by this package." 1>&2
  626.       exit 1
  627.     fi
  628.   fi
  629.   # Okay, some application will build, or we don't care to check.  Still
  630.   # notify of subdirs not getting built.
  631.   echo "*** This configuration is not supported in the following subdirectories:" 1>&2
  632.   echo "    ${notsupp}" 1>&2
  633.   echo "    (Any other directories should still work fine.)" 1>&2
  634. fi
  635.  
  636. # Set with_gnu_as and with_gnu_ld as appropriate.
  637. #
  638. # This is done by determining whether or not the appropriate directory
  639. # is available, and by checking whether or not specific configurations
  640. # have requested that this magic not happen.
  641. # The command line options always override the explicit settings in 
  642. # configure.in, and the settings in configure.in override this magic.
  643. #
  644. # If the default for a toolchain is to use GNU as and ld, and you don't 
  645. # want to do that, then you should use the --without-gnu-as and
  646. # --without-gnu-ld options for the configure script.
  647.  
  648. if [ x${use_gnu_as} = x ] ; then
  649.   if [ x${with_gnu_as} != xno ] && echo " ${configdirs} " | grep " ${gasdir} " > /dev/null 2>&1 && [ -d ${srcdir}/${gasdir} ] ; then
  650.     with_gnu_as=yes
  651.     withoptions="$withoptions --with-gnu-as"
  652.   fi
  653. fi
  654.  
  655. if [ x${use_gnu_ld} = x ] ; then
  656.   if [ x${with_gnu_ld} != xno ] && echo " ${configdirs} " | grep " ld " > /dev/null 2>&1 && [ -d ${srcdir}/ld ] ; then
  657.     with_gnu_ld=yes
  658.     withoptions="$withoptions --with-gnu-ld"
  659.   fi
  660. fi
  661.  
  662. if [ x${enable_shared} = xyes ]; then
  663.   case "${target}" in
  664.     hppa*)        target_makefile_frag=config/mt-papic ;;
  665.     i[345]86-*)        target_makefile_frag=config/mt-x86pic ;;
  666.     *)            target_makefile_frag=config/mt-${target_cpu}pic ;;
  667.   esac
  668. fi
  669.  
  670. # post-target:
  671.  
  672. # Make sure that the compiler is able to generate an executable.  If it
  673. # can't, we are probably in trouble.  We don't care whether we can run the
  674. # executable--we might be using a cross compiler--we only care whether it
  675. # can be created.  At this point the main configure script has set CC.
  676. echo "int main () { return 0; }" > conftest.c
  677. ${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c
  678. if [ $? = 0 ] && [ -s conftest ]; then
  679.   :
  680. else
  681.   echo 1>&2 "*** The command '${CC} -o conftest ${CFLAGS} ${CPPFLAGS} ${LDFLAGS} conftest.c' failed."
  682.   echo 1>&2 "*** You must set the environment variable CC to a working compiler."
  683.   rm -f conftest*
  684.   exit 1
  685. fi
  686. rm -f conftest*
  687.  
  688. # The Solaris /usr/ucb/cc compiler does not appear to work.
  689. case "${host}" in
  690.   sparc-sun-solaris2*)
  691.       if [ "`/usr/bin/which ${CC-cc}`" = "/usr/ucb/cc" ] ; then
  692.           could_use=
  693.           [ -d /opt/SUNWspro/bin ] && could_use="/opt/SUNWspro/bin"
  694.           if [ -d /opt/cygnus/bin ] ; then
  695.               if [ "$could_use" = "" ] ; then
  696.                   could_use="/opt/cygnus/bin"
  697.               else
  698.                   could_use="$could_use or /opt/cygnus/bin"
  699.               fi
  700.           fi
  701.         if [ "$could_use" = "" ] ; then
  702.             echo "Warning: compilation may fail because you're using"
  703.             echo "/usr/ucb/cc.  You should change your PATH or CC "
  704.             echo "variable and rerun configure."
  705.         else
  706.             echo "Warning: compilation may fail because you're using"
  707.             echo "/usr/ucb/cc, when you should use the C compiler from"
  708.             echo "$could_use.  You should change your"
  709.             echo "PATH or CC variable and rerun configure."
  710.         fi
  711.       fi
  712.   ;;
  713. esac
  714.  
  715. # If --enable-shared was set, we must set LD_LIBRARY_PATH so that the
  716. # binutils tools will find libbfd.so.
  717. if [ "${enable_shared}" = "yes" ]; then
  718.   sed -e 's/^SET_LIB_PATH[     ]*=.*$/SET_LIB_PATH = $(REALLY_SET_LIB_PATH)/' \
  719.       Makefile > Makefile.tem
  720.   rm -f Makefile
  721.   mv -f Makefile.tem Makefile
  722.  
  723.   case "${host}" in
  724.   *-*-hpux*)
  725.     sed -e 's/RPATH_ENVVAR[     ]*=.*$/RPATH_ENVVAR = SHLIB_PATH/' \
  726.     Makefile > Makefile.tem
  727.     rm -f Makefile
  728.     mv -f Makefile.tem Makefile
  729.     ;;
  730.   esac
  731. fi
  732.  
  733. # Record target_configdirs and the configure arguments in Makefile.
  734. target_configdirs=`echo "${target_configdirs}" | sed -e 's/target-//g'`
  735. targargs=`echo "${arguments}" | \
  736.     sed -e 's/--norecursion//' \
  737.         -e 's/--cache[a-z-]*=[^     ]*//' \
  738.         -e 's/--ho[a-z-]*=[^     ]*//' \
  739.         -e 's/--ta[a-z-]*=[^     ]*//'`
  740.  
  741. # Passing a --with-cross-host argument lets the target libraries know
  742. # whether they are being built with a cross-compiler or being built
  743. # native.  However, it would be better to use other mechanisms to make the
  744. # sorts of decisions they want to make on this basis.  Please consider
  745. # this option to be deprecated.  FIXME.
  746. if [ x${is_cross_compiler} = xyes ]; then
  747.   targargs="--with-cross-host=${host_alias} ${targargs}"
  748. fi
  749.  
  750. targargs="--host=${target_alias} ${targargs}"
  751. sed -e "s:^TARGET_CONFIGDIRS[     ]*=.*$:TARGET_CONFIGDIRS = ${target_configdirs}:" \
  752.     -e "s%^CONFIG_ARGUMENTS[     ]*=.*$%CONFIG_ARGUMENTS = ${targargs}%" \
  753.     -e "s%^TARGET_SUBDIR[     ]*=.*$%TARGET_SUBDIR = ${target_subdir}%" \
  754.        Makefile > Makefile.tem
  755. rm -f Makefile
  756. mv -f Makefile.tem Makefile
  757.  
  758. #
  759. # Local Variables:
  760. # fill-column: 131
  761. # End:
  762. #
  763.