case "${host}" in
  rs6000-ibm-aix3.1 | rs6000-ibm-aix)
                        frag=mh-aix ;;
  *-*-cxux7*)		frag=mh-cxux7 ;;
  *-*-freebsd2.1.*)	frag=mh-fbsd21 ;;
  *-*-freebsd2.2.[012])	frag=mh-fbsd21 ;;
  i[345]86-*-windows*)	frag=mh-windows ;;
  *-*-beos*)		frag=mh-beos ;;
esac

frags=$frag

# If they didn't specify --enable-shared, don't generate shared libs.
case "${enable_shared}" in
  yes) shared=yes ;;
  no) shared=no ;;
  "") shared=no ;;
  *) shared=yes ;;
esac
if [ "${shared}" = "yes" ]; then
  case "${host}" in
    *-*-cygwin*)	;;
    alpha*-*-linux*)	frags="${frags} ../../config/mh-elfalphapic" ;;
    arm*-*-*)		frags="${frags} ../../config/mh-armpic" ;;
    hppa*-*-*)		frags="${frags} ../../config/mh-papic" ;;
    i[3456]86-*-*)	frags="${frags} ../../config/mh-x86pic" ;;
    powerpc*-*-aix*)	;;
    powerpc*-*-*)	frags="${frags} ../../config/mh-ppcpic" ;;
    *-*-*)		frags="${frags} ../../config/mh-${host_cpu}pic" ;;
  esac
fi

echo "# Warning: this fragment is automatically generated" > temp-frag

for frag in ${frags}; do
  case ${frag} in
    ../* )
      if [ ${srcdir} = . ]; then
	[ -n "${with_target_subdir}" ] && frag=../${frag}
	[ -n "${with_multisrctop}" ] && frag=${with_multisrctop}${frag}
      fi
      ;;
  esac
  frag=${srcdir}/${xsrcdir}config/$frag
  if [ -f ${frag} ]; then
    echo "Appending ${frag} to xhost-mkfrag"
    echo "# Following fragment copied from ${frag}" >> temp-frag
    cat ${frag} >> temp-frag
  fi
done

# record if we want to build shared libs.
if [ "${shared}" = "yes" ]; then
  echo enable_shared = yes >> temp-frag
else
  echo enable_shared = no >> temp-frag
fi

frag=xhost-mkfrag
${CONFIG_SHELL} ${libiberty_topdir}/move-if-change temp-frag xhost-mkfrag
