| #!/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 | |
| if [[ ! -d ${PREFIX}/lib/gcc/arm-linux-androideabi ]]; then | |
| echo "Error: ${PREFIX} is not a correct toolchain prefix path!" | |
| usage | |
| exit 1 | |
| else | |
| build_target="arm-linux-androideabi" | |
| fi | |
| else | |
| build_target="arm-eabi" | |
| 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/${build_target}/*/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 -f ${one_header} | |
| echo "... Removed!" | |
| fi | |
| fi | |
| done |