| #!/usr/bin/env bash | 
 |  | 
 | TOOLS_TAR="" | 
 | HOST_BUILD_DIR=$(pwd)/"build_dir/host" | 
 | HOST_STAGING_DIR_STAMP=$(pwd)/"staging_dir/host/stamp" | 
 |  | 
 | refresh_timestamps() { | 
 | 	find -H "$1" -not -type l -print0 | xargs -0 touch | 
 | } | 
 |  | 
 | extract_prebuilt_tar() { | 
 | 	tar -xf "$1" | 
 | } | 
 |  | 
 | refresh_prebuilt_tools() { | 
 | 	if [ ! -d "$HOST_BUILD_DIR" ]; then | 
 | 		echo "Can't find Host Build Dir "$HOST_BUILD_DIR"" >&2 | 
 | 		exit 1 | 
 | 	fi | 
 |  | 
 | 	refresh_timestamps "$HOST_BUILD_DIR" | 
 | 	sleep 1 | 
 |  | 
 | 	if [ ! -d "$HOST_STAGING_DIR_STAMP" ]; then | 
 | 		echo "Can't find Host Staging Dir Stamp "$HOST_STAGING_DIR_STAMP"" >&2 | 
 | 		exit 1 | 
 | 	fi | 
 |  | 
 | 	refresh_timestamps "$HOST_STAGING_DIR_STAMP" | 
 |  | 
 | 	return 0 | 
 | } | 
 |  | 
 | install_prebuilt_tools() { | 
 | 	extract_prebuilt_tar "$TOOLS_TAR" | 
 |  | 
 | 	refresh_prebuilt_tools | 
 |  | 
 | 	return 0 | 
 | } | 
 |  | 
 | while [ -n "$1" ]; do | 
 | 	arg="$1"; shift | 
 | 	case "$arg" in | 
 | 		--host-build-dir) | 
 | 			[ -d "$1" ] || { | 
 | 				echo "Directory '$1' does not exist." >&2 | 
 | 				exit 1 | 
 | 			} | 
 | 			HOST_BUILD_DIR="$(cd "$1"; pwd)"; shift | 
 | 		;; | 
 |  | 
 | 		--host-staging-dir-stamp) | 
 | 			[ -d "$1" ] || { | 
 | 				echo "Directory '$1' does not exist." >&2 | 
 | 				exit 1 | 
 | 			} | 
 | 			HOST_STAGING_DIR_STAMP="$(cd "$1"; pwd)"; shift | 
 | 		;; | 
 |  | 
 | 		--tools) | 
 | 			[ -f "$1" ] || { | 
 | 				echo "Tools tar file '$1' does not exist." >&2 | 
 | 				exit 1 | 
 | 			} | 
 | 			TOOLS_TAR="$1"; shift | 
 | 			install_prebuilt_tools | 
 |  | 
 | 			exit $? | 
 | 		;; | 
 |  | 
 | 		--refresh) | 
 | 			refresh_prebuilt_tools | 
 |  | 
 | 			exit $? | 
 | 		;; | 
 |  | 
 | 		-h|--help) | 
 | 			me="$(basename "$0")" | 
 | 			echo -e "\nUsage:\n"                                            >&2 | 
 | 			echo -e "  $me --host-build-dir {directory}"                    >&2 | 
 | 			echo -e "    Set to refresh timestamp of this build directory"  >&2 | 
 | 			echo -e "    with --tools."                                     >&2 | 
 | 			echo -e "    THIS OPTION MUST BE SET BEFORE --tools."           >&2 | 
 | 			echo -e "    If not provided the default directory is:"         >&2 | 
 | 			echo -e "    $(pwd)/build_dir/host\n"                           >&2 | 
 | 			echo -e "  $me --host-staging-dir-stamp {directory}"            >&2 | 
 | 			echo -e "    Set to refresh staging timestamp present in this"  >&2 | 
 | 			echo -e "    directory with --tools."                           >&2 | 
 | 			echo -e "    THIS OPTION MUST BE SET BEFORE --tools."           >&2 | 
 | 			echo -e "    If not provided the default directory is:"         >&2 | 
 | 			echo -e "    $(pwd)/staging_dir/host/stamp\n"                   >&2 | 
 | 			echo -e "  $me --tools {tar}"                                   >&2 | 
 | 			echo -e "    Install the prebuilt tools present in the passed"  >&2 | 
 | 			echo -e "    tar and prepare them."                             >&2 | 
 | 			echo -e "    To correctly use them it's needed to update the"   >&2 | 
 | 			echo -e "    timestamp of each tools to skip recompilation.\n"  >&2 | 
 | 			echo -e "  $me --refresh"                                       >&2 | 
 | 			echo -e "    Refresh timestamps of already extracted prebuilt"  >&2 | 
 | 			echo -e "    tools to correctly use them and skip"              >&2 | 
 | 			echo -e "    recompilation.\n"                                  >&2 | 
 | 			echo -e "  $me --help"                                          >&2 | 
 | 			echo -e "    Display this help text and exit.\n\n"              >&2 | 
 | 			exit 1 | 
 | 		;; | 
 |  | 
 | 		*) | 
 | 			echo "Unknown argument '$arg'" >&2 | 
 | 			exec $0 --help | 
 | 		;; | 
 | 	esac | 
 | done | 
 |  | 
 | exec $0 --help |