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