1 #!/bin/sh 2 3 if test "$#" -ne 2; then 4 echo "Usage $0 real_kinds compile" 5 exit 1 6 fi 7 8 # Possible kinds must be listed in ascending order 9 possible_real_kinds="$1" 10 compile="$2" 11 12 kinds="" 13 c=0 14 15 for k in $possible_real_kinds; do 16 echo " real (kind=$k) :: x" > tmp$$.f90 17 echo " x = 1.0_$k" >> tmp$$.f90 18 echo " end" >> tmp$$.f90 19 if $compile -S tmp$$.f90 > /dev/null 2>&1; then 20 kinds="$kinds $k" 21 c=`expr $c + 1` 22 fi 23 rm -f tmp$$.* 24 done 25 26 echo " integer, parameter :: c = $c" 27 echo " type (real_info), parameter :: real_infos(c) = (/ &" 28 29 i=0 30 for k in $kinds; do 31 # echo -n is not portable 32 str=" real_info ($k, precision(0.0_$k), range(0.0_$k), radix(0.0_$k))" 33 i=`expr $i + 1` 34 if [ $i -lt $c ]; then 35 echo "$str, &" 36 else 37 echo "$str /)" 38 fi 39 done 40 41 exit 0 42