ccopts.sh 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #!/bin/sh
  2. #$Id$
  3. #
  4. # returns the CFLAGS for the given compiler (maximum optimizations)
  5. #
  6. ARCH=`uname -m |sed -e s/i.86/i386/ -e s/sun4u/sparc64/ `
  7. # gcc 3.x optimize for:
  8. x86CPU=athlon
  9. WARN_ARCH="WARNING: Not tested on architecture $ARCH, using default flags"
  10. if [ $# -lt 1 ]
  11. then
  12. echo "ERROR: you must specify the compiler name" 1>&2
  13. exit 1
  14. fi
  15. if [ "$1" = "-h" ]
  16. then
  17. echo "Usage: "
  18. echo " $0 compiler_name"
  19. exit 1
  20. fi
  21. if CCVER=`./ccver.sh $1`
  22. then
  23. NAME=`echo "$CCVER"|cut -d" " -f 1`
  24. VER=`echo "$CCVER"|cut -d" " -f 2`
  25. MAJOR_VER=`echo "$CCVER"|cut -d" " -f 3`
  26. else
  27. echo "ERROR executing ./ccver.sh" 2>&1
  28. exit 1
  29. fi
  30. echo "name=$NAME, ver=$VER, mver=$MAJOR_VER"
  31. case $NAME
  32. in
  33. gcc)
  34. #common stuff
  35. CFLAGS="-O9 -funroll-loops -Winline -Wall"
  36. case $MAJOR_VER
  37. in
  38. 3)
  39. case $ARCH
  40. in
  41. i386)
  42. CFLAGS="$CFLAGS -minline-all-stringops -malign-double"
  43. CFLAGS="$CFLAGS -falign-loops -march=$x86CPU"
  44. ;;
  45. sparc64)
  46. CFLAGS="$CFLAGS -mcpu=ultrasparc -mtune=ultrasparc"
  47. CFLAGS="$CFLAGS -m32"
  48. #other interesting options:
  49. # -mcpu=v9 or ultrasparc? # -mtune implied by -mcpu
  50. #-mno-epilogue #try to inline function exit code
  51. #-mflat # omit save/restore
  52. #-faster-structs #faster non Sparc ABI structure copy
  53. ;;
  54. armv4l)
  55. CFLAGS="$CFLAGS -mcpu=strongarm1100"
  56. ;;
  57. *)
  58. echo "$WARN_ARCH" 1>&2
  59. ;;
  60. esac
  61. ;;
  62. 2|*)
  63. case $ARCH
  64. in
  65. i386)
  66. CFLAGS="$CFLAGS -m486 -malign-loops=4"
  67. ;;
  68. sparc64)
  69. CFLAGS="$CFLAGS -mv8 -Wa,-xarch=v8plus"
  70. ;;
  71. armv4l)
  72. ;;
  73. *)
  74. echo "$WARN_ARCH" 1>&2
  75. ;;
  76. esac
  77. ;;
  78. esac
  79. ;;
  80. icc)
  81. CFLAGS="-O3 -ipo -ipo_obj -unroll"
  82. case $ARCH
  83. in
  84. i386)
  85. CFLAGS="$CFLAGS -tpp6 -xK"
  86. #-openmp #optimize for PIII
  87. # -prefetch doesn't seem to work
  88. #( ty to inline acroos files, unroll loops,prefetch,
  89. # optimize for PIII, use PIII instructions & vect.,
  90. # mutlithread loops)
  91. ;;
  92. *)
  93. echo "$WARN_ARCH" 1>&2
  94. ;;
  95. esac
  96. ;;
  97. suncc)
  98. CFLAGS="-xO5 -fast -native -xCC -xc99"
  99. case $ARCH
  100. in
  101. sparc64)
  102. CFLAGS="$CFLAGS -xarch=v8plusa"
  103. ;;
  104. *)
  105. echo "$WARN_ARCH" 1>&2
  106. ;;
  107. esac
  108. ;;
  109. *)
  110. echo "WARNING: unknown compiler $NAME, trying _very_ generic flags" 1>&2
  111. CFLAGS="-O2"
  112. esac
  113. echo "CFLAGS=$CFLAGS"