#!/bin/sh
# Outputs a new PATH setting that is prefixed by the path to the
# Android cross-compiler toolchain to use for a given Android version.
#
# For Android 5, force PIE build flags
#
# Since the ghc-android wrappers actually hardcode the path to the
# toolchain, and we want to wrap the toolchain programs, the binaries
# are moved to .orig and replaced by wrappers.

androidversion="$1"

# Allow running from the top or inside this directory.
if [ -e abiversion ]; then 
	top=.
else
	top=standalone/android
fi

wrap () {
	sed -e "s!PROG!$1!" -e "s!OPTS!$3!" < $top/wrapper.pl > "$2"
	chmod +x "$2"
}

# location to toolchain as installed by ghc-android
androidtoolchain="$HOME/.ghc/$(cat $top/abiversion)/bin"

for f in $(find "$androidtoolchain" -maxdepth 1 -type f -printf '%f\n' | grep -v \.orig); do
	bin="$androidtoolchain/$f"
	orig="$androidtoolchain/$f.orig"
	if [ ! -e "$orig" ]; then
		cp -a "$bin" "$orig"
	fi
	if [ "$androidversion" = 5 ]; then
		case "$f" in
		*-ld*)
			wrap "$orig" "$bin" "-pie"
		;;
		*-gcc)
			wrap "$orig" "$bin" "-pie -fPIE"
		;;
		*'-g++')
			wrap "$orig" "$bin" "-pie -fPIE"
		;;
		*)
			cp -a "$orig" "$bin"
		;;
		esac
	else
		cp -a "$orig" "$bin"
	fi
done

echo "$androidtoolchain:$PATH"
