clean better
[heimdal.git] / cf / mips-abi.m4
blob20035beea86c3139157d431d82f707c68f8e13f3
1 dnl $Id$
2 dnl
3 dnl
4 dnl Check for MIPS/IRIX ABI flags. Sets $abi and $abilibdirext to some
5 dnl value.
7 AC_DEFUN([AC_MIPS_ABI], [
8 AC_ARG_WITH(mips_abi,
9         AS_HELP_STRING([--with-mips-abi=abi],[ABI to use for IRIX (32, n32, or 64)]))
11 case "$host_os" in
12 irix*)
13 with_mips_abi="${with_mips_abi:-yes}"
14 if test -n "$GCC"; then
16 # GCC < 2.8 only supports the O32 ABI. GCC >= 2.8 has a flag to select
17 # which ABI to use, but only supports (as of 2.8.1) the N32 and 64 ABIs.
19 # Default to N32, but if GCC doesn't grok -mabi=n32, we assume an old
20 # GCC and revert back to O32. The same goes if O32 is asked for - old
21 # GCCs doesn't like the -mabi option, and new GCCs can't output O32.
23 # Don't you just love *all* the different SGI ABIs?
25 case "${with_mips_abi}" in 
26         32|o32) abi='-mabi=32';  abilibdirext=''     ;;
27        n32|yes) abi='-mabi=n32'; abilibdirext='32'  ;;
28         64) abi='-mabi=64';  abilibdirext='64'   ;;
29         no) abi=''; abilibdirext='';;
30          *) AC_MSG_ERROR("Invalid ABI specified") ;;
31 esac
32 if test -n "$abi" ; then
33 ac_foo=krb_cv_gcc_`echo $abi | tr =- __`
34 dnl
35 dnl can't use AC_CACHE_CHECK here, since it doesn't quote CACHE-ID to
36 dnl AC_MSG_RESULT
37 dnl
38 AC_MSG_CHECKING([if $CC supports the $abi option])
39 AC_CACHE_VAL($ac_foo, [
40 save_CFLAGS="$CFLAGS"
41 CFLAGS="$CFLAGS $abi"
42 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[int x;]])],[eval $ac_foo=yes], [eval $ac_foo=no])dnl
43 CFLAGS="$save_CFLAGS"
45 ac_res=`eval echo \\\$$ac_foo`
46 AC_MSG_RESULT($ac_res)
47 if test $ac_res = no; then
48 # Try to figure out why that failed...
49 case $abi in
50         -mabi=32) 
51         save_CFLAGS="$CFLAGS"
52         CFLAGS="$CFLAGS -mabi=n32"
53         AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[]],[[int x;]])],[ac_res=yes],[ac_res=no])dnl
54         CLAGS="$save_CFLAGS"
55         if test $ac_res = yes; then
56                 # New GCC
57                 AC_MSG_ERROR([$CC does not support the $with_mips_abi ABI])
58         fi
59         # Old GCC
60         abi=''
61         abilibdirext=''
62         ;;
63         -mabi=n32|-mabi=64)
64                 if test $with_mips_abi = yes; then
65                         # Old GCC, default to O32
66                         abi=''
67                         abilibdirext=''
68                 else
69                         # Some broken GCC
70                         AC_MSG_ERROR([$CC does not support the $with_mips_abi ABI])
71                 fi
72         ;;
73 esac
74 fi #if test $ac_res = no; then
75 fi #if test -n "$abi" ; then
76 else
77 case "${with_mips_abi}" in
78         32|o32) abi='-32'; abilibdirext=''     ;;
79        n32|yes) abi='-n32'; abilibdirext='32'  ;;
80         64) abi='-64'; abilibdirext='64'   ;;
81         no) abi=''; abilibdirext='';;
82          *) AC_MSG_ERROR("Invalid ABI specified") ;;
83 esac
84 fi #if test -n "$GCC"; then
86 esac