ccver.sh 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #!/bin/sh
  2. #$Id$
  3. #
  4. # finds CC version and prints it in the following format:
  5. # compiler_name version major_version
  6. #
  7. if [ $# -lt 1 ]
  8. then
  9. echo "Error: you must specify the compiler name" 1>&2
  10. exit 1
  11. fi
  12. if [ "$1" = "-h" ]
  13. then
  14. echo "Usage: "
  15. echo " $0 compiler_name"
  16. exit 1
  17. fi
  18. CC=$1
  19. if which $CC >/dev/null
  20. then
  21. (test ! -x `which $CC`) && echo "Error: $CC not executable" 1>&2 && exit 1
  22. else
  23. echo "Error: $CC not found or not executable" 1>&2
  24. exit 1
  25. fi
  26. if $CC -v 2>/dev/null 1>/dev/null
  27. then
  28. FULLVER=`$CC -v 2>&1`
  29. else
  30. FULLVER=`$CC -V 2>&1`
  31. fi
  32. if [ -n "$FULLVER" ]
  33. then
  34. # check if gcc
  35. if echo "$FULLVER"|grep gcc >/dev/null
  36. then
  37. NAME=gcc
  38. VER=`$CC --version|head -n 1| \
  39. sed -e 's/^[^0-9]*\([0-9][0-9]*\.[0-9][0-9]*\.[0-9][0-9]*\).*/\1/'\
  40. -e 's/^[^.0-9]*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/'`
  41. elif echo "$FULLVER"|grep Sun >/dev/null
  42. then
  43. NAME=suncc
  44. VER=`echo "$FULLVER"|head -n 1| \
  45. sed -e 's/.*\([0-9][0-9]*\.[0-9][0-9]*\).*/\1/'`
  46. elif echo "$FULLVER"|grep "Intel(R) C++ Compiler" >/dev/null
  47. then
  48. NAME=icc
  49. VER=`echo "$FULLVER"|head -n 1| \
  50. sed -e 's/.*Version \([0-9]\.[0-9]\.[0-9]*\).*/\1/' `
  51. fi
  52. # find major ver
  53. if [ -n "$VER" -a -z "$MAJOR_VER" ]
  54. then
  55. MAJOR_VER=`echo "$VER" |cut -d. -f1`
  56. fi
  57. fi
  58. #unknown
  59. if [ -z "$NAME" ]
  60. then
  61. NAME="unknown"
  62. VER="unknown"
  63. MAJOR_VER="unknown"
  64. fi
  65. echo "$NAME $VER $MAJOR_VER"