#!/bin/bash
#
# clear_header.sh
#
# This script removes the installed header files from include-fix direcotry,
# if these headers files have been defined in Android. 

usage ()
{
  echo "Usage: $0 --prefix=<toolchain prefix> --sysroot=<Android sysroot> [--force]"
  echo "  <toolchain prefix>: the prefix path when you configure the install"
  echo "                      the toolchain."
  echo "   <Android sysroot>: the sysroot directory that is extracted from "
  echo "                      an Android tree."
  echo "             <force>: if specified, the headers found by this script "
  echo "                      will be deleted without confirmation."
}

if [[ $# -lt 1 ]]; then
  usage
  exit 1
fi

force=0
PREFIX=""
SYSROOT=""

for option in $@; do
  optarg=$(expr "x$option" : 'x[^=]*=\(.*\)')

  case "$option" in
    --prefix=*)
      PREFIX=${optarg}
      if [[ ! -d ${PREFIX}/lib/gcc/arm-eabi ]]; then
        echo "Error: ${PREFIX} is not a correct toolchain prefix path!"
        usage
        exit 1
      fi
      ;;
    --sysroot=*)
      SYSROOT=${optarg}
      ;;
    --force)
      force=1
      ;;
    *)
      echo "Error: unknown options ${option}"
      usage
      exit 1
      ;;
  esac
done

if [[ "x${PREFIX}" = "x" ]]; then
  echo "Error: you must specify the toolchain prefix path."
  usage
  exit 1
fi

if [[ "x${SYSROOT}" = "x" ]]; then
  SYSROOT="/home/jingyu/projects/gcc/toolchain_build/cupcake_rel_root2"
  echo "Warning: SYSROOT can't be empty. Set SYSROOT=${SYSROOT}."
fi

INCLUDE_ROOT=$SYSROOT/usr/include
if [[ ! -d ${INCLUDE_ROOT} ]]; then
  echo "Error: ${SYSROOT} is not a correct Android sysroot path!"
  usage
  exit 1
fi

installed_headers=`find ${PREFIX}/lib/gcc/arm-eabi/*/include-fixed -name "*\.h"`

for one_header in ${installed_headers}; do
  header_name=${one_header##*/}
  defined_headers=`find ${INCLUDE_ROOT} -name ${header_name}`

  # If the installed header file has been defined in android sysroot,
  # we need to remove the installed file.
  if [[ -n ${defined_headers} ]]; then
    echo -n "Delete ${one_header}?(Y/N):"
    if [[ ${force} = 0 ]]; then
      read text
    else
      text="Y"
    fi
    if [[ "${text}" = "Y" || "${text}" = "y" ]]; then
      rm ${one_header}
      echo "... Removed!"
    fi
  fi
done
