# This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
 # Local configure fragment for sysdeps/powerpc.

# Accept binutils which knows about ".machine".
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for .machine support" >&5
$as_echo_n "checking for .machine support... " >&6; }
if ${libc_cv_ppc_machine+:} false; then :
  $as_echo_n "(cached) " >&6
else
  cat > conftest.s <<\EOF
	.machine "altivec"
	blr
EOF
if { ac_try='${CC-cc} -c $CFLAGS conftest.s 1>&5'
  { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5
  (eval $ac_try) 2>&5
  ac_status=$?
  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
  test $ac_status = 0; }; }; then
  libc_cv_ppc_machine=yes
else
  libc_cv_ppc_machine=no
fi
rm -f conftest*
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_ppc_machine" >&5
$as_echo "$libc_cv_ppc_machine" >&6; }
if test $libc_cv_ppc_machine != yes; then
  as_fn_error $? "
*** A binutils version which can handle
***    .machine \"altivec\"
*** is needed." "$LINENO" 5
fi
