home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / octave-1.1.1p1-src.tgz / tar.out / fsf / octave / flibs.sh < prev    next >
Linux/UNIX/POSIX Shell Script  |  1996-09-28  |  3KB  |  143 lines

  1. #!/bin/sh
  2. #
  3. # flibs -- try to get the Fortran compiler to tell us what libraries
  4. # it expects to link to, and echo the result to the standard output.
  5. #
  6. # John W. Eaton
  7. # jwe@che.utexas.edu
  8. # Department of Chemical Engineering
  9. # The University of Texas at Austin
  10.  
  11. trap 'rm -f conftest* core; exit 1' 1 3 15
  12.  
  13. # Write a minimal program and compile it with -v.  I don't know what
  14. # to do if your compiler doesn't have -v...
  15.  
  16. echo "      END" > conftest.f
  17.  
  18. if test $# -eq 1
  19. then
  20.   foutput=`cat $1`
  21. else
  22.   foutput=`${F77-f77} -v -o conftest conftest.f 2>&1`
  23. fi
  24.  
  25. # The easiest thing to do for xlf output is to replace all the commas
  26. # with spaces.  Try to only do that if the output is really from xlf,
  27. # since doing that causes problems on other systems.
  28.  
  29. xlf_p=`echo $foutput | grep xlfentry`
  30. if test -n "$xlf_p"
  31. then
  32.   foutput=`echo $foutput | sed 's/,/ /g'`
  33. fi
  34.  
  35. #Begin amiga hack - sed command crashes amiga
  36. #ld_run_path=`echo $foutput | \
  37. #  sed -n -e 's/.*\(LD_RUN_PATH *= *[^ ]*\).*/\1/p' | \
  38. #  sed -e 's/LD_RUN_PATH *= *//'`
  39. #End amiga hack
  40.  
  41. # We are only supposed to find this on Solaris systems, and this
  42. # substitution is probably only going to work with gcc on those
  43. # systems...
  44.  
  45. if test -n "$ld_run_path"
  46. then
  47.   ld_run_path="-Xlinker -R -Xlinker $ld_run_path"
  48. fi
  49.  
  50. flibs=
  51. lflags=
  52.  
  53. # If want_arg is set, we know we want the arg to be added to the list,
  54. # so we don't have to examine it.
  55. want_arg=
  56.  
  57. for arg in $foutput
  58. do
  59.   if test -z "$want_arg"
  60.   then
  61.     case $arg in
  62.       /*.a | /*values-*.o)
  63.         exists=false
  64.         for f in $lflags
  65.         do
  66.           if test x$arg = x$f
  67.           then
  68.             exists=true
  69.           fi
  70.         done
  71.     if $exists
  72.     then
  73.       arg=
  74.         else
  75.           lflags="$lflags $arg"
  76.     fi
  77.       ;;
  78.       -lang*)
  79.         arg=
  80.       ;;
  81.       -[lL]*)
  82.         exists=false
  83.         for f in $lflags
  84.         do
  85.           if test x$arg = x$f
  86.           then
  87.             exists=true
  88.           fi
  89.         done
  90.     if $exists || test x$arg = x-lm -o x$arg = x-lc
  91.     then
  92.       arg=
  93.         else
  94.           lflags="$lflags $arg"
  95.     fi
  96.       ;;
  97.       -u)
  98.         want_arg=$arg
  99.       ;;
  100.       -Y)
  101.         want_arg=$arg
  102.         arg=
  103.       ;;
  104.       *)
  105.         arg=
  106.       ;;
  107.     esac
  108.   else
  109.     if test x$want_arg = x-Y
  110.     then
  111.  
  112. # Should probably try to ensure unique directory options here too.
  113. # This probably only applies to Solaris systems, and then will only
  114. # work with gcc...
  115.  
  116.       arg=`echo $arg | sed -e 's%^P,%%'`
  117.       SAVE_IFS=$IFS
  118.       IFS=:
  119.       list=
  120.       for elt in $arg
  121.       do
  122.         list="$list -L $elt"
  123.       done
  124.       IFS=$SAVE_IFS
  125.       arg="$list"
  126.     fi
  127.     want_arg=
  128.   fi
  129.  
  130.   if test -n "$arg"
  131.   then
  132.     flibs="$flibs $arg"
  133.   fi
  134. done
  135.  
  136. echo "$ld_run_path $flibs"
  137.  
  138. rm -f conftest* core
  139.  
  140. # Bye-bye.
  141.  
  142. exit 0
  143.