#!/bin/bash

BUILD_ROOT=`(cd $(dirname $0)/.. && pwd)`
export BUILD_ROOT

##
## Autoconf paths picked up by the components
##
PRODUCTNAME="likewise"
SYSCONFDIR="/etc/${PRODUCTNAME}"
PREFIXDIR="/opt/${PRODUCTNAME}"
LOCALSTATEDIR="/var/lib/${PRODUCTNAME}"
SCRIPTDIR=""
LIBEXECDIR="${PREFIXDIR}/bin"

STAGE_INSTALL_DIR="${BUILD_ROOT}/build-install"

## Check if we have any overrides
if [ -n "${BUILD_PREFIXDIR}" ]; then
    PREFIXDIR=${BUILD_PREFIXDIR}
fi
if [ -n "${BUILD_SYSCONFDIR}" ]; then
    SYSCONFDIR=${BUILD_SYSCONFDIR}
fi
if [ -n "${BUILD_LOCALSTATEDIR}" ]; then
    LOCALSTATEDIR=${BUILD_LOCALSTATEDIR}
fi
if [ -n "${BUILD_LIBEXECDIR}" ]; then
    LIBEXECDIR=${BUILD_LIBEXECDIR}
fi
if [ -n "${BUILD_SCRIPTDIR}" ]; then
    SCRIPTDIR=${BUILD_SCRIPTDIR}
fi
if [ -n "${BUILD_STAGE_INSTALL_DIR}" ]; then
    STAGE_INSTALL_DIR=${BUILD_STAGE_INSTALL_DIR}
fi

export SYSCONFIDIR PREFIX LOCALSTATEDIR STAGE_INSTALL_DIR

##
## Support libraries
##
. ${BUILD_ROOT}/build/lib/common.sh
. ${BUILD_ROOT}/build/lib/mkcomp-helper.sh

function build_component
{
    echo "Running configure stage"
    component_configure
    exit_on_error $?

    echo "Running build stage"
    component_build
    exit_on_error $?

    echo "Running install stage"
    if [ ! -d ${STAGE_INSTALL_DIR} ]; then
	mkdir ${STAGE_INSTALL_DIR}
	exit_on_error $?
    fi
    component_install
    exit_on_error $?
}


#############################################################
## Main Driver
##
function main 
{
    local _COMP_NAME="$1"
    local _COMP_FILE="${BUILD_ROOT}/build/components/${_COMP_NAME}.comp"

    if [ ! -f ${_COMP_FILE} ]; then
	exit_on_error 1 "Invalid component name (${_COMP_NAME})!  Exiting...."
    fi

    ##
    ## This imports the following variables:
    ##   COMP_SOURCES
    ##
    . ${_COMP_FILE}

    cd ${COMP_SOURCES}

    echo "Building ${_COMP_NAME} component..."
    time_command "${_COMP_NAME}" build_component
    exit_on_error $?

    ## HACK ALERT -- remove libtool files
    # find ${STAGE_INSTALL_DIR} -name "*.la" -exec /bin/rm {} \;
}

main "$@"
exit 0
