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