1case "$machine" in
2csky*)
3    abi=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null |
4      sed -n 's/^#define __CSKYABI__ \(.*\)/\1/p'`
5    hard_float=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null |
6      sed -n 's/^#define __CSKY_HARD_FLOAT__ \(.*\)/\1/p'`
7    hard_float_sf=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null |
8      sed -n 's/^#define __CSKY_HARD_FLOAT_FPU_SF__ \(.*\)/\1/p'`
9    hard_float_abi=`$CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null |
10      sed -n 's/^#define __CSKY_HARD_FLOAT_ABI__ \(.*\)/\1/p'`
11
12    case "$abi" in
13    1)
14        echo "glibc does not support abiv1 yet" >&2
15        exit 1
16        ;;
17    2)
18        machine=abiv2
19        ;;
20    *)
21        echo "Unknown abi" >&2
22        exit 1
23        ;;
24    esac
25
26    # __CSKY_HARD_FLOAT_ABI__ was added on gcc 11 to specify whether
27    # -mfloat-abi=hard is set.  On older gcc, the float ABI is defined solely
28    # with __CSKY_HARD_FLOAT__.  If __CSKY_HARD_FLOAT__ is set, it can be
29    # either a hard-float ABI (gcc older than 11, or gcc11 -mfloat-abi=hard
30    # (__CSKY_HARD_FLOAT_ABI__ is set) or -mfloat-abi=softfp
31    # (__CSKY_HARD_FLOAT_ABI__ is not set). To be compatible with older gcc,
32    # use __CSKY_HARD_FLOAT_FPU_SF__ identify if -mfloat-abi is supported,
33    # because it is added to gcc at the same time as -mfloat-abi.
34    if test -n "$hard_float"; then
35	if test -z "$hard_float_sf"; then
36	    with_fp_cond=1
37	else
38	    if test -n "$hard_float_abi"; then
39		with_fp_cond=1
40	    else
41		with_fp_cond=0
42	    fi
43	fi
44    else
45	with_fp_cond=0
46    fi
47
48    base_machine=csky
49    machine=csky/$machine
50
51    $as_echo "#define CSKYABI $abi" >>confdefs.h
52    $as_echo "#define CSKY_HARD_FLOAT $with_fp_cond" >>confdefs.h
53    ;;
54esac
55