#! /usr/bin/env bash

# URLs and versions
if [ -z "${YASM_VERS}" ]; then
	YASM_VERS='1.3.0'
	YASM_TARBALL_SHA256="3dce6601b495f5b3d45b59f7d2492a340ee7e84b5beca17e48f862502bd5603f"
fi
if [ -z "${YASM_URL}" ]; then
	YASM_URL="http://www.tortall.net/projects/yasm/releases/yasm-${YASM_VERS}.tar.gz"
fi
YASM_TARBALL="src/yasm-${YASM_VERS}.tar.gz"
YASM_DIR="yasm-${YASM_VERS}"

# Main script
CCNAME="$1"
CCDIR="$2"
PREFIX="$3"
STAGE="$4"

# Clean
if [ "$1" = "distclean" ]; then
        rm -f "${YASM_TARBALL}"

        set -- clean
fi

if [ "$1" = "clean" ]; then
        rm -rf "${YASM_DIR}"
        rm -rf yasm-*-*-*

        exit 0
fi

# Only build in the final stage
if [ "${STAGE}" != "stage2" ]; then
        exit 0
fi

# Only build if we do not already have "yasm"
if [ -f "${CCDIR}/bin/${CCNAME}-yasm" ]; then
	exit 0
fi

# Only build for x86-class platforms
case "${CCNAME}" in
	x86_64-*|i?86-*)
		;;
	*)
		exit 0
		;;
esac

# Download source
. 'scripts/common'

if [ ! -d "${YASM_DIR}" ]; then
        download "${YASM_URL}" "${YASM_TARBALL}" "${YASM_TARBALL_SHA256}" || exit 1

        gzip -dc "${YASM_TARBALL}" | tar -xf -
fi

# Inform the user of what we are doing
echo " * Building YASM (version ${YASM_VERS}) for ${arch_host}"

rm -rf "yasm-${CCNAME}"
mkdir "yasm-${CCNAME}" || exit 1
cd "yasm-${CCNAME}" || exit 1

unset CC LD CXX AR RANLIB STRIP
../${YASM_DIR}/configure --prefix="${CCDIR}" --program-prefix="${CCNAME}-" || exit 1

${MAKE} ${BUILD_CC_MAKE_FLAGS} || exit 1

${MAKE} ${BUILD_CC_MAKE_FLAGS} install || exit 1

for bin in yasm vsyasm ytasm; do
	rm -f "${CCDIR}/bin/${bin}"
	ln -s "${CCNAME}-${bin}" "${CCDIR}/bin/${bin}"
done

cd .. || exit 1
rm -rf "yasm-${CCNAME}"

exit 0
