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