1 | dnl mips-abi.m4--Check for MIPS/IRIX ABI flags. Sets $abi and $abilibdirext |
---|
2 | dnl to some value |
---|
3 | dnl Derrick Brashear |
---|
4 | dnl from KTH krb (from CMU) |
---|
5 | dnl $Id: mips-abi.m4,v 1.1.1.1 2002-10-13 18:01:01 ghudson Exp $ |
---|
6 | |
---|
7 | AC_DEFUN(AC_MIPS_ABI, [ |
---|
8 | AC_ARG_WITH(mips_abi, |
---|
9 | [ --with-mips-abi=abi ABI to use for IRIX (32, n32, or 64)]) |
---|
10 | |
---|
11 | case "$host_os" in |
---|
12 | irix*) |
---|
13 | with_mips_abi="${with_mips_abi:-yes}" |
---|
14 | if test -n "$GCC"; then |
---|
15 | |
---|
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. |
---|
18 | # |
---|
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. |
---|
22 | # |
---|
23 | # Don't you just love *all* the different SGI ABIs? |
---|
24 | |
---|
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_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_TRY_COMPILE(,int x;, eval $ac_foo=yes, eval $ac_foo=no) |
---|
43 | CFLAGS="$save_CFLAGS" |
---|
44 | ]) |
---|
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_TRY_COMPILE(,int x;, ac_res=yes, ac_res=no) |
---|
54 | CLAGS="$save_CFLAGS" |
---|
55 | if test $ac_res = yes; then |
---|
56 | # New GCC |
---|
57 | AC_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_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_ERROR("Invalid ABI specified") ;; |
---|
83 | esac |
---|
84 | fi #if test -n "$GCC"; then |
---|
85 | ;; |
---|
86 | esac |
---|
87 | |
---|
88 | dnl And then we munge variables to make things work |
---|
89 | CFLAGS="${CFLAGS} $abi" |
---|
90 | libdir=`echo $libdir | sed 's,/*$,$abilibdirext,'` |
---|
91 | LDFLAGS=`echo $LDFLAGS | sed -e "s,/lib$,/lib$abilibdirext," -e "s,\\\(/lib[^a-zA-Z]\\\),\\\1$abilibdirext,g"` |
---|
92 | |
---|
93 | ]) |
---|