home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / binutils-2.7-src.tgz / tar.out / fsf / binutils / gas / configure.in < prev    next >
Text File  |  1996-09-28  |  22KB  |  731 lines

  1. dnl Process this file with autoconf to produce a configure script.
  2. dnl
  3. dnl And be careful when changing it!  If you must add tests with square
  4. dnl brackets, be sure changequote invocations surround it.
  5. dnl
  6. dnl
  7. AC_PREREQ(2.5)dnl v2.5 needed for --bindir et al
  8. AC_INIT(as.h)dnl
  9. dnl
  10. user_bfd_gas=
  11. AC_ARG_ENABLE(bfd-assembler,
  12. [  --enable-bfd-assembler  use BFD back end for writing object files],
  13. [case "${enableval}" in
  14.   yes) need_bfd=yes user_bfd_gas=yes ;;
  15.   no)  user_bfd_gas=no ;;
  16.   *)   AC_MSG_ERROR(bad value ${enableval} given for bfd-assembler option) ;;
  17. esac])dnl
  18. AC_ARG_ENABLE(targets,
  19. [    targets            alternative target configurations besides the primary],
  20. [case "${enableval}" in
  21.   yes | "") AC_ERROR(enable-targets option must specify target names or 'all')
  22.         ;;
  23.   no)        enable_targets= ;;
  24.   *)        enable_targets=$enableval ;;
  25. esac])dnl
  26. AC_ARG_ENABLE(shared,
  27. [  --enable-shared         build shared BFD library],
  28. [case "${enableval}" in
  29.   yes) shared=true shared_bfd=true shared_opcodes=true ;;
  30.   no)  shared=false ;;
  31.   *bfd*opcodes*) shared=true shared_bfd=true shared_opcodes=true ;;
  32.   *opcodes*bfd*) shared=true shared_bfd=true shared_opcodes=true ;;
  33.   *bfd*) shared=true shared_bfd=true ;;
  34.   *opcodes*) shared=true shared_opcodes=true ;;
  35.   *) shared=false ;;
  36. esac])dnl
  37.  
  38. # Generate a header file -- gets more post-processing by Makefile later.
  39. AC_CONFIG_HEADER(conf)
  40.  
  41. dnl For recursion to work right, this must be an absolute pathname.
  42. AC_CONFIG_AUX_DIR(`cd $srcdir;pwd`/..)
  43. AC_CANONICAL_SYSTEM
  44. AC_ARG_PROGRAM
  45.  
  46. te_file=generic
  47.  
  48. canon_targets=""
  49. if test -n "$enable_targets" ; then
  50.   for t in `echo $enable_targets | sed 's/,/ /g'`; do
  51.     result=`$ac_config_sub $t 2>/dev/null`
  52.     if test -n "$result" ; then
  53.       canon_targets="$canon_targets $result"
  54. #    else
  55. #      # Permit "all", etc.  We don't support it yet though.
  56. #      canon_targets="$canon_targets $t"
  57.     fi
  58.   done
  59.   GAS_UNIQ(canon_targets)
  60. fi
  61.  
  62. emulations=""
  63.  
  64. for this_target in $target $canon_targets ; do
  65.  
  66.     eval `echo $this_target | sed 's/^\(.*\)-\(.*\)-\(.*\)$/cpu=\1 vendor=\2 os=\3/'`
  67.  
  68.     # check for architecture variants
  69.     case ${cpu} in
  70.       armeb)        cpu_type=arm endian=big ;;
  71.       arm*)        cpu_type=arm endian=little ;;
  72.       hppa*)        cpu_type=hppa ;;
  73. changequote(,)dnl
  74.       i[456]86)        cpu_type=i386 ;;
  75.       m680[012346]0)    cpu_type=m68k ;;
  76.       m68008)        cpu_type=m68k ;;
  77.       m683??)        cpu_type=m68k ;;
  78. changequote([,])dnl
  79.       m8*)        cpu_type=m88k ;;
  80.       m68*)        cpu_type=m68k ;;
  81.       mips*el)        cpu_type=mips endian=little;;
  82.       mips*)        cpu_type=mips endian=big ;;
  83.       powerpcle*)    cpu_type=ppc endian=little ;;
  84.       powerpc*)        cpu_type=ppc endian=big ;;
  85.       rs6000*)        cpu_type=ppc ;;
  86.       sparc64)        cpu_type=sparc want_sparc_v9=true ;;
  87.       sparc*)        cpu_type=sparc ;;
  88.       *)        cpu_type=${cpu} ;;
  89.     esac
  90.  
  91.     if test ${this_target} = $target ; then
  92.       target_cpu_type=${cpu_type}
  93.     elif test ${target_cpu_type} != ${cpu_type} ; then
  94.       continue
  95.     fi
  96.  
  97.     targ=${cpu_type}
  98.     generic_target=${cpu_type}-$vendor-$os
  99.     dev=no
  100.     bfd_gas=no
  101.     em=generic
  102.  
  103.     # assign object format
  104.     case ${generic_target} in
  105.       a29k-*-coff)          fmt=coff targ=ebmon29k ;;
  106.       a29k-amd-udi)         fmt=coff targ=ebmon29k ;;
  107.       a29k-amd-ebmon)       fmt=coff targ=ebmon29k ;;
  108.       a29k-nyu-sym1)        fmt=coff targ=ebmon29k ;;
  109.       a29k-*-vxworks*)      fmt=coff ;;
  110.  
  111.       alpha-*-netware*)     fmt=ecoff ;;
  112.       alpha-*-osf*)         fmt=ecoff ;;
  113.       alpha-*-linuxecoff*)  fmt=ecoff ;;
  114.       alpha-*-linux*)       fmt=elf em=linux ;;
  115.  
  116.  
  117.       arm-*-riscix*)        fmt=aout targ=arm-lit em=riscix ;;
  118.       arm-*-aout)        fmt=aout
  119.                 case "$endian" in
  120.                   big)    targ=arm-big ;;
  121.                   *)    targ=arm-lit ;;
  122.                 esac
  123.                 ;;
  124.       arm-*-coff)           fmt=coff ;;
  125.       arm-*-riscix*)        fmt=aout ;;
  126.       arm-*-pe)             fmt=coff targ=armcoff em=pe ;;
  127.  
  128.       hppa-*-*elf*)         fmt=elf em=hppa ;;
  129.       hppa-*-lites*)        fmt=elf em=hppa ;;
  130.       hppa-*-osf*)          fmt=som em=hppa ;;
  131.       hppa-*-hpux*)         fmt=som em=hppa ;;
  132.       hppa-*-bsd*)          fmt=som em=hppa ;;
  133.       hppa-*-hiux*)         fmt=som em=hppa ;;
  134.  
  135.       h8300-*-coff)         fmt=coff ;;
  136.  
  137.       i386-ibm-aix*)        fmt=coff targ=i386coff
  138.                  em=i386aix ;;
  139.       i386-*-bsd*)          fmt=aout em=386bsd ;;
  140.       i386-*-netbsd0.8)     fmt=aout em=386bsd ;;
  141.       i386-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes;;
  142.       i386-*-linux*aout* | i386-*-linuxoldld)   fmt=aout em=linux ;;
  143.       i386-*-linux*coff*)   fmt=coff em=linux
  144.                  targ=i386coff ;;
  145.       i386-*-linux*)        fmt=elf em=linux ;;
  146.       i386-*-lynxos*)       fmt=coff targ=i386coff
  147.                  em=lynx ;;
  148.       i386-*-sysv4* | i386-*-solaris* | i386-*-elf | i386-*-freebsdelf*)
  149.                 fmt=elf ;;
  150.       i386-*-sco*elf*)      fmt=elf targ=sco5 ;;
  151.       i386-*-coff | i386-*-sysv* | i386-*-sco* | i386-*-isc*)
  152.                 fmt=coff targ=i386coff ;;
  153.       i386-*-vsta)          fmt=aout ;;
  154.       i386-*-go32)          fmt=coff targ=i386coff ;;
  155.       i386-*-rtems*)        fmt=coff targ=i386coff ;;
  156.       i386-*-gnu*)          fmt=elf ;;
  157.       i386-*-mach*)
  158.                 fmt=aout em=mach bfd_gas=yes ;;
  159.       i386-*-msdos*)        fmt=aout ;;
  160.       i386-*-moss*)        fmt=elf ;;
  161.       i386-*-pe)            fmt=coff targ=i386coff em=pe ;;
  162.       i386-*-cygwin32)      fmt=coff targ=i386coff em=pe ;;
  163.       i386-*-*nt)           fmt=coff targ=i386coff em=pe ;;
  164.       i960-*-bout)          fmt=bout ;;
  165.       i960-*-coff)          fmt=coff em=ic960 targ=ic960coff ;;
  166.       i960-*-rtems*)        fmt=coff em=ic960 targ=ic960coff ;;
  167.       i960-*-nindy*)        fmt=bout ;;
  168.       i960-*-vxworks4*)     fmt=bout ;;
  169.       i960-*-vxworks5.0)    fmt=bout ;;
  170.       i960-*-vxworks5.*)    fmt=coff em=ic960 targ=ic960coff ;;
  171.       i960-*-vxworks*)      fmt=bout ;;
  172.  
  173.       m68k-*-vxworks* | m68k-ericsson-ose | m68k-*-sunos* | m68*-*-amigaos*)
  174.                 fmt=aout em=sun3 ;;
  175.       m68k-motorola-sysv*)  fmt=coff targ=m68kcoff em=delta ;;
  176.       m68k-bull-sysv3*)     fmt=coff targ=m68kcoff em=dpx2 ;;
  177.       m68k-apollo-*)        fmt=coff targ=apollo em=apollo ;;
  178.       m68k-*-sysv4 | m68k-*-elf) # must be before -sysv*
  179.                 fmt=elf ;;
  180.       m68k-*-coff | m68k-*-sysv* | m68k-*-rtems*)
  181.                 fmt=coff targ=m68kcoff ;;
  182.       m68k-*-hpux*)         fmt=hp300 em=hp300 ;;
  183.       m68k-*-linux*aout*)   fmt=aout em=linux ;;
  184.       m68k-*-linux*)        fmt=elf em=linux ;;
  185.       m68k-*-lynxos*)       fmt=coff targ=m68kcoff
  186.                  em=lynx ;;
  187.       m68k-*-netbsd*)       fmt=aout em=nbsd bfd_gas=yes ;;
  188.       m68k-apple-aux*)      fmt=coff targ=m68kcoff em=aux ;;
  189.       m68k-*-psos*)         fmt=elf em=psos;;
  190.  
  191.       m88k-motorola-sysv3*) fmt=coff targ=m88kcoff em=delt88 ;;
  192.       m88k-*-coff*)         fmt=coff targ=m88kcoff ;;
  193.  
  194.       # don't change em like *-*-bsd does
  195.       mips-dec-netbsd*)        fmt=elf targ=mips-lit endian=little ;;
  196.       mips-dec-bsd*)        fmt=aout targ=mips-lit ;;
  197.       mips-sony-bsd*)       fmt=ecoff targ=mips-big ;;
  198.       mips-*-bsd*)          AC_MSG_ERROR(Unknown vendor for mips-bsd configuration.) ;;
  199.       mips-*-ultrix*)       fmt=ecoff targ=mips-lit endian=little ;;
  200.       mips-*-osf*)          fmt=ecoff targ=mips-lit endian=little ;;
  201.       mips-*-ecoff*)        fmt=ecoff 
  202.                 case "$endian" in
  203.                 big) targ=mips-big ;;
  204.                 *)   targ=mips-lit ;;
  205.                 esac
  206.                 ;;
  207.       mips-*-ecoff*)        fmt=ecoff targ=mips-big ;;
  208.       mips-*-gnu*)          fmt=aout
  209.                 case "$endian" in
  210.                 big) targ=mips-big ;;
  211.                 *)   targ=mips-lit ;;
  212.                 esac
  213.                 ;;
  214.       mips-*-irix5*)        fmt=elf targ=mips-big ;;
  215.       mips-*-irix*)         fmt=ecoff targ=mips-big ;;
  216.       mips-*-riscos*)       fmt=ecoff targ=mips-big ;;
  217.       mips-*-sysv*)         fmt=ecoff targ=mips-big ;;
  218.       mips-*-elf*)          fmt=elf 
  219.                 case "$endian" in
  220.                 big) targ=mips-big ;;
  221.                 *)   targ=mips-lit ;;
  222.                 esac
  223.                 ;;
  224.       ppc-*-pe | ppc-*-cygwin32 | ppc-*-winnt*)
  225.                     fmt=coff em=pe 
  226.                 case "$endian" in
  227.                 big) targ=ppc-big ;;
  228.                 *)   targ=ppc-lit ;;
  229.                 esac
  230.                             ;;
  231.       ppc-*-aix*)           fmt=coff ;;
  232.       ppc-*-elf* | ppc-*-eabi* | ppc-*-sysv4* | ppc-*-amigaos*)
  233.                 fmt=elf
  234.                 case "$endian" in
  235.                 big)  targ=ppc-big ;;
  236.                 *)    targ=ppc-lit ;;
  237.                 esac
  238.                 ;;
  239.       ppc-*-linux*)        fmt=elf
  240.                 case "$endian" in
  241.                 big)  targ=ppc-big ;;
  242.                 *)    AC_MSG_ERROR(Linux must be configured big endian) ;;
  243.                 esac
  244.                 ;;
  245.       ppc-*-solaris*)        fmt=elf
  246.                 case "$endian" in
  247.                 big)  AC_MSG_ERROR(Solaris must be configured little endian) ;;
  248.                 *)    targ=ppc-sol ;;
  249.                 esac
  250.                 ;;
  251.       ppc-*-rtems*)
  252.                 fmt=elf
  253.                 case "$endian" in
  254.                 big)  targ=ppc-big ;;
  255.                 *)    targ=ppc-lit ;;
  256.                 esac
  257.                 ;;
  258.       ppc-*-macos* | ppc-*-mpw*)
  259.                 fmt=coff em=macos ;;
  260.       ppc-*-netware*)       fmt=elf em=ppcnw ;;
  261.  
  262.       sh-*-coff)            fmt=coff ;;
  263.  
  264.       ns32k-pc532-mach* | ns32k-pc532-ux*)    fmt=aout em=pc532mach ;;
  265.       ns32k-pc532-netbsd* | ns32k-pc532-lites*)  fmt=aout em=nbsd532 ;;
  266.  
  267.       sparc-*-rtems*)       fmt=aout ;;
  268.       sparc-*-sunos4*)      fmt=aout em=sun3 ;;
  269.       sparc-*-aout | sparc*-*-vxworks*)
  270.                 fmt=aout ;;
  271.       sparc-*-coff)         fmt=coff ;;
  272.       sparc-*-lynxos*)      fmt=coff em=lynx ;;
  273.       sparc-fujitsu-none)   fmt=aout ;;
  274.       sparc-*-elf | sparc-*-solaris*)
  275.                 fmt=elf ;;
  276.       sparc-*-netbsd*)      fmt=aout em=nbsd bfd_gas=yes ;;
  277.  
  278.       vax-*-bsd* | vax-*-ultrix*)
  279.                 fmt=aout ;;
  280.       vax-*-vms)            fmt=vms ;;
  281.  
  282.       z8k-*-coff | z8k-*-sim)
  283.                 fmt=coff ;;
  284.  
  285.       w65-*-*)              fmt=coff ;;
  286.  
  287.       *-*-aout | *-*-scout)
  288.                 fmt=aout ;;
  289.       *-*-nindy*)
  290.                 fmt=bout ;;
  291.       *-*-bsd*)
  292.                 fmt=aout em=sun3 ;;
  293.       *-*-generic)          fmt=generic ;;
  294.       *-*-xray | *-*-hms)   fmt=coff ;;
  295.       *-*-sim)              fmt=coff ;;
  296.       *-*-elf | *-*-sysv4* | *-*-solaris*)
  297.                 AC_MSG_WARN(GAS support for ${generic_target} is incomplete.)
  298.                 fmt=elf dev=yes ;;
  299.       *-*-vxworks)          fmt=aout ;;
  300.       *-*-netware)          fmt=elf ;;
  301.     esac
  302.  
  303.     case ${cpu_type}-${fmt} in
  304.       alpha-*)    bfd_gas=yes ;;
  305.       arm-*)    bfd_gas=yes ;;
  306.     # not yet
  307.     # i386-aout)    bfd_gas=preferred ;;
  308.       mips-*)    bfd_gas=yes ;;
  309.       ns32k-*)    bfd_gas=yes ;;
  310.       ppc-*)    bfd_gas=yes ;;
  311.       sparc-*)    bfd_gas=yes ;;
  312.       *-elf)    bfd_gas=yes ;;
  313.       *-ecoff)    bfd_gas=yes ;;
  314.       *-som)    bfd_gas=yes ;;
  315.       *)        ;;
  316.     esac
  317.  
  318. # Other random stuff.
  319.  
  320.     # do we need the opcodes library?
  321.     case ${cpu_type} in
  322.       vax | i386)
  323.     ;;
  324.       *)
  325.     need_opcodes=yes
  326.     if test "${shared_opcodes}" = "true"; then
  327.       # A shared libopcodes must be linked against libbfd.
  328.       need_bfd=yes
  329.     fi
  330.     ;;
  331.     esac
  332.  
  333.     test -n "$want_sparc_v9" && AC_DEFINE(SPARC_V9)
  334.  
  335.     case ${cpu}-${vendor}-${os} in
  336.       sparc64-*-elf*) AC_DEFINE(SPARC_ARCH64) ;;
  337.     esac
  338.  
  339.     case ${cpu_type} in
  340.       m68k)
  341.     case ${extra_objects} in
  342.     *m68k-parse.o*) ;;
  343.     *) extra_objects="$extra_objects m68k-parse.o" ;;
  344.     esac
  345.     ;;
  346.     esac
  347.  
  348. # See if we really can support this configuration with the emulation code.
  349.  
  350.     if test $this_target = $target ; then
  351.       primary_bfd_gas=$bfd_gas
  352.       obj_format=$fmt
  353.       gas_target=$targ
  354.       te_file=$em
  355.  
  356.       if test $bfd_gas = no ; then
  357.     # Can't support other configurations this way.
  358.     break
  359.       fi
  360.     elif test $bfd_gas = no ; then
  361.       # Can't support this configuration.
  362.       break
  363.     fi
  364.  
  365. # From target name and format, produce a list of supported emulations.
  366.  
  367.     case ${generic_target}-${fmt} in
  368.       mips-*-irix5*-*)    emulation="mipsbelf mipslelf mipself mipsbecoff mipslecoff mipsecoff" ;;
  369.       mips-*-*-ecoff)    case "$endian" in
  370.             big)    emulation="mipsbecoff mipslecoff mipsecoff" ;;
  371.             *)    emulation="mipslecoff mipsbecoff mipsecoff" ;;
  372.             esac ;;
  373.       mips-*-*-elf)    case "$endian" in
  374.             big)    emulation="mipsbelf mipslelf mipself" ;;
  375.             *)    emulation="mipslelf mipsbelf mipself" ;;
  376.             esac ;;
  377.     esac
  378.  
  379.     emulations="$emulations $emulation"
  380.  
  381. done
  382.  
  383. # Assign floating point type.  Most processors with FP support
  384. # IEEE FP.  On those that don't support FP at all, usually IEEE
  385. # is emulated.
  386. case ${target_cpu} in
  387.   vax | tahoe )    atof=${target_cpu} ;;
  388.   *)        atof=ieee ;;
  389. esac
  390.  
  391. case "${obj_format}" in
  392.   "") AC_MSG_ERROR(GAS does not know what format to use for target ${target}) ;;
  393. esac
  394.  
  395. dnl
  396. dnl Make sure the desired support files exist.
  397. dnl
  398.  
  399. if test ! -r ${srcdir}/config/tc-${target_cpu_type}.c; then
  400.   AC_MSG_ERROR(GAS does not support target CPU ${target_cpu_type})
  401. fi
  402.  
  403. if test ! -r ${srcdir}/config/obj-${obj_format}.c; then
  404.   AC_MSG_ERROR(GAS does not have support for object file format ${obj_format})
  405. fi
  406.  
  407. # and target makefile frag
  408.  
  409. target_frag=${srcdir}/config/${gas_target}.mt
  410. if test ! -r ${target_frag}; then
  411.   target_frag=/dev/null # ick! but subst_file can't be conditionalized
  412. fi
  413. AC_SUBST_FILE(target_frag)
  414.  
  415. case ${user_bfd_gas}-${primary_bfd_gas} in
  416.   yes-yes | no-no)
  417.     # We didn't override user's choice.
  418.     ;;
  419.   no-yes)
  420.     AC_MSG_WARN(Use of BFD is required for ${target}; overriding config options.)
  421.     ;;
  422.   no-preferred)
  423.     primary_bfd_gas=no
  424.     ;;
  425.   *-preferred)
  426.     primary_bfd_gas=yes
  427.     ;;
  428.   yes-*)
  429.     primary_bfd_gas=yes
  430.     ;;
  431.   -*)
  432.     # User specified nothing.
  433.     ;;
  434. esac
  435.  
  436. # Some COFF configurations want these random other flags set.
  437. case ${obj_format} in
  438.   coff)
  439.     case ${target_cpu_type} in
  440.       i386) AC_DEFINE(I386COFF) ;;
  441.       m68k) AC_DEFINE(M68KCOFF) ;;
  442.       m88k) AC_DEFINE(M88KCOFF) ;;
  443.     esac
  444.     ;;
  445. esac
  446.  
  447. # Getting this done right is going to be a bitch.  Each configuration specified
  448. # with --enable-targets=... should be checked for environment, format, cpu, and
  449. # bfd_gas setting.
  450. #
  451. # For each configuration, the necessary object file support code must be linked
  452. # in.  This might be only one, it might be up to four.  The necessary emulation
  453. # code needs to be provided, too.
  454. #
  455. # And then there's "--enable-targets=all"....
  456. #
  457. # For now, just always do it for MIPS ELF or ECOFF configurations.  Sigh.
  458.  
  459. formats="${obj_format}"
  460. emfiles=""
  461. EMULATIONS=""
  462. GAS_UNIQ(emulations)
  463. for em in . $emulations ; do
  464.   case $em in
  465.     .)    continue ;;
  466.     mipsbelf | mipslelf)
  467.     fmt=elf   file=mipself ;;
  468.     mipsbecoff | mipslecoff)
  469.     fmt=ecoff file=mipsecoff ;;
  470.   esac
  471.   formats="$formats $fmt"
  472.   emfiles="$emfiles e-$file.o"
  473.   EMULATIONS="$EMULATIONS &$em,"
  474. done
  475. GAS_UNIQ(formats)
  476. GAS_UNIQ(emfiles)
  477. if test `set . $formats ; shift ; echo $#` -gt 1 ; then
  478.   for fmt in $formats ; do
  479.     case $fmt in
  480.       aout)    AC_DEFINE(OBJ_MAYBE_AOUT)    ;;
  481.       bout)    AC_DEFINE(OBJ_MAYBE_BOUT)    ;;
  482.       coff)    AC_DEFINE(OBJ_MAYBE_COFF)    ;;
  483.       ecoff)    AC_DEFINE(OBJ_MAYBE_ECOFF)   ;;
  484.       elf)    AC_DEFINE(OBJ_MAYBE_ELF)     ;;
  485.       generic)    AC_DEFINE(OBJ_MAYBE_GENERIC) ;;
  486.       hp300)    AC_DEFINE(OBJ_MAYBE_HP300)   ;;
  487.       ieee)    AC_DEFINE(OBJ_MAYBE_IEEE)    ;;
  488.       som)    AC_DEFINE(OBJ_MAYBE_SOM)     ;;
  489.       vms)    AC_DEFINE(OBJ_MAYBE_VMS)     ;;
  490.     esac
  491.     extra_objects="$extra_objects obj-$fmt.o"
  492.   done
  493.   obj_format=multi
  494. fi
  495. if test `set . $emfiles ; shift ; echo $#` -gt 0 ; then
  496.   te_file=multi
  497.   extra_objects="$extra_objects $emfiles"
  498.   DEFAULT_EMULATION=`set . $emulations ; echo $2`
  499.   AC_DEFINE(USE_EMULATIONS)
  500. fi
  501. AC_SUBST(extra_objects)
  502. AC_DEFINE_UNQUOTED(EMULATIONS, $EMULATIONS)
  503. AC_DEFINE_UNQUOTED(DEFAULT_EMULATION, "$DEFAULT_EMULATION")
  504.  
  505. files="config/tc-${target_cpu_type}.c config/tc-${target_cpu_type}.h \
  506.     config/obj-${obj_format}.h config/obj-${obj_format}.c \
  507.     config/te-${te_file}.h config/atof-${atof}.c \
  508.     $extra_files"
  509. links="targ-cpu.c targ-cpu.h obj-format.h obj-format.c targ-env.h atof-targ.c \
  510.     $extra_links"
  511.  
  512. case ${primary_bfd_gas}-${target_cpu_type}-${obj_format} in
  513.   yes-*-coff)    need_bfd=yes ;;
  514.   no-*-coff)    need_bfd=yes
  515.         AC_DEFINE(MANY_SEGMENTS) ;;
  516. esac
  517.  
  518. reject_dev_configs=yes
  519.  
  520. case ${reject_dev_configs}-${dev} in
  521.   yes-yes) # Oops.
  522.     AC_MSG_ERROR(GAS does not support the ${generic_target} configuration.)
  523.     ;;
  524. esac
  525.  
  526. AC_SUBST(target_cpu_type)
  527. AC_SUBST(obj_format)
  528. AC_SUBST(atof)
  529. dnl AC_SUBST(emulation)
  530.  
  531. AC_LINK_FILES($files, $links)
  532.  
  533. case "${primary_bfd_gas}" in
  534.   yes)    AC_DEFINE(BFD_ASSEMBLER)
  535.     need_bfd=yes ;;
  536. esac
  537.  
  538. # do we need the opcodes library?
  539. case "${need_opcodes}" in
  540. yes)
  541.   OPCODES_DEP=../opcodes/libopcodes.a
  542.   OPCODES_LIB='-L../opcodes -lopcodes'
  543.  
  544.   # We need to handle some special cases for shared libraries.
  545.   case "${host}" in
  546.   *-*-sunos*)
  547.     # On SunOS, we must link against the name we are going to install,
  548.     # not -lbfd, since SunOS does not support SONAME.
  549.     if test "${shared_opcodes}" = "true"; then
  550.       OPCODES_LIB='-L../opcodes -l`echo opcodes | sed '"'"'$(program_transform_name)'"'"'`'
  551.     fi
  552.     ;;
  553.   alpha*-*-osf*)
  554.     # On Alpha OSF/1, the native linker searches all the -L
  555.     # directories for any LIB.so files, and only then searches for any
  556.     # LIB.a files.  That means that if there is an installed
  557.     # libbfd.so, but this build is not done with --enable-shared, the
  558.     # link will wind up being against the install libbfd.so rather
  559.     # than the newly built libbfd.  To avoid this, we must explicitly
  560.     # link against libbfd.a when --enable-shared is not used.
  561.     if test "${shared_opcodes}" != "true"; then
  562.       OPCODES_LIB='../opcodes/libopcodes.a'
  563.     fi
  564.     ;;
  565.   esac
  566.   ;;
  567. esac
  568. AC_SUBST(OPCODES_DEP)
  569. AC_SUBST(OPCODES_LIB)
  570.  
  571. case "${need_bfd}" in
  572. yes)
  573.   BFDDEP=../bfd/libbfd.a
  574.   BFDLIB='-L../bfd -lbfd'
  575.   ALL_OBJ_DEPS="$ALL_OBJ_DEPS ../bfd/bfd.h"
  576.  
  577.   # We need to handle some special cases for shared libraries
  578.   case "${host}" in
  579.   *-*-sunos*)
  580.     # On SunOS, we must link against the name we are going to install,
  581.     # not -lbfd, since SunOS does not support SONAME.
  582.     if test "${shared_bfd}" = "true"; then
  583.       BFDLIB='-L../bfd -l`echo bfd | sed '"'"'$(program_transform_name)'"'"'`'
  584.     fi
  585.     ;;
  586.   alpha*-*-osf*)
  587.     # On Alpha OSF/1, the native linker searches all the -L
  588.     # directories for any LIB.so files, and only then searches for any
  589.     # LIB.a files.  That means that if there is an installed
  590.     # libbfd.so, but this build is not done with --enable-shared, the
  591.     # link will wind up being against the install libbfd.so rather
  592.     # than the newly built libbfd.  To avoid this, we must explicitly
  593.     # link against libbfd.a when --enable-shared is not used.
  594.     if test "${shared_bfd}" != "true"; then
  595.       BFDLIB='../bfd/libbfd.a'
  596.     fi
  597.     ;;
  598.   esac
  599.   ;;
  600. esac
  601. AC_SUBST(BFDDEP)
  602. AC_SUBST(BFDLIB)
  603. AC_SUBST(ALL_OBJ_DEPS)
  604.  
  605. AC_DEFINE_UNQUOTED(TARGET_ALIAS,    "${target_alias}")
  606. AC_DEFINE_UNQUOTED(TARGET_CANONICAL,    "${target}")
  607. AC_DEFINE_UNQUOTED(TARGET_CPU,        "${target_cpu}")
  608. AC_DEFINE_UNQUOTED(TARGET_VENDOR,    "${target_vendor}")
  609. AC_DEFINE_UNQUOTED(TARGET_OS,        "${target_os}")
  610.  
  611. AC_PROG_CC
  612. AC_PROG_INSTALL
  613.  
  614. AC_CHECK_HEADERS(string.h stdlib.h memory.h strings.h unistd.h stdarg.h varargs.h errno.h sys/types.h)
  615.  
  616. # Put this here so that autoconf's "cross-compiling" message doesn't confuse
  617. # people who are not cross-compiling but are compiling cross-assemblers.
  618. AC_MSG_CHECKING(whether compiling a cross-assembler)
  619. if test "${host}" = "${target}"; then
  620.   cross_gas=no
  621. else
  622.   cross_gas=yes
  623.   AC_DEFINE(CROSS_COMPILE)
  624. fi
  625. AC_MSG_RESULT($cross_gas)
  626.  
  627. dnl ansidecl.h will deal with const
  628. dnl AC_CONST
  629. AC_FUNC_ALLOCA
  630. AC_C_INLINE
  631.  
  632. # VMS doesn't have unlink.
  633. AC_CHECK_FUNCS(unlink remove, break)
  634.  
  635. # Some systems don't have sbrk().
  636. AC_CHECK_FUNCS(sbrk)
  637.  
  638. # Some non-ANSI preprocessors botch requoting inside strings.  That's bad
  639. # enough, but on some of those systems, the assert macro relies on requoting
  640. # working properly!
  641. GAS_WORKING_ASSERT
  642.  
  643. # On some systems, the system header files may not declare malloc, realloc,
  644. # and free.  There are places where gas needs these functions to have been
  645. # declared -- such as when taking their addresses.
  646. gas_test_headers="
  647. #ifdef HAVE_MEMORY_H
  648. #include <memory.h>
  649. #endif
  650. #ifdef HAVE_STRING_H
  651. #include <string.h>
  652. #endif
  653. #ifdef HAVE_STDLIB_H
  654. #include <stdlib.h>
  655. #endif
  656. #ifdef HAVE_UNISTD_H
  657. #include <unistd.h>
  658. #endif
  659. "
  660. GAS_CHECK_DECL_NEEDED(malloc, f, char *(*f)(), $gas_test_headers)
  661. GAS_CHECK_DECL_NEEDED(free, f, void (*f)(), $gas_test_headers)
  662.  
  663. # Does errno.h declare errno, or do we have to add a separate declaration
  664. # for it?
  665. GAS_CHECK_DECL_NEEDED(errno, f, int f, [
  666. #ifdef HAVE_ERRNO_H
  667. #include <errno.h>
  668. #endif
  669. ])
  670.  
  671. HLDFLAGS=
  672. RPATH_ENVVAR=LD_LIBRARY_PATH
  673. # If we have shared libraries, try to set rpath reasonably.
  674. if test "${shared}" = "true"; then
  675.   case "${host}" in
  676.   *-*-hpux*)
  677.     HLDFLAGS='-Wl,+s,+b,$(libdir)'
  678.     RPATH_ENVVAR=SHLIB_PATH
  679.     ;;
  680.   *-*-irix5*)
  681.     HLDFLAGS='-Wl,-rpath,$(libdir)'
  682.     ;;
  683.   *-*-linux*aout*)
  684.     ;;
  685.   *-*-linux*)
  686.     HLDFLAGS='-Wl,-rpath,$(libdir)'
  687.     ;;
  688.   *-*-sysv4* | *-*-solaris*)
  689.     HLDFLAGS='-R $(libdir)'
  690.     ;;
  691.   esac
  692. fi
  693.  
  694. ### begin-ADE-local
  695. # Check for additional host specific CFLAGS.
  696. AC_MSG_CHECKING(for host dependent CFLAGS)
  697. other_host_cflags=""
  698. case "${host}" in
  699.     m68*-*-amigaos*)    other_host_cflags="-mstackextend" ;;
  700. esac
  701. test -n "$other_host_cflags" && CFLAGS="$CFLAGS $other_host_cflags"
  702. AC_MSG_RESULT($other_host_cflags)
  703. ### end-ADE-local
  704.  
  705. # On SunOS, if the linker supports the -rpath option, use it to
  706. # prevent ../bfd and ../opcodes from being included in the run time
  707. # search path.
  708. case "${host}" in
  709.   *-*-sunos*)
  710.     echo 'main () { }' > conftest.c
  711.     ${CC} -o conftest -Wl,-rpath= conftest.c >/dev/null 2>conftest.t
  712.     if grep 'unrecognized' conftest.t >/dev/null 2>&1; then
  713.       :
  714.     elif grep 'No such file' conftest.t >/dev/null 2>&1; then
  715.       :
  716.     elif grep 'do not mix' conftest.t >/dev/null 2>&1; then
  717.       :
  718.     elif test "${shared}" = "true"; then
  719.       HLDFLAGS='-Wl,-rpath=$(libdir)'
  720.     else
  721.       HLDFLAGS='-Wl,-rpath='
  722.     fi
  723.     rm -f conftest.t conftest.c conftest
  724.     ;;
  725. esac
  726. AC_SUBST(HLDFLAGS)
  727. AC_SUBST(RPATH_ENVVAR)
  728.  
  729. dnl This must come last.
  730. AC_OUTPUT(Makefile doc/Makefile .gdbinit:gdbinit.in)
  731.