OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libgfortran/] [mk-kinds-h.sh] - Blame information for rev 867

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 733 jeremybenn
#!/bin/sh
2
LC_ALL=C
3
export LC_ALL
4
 
5
compile="$1"
6
 
7
# Possible types must be listed in ascending order
8
possible_integer_kinds="1 2 4 8 16"
9
possible_real_kinds="4 8 10 16"
10
 
11
 
12
largest=""
13
smallest=""
14
for k in $possible_integer_kinds; do
15
  echo "  integer (kind=$k) :: i" > tmp$$.f90
16
  echo "  i = 1_$k" >> tmp$$.f90
17
  echo "  end" >> tmp$$.f90
18
  if $compile -S tmp$$.f90 > /dev/null 2>&1; then
19
    s=`expr 8 \* $k`
20
    largest="$k"
21
 
22
    if [ $s -eq 128 ]; then
23
      prefix="__"
24
    else
25
      prefix=""
26
    fi
27
 
28
    if [ "$smallest" = "" ]; then
29
        smallest="$k"
30
    fi
31
 
32
    echo "typedef ${prefix}int${s}_t GFC_INTEGER_${k};"
33
    echo "typedef ${prefix}uint${s}_t GFC_UINTEGER_${k};"
34
    echo "typedef GFC_INTEGER_${k} GFC_LOGICAL_${k};"
35
    echo "#define HAVE_GFC_LOGICAL_${k}"
36
    echo "#define HAVE_GFC_INTEGER_${k}"
37
    echo ""
38
  fi
39
  rm -f tmp$$.*
40
done
41
 
42
echo "#define GFC_INTEGER_LARGEST GFC_INTEGER_${largest}"
43
echo "#define GFC_UINTEGER_LARGEST GFC_UINTEGER_${largest}"
44
echo "#define GFC_DEFAULT_CHAR ${smallest}"
45
echo ""
46
 
47
 
48
# Get the kind value for long double, so we may disambiguate it
49
# from __float128.
50
echo "use iso_c_binding; print *, c_long_double ; end" > tmq$$.f90
51
long_double_kind=`$compile -S -fdump-parse-tree tmq$$.f90 | grep TRANSFER \
52
                        | sed 's/ *TRANSFER *//'`
53
rm -f tmq$$.*
54
 
55
 
56
for k in $possible_real_kinds; do
57
  echo "  real (kind=$k) :: x" > tmp$$.f90
58
  echo "  x = 1.0_$k" >> tmp$$.f90
59
  echo "  end" >> tmp$$.f90
60
  if $compile -S tmp$$.f90 > /dev/null 2>&1; then
61
    case $k in
62
      4) ctype="float" ; cplxtype="complex float" ; suffix="f" ;;
63
      8) ctype="double" ; cplxtype="complex double" ; suffix="" ;;
64
      10) ctype="long double" ; cplxtype="complex long double" ; suffix="l" ;;
65
      16) if [ $long_double_kind -eq 10 ]; then
66
            ctype="__float128"
67
            cplxtype="_Complex float __attribute__((mode(TC)))"
68
            suffix="q"
69
          else
70
            ctype="long double"
71
            cplxtype="complex long double"
72
            suffix="l"
73
          fi ;;
74
      *) echo "$0: Unknown type" >&2 ; exit 1 ;;
75
    esac
76
 
77
    # Check for the value of HUGE
78
    echo "print *, huge(0._$k) ; end" > tmq$$.f90
79
    huge=`$compile -S -fdump-parse-tree tmq$$.f90 | grep TRANSFER \
80
                | sed 's/ *TRANSFER *//' | sed 's/_.*//'`
81
    rm -f tmq$$.*
82
 
83
    # Check for the value of DIGITS
84
    echo "print *, digits(0._$k) ; end" > tmq$$.f90
85
    digits=`$compile -S -fdump-parse-tree tmq$$.f90 | grep TRANSFER \
86
                | sed 's/ *TRANSFER *//'`
87
    rm -f tmq$$.*
88
 
89
    # Check for the value of RADIX
90
    echo "print *, radix(0._$k) ; end" > tmq$$.f90
91
    radix=`$compile -S -fdump-parse-tree tmq$$.f90 | grep TRANSFER \
92
                | sed 's/ *TRANSFER *//'`
93
    rm -f tmq$$.*
94
 
95
    # Output the information we've gathered
96
    echo "typedef ${ctype} GFC_REAL_${k};"
97
    echo "typedef ${cplxtype} GFC_COMPLEX_${k};"
98
    echo "#define HAVE_GFC_REAL_${k}"
99
    echo "#define HAVE_GFC_COMPLEX_${k}"
100
    echo "#define GFC_REAL_${k}_HUGE ${huge}${suffix}"
101
    echo "#define GFC_REAL_${k}_LITERAL_SUFFIX ${suffix}"
102
    if [ "x$suffix" = "x" ]; then
103
      echo "#define GFC_REAL_${k}_LITERAL(X) (X)"
104
    else
105
      echo "#define GFC_REAL_${k}_LITERAL(X) (X ## ${suffix})"
106
    fi
107
    echo "#define GFC_REAL_${k}_DIGITS ${digits}"
108
    echo "#define GFC_REAL_${k}_RADIX ${radix}"
109
    echo ""
110
  fi
111
  rm -f tmp$$.*
112
done
113
 
114
 
115
# After this, we include a header that can override some of the
116
# autodetected settings.
117
echo '#include "kinds-override.h"'
118
 
119
exit 0

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.