#!/bin/bash

#
# Update the copyright with the current year which is set by the configure
# script.  The actual year is hard-coded and exported in the THIS_YEAR
# variable so that builds from versions in previous years will still
# contain the original year even if they are rebuilt in a later year.
#
update_copyright ()
{
    upd_docs=`find $1 -type f -print0 | xargs -0 grep -l "to TO_YEAR"`
    for d in $upd_docs
    do
        if [ "${SOURCE_HOST_SHORT}" == "darwin" ]
        then
            sed -i '' "s/TO_YEAR/${THIS_YEAR}/g" $d
        else
            sed -i "s/TO_YEAR/${THIS_YEAR}/g" $d
        fi
    done
}

#
# Copy contents of specified directory
#
install_dir ()
{
    install_dir_source=$1
    install_dir_target=$2
    install_dir_dir=$3

    if [ -d ${install_dir_source} ]
    then
      mkdir -p ${install_dir_target}/${install_dir_dir}
      cp ${install_dir_source}/* ${install_dir_target}/${install_dir_dir}
    fi
}

#
# Copy everything under a point in the source tree to a point in the distrib we are building
# Include only the files known to be under version control (if possible)
# arg1 - directory from
# arg2 - directory to
#
install_git_files_dir_recursive ()
{
    from=$1
    to=$2
    pushd $from > /dev/null
    if [ ! -d "$OSPL_HOME/.git" ]
    then
        # we're not in a repo
        echo "INFO: Not working from a git repository. Copying *all* files from $from to $to. If your source tree was not clean this could be a problem."
        mkdir -p "$to"
        cp -r * "$to"
    else
        for file in $(git ls-files); do
            mkdir -p "$to/$(dirname $file)"
            cp  "$file" "$to/$file"
        done
    fi
    popd > /dev/null
}

#
# Copy specified file to the specified directory
#
install_bin_file ()
{
    install_bin_file_source=$1
    install_bin_file_target=$2
    install_bin_file_dir=$3
    install_bin_file_file=$4

    if [ -d "${install_bin_file_source}" ]
    then
      mkdir -p "${install_bin_file_target}/${install_bin_file_dir}"
      if [ -f "${install_bin_file_source}/${install_bin_file_file}" ]
      then
        printf "*       copy ${install_bin_file_file} ... "
        cp "${install_bin_file_source}/${install_bin_file_file}" "${install_bin_file_target}/${install_bin_file_dir}"
        echo "Ready"
      else
        echo "* ##    file ${install_bin_file_file} not found"
      fi
    else
      echo "* ##     non-existent ${install_bin_file_source}"
    fi
}

#
# Copy specified file to the specified directory
#
install_lib_file ()
{
    install_lib_file_source=$1
    install_lib_file_target=$2
    install_lib_file_dir=$3
    install_lib_file_file=$4

    if [ -d ${install_lib_file_source} ]
    then
      mkdir -p ${install_lib_file_target}/${install_lib_file_dir}
      if [ -f ${install_lib_file_source}/${install_lib_file_file} ]
      then
        printf "*       copy ${install_lib_file_file} ... "
        cp ${install_lib_file_source}/${install_lib_file_file} ${install_lib_file_target}/${install_lib_file_dir}
        echo "Ready"
      else
        echo "* ##    file ${install_lib_file_file} not found"
      fi
    else
      echo "* ##     non-existent ${install_lib_file_source}"
    fi
}


#
# Copy specified file with correct line endings
#
install_ascii_file()
{
    install_ascii_file_source_file="$1"
    install_ascii_file_target_dir="$2"
    install_ascii_file_target_file="$3"
    install_ascii_file_source_file_may_not_exist="$4"

    if [ -z "${install_ascii_file_target_file}" ]
    then
        install_ascii_file_target_file=`basename ${install_ascii_file_source_file}`
    fi

    if [ "$install_ascii_file_source_file_may_not_exist" != "nocheck" ]
    then
        if [ -d ${install_ascii_file_target_dir} ]
        then
            if [ -f "${install_ascii_file_source_file}" ]
            then
                printf "*                 copy ${install_ascii_file_source_file} ... "
                cp -p ${install_ascii_file_source_file} ${install_ascii_file_target_dir}/${install_ascii_file_target_file}
                if [ -n "${TXTFILE_CONVERTER}" ]
                then
                    ${TXTFILE_CONVERTER} ${install_ascii_file_target_dir}/${install_ascii_file_target_file} >& /dev/null
                fi
                echo "Ready"
            else
                echo "* ##    file ${install_ascii_file_source_file} not found"
            fi
        else
            echo "* ##    ${install_ascii_file_target_dir} does not exist"
        fi
    elif [ -f ${install_ascii_file_source_file} ]
    then
        printf "*                 copy ${install_ascii_file_source_file} ... "
        cp -p ${install_ascii_file_source_file} ${install_ascii_file_target_dir}/${install_ascii_file_target_file}
        if [ -n "${TXTFILE_CONVERTER}" ]
        then
            ${TXTFILE_CONVERTER} ${install_ascii_file_target_dir}/${install_ascii_file_target_file} >& /dev/null
        fi
        echo "Ready"
    fi
}

install_ascii_fileset()
{
    install_ascii_fileset_var=$1
    install_ascii_fileset_target_dir=$2

    echo "*             File set copy ${install_ascii_fileset_var} ... "
    for i in ${install_ascii_fileset_var}
    do
        install_ascii_file $i ${install_ascii_fileset_target_dir}
    done
    if [ -n "${TXTFILE_CONVERTER}" ]
    then
        ${TXTFILE_CONVERTER} $install_ascii_fileset_target_dir/* >& /dev/null
    fi
    echo "*             Ready"

}

install_configuration_file()
{
    install_configuration_file_source=$1
    install_configuration_file_dest_dir=$2

    # paramater 3 is optional (overrides the name of the destination file)
    if [ "$3" != "" ]
    then
        install_configuration_file_dest_basename=$3
    else
        install_configuration_file_dest_basename=`basename ${install_configuration_file_source}`
    fi

    install_configuration_file_dest=${install_configuration_file_dest_dir}/${install_configuration_file_dest_basename}

    install_ascii_file "${install_configuration_file_source}" "${install_configuration_file_dest_dir}" \
        "${install_configuration_file_dest_basename}" "nocheck"

    mv ${install_configuration_file_dest} ${install_configuration_file_dest}.tmp

    if [ "${target}" = "sparc.solaris9_gcc" ]
    then
        # Solaris 9 out-of-the-box has shmmax at 8MB. Turn down our default db size.
        sed -e "s/__RELEASE__/${target_version}/g" \
            -e "s/<Size>10485760<\/Size>/<Size>7340032<\/Size>/g" \
            ${install_configuration_file_dest}.tmp > ${install_configuration_file_dest}
    else
        sed -e "s/__RELEASE__/${target_version}/g" \
            ${install_configuration_file_dest}.tmp > ${install_configuration_file_dest}
    fi

    rm ${install_configuration_file_dest}.tmp

    if [ -n "${TXTFILE_CONVERTER}" ]
    then
        ${TXTFILE_CONVERTER} ${install_configuration_file_dest} >& /dev/null
    fi
}

#gv patch_cs_project
# This script patches the C# Assembly Name and version to C# project
patch_cs_project()
{
    EXAMPLE_CS_PATH=$1
    if [ "${INCLUDE_CS}" = "yes" ] && [ "${SOURCE_TARGET_SHORT}" = "win" -o "${SOURCE_TARGET_SHORT}" = "wince" ]
    then
        echo "*      Patching C# Assembly Name and Version to Visual Studio Project..."
        FILES=`find ${HDE_dir}/${EXAMPLE_CS_PATH} -name *.csproj`
        for f in $FILES
        do
            mv $f $f.orig
            sed -e "s/__CS_ASSEMBLY_NAME__/${CS_ASSEMBLY_NAME}/g" \
                -e "s/__CS_DLL_VERSION__/${CS_DLL_VERSION}/g" \
                $f.orig > $f
            rm $f.orig
        done
        echo "*      Patching of C# projects done..."
    fi
}

# oall install_example
# TODO manage all languages
install_example()
{
    EXAMPLE_NAME="$1"
    echo "*           For ${EXAMPLE_NAME}... "

    EXAMPLE_ROOT_PATH=examples/dcps/${EXAMPLE_NAME}
    mkdir -p ${HDE_dir}/${EXAMPLE_ROOT_PATH}

    if [ -f "${OSPL_HOME}/${EXAMPLE_ROOT_PATH}/README.html" ]
    then
        install_ascii_file "${OSPL_HOME}/${EXAMPLE_ROOT_PATH}/README.html" \
            ${HDE_dir}/${EXAMPLE_ROOT_PATH}
    fi

    if [ -f "${OSPL_HOME}/${EXAMPLE_ROOT_PATH}/pom.xml" ] && [ "${INCLUDE_API_DCPS_SAJ5}" = "yes" ]
    then
        install_ascii_file "${OSPL_HOME}/${EXAMPLE_ROOT_PATH}/pom.xml" \
            ${HDE_dir}/${EXAMPLE_ROOT_PATH}
    fi

    EXAMPLE_IDL_PATH=${EXAMPLE_ROOT_PATH}/idl
    mkdir -p ${HDE_dir}/${EXAMPLE_IDL_PATH}

    if [ -f "${OSPL_HOME}/${EXAMPLE_IDL_PATH}/${EXAMPLE_NAME}Data.idl" ]
    then
    install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_IDL_PATH}/*.idl" \
        ${HDE_dir}/${EXAMPLE_IDL_PATH}
    fi

    EXAMPLE_ETC_PATH=${EXAMPLE_ROOT_PATH}/etc
    if [ -d "${OSPL_HOME}/${EXAMPLE_ETC_PATH}" ]
    then
        mkdir -p ${HDE_dir}/${EXAMPLE_ETC_PATH}
        install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_ETC_PATH}/*.xml" \
            ${HDE_dir}/${EXAMPLE_ETC_PATH}
    fi

    ## CS
    if [ "${INCLUDE_CS}" = "yes" ] && [ "${SOURCE_TARGET_SHORT}" = "win" -o "${SOURCE_TARGET_SHORT}" = "wince" ]
    then
        EXAMPLE_CS_PATH=${EXAMPLE_ROOT_PATH}/cs

        if [ -d ${OSPL_HOME}/${EXAMPLE_CS_PATH} ]
        then
            mkdir -p ${HDE_dir}/${EXAMPLE_CS_PATH}

            mkdir -p ${HDE_dir}/${EXAMPLE_CS_PATH}/src
            install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_CS_PATH}/src/*.cs" \
                ${HDE_dir}/${EXAMPLE_CS_PATH}/src

            # standalone
            mkdir -p ${HDE_dir}/${EXAMPLE_CS_PATH}/standalone
            install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_CS_PATH}/standalone/*.mpc" \
                ${HDE_dir}/${EXAMPLE_CS_PATH}/standalone

            sleep 5

            if [ "${SOURCE_TARGET_SHORT}" = "win" ] && [ -f "${OSPL_HOME}/${EXAMPLE_CS_PATH}/standalone/Build.bat" ]
            then
                install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_CS_PATH}/standalone/*.bat" \
                    ${HDE_dir}/${EXAMPLE_CS_PATH}/standalone
            fi

            # patch_cs_project ${EXAMPLE_CS_PATH}
        fi
    fi

    ## C++
    if [ "${INCLUDE_CXX}" = "yes" ]
    then
        EXAMPLE_CPP_PATH=${EXAMPLE_ROOT_PATH}/cpp

        if [ -d ${OSPL_HOME}/${EXAMPLE_CPP_PATH} ]
        then
            mkdir -p ${HDE_dir}/${EXAMPLE_CPP_PATH}

            mkdir -p ${HDE_dir}/${EXAMPLE_CPP_PATH}/src
            install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_CPP_PATH}/src/*.cpp" \
                ${HDE_dir}/${EXAMPLE_CPP_PATH}/src
            if ls ${OSPL_HOME}/${EXAMPLE_CPP_PATH}/src/*.h 1> /dev/null 2>&1
            then
                install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_CPP_PATH}/src/*.h" \
                    ${HDE_dir}/${EXAMPLE_CPP_PATH}/src
            fi

            # standalone
            mkdir -p ${HDE_dir}/${EXAMPLE_CPP_PATH}/standalone
            install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_CPP_PATH}/standalone/*.mpc" \
                ${HDE_dir}/${EXAMPLE_CPP_PATH}/standalone

            if [ "${SOURCE_TARGET_SHORT}" = "win" ]
            then
                install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_CPP_PATH}/standalone/*.bat" \
                    ${HDE_dir}/${EXAMPLE_CPP_PATH}/standalone
            fi

            #Only if there is CORBA version of the example
            if [ -d "${OSPL_HOME}/${EXAMPLE_CPP_PATH}/corba/" -a "$INCLUDE_API_DCPS_CCPP" = "yes" ]
            then
                # corba/OpenFusion
                mkdir -p ${HDE_dir}/${EXAMPLE_CPP_PATH}/corba
                install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_CPP_PATH}/corba/*.mpc" \
                    ${HDE_dir}/${EXAMPLE_CPP_PATH}/corba
            fi
        fi
    fi

    ## C
    if [ "${INCLUDE_C}" = "yes" ]
    then
        EXAMPLE_C_PATH=${EXAMPLE_ROOT_PATH}/c

        if [ -d ${OSPL_HOME}/${EXAMPLE_C_PATH} ]
        then
            mkdir -p ${HDE_dir}/${EXAMPLE_C_PATH}

            mkdir -p ${HDE_dir}/${EXAMPLE_C_PATH}/src
            install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_C_PATH}/src/*.c" \
                ${HDE_dir}/${EXAMPLE_C_PATH}/src
            install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_C_PATH}/src/*.h" \
                ${HDE_dir}/${EXAMPLE_C_PATH}/src

            # standalone
            mkdir -p ${HDE_dir}/${EXAMPLE_C_PATH}/standalone
            install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_C_PATH}/standalone/*.mpc" \
                ${HDE_dir}/${EXAMPLE_C_PATH}/standalone

            if [ "${SOURCE_TARGET_SHORT}" = "win" ]
            then
                install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_C_PATH}/standalone/*.bat" \
                    ${HDE_dir}/${EXAMPLE_C_PATH}/standalone
            fi
        fi
    fi

    ## Java
    if [ "${INCLUDE_JAVA}" = "yes" ]
    then
        if [ "${INCLUDE_API_DCPS_CJ}" = "yes" -o "${INCLUDE_API_DCPS_SAJ}" = "yes" ]
        then
            EXAMPLE_JAVA_PATH=${EXAMPLE_ROOT_PATH}/java

            if [ -d ${OSPL_HOME}/${EXAMPLE_JAVA_PATH} ]
            then
                mkdir -p ${HDE_dir}/${EXAMPLE_JAVA_PATH}

                mkdir -p ${HDE_dir}/${EXAMPLE_JAVA_PATH}/src
                install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_JAVA_PATH}/src/*.java" \
                    ${HDE_dir}/${EXAMPLE_JAVA_PATH}/src

                # standalone
                mkdir -p ${HDE_dir}/${EXAMPLE_JAVA_PATH}/standalone
                install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_JAVA_PATH}/standalone/*.mpc" \
                    ${HDE_dir}/${EXAMPLE_JAVA_PATH}/standalone
                #Only if there is CORBA version of the example
                if [ -d "${OSPL_HOME}/${EXAMPLE_JAVA_PATH}/corba" -a "$INCLUDE_API_DCPS_CJ" = "yes" ]
                then
                    # corba/JacORB
                    mkdir -p ${HDE_dir}/${EXAMPLE_JAVA_PATH}/corba
                    install_ascii_fileset "${OSPL_HOME}/${EXAMPLE_JAVA_PATH}/corba/*.mpc" \
                        ${HDE_dir}/${EXAMPLE_JAVA_PATH}/corba
                fi
            fi
        fi

        ## Java5
        if [  "${INCLUDE_API_DCPS_SAJ5}" = "yes" ]
        then
            EXAMPLE_JAVA_PATH=${EXAMPLE_ROOT_PATH}/java5

            if [ -d ${OSPL_HOME}/${EXAMPLE_JAVA_PATH} ]
            then
                mkdir -p ${HDE_dir}/${EXAMPLE_JAVA_PATH}
                install_git_files_dir_recursive "${OSPL_HOME}/${EXAMPLE_JAVA_PATH}" "${HDE_dir}/${EXAMPLE_JAVA_PATH}"
            fi
        fi
    fi

    echo "*           Ready: ${EXAMPLE_NAME}"
}
# oall end install_example

doTar ()
{
    echo ${OSPL_BUILDER} cf ${OUT}.tar ${INSTTYPE}
    (
        cd $OSPL_HOME/install
        ${OSPL_BUILDER} cf ${OUT}.tar ${INSTTYPE}
    )
}

doZip ()
{
    echo ${OSPL_BUILDER} -r ${OUT}.zip ${INSTTYPE}
    (
        cd $OSPL_HOME/install
        ${OSPL_BUILDER} -r ${OUT}.zip ${INSTTYPE}
    )
}

doStandardPackage()
{
    PLATFORM=${SOURCE_TARGET}${TARGET_ENV}

    OUT=${OUTPUTDIR}/${INSTALLER_FILENAME}

    if [ "${INSTTYPE}" = "DEMOS" ]
    then
        unset OSPL_BUILDER
    fi
    if [ -z "${OSPL_BUILDER}" ]
    then
        # If empty try zip or tar depending upon platform
        if [ "${BUILDER_TARGET}" = "windows" ]
        then
            OSPL_BUILDER=`which zip`
            if [ "$?" != "0" ]
            then
                echo "Error - No packager found please set OSPL_BUILDER"
                return 1
            else
                doZip
            fi
        else
            OSPL_BUILDER=`which tar`
            if [ "$?" != "0" ]
            then
                echo "Error - No packager found please set OSPL_BUILDER"
                return 1
            else
                doTar
            fi
        fi
    else
        # if tar or zip do with the commands/options we know
        if [ "${OSPL_BUILDER_APP}" = "tar" ]
        then
            doTar
        else
            if [ "${OSPL_BUILDER_APP}" = "zip" ]
            then
                doZip
            else
                # Last resort just try the command given
                echo ${OSPL_BUILDER} ${OUT} ${INSTTYPE}
                ${OSPL_BUILDER} ${OUT} ${INSTTYPE}
            fi
        fi
    fi
}

removeValgrindCmd ()
{
    if [ "$VALGRIND" != "yes" ]
    then
        VAR_LIST=`grep "^VG_" $OSPL_HOME/bin/valgrind_cmds | sed -e 's/ /@/g'`

        for i in $VAR_LIST
        do
            VAR=`echo $i | awk -F'=' '{ print $1 }'`
            #Do the ones that are before a command and have a space
            #then the ones with no space at the end
            sed -e "s/\$${VAR} //g;s/\$${VAR}//g" \
                $1 > $1.tmp
            mv $1.tmp $1
        done
    fi
}

buildTarGZ ()
{
   $TAR -cf $1.tar $2
   gzip $1.tar
}

buildTarZ ()
{
   $TAR -cf - $2 | compress > $1.tar.Z
}

buildZip ()
{
   zip -r $1.zip $2
}

make_hde_mirror_and_builder ()
{
    INSTTYPE="HDE"
    FULLINSTTYPE="Host_Development_Environment"
    make_mirror_and_builder "hde"
}

make_ste_mirror_and_builder ()
{
    INSTTYPE="STE"
    FULLINSTTYPE="Host_Development_Environment_SystemTest"
    make_mirror_and_builder "ste"
}

make_rts_mirror_and_builder ()
{
    INSTTYPE="RTS"
    FULLINSTTYPE="Runtime_System"
    make_mirror_and_builder "rts"
}

make_demos_mirror_and_builder ()
{
    INSTTYPE="DEMOS"
    FULLINSTTYPE="Standalone_demos"
    make_mirror_and_builder "demos"
}

install_ste_target ()
{
    echo "STE done"
}

install_demos_target ()
{
    # The iShapes demo is only available when ISOCPP is enabled
    if [ "${INCLUDE_API_DCPS_ISOCPP}" = "yes" ]
    then
        mkdir -p ${DEMOS_dir}/iShapes
        cp ${OSPL_HOME}/demos/iShapes/distrib/* ${DEMOS_dir}/iShapes/

        if [ "${SOURCE_TARGET_SHORT}" = "win" -o "${SOURCE_TARGET_SHORT}" = "wince" ]
        then
            # Executable

            cp ${OSPL_HOME}/exec/${target}${source_env}/demo_ishapes.exe ${DEMOS_dir}/iShapes/ishapes.exec

            # DDS libs

            for i in ddsi2 dcpsisocpp dcpsisocpp2 ddskernel durability spliced
            do
                cp ${OSPL_HOME}/lib/${target}${source_env}/${i}.dll ${DEMOS_dir}/iShapes
            done

            # Durability plugins

            for i in sqlite3-ospl leveldb-ospl
            do
                if [ -f ${OSPL_HOME}/lib/${target}${source_env}/${i}.dll ]
                then
                    cp ${OSPL_HOME}/lib/${target}${source_env}/${i}.dll ${DEMOS_dir}/iShapes
                fi
            done

            # GUI toolkit

            for i in QtGui QtCore
            do
                cp ${QTLIBDIR}/${i}4.dll ${DEMOS_dir}/iShapes
            done

            # Launch scripts

            for i in ishapes_WAN_EU.bat ishapes_WAN_US.bat ishapes_LAN.bat
            do
                sed -e "s/OSPL_TARGET=/OSPL_TARGET=${SOURCE_TARGET}/g" < ${OSPL_HOME}/demos/iShapes/scripts/${i} > ${DEMOS_dir}/iShapes/${i}
            done

            # Visual C++ redistributable

            if [ "${SOURCE_HOST_SHORT}" = "win" ]
            then
                copy_windows_redist "${DEMOS_dir}/redist"
            fi

        else
            # Executable

            cp ${OSPL_HOME}/exec/${target}${source_env}/demo_ishapes ${DEMOS_dir}/iShapes/ishapes
            strip -x ${DEMOS_dir}/iShapes/ishapes

            SFX=so

            if [ "${SOURCE_TARGET_SHORT}" = "darwin" ]
            then
               SFX=dylib
            fi

            # DDS libs

            for i in ddsi2 dcpsisocpp dcpsisocpp2 ddskernel durability spliced
            do
                cp ${OSPL_HOME}/lib/${target}${source_env}/lib${i}.${SFX} ${DEMOS_dir}/iShapes
                strip -x ${DEMOS_dir}/iShapes/lib${i}.${SFX}
            done

            # Durability plugins

            for i in sqlite3-ospl leveldb-ospl
            do
                if [ -f ${OSPL_HOME}/lib/${target}${source_env}/lib${i}.${SFX} ]
                then
                    cp ${OSPL_HOME}/lib/${target}${source_env}/lib${i}.${SFX} ${DEMOS_dir}/iShapes
                fi
            done

            # GUI toolkit

            if [ "${SOURCE_HOST_SHORT}" == "darwin" ]
            then
                READLINK="greadlink"
            else
                READLINK="readlink"
            fi

            for i in QtGui QtCore
            do
                cp `${READLINK} -f ${QTLIBDIR}/lib${i}.${SFX}` ${DEMOS_dir}/iShapes/lib${i}.${SFX}.4
                ln -s lib${i}.${SFX}.4 ${DEMOS_dir}/iShapes/lib${i}.${SFX}
            done

            # Launch scripts

            for i in ishapes_WAN_EU.sh ishapes_WAN_US.sh ishapes_LAN.sh
            do
               sed -e "s/OSPL_TARGET=/OSPL_TARGET=${SOURCE_TARGET}/g" < ${OSPL_HOME}/demos/iShapes/scripts/${i} > ${DEMOS_dir}/iShapes/${i}
               chmod +x ${DEMOS_dir}/iShapes/${i}
            done
        fi
        install_ascii_file "${OSPL_HOME}/src/tools/cm/config/code/splice_metaconfig_6.1.xml" "${DEMOS_dir}/iShapes" "ospl_metaconfig.xml"
    fi
}

set_envs ()
{
    while [ $# -gt 0 ]
    do
        case $1 in
            -noinstaller)
                INSTALLER=false
                shift 1
                ;;
            -eval)
                EVAL=true
                shift 1
                ;;
            -lgpl)
                LGPL=true
                shift 1
                ;;
            -nosrc)
                NOSRC=true
                shift 1
                ;;
            -ste)
                shift 1
                ;;
            -help)
                printUsage;
                exit 0
                ;;
            *)
                echo "Bad argument: $1"
                printUsage
                exit 1
                ;;
        esac
    done

    ENV=`expr "${SPLICE_TARGET}" : '[^-]*\(.*\)'`

    SOURCE_HOST=`expr "${SPLICE_HOST}" : '\([^-]*\)'`
    SOURCE_HOST_SHORT=`expr "${SPLICE_HOST}" : '[a-zA-Z0-9_]*\.\([a-zA-Z]*\)'`
    SOURCE_TARGET=`expr "${SPLICE_TARGET}" : '\([^-]*\)'`
    SOURCE_TARGET_SHORT=`expr "${SPLICE_TARGET}" : '[a-zA-Z0-9_]*\.\([a-zA-Z]*\)'`

    BUILDER_TARGET=""
    SCRIPT_NAME=""
    TXTFILE_CONVERTER=""
    GETLIC_INFO_NAME=""
    TAR="tar"

    if [ "${SOURCE_HOST_SHORT}" = "linux" ]
    then
        BUILDER_TARGET="linux"
        SCRIPT_NAME="release.com"
        GETLIC_INFO_NAME="getlic_info"
    fi

    if [ "${SOURCE_HOST_SHORT}" = "win" ]
    then
        BUILDER_TARGET="windows"
        if [ "${SOURCE_TARGET_SHORT}" = "pikeos" ]
        then
            SCRIPT_NAME="release.com"
        else
            SCRIPT_NAME="release.bat"
            TXTFILE_CONVERTER="unix2dos"
        fi
        GETLIC_INFO_NAME="getlic_info.bat"
    fi

    if [ "${SOURCE_HOST_SHORT}" = "solaris" ]
    then
        BUILDER_TARGET="solaris-sparc"
        SCRIPT_NAME="release.com"
        GETLIC_INFO_NAME="getlic_info"

        # We need to use gtar on solaris10, but not solaris8, as tar does
        # not work with the options we use, but gtar does
        if [ "${SOURCE_HOST}" != "sparc.solaris8" ]
        then
            TAR=gtar
        fi
    fi

    if [ "${SOURCE_HOST_SHORT}" = "darwin" ]
    then
        BUILDER_TARGET="osx"
        SCRIPT_NAME="release.com"
        GETLIC_INFO_NAME="getlic_info"
    fi


    # We need to use gtar on AIX as tar does
    # not work with the options we use, but gtar does
    if [ "$SOURCE_HOST" = "AIX" ]
    then
        TAR=gtar
    fi
}

set_init_envs ()
{
    target=$1
    suffix_exe=""
    target_suffix_exe=""
    target_suffix_lib=""
    suffix_script=""

    host=$2
    target_version=$3
    target_date=$4

    case ${target} in
        *.win*)
            target_suffix_exe=".exe"
            ;;
        *.vxworks6*)
            if [ "${VXWORKS_KERNEL_MODE}" = "yes" ]
            then
                target_suffix_exe=".out"
                target_suffix_lib=".out"
            else
                target_suffix_exe=".vxe"
            fi
            ;;
        *.vxworks5*)
                 target_suffix_lib=".so"
           ;;
    esac

    if [ "x_$5" = "x_" ]; then
        source_env="-release"
    else
        source_env=$5
    fi

    if [ "x_$5" = "x_-release" ]; then
        target_env="";
    else
        target_env=$5;
    fi

    TXTFILE_CONVERTER="$6"
    SOURCE_HOST_SHORT="$7"
    SOURCE_TARGET_SHORT="$8"
    SOURCE_TARGET="$target"
    SOURCE_HOST=`expr "${SPLICE_HOST}" : '\([^-]*\)'`
    TAR="tar"

    if [ "${SOURCE_HOST_SHORT}" = "win" ]
    then
        suffix_exe=".exe"
        suffix_script=".bat"
    fi

    # We need to use gtar on solaris10, but not solaris8, as tar does
    # not work with the options we use, but gtar does
    if [ "${OSPL_HOST_HEADERS}" = "solaris" ]
    then
        if [ "${SOURCE_HOST}" != "sparc.solaris8" ]
        then
            TAR=gtar
        fi
    fi

    # We need to use gtar on AIX as tar does
    # not work with the options we use, but gtar does
    if [ "${SOURCE_HOST_SHORT}" = "AIX" ]
    then
       TAR=gtar
    fi
}

set_rts_envs ()
{
    set_init_envs "$@"
    RTS_base=${OSPL_HOME}/install/RTS
    RTS_subdir=${target}${target_env}
    RTS_dir=${RTS_base}/${RTS_subdir}

}

set_demos_envs ()
{
    set_init_envs "$@"
    DEMOS_base=${OSPL_HOME}/install/DEMOS
    DEMOS_subdir=${target}${target_env}
    DEMOS_dir=${DEMOS_base}/${DEMOS_subdir}
}

set_ste_envs ()
{
    set_init_envs "$@"
    STE_base=${OSPL_HOME}/install/STE
    STE_subdir=${target}${target_env}
    STE_dir=${STE_base}/${STE_subdir}

}

set_hde_envs ()
{
    set_init_envs "$@"
    HDE_base=${OSPL_HOME}/install/HDE
    HDE_subdir=${target}${target_env}
    HDE_dir="${HDE_base}/${HDE_subdir}"

    ORB_TMPLS="\
                DDS_ACE_TAO_1_4_1
                DDS_ACE_TAO_5_6_6
                DDS_Eorb_3_0
                DDS_Mico_2_3_11
                DDS_Mico_2_3_13
                DDS_OpenFusion_1_4_1
                DDS_OpenFusion_1_5_1
                DDS_OpenFusion_1_6_1
                DDS_OpenFusion_2"

    PLATFORM_EXT=unix
    case ${SPLICE_TARGET} in
        x86_64.linux*)
            PLATFORM_EXT=unix64
        ;;
        *.pikeos*)
            PLATFORM_EXT=pikeos
            ;;
        x86_64.elinos6.0*)
            PLATFORM_EXT=elinos_x86_64
            ;;
        x86_64.elinos6.1*)
            PLATFORM_EXT=elinos_6.1_x86_64
            ;;
        x86.elinos*)
            PLATFORM_EXT=elinos
            ;;
        PPC5plus.AIX5.3*)
            PLATFORM_EXT=xlc
            ;;
        sparc.solaris10_studio12*)
            PLATFORM_EXT=suncc
            ;;
    esac
}

# This runs twice. Once for 'innner', once again for 'outer'. For such is the way of things.
generate_distrib_user_buildfiles ()
{
    FAILED=0
    if [ "$TYPE" = "hde" ]
    then
        pushd $OSPL_HOME/install > /dev/null
        if [ $? != 0 ]
        then
            echo "ERROR - make_functions::generate_distrib_user_buildfiles - Couldn't pushd to $OSPL_HOME/install"
            return 1
        fi
        # unset variables the user may/should define to
        # to prevent writing current build env into generated files
        if [ -n "$QTDIR" ]
        then
            QTDIR_BAK=$QTDIR
            unset QTDIR
        fi
        if [ -n "$BOOST_ROOT" ]
        then
            BOOST_ROOT_BAK=$BOOST_ROOT
            unset BOOST_ROOT
        fi
        if [ -n "$SPLICE_ORB" ]
        then
            SPLICE_ORB_BAK=$SPLICE_ORB
            unset SPLICE_ORB
        fi
        # Generate buildfiles
        echo "::generate_distrib_user_buildfiles - Calling MPC for user buildfiles...."
        make examplempc
        if [ $? != 0 ]
        then
            echo "ERROR - make_functions::generate_distrib_user_buildfiles - Error return calling MPC for user buildfiles...."
            FAILED=1
        fi
        if [ "${INCLUDE_API_DCPS_ISOCPP}" = "yes" -o "$INCLUDE_API_DCPS_ISOCPP2" = "yes" ]
        then
            if [ "${OSPL_QT_IS_ON}" = "yes" ]
            then
                echo "::generate_distrib_user_buildfiles - Calling MPC for 'demos' user buildfiles...."
                make demosmpc
                if [ $? != 0 ]
                then
                    echo "ERROR building demos. Suggest you check Qt installation..."
                    FAILED=1
                fi
            fi
        fi
        # reinstate variables
        if [ -n "$QTDIR_BAK" ]
        then
            QTDIR=$QTDIR_BAK
            export QTDIR
        fi
        if [ -n "$BOOST_ROOT_BAK" ]
        then
            BOOST_ROOT=$BOOST_ROOT_BAK
            export BOOST_ROOT
        fi
        if [ -n "$SPLICE_ORB_BAK" ]
        then
            SPLICE_ORB=$SPLICE_ORB_BAK
            export SPLICE_ORB
        fi

        set_hde_envs "${SOURCE_TARGET}" "${SOURCE_HOST}" "${PACKAGE_VERSION}" "${PACKAGE_DATE}" \
              "${ENV}" "${TXTFILE_CONVERTER}" "${SOURCE_HOST_SHORT}" "${SOURCE_TARGET_SHORT}"
        case ${SOURCE_TARGET} in
                *.vxworks6*)
                    echo Splitting VxWorks project lists
                    for PROJ in `grep -v ^# ${HDE_dir}/examples/wb30projects.lst`
                    do
                         FN=`echo ${PROJ} | sed -e 's@.*/wb_\(.*\)_.*/.project@\1@'`
                         echo ${PROJ} >> ${HDE_dir}/examples/wb_${FN}_projects.lst
                    done
                    rm ${HDE_dir}/examples/wb30projects.lst
                    for PROJ in `grep -s -v ^# ${HDE_dir}/examples/wb30projects_AppOnly.lst | grep -v cpp`
                    do
                         FN=`echo ${PROJ} | sed -e 's@.*/wb_\(.*\)_.*_AppOnly/.project@\1@'`
                         echo ${PROJ} >> ${HDE_dir}/examples/wb_${FN}_projects_AppOnly.lst
                    done
                    rm -f ${HDE_dir}/examples/wb30projects_AppOnly.lst

                    echo Doing VxWorks project example absolute path replacement
                    for i in `find "${HDE_dir}/examples" -name '\.project'`
                    do
                        mv $i $i.orig
                        sed 's@location\>.*/examples/@location\>\$\(OSPL_HOME\)/examples/@g' < $i.orig > $i
                    done
                ;;
        esac
        popd > /dev/null
    fi
    return $FAILED
}

make_mirror_and_builder ()
{
    TYPE=$1
    echo "#################### Compile (Populating inner ${FULLINSTTYPE}) ["`date`"]"
    echo Making mirror for "${FULLINSTTYPE}", platform "${SOURCE_TARGET}, environment ${ENV}"

    bash ./make_${TYPE}_mirror "${SOURCE_TARGET}" "${SOURCE_HOST}" "${PACKAGE_VERSION}" "${PACKAGE_DATE}" \
        "${ENV}" "${TXTFILE_CONVERTER}" "${SOURCE_HOST_SHORT}" "${SOURCE_TARGET_SHORT}"

    if [ $? != 0 ]
    then
        echo "make_functions::make_mirror_and_builder[$TYPE] - Error calling ./make_${TYPE}_mirror"
        return 1
    fi

    if [ "$INSTALLER" = "true" ]
    then
        if [ "$TYPE" = "hde" ]
        then
            echo "#################### Compile (Generating buildfiles from MPC for inner ${FULLINSTTYPE}) ["`date`"]"

            generate_distrib_user_buildfiles
            if [ $? != 0 ]
            then
                echo "make_functions::make_mirror_and_builder[$TYPE] - Error calling ::generate_distrib_user_buildfiles"
                return 1
            fi
        fi
        echo "#################### Compile (Building installer for inner ${FULLINSTTYPE}) ["`date`"]"
        echo Making "${BUILDER_TARGET}" builder for "${FULLINSTTYPE}", platform "${SOURCE_TARGET}, environment ${ENV}"
        bash ./make_builder "${INSTTYPE}" "${FULLINSTTYPE}" "${SOURCE_TARGET}" \
            "${BUILDER_TARGET}" "${SCRIPT_NAME}" "${ENV}" "${GETLIC_INFO_NAME}" "normal"
        set_hde_envs "${SOURCE_TARGET}" "${SOURCE_HOST}" "${PACKAGE_VERSION}" "${PACKAGE_DATE}" \
            "${ENV}" "${TXTFILE_CONVERTER}" "${SOURCE_HOST_SHORT}" "${SOURCE_TARGET_SHORT}"
        backup_orig "${HDE_base}"

        if [ "$EVAL" = "true" -a "$TYPE" = "hde" ]
        then
            if [ -d "$HDE_dir/src" ]
            then
                #Move the source and do another distro as the tests check the HDE directory
                echo Making "${BUILDER_TARGET}" builder for "${FULLINSTTYPE}", platform \
                    "${SOURCE_TARGET}, environment ${ENV} EVAL VERSION"

                rm -rf $HDE_dir/src

                bash ./make_builder "${INSTTYPE}" "${FULLINSTTYPE}" "${SOURCE_TARGET}" \
                    "${BUILDER_TARGET}" "${SCRIPT_NAME}" "${ENV}" "${GETLIC_INFO_NAME}" "eval"
                restore_orig "${HDE_base}" "false"
            else
                echo "## There was no $HDE_dir/src to delete"
            fi
        fi

        if [ "$NOSRC" = "true" -a "$TYPE" = "hde" ]
        then
            if [ -d "$HDE_dir/src" ]
            then
                #Move the source and do another distro as the tests check the HDE directory
                echo Making "${BUILDER_TARGET}" builder for "${FULLINSTTYPE}", platform \
                    "${SOURCE_TARGET}, environment ${ENV} NOSRC VERSION"

                rm -rf $HDE_dir/src

                bash ./make_builder "${INSTTYPE}" "${FULLINSTTYPE}" "${SOURCE_TARGET}" \
                    "${BUILDER_TARGET}" "${SCRIPT_NAME}" "${ENV}" "${GETLIC_INFO_NAME}" "nosrc"
                restore_orig "${HDE_base}" "false"
            else
                echo "## There was no $HDE_dir/src to delete"
            fi
        fi

        #Last one just to make sure to remove the left over tar.
        restore_orig "${HDE_base}" "true"
     fi
}

installer_setup ()
{
    # $1 = release type   : HDE or RTS
    # $2 = full release name : Host Development Environment of Runtime System
    # $3 = source target  : x86.linux or sparc.solaris8
    # $4 = builder target : linux or solaris-sparc
    # $5 = name of script to setup environment
    # $6 = environment : for example '-release' or '-dev'
    # $7 = name of script to obtain license information
    # $8 = version of distro to do

    INSTTYPE="$1"
    INSTTYPE_FULL="$2"
    SOURCE_TARGET="$3"
    BUILDER_TARGET="$4"
    SCRIPT_NAME="$5"
    SOURCE_ENV="$6"
    GETLIC_INFO_NAME="$7"
    DISTRO_VERSION="$8"

    # set SOURCE_TARGET_SHORT to be used in bitrock
    SOURCE_TARGET_SHORT=`expr "${SOURCE_TARGET}" : '[a-zA-Z0-9_]*\.\([a-zA-Z]*\)'`

    if [ "$DISTRO_VERSION" = "eval" -a "$INSTTYPE" = "HDE" ]
    then
        EXTRA=-eval
    fi

    if [ "$DISTRO_VERSION" = "nosrc" -a "$INSTTYPE" = "HDE" ]
    then
        EXTRA=-nosrc
    fi

    if [ "$DISTRO_VERSION" = "ste" -a "$INSTTYPE" = "STE" ]
    then
        EXTRA=-ste
    fi

    if [ "$DISTRO_VERSION" = "lgpl" ]
    then
        EXTRA=-lgpl
    fi

    if [ "${SOURCE_ENV}" = "-release" ]
    then
        TARGET_ENV="";
    else
        TARGET_ENV=${SOURCE_ENV}
    fi

    #determine if licensing is enabled
    if [ "${DDS_USE_LICENSE}" = "yes" ]
    then
        WITHHOSTLICENSE=true;
    else
        WITHHOSTLICENSE=false;
    fi

    if [ "${DDS_TARGET_USE_LICENSE}" = "yes" ]
    then
        WITHTARGETLICENSE=true;
    else
        WITHTARGETLICENSE=false;
    fi

    echo "Making builder for ${INSTTYPE_FULL} (${INSTTYPE}, ${SOURCE_TARGET}${TARGET_ENV}, ${BUILDER_TARGET})"

    echo Release is ${PACKAGE_VERSION}
    echo Date is ${PACKAGE_DATE}

    #set output directory, currently no parameter
    OUTPUTDIR="$OSPL_HOME/install/VC"
    mkdir -p $OUTPUTDIR
}

printUsage ()
{
   echo "Usage: make_all"
   echo "   -noinstaller             Do not create distribution, just creates the local HDE and RTS"
   echo "   -eval                    Produce an eval version of the build"
   echo "   -lgpl                    Produce an lgpl version of the build"
   echo "   -nosrc                   Produce a commercial nosrc version of the build"
   echo "   -ste                     Produce an systemtest version of the build"
   echo "   -help                    Print help"
}

# FALSE Defaults
EVAL=false
LGPL=false
NOSRC=false

# TRUE Defaults
INSTALLER=true

remove_hde_mirror ()
{
    #
    # Remove old HDE first
    #
    if [ -d ${HDE_dir} ]
    then
        printf "*   Remove old directory ${HDE_dir}... "
        chmod -R 777 ${HDE_dir} 2> /dev/null
        rm -rf ${HDE_dir};
        echo "Ready"
    fi
}

remove_ste_mirror ()
{
    #
    # Remove old STE first
    #
    if [ -d ${STE_dir} ]
    then
        printf "*   Remove old directory ${STE_dir}... "
        chmod -R 777 ${STE_dir} 2> /dev/null
        rm -rf ${STE_dir};
        echo "Ready"
    fi
}

create_ste_mirror ()
{
    #
    # Prepare STE master directory
    #
    printf "*   Prepare STE master directory ... "
    mkdir -p ${STE_dir}; echo "Ready"
}

create_hde_mirror ()
{
    #
    # Prepare HDE master directory
    #
    printf "*   Prepare HDE master directory ... "
    mkdir -p ${HDE_dir}; echo "Ready"
}

remove_rts_mirror ()
{
    #
    # Remove old RTS first
    #
    if [ -d ${RTS_dir} ]
    then
        printf "*   Remove old RTS/$target directory ... "
        chmod -R 777 ${RTS_dir} 2> /dev/null
        rm -rf ${RTS_dir};
        echo "Ready"
    fi
}

create_rts_mirror ()
{
   #
   # Prepare RTS master directory
   #
    printf "*   Prepare RTS master directory ... "
    mkdir -p ${RTS_dir}; echo "Ready"
}

remove_demos_mirror ()
{
    if [ -d ${DEMOS_dir} ]
    then
        printf "*   Remove old DEMOS/$target directory ... "
        chmod -R 777 ${DEMOS_dir} 2> /dev/null
        rm -rf ${DEMOS_dir};
        echo "Ready"
    fi
}

create_demos_mirror ()
{
    printf "*   Prepare DEMOS master directory ... "
    mkdir -p ${DEMOS_dir}; echo "Ready"
}

copy_windows_redist ()
{
    TARGET_DIR=$1
    MAIN_DRIVE=`echo $SYSTEMDRIVE | awk -F ':' '{ print $1 }'`
    PROGFILES="Program Files"

    case ${SPLICE_HOST} in
        x86_64.*)
            PROGFILES="Program Files (x86)"
            ;;
        esac

    #fallback for when the host is 32 bit but the actual platform is 64 bit
    if [[ "$PROCESSOR_ARCHITECTURE" == "AMD64" ]]; then
         PROGFILES="Program Files (x86)"
    fi

    if [[ "$PROCESSOR_ARCHITEW6432" == "AMD64" ]]; then
         PROGFILES="Program Files (x86)"
    fi


    echo "PROGFILES: |$PROGFILES| PROCESSOR_ARCHITECTURE: |$PROCESSOR_ARCHITECTURE| PROCESSOR_ARCHITEW6432: |$PROCESSOR_ARCHITEW6432|"

    ARCH="x86"
    case ${SPLICE_TARGET} in
        x86_64.*)
            ARCH="x64"
            ;;
        esac


    if [ -z "$VS_VER" ]
    then
        echo "Error - No Visual Studio version set cannot copy Visual Studio Redist"
    else
        REDIST=""
        if [ "$VS_VER" == "14" ]; then
            REDIST="/cygdrive/$MAIN_DRIVE/$PROGFILES/Microsoft Visual Studio 8/SDK/v2.0/BootStrapper/Packages/vcredist_$ARCH/vcredist_$ARCH.exe"
        elif [ "$VS_VER" == "15" ]; then
            REDIST="/cygdrive/$MAIN_DRIVE/$PROGFILES/Microsoft SDKs/Windows/v6.0A/BootStrapper/Packages/vcredist_$ARCH/vcredist_$ARCH.exe"
        elif [ "$VS_VER" == "16" ]; then
            REDIST="/cygdrive/$MAIN_DRIVE/$PROGFILES/Microsoft SDKs/Windows/v7.0A/BootStrapper/Packages/vcredist_$ARCH/vcredist_$ARCH.exe"
        elif [ "$VS_VER" -gt "16" ] && [ "$VS_YEAR" -lt "2017" ]; then
            REDIST="${VS_HOME}/VC/redist/1033/vcredist_$ARCH.exe"
        elif [ "$VS_VER" -gt "16" ] && [ "$VS_YEAR" -gt "2015" ]; then
             VCREDIST_VERSION_TMP=`cat "${VS_HOME}/VC/Auxiliary/Build/Microsoft.VCRedistVersion.default.txt"`
             VCREDIST_VERSION=${VCREDIST_VERSION_TMP//[$'\t\r\n']}
             REDIST="${VS_HOME}/VC/Redist/MSVC/${VCREDIST_VERSION}/vcredist_$ARCH.exe"
        else
            echo "Error - Unknown Visual Studio version ($VS_VER) cannot copy Visual Studio Redist"
        fi
        echo "redist: |$REDIST|"

        if [ ! -f "$REDIST" ]; then
            echo "Error - Cannot find the Visual Studio Redist"
        else
            mkdir -p $TARGET_DIR
            cp "$REDIST" "$TARGET_DIR"
            if [ "$ARCH" == "x86" ]
            then
               cp "${OSPL_HOME}/install/bin/install_vcredist.bat" "$TARGET_DIR"
            else
               cp "${OSPL_HOME}/install/bin/install_vcredist_x64.bat" "$TARGET_DIR/install_vcredist.bat"
            fi
        fi
    fi
}

backup_orig ()
{
    ORIG_DIR=$1
    if [ -d "$ORIG_DIR" ]
    then
        if [ ! -f "$ORIG_DIR-backup.tar" ]
        then
        (
            cd $ORIG_DIR/..;
            O_DIR=`basename $ORIG_DIR`;
            echo "Backup original with $TAR"
            $TAR -cf $O_DIR-backup.tar $O_DIR;
        )
        else
            echo "## There was already a $ORIG_DIR-backup.tar"
        fi
    else
        echo "## There was no $ORIG_DIR to backup"
    fi
}

restore_orig ()
{
    ORIG_DIR=$1
    REMOVE_TAR=$2
    if [ -f "$ORIG_DIR-backup.tar" ]
    then
    (
        cd $ORIG_DIR/..;
        if [ -d "$ORIG_DIR" ]
        then
            rm -rf $ORIG_DIR;
        fi
        O_DIR=`basename $ORIG_DIR`;
        $TAR -xf $O_DIR-backup.tar;
        if [ "$REMOVE_TAR" = "true" ]
        then
            rm $O_DIR-backup.tar;
        fi
    )
    else
        echo "## There was no $ORIG_DIR-backup.tar to restore"
    fi
}

generate_doxygen ()
{
    #This function handles doxygen generation/retrieval. After all calls to generate_doxygen have
    #been made, the push_doxygen function should be called once.
    #
    #Parameter 1: The name of the directory the documentation should be placed in.
    #Parameter 2: The path to the doxygen cfg file
    #
    #The OSPL_DOCS environment variable determines how doxygen generation/retrieval should be
    #performed. OSPL_DOCS can be set to one of 4 values or can be unset.
    #The possible values of OSPL_DOCS are "none", "distrib", "ship" and "update".

    echo "#################### Compile (Generating / retrieving doxygen ${FULLINSTTYPE}) ["`date`"]"

    #If OSPL_DOCS is set to none it doxygen generation/retrieval will be disabled
    if [ "${OSPL_DOCS}" = "none" ]
    then
        echo "Warning: Doxygen generation/retrieval disabled"
        return 0
    fi
    DOCS_DIR=$1
    DOXYGEN_CFG=$2

    #Ship mode
    #
    #On a non-scoreboard build, if OSPL_DOCS is set to "ship" the doxygen documentation will be
    #retrieved from the ospl_docs repository from the branch corresponding to the branch of the
    #build. If the doxygen repository is accessible then this is the default if OSPL_DOCS is unset.
    #
    #On a scoreboard build, if OSPL_DOCS is not set to "update" then this is the default.
    #
    pushd ${OSPL_HOME} >/dev/null
    git ls-remote git://repository2.prismtech.com/ospl_docs &> /dev/null
    REPO_CHECK=$?
    if [[ $REPO_CHECK -eq 0 && ${IS_SCOREBOARD_BUILD} != "yes" ]]
    then
        REPO_CHECK_NOT_SCOREBOARD=0
    fi
    if [ "${OSPL_DOCS}" != "distrib" ]
    then
        if [[ -n $REPO_CHECK_NOT_SCOREBOARD  || "${OSPL_DOCS}" = "ship" ]] || [[ ${IS_SCOREBOARD_BUILD} = "yes" && "${OSPL_DOCS}" != "update" ]]
        then
            echo "Pulling doxygen from repository for $DOXYGEN_CFG..."

            #clone docs repo
            git clone git://repository2.prismtech.com/ospl_docs
            GIT_TAG=$(<etc/docs_git_tag)

            #copy docs from repo
            pushd ospl_docs >/dev/null
            git checkout $GIT_TAG
            mkdir -p ${HDE_dir}/docs/$DOCS_DIR
            cp -rp docs/$DOCS_DIR ${HDE_dir}/docs
            if [ $? -ne 0 ]
            then
                rm -rf ${OSPL_HOME}/ospl_docs
                rm -rf ${HDE_dir}/docs/$DOCS_DIR
                echo "ERROR: No doxygen documentation found in repository for $DOXYGEN_CFG, run a doxygen update"
                return 1
            fi
            popd >/dev/null
        fi
    fi

    #Distrib mode
    #
    #On a non-scoreboard build, if doxygen is installed and OSPL_DOCS is set to "distrib" then the
    #documentation will be generated by doxygen. If the doxygen repository is not accessible then
    #this is the default if OSPL_DOCS is unset.
    #
    #This mode is not available on a scoreboard build.
    #
    command -v doxygen >/dev/null 2>&1
    DOXYGEN_INSTALLED=$?
    if [[ $DOXYGEN_INSTALLED -eq 0 && ${IS_SCOREBOARD_BUILD} != "yes" ]]
    then
        if [[ "${OSPL_DOCS}" = "distrib" || $REPO_CHECK -ne 0 ]]
        then
            echo "Generating doxygen for $DOXYGEN_CFG..."

            mkdir -p ospl_docs/docs/$DOCS_DIR

            #check for dot
            command -v dot >/dev/null 2>&1
            if [ $? -eq 0 ]
            then
                export HAVE_DOT=YES
            else
                export HAVE_DOT=NO
                echo "Warning: dot not found, install Graphviz to generate better class diagrams"
            fi

            #generate doxygen
            if [[ "${DOCS_DIR}" != "isocpp" && "${DOCS_DIR}" != "isocpp2" ]]
            then
                pushd ${OSPL_HOME} >/dev/null
            else
                pushd ${HDE_dir} >/dev/null
            fi
            doxygen $DOXYGEN_CFG
            if [ $? -ne 0 ]
            then
                echo "ERROR: failed to generate doxygen documentation for $DOXYGEN_CFG"
                return 1
            fi
            if [[ "${DOCS_DIR}" != "isocpp" && "${DOCS_DIR}" != "isocpp2" ]]
            then
                popd >/dev/null
                pushd ${HDE_dir} >/dev/null
            fi

            mkdir -p docs
            cp -rp ${OSPL_HOME}/ospl_docs/docs/$DOCS_DIR docs
            popd >/dev/null
        fi
    fi

    #Update mode
    #
    #This mode is not available on a non-scoreboard build.
    #
    #On a scoreboard build, if doxygen is installed and OSPL_DOCS is set to "update" then the
    #documentation will be generated by doxygen and commited to the ospl_docs repository on the
    #branch corresponding to the branch of the build. Pushing the commit occurs later in the
    #push_doxygen function.
    #
    command -v doxygen >/dev/null 2>&1
    if [[ $? -eq 0 && ${IS_SCOREBOARD_BUILD} = "yes" ]]
    then
        if [ "${OSPL_DOCS}" = "update" ]
        then
            echo "Updating doxygen for $DOXYGEN_CFG..."

            #clone docs repo
            git clone ssh://git@repository2.prismtech.com/ospl_docs >/dev/null 2>&1
            mkdir -p ospl_docs/docs/$DOCS_DIR

            #create/checkout branch
            GIT_BRANCH=`sed -n '2p' etc/gitcommit.txt`
            pushd ospl_docs >/dev/null
            git push origin origin:refs/heads/$GIT_BRANCH >/dev/null 2>&1
            git fetch origin >/dev/null 2>&1
            git checkout -b $GIT_BRANCH origin/$GIT_BRANCH
            popd >/dev/null

            #check for dot
            command -v dot >/dev/null 2>&1
            if [ $? -eq 0 ]
            then
                export HAVE_DOT=YES
            else
                export HAVE_DOT=NO
                echo "Warning: dot not found, install Graphviz to generate diagrams"
            fi

            if [[ "${DOCS_DIR}" != "isocpp" && "${DOCS_DIR}" != "isocpp2" ]]
            then
                pushd ${OSPL_HOME} >/dev/null
            else
                pushd ${HDE_dir} >/dev/null
            fi

            pwd
            echo "Delete any existing files in ${OSPL_HOME}/$DOCS_DIR/html before generating latest ...."
            rm -rf ${OSPL_HOME}/ospl_docs/docs/$DOCS_DIR/html >/dev/null

            #generate doxygen
            doxygen $DOXYGEN_CFG
            if [[ "${DOCS_DIR}" != "isocpp" && "${DOCS_DIR}" != "isocpp2" ]]
            then
                popd >/dev/null
                pushd ${HDE_dir} >/dev/null
            fi
            if [ $? -ne 0 ]
            then
                echo "ERROR: failed to generate doxygen documentation for $DOXYGEN_CFG"
                return 1
            fi
            popd >/dev/null

            #copy docs into HDE and commit to repo
            pushd ospl_docs >/dev/null
            mkdir -p ${HDE_dir}/docs/$DOCS_DIR
            cp -rp docs/$DOCS_DIR ${HDE_dir}/docs
            git add -A
            git commit -a -m "$GIT_BRANCH Updated doxygen documentation generated from $DOXYGEN_CFG"
            popd >/dev/null
        fi
    fi
    popd >/dev/null
    return 0
}

push_doxygen ()
{
    #This function handles pushing the generated doxygen back to the ospl_docs repository on the
    #branch corresponding to the branch of the build. This function should only be called once
    #after all calls to generate_doxygen have been made.

    #If OSPL_DOCS is set to none it doxygen generation/retrieval will be disabled
    if [ "${OSPL_DOCS}" = "none" ]
    then
        return 0
    fi

    #Update mode
    #
    #On a scoreboard build, this function will push any committed doxygen updates back to the
    #ospl_docs repository on the branch corresponding to the branch of the build. It will then tag
    #the branch and update the docs_git_tag file found in ${OSPL_HOME}/etc with the name of the tag
    #so that it can later be retrieved when running in "ship" mode. The docs_git_tag file is
    #commited and pushed back to the branch that the doxygen has been generated for. If anyone
    #commits to that branch during the update process then git will be unable to push the
    #docs_git_tag back to the branch and the build will fail.
    #
    #This mode is not available on a non-scoreboard build.
    #
    command -v doxygen >/dev/null
    if [[ $? -eq 0 && ${IS_SCOREBOARD_BUILD} = "yes" ]]
    then
        if [ "${OSPL_DOCS}" = "update" ]
        then
            pushd ${OSPL_HOME} >/dev/null
            GIT_BRANCH=`sed -n '2p' etc/gitcommit.txt`
            git remote set-url origin ssh://git@repository2.prismtech.com/ospli
            git checkout -b TRACK_$GIT_BRANCH origin/$GIT_BRANCH
            if [ $? -eq 0 ]
            then
                echo "Pushing doxygen to repository..."
                pushd ospl_docs >/dev/null
                git push
                if [ $? -ne 0 ]
                then
                    rm -rf ospl_docs
                    echo "ERROR: failed to push doxygen documents"
                    return 1
                fi

                GIT_TAG=$GIT_BRANCH$(date +"_D%Y-%m-%d_T%H-%M-%S")
                git tag $GIT_TAG
                git push origin tag $GIT_TAG
                popd >/dev/null

                echo $GIT_TAG > etc/docs_git_tag
                git add etc/docs_git_tag
                git commit etc/docs_git_tag -m "$GIT_BRANCH Updated doxygen git tag"
                git config push.default upstream
                git push
                if [ $? -ne 0 ]
                then
                    rm -rf ${OSPL_HOME}/ospl_docs
                    echo "ERROR: failed to push doxygen git tag, some one may have done a push during the update"
                    return 1
                fi
            else
                rm -rf ${OSPL_HOME}/ospl_docs
                echo "ERROR: cannot perform doxygen update on a git tag, try again on a branch"
                return 1
            fi
            popd >/dev/null
        fi
    fi
    rm -rf ${OSPL_HOME}/ospl_docs
    return 0
}

generate_javadoc_saj5()
{
    if command -v javadoc 2>/dev/null; then
        SAJ5=${OSPL_HOME}/src/api/dcps/java5/saj
        make -C ${SAJ5} doc
        mkdir -p ${HDE_dir}/docs/java5
        cp ${OSPL_HOME}/docs/java5/dcpssaj5-javadoc.jar ${HDE_dir}/docs/java5
    fi
}

install_face_example()
{
    local COMMON=0
    local EXAMPLE=$1

    echo "*           Example '${EXAMPLE}' ... "
    if [ -d "${OSPL_HOME}/examples/face/${EXAMPLE}" ]
    then

        if [ "${INCLUDE_CXX}" = "yes" -a "${INCLUDE_API_DCPS_ISOCPP2}" = "yes" ]
        then
            echo "*             For isocpp2 ... "
            COMMON=1
            install_git_files_dir_recursive "${OSPL_HOME}/examples/face/${EXAMPLE}/cpp" "${HDE_dir}/examples/face/${EXAMPLE}/cpp"
        fi
        if [ "${INCLUDE_JAVA}" = "yes" -a "${INCLUDE_API_DCPS_SAJ5}" = "yes" ]
        then
            echo "*             For java5 ... "
            if [ -d "${OSPL_HOME}/examples/face/${EXAMPLE}/java" ]
            then
                COMMON=1
                install_git_files_dir_recursive "${OSPL_HOME}/examples/face/${EXAMPLE}/java" "${HDE_dir}/examples/face/${EXAMPLE}/java"
                install_ascii_file "${OSPL_HOME}/examples/face/pom.xml" \
                       "${HDE_dir}/examples/face/"
                install_ascii_file "${OSPL_HOME}/examples/face/${EXAMPLE}/pom.xml" \
                       "${HDE_dir}/examples/face/${EXAMPLE}/"
            else
                echo "*         Java5 face example missing from '${OSPL_HOME}/examples/face/${EXAMPLE}/java'"
            fi
        fi
        if [ "${COMMON}" -eq 1 ]
        then
            echo "*             Common ... "
            install_git_files_dir_recursive "${OSPL_HOME}/examples/face/${EXAMPLE}/idl" "${HDE_dir}/examples/face/${EXAMPLE}/idl"
        fi
    else
        echo "* ## FACE example ${example} does not exist"
        return 1
    fi
    echo "*           Ready "
    return 0
}

install_face()
{
    #
    # FACE API
    #
    echo "*         For FACE..."
    if [ "${INCLUDE_CXX}" = "yes" -a "${INCLUDE_API_DCPS_ISOCPP2}" = "yes" ]
    then
        echo "*           For isocpp2 ... "
        install_git_files_dir_recursive "${OSPL_HOME}/src/api/face/cpp/include" "${HDE_dir}/include/face/cpp"
        echo "*           Ready "
    fi
    if [ "${INCLUDE_JAVA}" = "yes" -a "${INCLUDE_API_DCPS_SAJ5}" = "yes" ]
    then
        echo "*           For java5 ... "
        mkdir -p ${HDE_dir}/docs/face/java
        make -C ${OSPL_HOME}/src/api/face/java doc
        cp ${OSPL_HOME}/docs/face/java/* ${HDE_dir}/docs/face/java
        echo "*           Ready "
    fi
    install_face_example "HelloWorld"
    echo "*         Ready "
}

install_hde_target ()
{
    target_os=`expr "$target" : '[a-zA-Z0-9_]*\.\([a-zA-Z]*\)'`
    host_os=`expr "$host" : '[a-zA-Z0-9_]*\.\([a-zA-Z]*\)'`

    if [ "${INCLUDE_API_DCPS_ISOCPP}" = "yes" -o "$INCLUDE_API_DCPS_ISOCPP2" = "yes" ]
    then
        if [ "${OSPL_QT_IS_ON}" = "yes" ]
        then
            printf "*     Building [OSPL_HOME]/demos by calling 'make build_demos'... \n"
            make -C ${OSPL_HOME} clean_demos
            make -C ${OSPL_HOME} build_demos
            if [ $? != 0 ]
            then
                echo "ERROR building demos. Suggest you check Qt installation..."
                #return 1
            fi
            echo "Ready"
        fi
    fi

    #
    # Generate standalone execuitables for Roundtrip and Throughput examples
    #
    if [ "${OSPL_PYINSTALL_IS_ON}" = "yes" ]
    then
        printf "*     Building [OSPL_HOME]/examples/dcps/PerformanceScripts by calling 'make build_scripts'... \n"
        make -C ${OSPL_HOME} clean_scripts
        make -C ${OSPL_HOME} build_scripts
        if [ $? != 0 ]
        then
            echo "Error building python scripts. Check pyinstaller is installed..."
        fi
        echo "Ready"
    fi

    if [ "${SOURCE_HOST_SHORT}" != "win" ]
    then
       WINCMD=
    else
       WINCMD=${OSPL_HOME}/bin/ospl_wincmd
    fi

    #
    # Copy interface file for OpenSplice
    #
    printf "*     Copy OpenSplice IDL interface files "
    mkdir ${HDE_dir}/etc
    mkdir ${HDE_dir}/etc/idl
    cp ${OSPL_HOME}/etc/idl/*.idl ${HDE_dir}/etc/idl/
    echo "Ready"

    #
    # Copy QoSProvider files
    #
    printf "*     Copy QoSProvider files "
    cp ${OSPL_HOME}/etc/DDS_DefaultQoS.xml ${HDE_dir}/etc/
    cp ${OSPL_HOME}/etc/DDS_QoSProfile.xsd ${HDE_dir}/etc/
    echo "Ready"

    #
    # Copy in the buildinfo if produced from the scoreboard
    #
    if [ -f "${OSPL_HOME}/etc/BUILDINFO" ]
    then
        printf "*     Copy automated BUILDINFO files "
        cp ${OSPL_HOME}/etc/BUILDINFO ${HDE_dir}/etc/.
        echo "Ready"
    fi

    # Copy in features file to the etc directory of the installer.
    if [ -f "${OSPL_HOME}/etc/features.txt" ]
    then
        cp ${OSPL_HOME}/etc/features.txt ${HDE_dir}/etc/.
    fi

    #
    # Copy in the releaseinfo file
    #
    if [ -f "${OSPL_HOME}/release_info/RELEASE" ]
    then
        printf "*     Copy RELEASE info files "
        cp ${OSPL_HOME}/release_info/RELEASE ${HDE_dir}/etc/RELEASEINFO
        echo "Ready"
    fi

    # java definitions

    mkdir -p ${HDE_dir}/etc/java
    cp ${OSPL_HOME}/etc/java/defs.jdk ${HDE_dir}/etc/java

    #
    # Copy Valgrind suppression file
    #
    if [ "$VALGRIND" = "yes" ]
    then
        echo "*     Copy Valgrind suppression file"
        cp ${OSPL_HOME}/etc/valgrind-suppressions.txt ${HDE_dir}/etc/
        echo "Ready"
    fi

    #
    # Copy IDL preprocessor configuration files
    #
    echo "*     Copy IDL preprocessor configuration files"
    mkdir ${HDE_dir}/etc/idlpp
    cp ${OSPL_HOME}/etc/idl/*.idl ${HDE_dir}/etc/idlpp/
    cp -r ${OSPL_HOME}/etc/idlpp/* ${HDE_dir}/etc/idlpp/

    # Exception for CCPP preprocessor configuration files, because off orb_idependent
    # files required for all orbs.
    rm -rf ${HDE_dir}/etc/idlpp/CCPP
    mkdir ${HDE_dir}/etc/idlpp/CCPP
    for ORB_TMPL in ${ORB_TMPLS}
    do
        mkdir ${HDE_dir}/etc/idlpp/CCPP/${ORB_TMPL}
        cp ${OSPL_HOME}/etc/idlpp/CCPP/orb_independent/corba* ${HDE_dir}/etc/idlpp/CCPP/${ORB_TMPL}
        cp ${OSPL_HOME}/etc/idlpp/CCPP/${ORB_TMPL}/corbaCxxMainInclude ${HDE_dir}/etc/idlpp/CCPP/${ORB_TMPL}
    done
    echo "*     IDL preprocessor configuration files Ready"

    #
    # Copy default configuration file for OpenSplice
    #
    echo "*     Copy OpenSplice configuration files "
    mkdir ${HDE_dir}/etc/config
    if [ "${INCLUDE_SINGLE_PROCESS}" = "yes" ]
    then
        install_configuration_file "${OSPL_HOME}/etc/ospl_sp_no_network.xml" "${HDE_dir}/etc/config"

        if [ "${INCLUDE_SERVICES_DDSI}" = "yes" -o "${INCLUDE_SERVICES_DDSI2E}" = "yes" ]
        then
            install_configuration_file "${OSPL_HOME}/etc/ospl_sp_ddsi.xml" "${HDE_dir}/etc/config"
            install_configuration_file "${OSPL_HOME}/etc/ospl_sp_ddsi_statistics.xml" "${HDE_dir}/etc/config"
            install_configuration_file "${OSPL_HOME}/etc/ospl_sp_ddsi_1gbps.xml" "${HDE_dir}/etc/config"
            install_configuration_file "${OSPL_HOME}/etc/ospl_sp_ddsi_10gbps.xml" "${HDE_dir}/etc/config"
            # current requirement is the single process configuration with ddsi2 networking should be default:
            if [ "${target_os}" = "lynxos" ]
            then
                install_configuration_file "${OSPL_OUTER_HOME}/etc/ospl_shmem_ddsi.xml" "${HDE_dir}/etc/config" "ospl.xml"
            else
                install_configuration_file "${OSPL_HOME}/etc/ospl_sp_ddsi.xml" "${HDE_dir}/etc/config" "ospl.xml"
            fi
        else
            install_configuration_file "${OSPL_HOME}/etc/ospl_sp_no_network.xml" "${HDE_dir}/etc/config" "ospl.xml"
        fi
    fi

    # Copy meta-config file used for validating configuration files
    install_ascii_file "${OSPL_HOME}/src/tools/cm/config/code/splice_metaconfig_6.1.xml" "${HDE_dir}/etc" "ospl_metaconfig.xml"

    #
    # Copy library files
    #
    echo "*     Copy library files"
    printf "*         For target ... "
    release=${OSPL_HOME}/lib/${target}${source_env}
    if [ -d "${release}" ]
    then
        mkdir ${HDE_dir}/lib
        install_dir $release ${HDE_dir} lib
        if [ "${VXWORKS_KERNEL_MODE}" = "yes" ]
        then
            cp ${HDE_dir}/lib/libddskernel${target_suffix_lib} ${HDE_dir}/lib/libddscore${target_suffix_lib}
        fi
        # remove cpp library
        rm -f ${HDE_dir}/lib/*ddscpp*
        rm -f ${HDE_dir}/lib/*ddslic*
        rm -f ${HDE_dir}/lib/libthingsdk.so

    else
        echo "* ##    No target library files detected"
    fi
    echo "Ready"

    if [ "${target_os}" != "${host_os}" -o "$target" != "$host" ]
    then
        printf "*         For host ... "
        release=${OSPL_HOME}/lib/${host}${source_env}
        if [ -d "${release}" ]
        then
            mkdir ${HDE_dir}/host
            mkdir ${HDE_dir}/host/lib
            install_dir ${release} ${HDE_dir} /host/lib
            rm -f ${HDE_dir}/host/lib/*ddscpp*
            rm -f ${HDE_dir}/host/lib/*ddslic*
        else
            echo "* ##    No host library files detected in ${release}"
        fi
        echo "Ready"
    fi

    #
    # Copy java archive files
    #
    if [ "${INCLUDE_JAVA}" = "yes" ]
    then
        printf "*     Copy JAVA target archive files... "
        release=${OSPL_HOME}/jar/${target}${source_env}
        if [ -d "${release}" ]
        then
            mkdir -p ${HDE_dir}/jar
            install_dir ${release} ${HDE_dir} jar
            # OSPL-6341 Create dcpssaj-osgi-bundle.jar for backwards compatibility
            if  [ "${INCLUDE_API_DCPS_SAJ}" = "yes" ]
            then
                cp ${release}/dcpssaj.jar ${HDE_dir}/jar/dcpssaj-osgi-bundle.jar
            fi
        else
            echo "* ##    No JAVA archive files detected"
        fi
        echo "Ready"
    fi

    #
    # Copy script files
    #
    echo "*     Copy script files"
    release=${OSPL_HOME}/install/bin
    if [ -d "${release}" ]
    then
        mkdir -p ${HDE_dir}/bin
        install_ascii_file "${release}/osplconf${suffix_script}" "${HDE_dir}/bin"
        if [ "${SOURCE_HOST_SHORT}" = "win" ]
        then
            install_ascii_file "${release}/run.vbs" "${HDE_dir}/bin"

            if [ "${SOURCE_TARGET_SHORT}" = "win" ]
            then
                install_ascii_file "${release}/standalone_c_cpp${suffix_script}" "${HDE_dir}/bin"
                install_ascii_file "${release}/standalone_c${suffix_script}" "${HDE_dir}/bin"
                install_ascii_file "${release}/standalone_cpp${suffix_script}" "${HDE_dir}/bin"
                install_ascii_file "${release}/dcps_iso_cpp${suffix_script}" "${HDE_dir}/bin"
                install_ascii_file "${release}/corba_cpp${suffix_script}" "${HDE_dir}/bin"
                install_ascii_file "${release}/c_sharp${suffix_script}" "${HDE_dir}/bin"
                install_ascii_file "${release}/osplctrl${suffix_script}" "${HDE_dir}/bin"
                if [ "${INCLUDE_TOOLS_MMSTAT}" = "yes" ]
                then
                    install_ascii_file "${release}/osplmmstat${suffix_script}" "${HDE_dir}/bin"
                fi
            elif [ "${SOURCE_TARGET_SHORT}" = "wince" ]
            then
                install_ascii_file "${release}/standalone_c_cpp${suffix_script}" "${HDE_dir}/bin"
                install_ascii_file "${release}/standalone_c${suffix_script}" "${HDE_dir}/bin"
                install_ascii_file "${release}/standalone_cpp${suffix_script}" "${HDE_dir}/bin"
                install_ascii_file "${release}/c_sharp${suffix_script}" "${HDE_dir}/bin"
            fi
        fi
        if [ "${INCLUDE_JAVA}" = "yes" -a "${INCLUDE_TOOLS_PROTOBUF}" = "yes" ]
        then
            if [ "${SOURCE_HOST_SHORT}" != "win" ]
            then
                install_ascii_file "${release}/protoc-gen-ddsjava${suffix_script}" "${HDE_dir}/bin"
                install_ascii_file "${release}/protoc-gen-ddscpp${suffix_script}" "${HDE_dir}/bin"
            fi
        fi
    else
        echo "* ##    No script files detected"
    fi
    echo "*     Script files Ready"

    #
    # Copy executable files
    #
    echo "*     Copy OpenSplice executables"
    target_release=${OSPL_HOME}/exec/${target}${source_env}
    host_release=${OSPL_HOME}/exec/${host}${source_env}

    if [ -d "${target_release}" -a -d "${host_release}" ]
    then
        mkdir -p ${HDE_dir}/bin
        install_bin_file ${host_release} ${HDE_dir} bin idlpp${suffix_exe}
        install_bin_file ${host_release} ${HDE_dir} bin cppgen${suffix_exe}

        if [ "${INCLUDE_JAVA}" = "yes" -a "${INCLUDE_TOOLS_PROTOBUF}" = "yes" ]
        then
            if [ "${SOURCE_TARGET_SHORT}" = "win" ]
            then
                install_bin_file ${host_release} ${HDE_dir} bin protoc-gen-ddsjava${suffix_exe}
                install_bin_file ${host_release} ${HDE_dir} bin protoc-gen-ddscpp${suffix_exe}
            fi
        fi
        if [ "${INCLUDE_TOOLS_CONF2C}" = "yes" ]
        then
            install_bin_file ${host_release} ${HDE_dir} bin osplconf2c${suffix_exe}
        fi

        if [ "${SOURCE_TARGET_SHORT}" != "int" ]
        then
            if [ "${INCLUDE_TOOLS_MMSTAT}" = "yes" ]
            then
                install_bin_file ${target_release} ${HDE_dir} bin mmstat${target_suffix_exe}
            fi

            if [ "${INCLUDE_TOOLS_DEBUG_DBD}" = "yes" ]
            then
                install_bin_file ${target_release} ${HDE_dir} bin dbd${target_suffix_exe}

            fi

            if [ "${INCLUDE_TOOLS_SHMDUMP}" = "yes" ]
            then
                install_bin_file ${target_release} ${HDE_dir} bin shmdump${target_suffix_exe}
            fi
        fi

        pdbfiles=`ls ${OSPL_HOME}/exec/${target}${source_env}/*.pdb 2>/dev/null`
        if [ "${SOURCE_TARGET_SHORT}" = "win" -o "${SOURCE_TARGET_SHORT}" = "wince" ] && [ -n "${pdbfiles}" ]
        then
            cp ${pdbfiles} ${HDE_dir}/bin
            rm -rf ${HDE_dir}/bin/corecount.pdb
        fi
    else
        echo "* ##    No executables detected"
    fi

    if [ "${SOURCE_TARGET_SHORT}" = "win" -o "${SOURCE_TARGET_SHORT}" = "wince" ]
    then
        if [ "${target_os}" != "${host_os}" -o "$target" != "$host" ] # cross compile
        then
            EXTRALIBPATH=/host
        fi
        # Put all the *.pdb's into the bin directory if this is a win host platform.
        mv ${HDE_dir}${EXTRALIBPATH}/lib/*.dll ${HDE_dir}/bin/.  >& /dev/null
        mv ${HDE_dir}${EXTRALIBPATH}/lib/*.pdb ${HDE_dir}/bin/.  >& /dev/null
        rm -rf ${HDE_dir}/bin/corecount.pdb
        mv ${HDE_dir}/lib/*.netmodule ${HDE_dir}/bin/.  >& /dev/null
    fi

    #
    # Copy include files
    #
    echo "*     Copy language specific interface files"
    mkdir ${HDE_dir}/include
    mkdir ${HDE_dir}/include/sys
    mkdir ${HDE_dir}/include/${OSPL_TARGET_HEADERS}
    mkdir ${HDE_dir}/include/${OSPL_TARGET_HEADERS}/include

    os=`expr "${target}" : '[A-Za-z0-9_-]*\.\([^_]*\)'`
    if [ "${os}" = "elinos6.1" -o "${os}" = "elinos6.0" ]
    then
       os=linux
    fi

    mkdir ${HDE_dir}/include/posix
    mkdir ${HDE_dir}/include/posix/include

    mkdir ${HDE_dir}/include/common
    mkdir ${HDE_dir}/include/common/include

    #
    # Copy Generic DCPS Docs
    #
    if [ -n "${OSPL_DOCS}" ] && [ "${INCLUDE_API_DCPS_DOCS}" = "yes" -a "${OSPL_DOCS}" != "none" -a "${OSPL_DOCS}" != "ship" ]
    then
        echo "*         For shared docs"
        install_git_files_dir_recursive "${OSPL_HOME}/src/api/dcps/docs" "${HDE_dir}/include/dcps/docs"
    fi

    install_ascii_fileset "${OSPL_HOME}/src/abstraction/os/posix/include/os_*.h" "${HDE_dir}/include/posix/include/"
    install_ascii_fileset "${OSPL_HOME}/src/abstraction/os/common/include/os_*.h" "${HDE_dir}/include/common/include/"

    mkdir ${HDE_dir}/include/svr4
    mkdir ${HDE_dir}/include/svr4/include

    if [ -d "${OSPL_HOME}/src/abstraction/os/${OSPL_TARGET_HEADERS}/include/" ]
    then
        install_ascii_fileset "${OSPL_HOME}/src/abstraction/os/${OSPL_TARGET_HEADERS}/include/os_*.h" "${HDE_dir}/include/${OSPL_TARGET_HEADERS}/include"
    fi

    install_ascii_fileset "${OSPL_HOME}/src/abstraction/os/include/os_*.h" "${HDE_dir}/include/sys"
    install_ascii_fileset "${OSPL_HOME}/src/abstraction/os/include/vortex_os.h" "${HDE_dir}/include/sys"
    install_ascii_fileset "${OSPL_HOME}/src/database/database/include/[cq]_*.h" "${HDE_dir}/include/sys"
    install_ascii_fileset "${OSPL_HOME}/src/database/serialization/include/sd_*.h" "${HDE_dir}/include/sys"
    install_ascii_fileset "${OSPL_HOME}/src/kernel/include/v_*.h" "${HDE_dir}/include/sys"
    install_ascii_fileset "${OSPL_HOME}/src/user/include/u_*.h" "${HDE_dir}/include/sys"
    install_ascii_fileset "${OSPL_HOME}/src/utilities/include/ut_*.h" "${HDE_dir}/include/sys"
    install_ascii_fileset "${OSPL_HOME}/src/api/dcps/common/include/cmn_*.h" "${HDE_dir}/include/sys"
    install_ascii_file    "${OSPL_HOME}/src/osplcore/bld/${SPLICE_TARGET}/kernelModule.h" "${HDE_dir}/include/sys"
    install_ascii_file    "${OSPL_HOME}/src/osplcore/bld/${SPLICE_TARGET}/kernelModuleI.h" "${HDE_dir}/include/sys"

    #
    # Copy C&M related include files
    #

    if [ "${INCLUDE_API_CM}" = "yes" ]
    then
        echo "*     Copy include files for C&M"
        mkdir ${HDE_dir}/include/cm
        install_ascii_fileset "${OSPL_HOME}/src/api/cm/xml/include/*.h" \
            "${HDE_dir}/include/cm"
        echo "*     C&M Ready"
    fi

    #
    # Copy Protobuf related files (only when JAVA is available)
    #
    if [ "${INCLUDE_JAVA}" = "yes" -a "${INCLUDE_TOOLS_PROTOBUF}" = "yes" ]
    then
        echo "*     Copy proto files for protobuf integration"
        mkdir -p ${HDE_dir}/include/protobuf/omg/dds
        release=`ls -d ${OSPL_HOME}/src/tools/protobuf 2>/dev/null`
        install_ascii_fileset "${OSPL_HOME}/src/tools/protobuf/protos/omg/dds/*" "${HDE_dir}/include/protobuf/omg/dds"

        if [ "${INCLUDE_API_DCPS_SAJ5}" = "yes" ]
        then
            mkdir -p ${HDE_dir}/etc/protobuf/SAJ5
            install_ascii_fileset "${OSPL_HOME}/etc/protobuf/SAJ5/*" "${HDE_dir}/etc/protobuf/SAJ5"
        fi

        if [ "${INCLUDE_CXX}" = "yes" -a "${INCLUDE_API_DCPS_ISOCPP2}" = "yes" ]
        then
            mkdir -p ${HDE_dir}/etc/protobuf/ISOCPP2
            install_ascii_fileset "${OSPL_HOME}/etc/protobuf/ISOCPP2/*" "${HDE_dir}/etc/protobuf/ISOCPP2"
        fi
    fi
    echo "*     Protobuf Ready"

    #
    # Create and sign a Global Assembly for the SACS Dll
    #
    if [ "${INCLUDE_CS}" = "yes" -a "${INCLUDE_API_DCPS_SACS}" = "yes" ]
    then
        if [ "${SOURCE_TARGET_SHORT}" = "win" -o "${SOURCE_TARGET_SHORT}" = "wince" ]
        then
            echo "*     Create and sign a Global Assembly for the SACS DLL"
            cskeyfile=`cygpath -d "${OSPL_HOME}/src/api/dcps/sacs/dcpssacs.snk"`
            csoutdir=`cygpath -d "${HDE_dir}/bin/"`
            csmodfile=`cygpath -d "${OSPL_HOME}/lib/${target}${source_env}/dcpssacs.netmodule"`
            csoutfile="${csoutdir}${CS_ASSEMBLY_NAME}.dll"

             case "${target}" in
                x86.*)
                    CS_PLATFORM=x86
                    ;;
                x86_64.*)
                    CS_PLATFORM=x64
                    ;;
                *)
                    CS_PLATFORM=anycpu
                    ;;
            esac

            al /t:library /keyfile:"${cskeyfile}" /platform:${CS_PLATFORM} /v:${CS_DLL_VERSION} /out:"${csoutfile}" "${csmodfile}"
        fi
        # This needs to be changed when we support C# for linux and add an else part
        # that will set all these variables correctly and call the appropriate mono
        # executable for the assembly linker.

        generate_doxygen cs_api ${OSPL_HOME}/etc/doxygen_cs_api.cfg
        if [ $? -ne 0 ]
        then
            generate_doxygen cs_api doxygen_cs_api.cfg
            if [ $? -ne 0 ]
            then
                return 1
            fi
        fi
        echo "*     Ready"
    fi

    #
    # Copy DCPS related include files
    #
    echo "*     Copy include files"
    echo "*       For DCPS"

    mkdir -p ${HDE_dir}/include/dcps
    mkdir -p ${HDE_dir}/custom_lib

    #
    # DCPS C++ CCPP
    #
    if [ "${INCLUDE_API_DCPS_CCPP}" = "yes" ]
    then
        release=`ls -d ${OSPL_HOME}/src/api/dcps/c++/ccpp/bld/${target}${source_env} 2>/dev/null`
        echo "*         For C++"
        echo "*           For CCPP ... "
        mkdir ${HDE_dir}/include/dcps/C++
        mkdir ${HDE_dir}/include/dcps/C++/CCPP

        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/c++/ccpp/include/ccpp_dds_basic_types.h" \
            "${HDE_dir}/include/dcps/C++/CCPP"
        for ORB_TMPL in ${ORB_TMPLS}
        do
            mkdir ${HDE_dir}/include/dcps/C++/CCPP/${ORB_TMPL}
            install_ascii_fileset "${OSPL_HOME}/src/api/dcps/c++/ccpp/include/orb/${ORB_TMPL}/*.[ih]" \
              "${HDE_dir}/include/dcps/C++/CCPP/${ORB_TMPL}"
        done

        install_ascii_fileset "${release}/*.h" "${HDE_dir}/include/dcps/C++/CCPP/${SPLICE_ORB}"
        install_ascii_fileset "${release}/*.inl" "${HDE_dir}/include/dcps/C++/CCPP/${SPLICE_ORB}"

        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/c++/common/include/*.[ih]" \
            "${HDE_dir}/include/dcps/C++/CCPP"
        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/c++/ccpp/include/*.[ih]"  \
            "${HDE_dir}/include/dcps/C++/CCPP"
        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/c++/ccpp/bld/${SPLICE_TARGET}/*.[ih]" \
            "${HDE_dir}/include/dcps/C++/CCPP"
        echo "*           CCPP Ready"
    fi

    #
    # DCPS C++ SACPP
    #
    if [ "${INCLUDE_API_DCPS_SACPP}" = "yes" ]
    then
        release=`ls -d ${OSPL_HOME}/src/api/dcps/c++/sacpp/bld/${target}${source_env} 2>/dev/null`
        echo "*         For C++"
        echo "*           For SACPP ... "
        if [ ! -d ${HDE_dir}/include/dcps/C++ ]
        then
            mkdir ${HDE_dir}/include/dcps/C++
        fi
        mkdir ${HDE_dir}/include/dcps/C++/SACPP
        mkdir ${HDE_dir}/include/dcps/C++/SACPP/mapping

        install_ascii_fileset "${release}/*.[ih]" "${HDE_dir}/include/dcps/C++/SACPP"
        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/c++/common/include/*.h" \
            "${HDE_dir}/include/dcps/C++/SACPP"
        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/c++/sacpp/include/*.h" \
            "${HDE_dir}/include/dcps/C++/SACPP"
        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/c++/sacpp/include/mapping/*.h" \
            "${HDE_dir}/include/dcps/C++/SACPP/mapping"
        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/c++/sacpp/bld/${SPLICE_TARGET}/*.[ih]" \
            "${HDE_dir}/include/dcps/C++/SACPP"
        echo "*           SACPP  Ready"
        echo "*         C++ Ready"
    fi

    #
    # Streams Batching API
    #
    if [ "$INCLUDE_API_STREAMS" = "yes" ]
    then
        echo "*       For Streams..."
        mkdir -p ${HDE_dir}/include/streams

        #
        # Streams CCPP
        #
        if [ "$INCLUDE_API_STREAMS_CCPP" = "yes" ]
        then
            echo "*           Corba C++"
            mkdir -p ${HDE_dir}/include/streams/CCPP
            install_ascii_fileset "$OSPL_HOME/src/api/streams/ccpp/include/*.h" "${HDE_dir}/include/streams/CCPP"
        fi

        #
        # Streams SACPP
        #
        if [ "$INCLUDE_API_STREAMS_SACPP" = "yes" ]
        then
            echo "*           Standalone C++"
            mkdir -p ${HDE_dir}/include/streams/SACPP
            install_ascii_fileset "$OSPL_HOME/src/api/streams/sacpp/include/*.h" "${HDE_dir}/include/streams/SACPP"
            install_ascii_file "$OSPL_HOME/src/api/streams/ccpp/include/ccpp_StreamDataReader_impl.h" "${HDE_dir}/include/streams/SACPP"
            install_ascii_file "$OSPL_HOME/src/api/streams/ccpp/include/ccpp_StreamDataWriter_impl.h" "${HDE_dir}/include/streams/SACPP"
            install_ascii_file "$OSPL_HOME/src/api/streams/ccpp/include/ccpp_streamsT_impl.h" "${HDE_dir}/include/streams/SACPP"
            install_ascii_file "$OSPL_HOME/src/api/streams/ccpp/include/ccpp_StreamsUtils.h" "${HDE_dir}/include/streams/SACPP"
            install_ascii_file "$OSPL_HOME/src/api/streams/ccpp/include/ccpp_streams_if.h" "${HDE_dir}/include/streams/SACPP"
        fi
        echo "*       Streams Ready"
    fi

    #
    # DCPS C++ ISOCPP
    #
    if [ "${INCLUDE_CXX}" = "yes" -a "$INCLUDE_API_DCPS_ISOCPP" = "yes" ] || [ "${OSPL_DOCS}" = "update" ]
    then
        echo "*           For isocpp ... "
        mkdir -p ${HDE_dir}/include/dcps/C++/isocpp
        mkdir -p ${HDE_dir}/custom_lib/isocpp
        install_git_files_dir_recursive "${OSPL_HOME}/src/api/dcps/isocpp/include" ${HDE_dir}/include/dcps/C++/isocpp
        install_git_files_dir_recursive "${OSPL_HOME}/src/api/dcps/isocpp/code"    ${HDE_dir}/custom_lib/isocpp
        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/isocpp/*.mp?" "${HDE_dir}/custom_lib"

        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/ContentFilteredTopic/idl" ${HDE_dir}/examples/dcps/ContentFilteredTopic/idl
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/Durability/idl" ${HDE_dir}/examples/dcps/Durability/idl
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/HelloWorld/idl" ${HDE_dir}/examples/dcps/HelloWorld/idl
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/Lifecycle/idl" ${HDE_dir}/examples/dcps/Lifecycle/idl
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/Listener/idl" ${HDE_dir}/examples/dcps/Listener/idl
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/Ownership/idl" ${HDE_dir}/examples/dcps/Ownership/idl
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/QueryCondition/idl" ${HDE_dir}/examples/dcps/QueryCondition/idl
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/RoundTrip/idl" ${HDE_dir}/examples/dcps/RoundTrip/idl

        #
        # Streams C++ ISOCPP
        #
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/Throughput/idl" ${HDE_dir}/examples/dcps/Throughput/idl
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/Tutorial/idl" ${HDE_dir}/examples/dcps/Tutorial/idl
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/WaitSet/idl" ${HDE_dir}/examples/dcps/WaitSet/idl
        if [ "${OSPL_QT_IS_ON}" = "yes" ]
        then
            mkdir -p ${HDE_dir}/demos
            install_bin_file ${target_release} ${HDE_dir} bin demo_ishapes${target_suffix_exe}
            install_git_files_dir_recursive "${OSPL_HOME}/demos/iShapes" ${HDE_dir}/demos/iShapes
            # remove the standalone demo files
            rm -rf ${HDE_dir}/demos/iShapes/distrib ${HDE_dir}/demos/iShapes/scripts
        fi
        # delete the 'detail' directories from the ISO C++ spec headers - these are examples to vendors
        # We keep them in the repo to simplify bi-directional merges spec <-> wor implementation
        find ${HDE_dir}/include/dcps/C++/isocpp/spec -name "detail" -type d | xargs rm -rf 2>/dev/null

        echo "*           isocpp  Ready"
    fi

    #
    # DCPS C++ ISOCPP2
    #
    if [ "${INCLUDE_CXX}" = "yes" -a "${INCLUDE_API_DCPS_ISOCPP2}" = "yes" ] || [ "$OSPL_DOCS" = "update" ]
    then
        echo "*           For isocpp2 ... "
        mkdir -p ${HDE_dir}/include/dcps/C++/isocpp2
        mkdir -p ${HDE_dir}/include/dcps/C++/isocpp2/org/opensplice/dds/iot/
        mkdir -p ${HDE_dir}/custom_lib/isocpp2

        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/isocpp2/bld/${SPLICE_TARGET}/*.h*" \
            "${HDE_dir}/include/dcps/C++/isocpp2/org/opensplice/dds/iot"


        install_git_files_dir_recursive "${OSPL_HOME}/src/api/dcps/isocpp2/include" ${HDE_dir}/include/dcps/C++/isocpp2
        install_git_files_dir_recursive "${OSPL_HOME}/src/api/dcps/isocpp2/code"    ${HDE_dir}/custom_lib/isocpp2
        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/isocpp2/*.mp?" "${HDE_dir}/custom_lib"

        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/BuiltInTopics/isocpp2" ${HDE_dir}/examples/dcps/BuiltInTopics/isocpp2
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/ContentFilteredTopic/isocpp2" ${HDE_dir}/examples/dcps/ContentFilteredTopic/isocpp2
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/Durability/isocpp2" ${HDE_dir}/examples/dcps/Durability/isocpp2
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/HelloWorld/isocpp2" ${HDE_dir}/examples/dcps/HelloWorld/isocpp2
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/Lifecycle/isocpp2" ${HDE_dir}/examples/dcps/Lifecycle/isocpp2
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/Listener/isocpp2" ${HDE_dir}/examples/dcps/Listener/isocpp2
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/Ownership/isocpp2" ${HDE_dir}/examples/dcps/Ownership/isocpp2
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/QueryCondition/isocpp2" ${HDE_dir}/examples/dcps/QueryCondition/isocpp2
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/RoundTrip/isocpp2" ${HDE_dir}/examples/dcps/RoundTrip/isocpp2
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/Throughput/isocpp2" ${HDE_dir}/examples/dcps/Throughput/isocpp2
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/Tutorial/isocpp2" ${HDE_dir}/examples/dcps/Tutorial/isocpp2
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/WaitSet/isocpp2" ${HDE_dir}/examples/dcps/WaitSet/isocpp2

        #The raw generated docs contain references to TFiles and DELEGATES this is not representitive
        #of the public API and adds unessary complexity to the docs, the following script removes references
        #to both Tfiles eg. TEntity, TDomainParticipant and references to DELEGATE templated parameters
        if [ -n "${OSPL_DOCS}" ] && [ "${INCLUDE_API_DCPS_ISOCPP2}" = "yes" -a "${OSPL_DOCS}" != "none" -a "${OSPL_DOCS}" != "ship" ]
        then
            python ${OSPL_HOME}/src/api/dcps/isocpp2/predoxygen.py \
                            -i ${HDE_dir}/include/dcps/C++/isocpp2/dds \
                            -o ${HDE_dir}/include/dcps/C++/isocpp2/doxy
        fi
        generate_doxygen isocpp2 ${OSPL_HOME}/etc/doxygen_isocpp2_distrib.cfg
        if [ $? -ne 0 ]
        then
            return 1
        fi
        echo "*           isocpp2  Ready"

        if [ -n "${OSPL_DOCS}" ] && [ "${INCLUDE_API_DCPS_ISOCPP2}" = "yes" -a "${OSPL_DOCS}" != "none" -a "${OSPL_DOCS}" != "ship" ]
        then
            #Delete the temporary file created by predoxygen.py script
            rm -rv ${HDE_dir}/include/dcps/C++/isocpp2/doxy
        fi

        if [[ "${INCLUDE_API_FACE}" = "yes"  || "${OSPL_DOCS}" = "update" ]]
        then
            generate_doxygen face ${OSPL_HOME}/etc/doxygen_isocpp2_face_api.cfg
            if [ $? -ne 0 ]
            then
                return 1
            fi
            echo "*           ISO C++ 2 Face doxygen documentation  Ready"
        fi
    fi

    #
    # FACE
    #
    if [ "${INCLUDE_API_FACE}" = "yes" ]
    then
        install_face
    fi

    #
    # Copy custom Protobuf (only when JAVA is available)
    #
    if [ "${INCLUDE_JAVA}" = "yes" -a "${INCLUDE_TOOLS_PROTOBUF}" = "yes" ]
    then
        echo "*     Copy custom Protobuf support ... "
        release=${OSPL_HOME}/src/tools/protobuf
        mkdir -p ${HDE_dir}/custom_lib/protobuf
        cp ${release}/custom_lib/* ${HDE_dir}/custom_lib/protobuf
        update_copyright ${HDE_dir}/custom_lib/protobuf
        mkdir -p ${HDE_dir}/custom_lib/protobuf/code
        cp -r ${release}/gpb/code ${HDE_dir}/custom_lib/protobuf
        echo "*   Protobuf  Ready"
    fi

    #
    # DCPS C SAC
    #
    if [ "${INCLUDE_API_DCPS_SAC}" = "yes" ]
    then
        echo "*         For C"
        echo "*           For SAC ... "
        mkdir ${HDE_dir}/include/dcps/C
        mkdir ${HDE_dir}/include/dcps/C/SAC
        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/sac/include/*.h" \
            "${HDE_dir}/include/dcps/C/SAC"
        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/sac/bld/${SPLICE_TARGET}/*.h" \
            "${HDE_dir}/include/dcps/C/SAC"
        echo "*           SAC Ready"
        echo "*         C Ready"
    fi

    #
    # DCPS C C99
    #
    if [ "${INCLUDE_API_DCPS_C99}" = "yes" ]
    then
        echo "*         For C"
        echo "*           For C99 ... "
        mkdir -p ${HDE_dir}/include/dcps/C
        mkdir -p ${HDE_dir}/include/dcps/C/C99
        mkdir -p ${HDE_dir}/include/dcps/C/C99/dds
        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/c99/include/*.h" \
            "${HDE_dir}/include/dcps/C/C99"
        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/c99/include/dds/*.h" \
            "${HDE_dir}/include/dcps/C/C99/dds"
        install_ascii_fileset "${OSPL_HOME}/src/api/dcps/c99/bld/${SPLICE_TARGET}/*.h" \
            "${HDE_dir}/include/dcps/C/C99"
        echo "*           C99 Ready"
        echo "*         C Ready"
    fi

    #
    # DCPS PYTHON
    #
    echo "*         Copying Python API source assembly"
    mkdir -p ${HDE_dir}/tools/python/
    install_dir "${OSPL_HOME}/src/api/dcps/python/bld/${SPLICE_TARGET}/src" "${HDE_dir}" "tools/python/src"
    echo "*         Copying Python API docs"
    install_git_files_dir_recursive "${OSPL_HOME}/src/api/dcps/python/docs" "${HDE_dir}/tools/python/docs"
    echo "*         Copying Python API examples"
    install_git_files_dir_recursive "${OSPL_HOME}/src/api/dcps/python/examples" "${HDE_dir}/tools/python/examples"
    if [ "${INCLUDE_API_DCPS_PYTHON}" = "yes" ]
    then
        echo "*         Copying Python API binary package"
        install_dir "${OSPL_HOME}/src/api/dcps/python/bld/${SPLICE_TARGET}/dist" "${HDE_dir}" "tools/python"
    fi

	#
	# DCPS NODEJS
	#
	if [ "${INCLUDE_API_DCPS_NODEJS}" = "yes" ]
    then
		echo "*     Copying Node.js API package"
		mkdir -p ${HDE_dir}/tools/nodejs
		vortexdds_file_path=`find ${OSPL_HOME}/src/api/dcps/nodejs/bld/${SPLICE_TARGET} -name "vortexdds-*.tgz"`
		vortexdds_file=`basename $vortexdds_file_path`
		install_bin_file "${OSPL_HOME}/src/api/dcps/nodejs/bld/${SPLICE_TARGET}" "${HDE_dir}" "tools/nodejs" "${vortexdds_file}"
		echo "*         Copying Node.js API docs"
		mkdir -p ${HDE_dir}/docs/nodejs
		cp -r "${OSPL_HOME}/src/api/dcps/nodejs/out" "${HDE_dir}/docs/nodejs/html"
		echo "*		Copying Node.js API examples"
		install_git_files_dir_recursive "${OSPL_HOME}/src/api/dcps/nodejs/examples" "${HDE_dir}/tools/nodejs/examples"
		echo "*     Node.js ready"
    fi

    if [[ "${INCLUDE_API_DCPS_C99}" = "yes"  || "${OSPL_DOCS}" = "update" ]]
    then
        generate_doxygen c99 ${OSPL_HOME}/etc/doxygen_c99_api.cfg
        if [ $? -ne 0 ]
        then
            return 1
        fi
        echo "*           C99 doxygen documentation  Ready"
    fi

    if [[ "${INCLUDE_API_DCPS_SAJ5}" = "yes"  || "${OSPL_DOCS}" = "update" ]]
    then
        generate_doxygen java5 ${OSPL_HOME}/etc/doxygen_java5_api.cfg
        if [ $? -ne 0 ]
        then
            return 1
        fi
        echo "*           Java 5 doxygen documentation  Ready"
    fi

    #
    # DCPS JAVA 5
    #
    if [ "${INCLUDE_JAVA}" = "yes" -a "${INCLUDE_API_DCPS_SAJ5}" = "yes" ]
    then
        echo "*         For Java5 stand-alone"
        generate_javadoc_saj5
        if [[ "${INCLUDE_API_FACE}" = "yes"  || "${OSPL_DOCS}" = "update" ]]
        then
            generate_doxygen face ${OSPL_HOME}/etc/doxygen_java_face_api.cfg
            if [ $? -ne 0 ]
            then
                return 1
            fi
            echo "*           Java Face doxygen documentation  Ready"
        fi

    fi
    #
    # Copy custom CJ
    #
    if [ "${INCLUDE_JAVA}" = "yes" -a "${INCLUDE_API_DCPS_CJ}" = "yes" ]
    then
        if [ "${SOURCE_TARGET_SHORT}" != "win" ]
        then
            echo "*     Copy custom CJ support ..."

            mkdir -p ${HDE_dir}/custom_lib/cj/java
            release=`ls -d ${OSPL_HOME}/src/api/dcps/java 2>/dev/null`
            cp -r ${release}/common/java/code ${HDE_dir}/custom_lib/cj/java
            cp -r ${release}/saj/code ${HDE_dir}/custom_lib/cj/java

            echo "*       Copying script files for custom library generation ..."
            install_ascii_file "${release}/cj/custom/README"   "${HDE_dir}/custom_lib/cj"
            install_ascii_file "${release}/cj/custom/BUILD"    "${HDE_dir}/custom_lib/cj/java"
            install_ascii_file "${release}/cj/custom/orbdeps"  "${HDE_dir}/custom_lib/cj/java"
        fi
        echo "*     custom CJ support Ready"
    fi
    #
    # Copy custom CCPP
    #
    if [ "${INCLUDE_API_DCPS_CCPP}" = "yes" ]
    then
        echo "*     Copy custom CCPP support ... "
        mkdir -p ${HDE_dir}/custom_lib
        mkdir -p ${HDE_dir}/custom_lib/ccpp

        # Code that can be re-used from common.
        release=${OSPL_HOME}/src/api/dcps/c++/common
        install_ascii_fileset "${release}/code/*.cpp" "${HDE_dir}/custom_lib/ccpp"

        # CCPP specific makefile stuff.
        release=${OSPL_HOME}/src/api/dcps/c++/ccpp
        install_ascii_fileset "${release}/DCPS_CORBA_Cohab_Cpp.mpc" "${HDE_dir}/custom_lib"

        if [ -f ${release}/custom/makefile_$PLATFORM_EXT ]
        then
            install_ascii_file "${release}/custom/makefile_$PLATFORM_EXT" \
                "${HDE_dir}/custom_lib/ccpp" "makefile"
        fi

        install_ascii_file "${release}/custom/README" "${HDE_dir}/custom_lib/ccpp"
        install_ascii_file "${release}/custom/setup" "${HDE_dir}/custom_lib/ccpp"
        install_ascii_file "${OSPL_HOME}/setup/makefiles/orbdeps.mak" "${HDE_dir}/custom_lib/ccpp"

        echo "*     custom CCPP support Ready"
    fi

    #
    # Copy custom SACPP
    #
    if [ "${INCLUDE_API_DCPS_SACPP}" = "yes" ]
    then
        echo "*     Copy custom SACPP support ... "
        mkdir -p ${HDE_dir}/custom_lib/sacpp

        # Code that can be re-used from common.
        release=${OSPL_HOME}/src/api/dcps/c++/common
        install_ascii_fileset "${release}/code/*.cpp" "${HDE_dir}/custom_lib/sacpp"

        # SACPP specific makefile stuff.
        release=${OSPL_HOME}/src/api/dcps/c++/sacpp
        install_ascii_fileset "${release}/code/*.cpp" "${HDE_dir}/custom_lib/sacpp"

        if [ -f ${release}/custom/makefile_$PLATFORM_EXT ]
        then
             install_ascii_file "${release}/custom/makefile_${PLATFORM_EXT}" \
                "${HDE_dir}/custom_lib/sacpp" "makefile"
        fi

        release=${OSPL_HOME}/src/api/dcps/c++/sacpp
        install_ascii_file "${release}/custom/README" "${HDE_dir}/custom_lib/sacpp"
        if [ "${INCLUDE_API_DCPS_SACPP_PROJECT}" ]
        then
           install_ascii_file "${release}/DCPS_Stand_Alone_Cpp.mpc" "${HDE_dir}/custom_lib"
        fi
        echo "*     custom SACPP support Ready"
    fi

    #
    # Examples
    #
    echo "*     Copy examples"
    mkdir -p ${HDE_dir}/examples

    install_ascii_fileset "${OSPL_HOME}/examples/*.mwc" \
            ${HDE_dir}/examples
    if [ "${INCLUDE_JAVA}" = "yes" -a "${INCLUDE_API_DCPS_SAJ5}" = "yes" ]
    then
        install_ascii_file "${OSPL_HOME}/examples/pom.xml" "${HDE_dir}/examples/"
    fi

    if [ "${SOURCE_TARGET_SHORT}" = "win" -o "${SOURCE_TARGET_SHORT}" = "wince" ]
    then
        echo "*       Copying new API examples"
        install_example "DDSAPIHelper"
    fi

    # Integrity Specific SP example
    if [ "${SOURCE_TARGET_SHORT}" = "int" ]
    then
        echo "* Creating Integrity single process example"
        mkdir -p ${HDE_dir}/examples/integrity
        if [ "${SOURCE_HOST_SHORT}" = "win" ]
        then
            install_git_files_dir_recursive "${OSPL_OUTER_HOME}/examples/integrity/sacpppingpong/win/" "${HDE_dir}/examples/integrity/"
        else
            install_git_files_dir_recursive "${OSPL_OUTER_HOME}/examples/integrity/sacpppingpong/linux/" "${HDE_dir}/examples/integrity/"
        fi
    fi

    echo "*       For DCPS"

    mkdir -p ${HDE_dir}/examples/dcps

    install_git_files_dir_recursive "${OSPL_HOME}/examples/common" "${HDE_dir}/examples/common"
    # New examples not supported on vxworks or integrity yet so do not include
    if [ "${SOURCE_TARGET_SHORT}" != "vxworks" -a "${SOURCE_TARGET_SHORT}" != "int" \
        -a "${SOURCE_TARGET_SHORT}" != "denx" -a "${SOURCE_TARGET_SHORT}" != "WRlinux" ]
    then
        # oall the new examples for all Languages (including corba options);
        # each Language/corba option is installed only if the target platform is compatible.

        install_example "ContentFilteredTopic"
        install_example "Durability"
        install_example "HelloWorld"
        install_example "Lifecycle"
        install_example "Listener"
        install_example "Ownership"
        install_example "QueryCondition"
        install_example "WaitSet"
        install_example "BuiltInTopics"
        if [ "${INCLUDE_SERVICES_NETWORKING}" = "yes" ]
        then
            install_example "NetworkPartitions"
        fi
        # oall end new examples

        install_ascii_file "${OSPL_HOME}/examples/dcps/README.html" \
                   ${HDE_dir}/examples/dcps
        if [ "${INCLUDE_JAVA}" = "yes" -a "${INCLUDE_API_DCPS_SAJ5}" = "yes" ]
        then
            install_ascii_file "${OSPL_HOME}/examples/dcps/pom.xml" "${HDE_dir}/examples/dcps"
        fi

        install_git_files_dir_recursive "${OSPL_HOME}/examples/utilities" "${HDE_dir}/examples/utilities"
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/RoundTrip" \
            "${HDE_dir}/examples/dcps/RoundTrip"
        install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/Throughput" \
            "${HDE_dir}/examples/dcps/Throughput"

        if [ "${INCLUDE_API_STREAMS}" = "yes" ]
        then
            echo "*       For Streams API"

            echo "*         Copying Streams examples"
            install_git_files_dir_recursive "${OSPL_HOME}/examples/streams/" ${HDE_dir}/examples/streams/
            if [ "${INCLUDE_API_STREAMS_SACPP}" = "no" ]
            then
                echo "*         Removing Standalone C++ Streams Throughput example"
                rm -r ${HDE_dir}/examples/streams/Throughput/cpp
            fi
            echo "*         Ready"
        fi
    fi

    # These directories are 'exported' directly into place instead of being copied manually
    # one file at a time from a list @todo this for all examples ??
    install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/Tutorial" "${HDE_dir}/examples/dcps/Tutorial"
    install_git_files_dir_recursive "${OSPL_HOME}/examples/dcps/PingPong" "${HDE_dir}/examples/dcps/PingPong"
    install_git_files_dir_recursive "${OSPL_HOME}/examples/include" "${HDE_dir}/examples/include"

    if [ "${SOURCE_TARGET_SHORT}" != "win" ]
    then
        find ${HDE_dir}/examples/dcps/ -name "*.bat" | xargs rm -rf 2>/dev/null
    fi

    #
    # Copy python stand alone execuitables for Roundtrip and Throughput examples to HDE
    #
    if [ "${OSPL_PYINSTALL_IS_ON}" = "yes" ]
    then
        printf "*     Copy Performance scripts"
        mkdir -p ${HDE_dir}/examples/dcps/PerformanceScripts
        cp ${OSPL_HOME}/examples/dcps/PerformanceScripts/dist/* ${HDE_dir}/examples/dcps/PerformanceScripts/
    fi

    if [ "${SOURCE_TARGET_SHORT}" = "win" -o "${SOURCE_TARGET_SHORT}" = "wince" ]
    then
       find ${HDE_dir}/examples/ -name "RUN" -type f | xargs rm 2>/dev/null
    else
       find ${HDE_dir}/examples/ -name "RUN.bat" -type f | xargs rm 2>/dev/null
    fi

    if [ "${SOURCE_TARGET_SHORT}" = "int" -o "${SOURCE_TARGET_SHORT}" = "vxworks" ]
    then
            # log4c doesn't compile on VxWorks
            rm -rf ${HDE_dir}/examples/utilities
    fi

    # Roundtrip and Throughput examples removed on WinCE, see OSPL-4476.
    if [ "${SOURCE_TARGET_SHORT}" = "wince" ]
    then
        rm -rf ${HDE_dir}/examples/dcps/RoundTrip
        rm -rf ${HDE_dir}/examples/dcps/Throughput
        rm -rf ${HDE_dir}/examples/streams/Throughput
    fi

    if [ "${SOURCE_TARGET_SHORT}" = "int" -o "${SOURCE_TARGET_SHORT}" = "vxworks" -o "$INCLUDE_API_DCPS_CCPP" != "yes" ]
    then
            rm -rf ${HDE_dir}/examples/dcps/Tutorial/cpp/corba
            rm -rf ${HDE_dir}/examples/dcps/PingPong/cpp/corba
    fi

    if [ "${INCLUDE_CXX}" != "yes" -o "${INCLUDE_API_DCPS_ISOCPP2}" != "yes" ]
    then
        rm -rf ${HDE_dir}/examples/dcps/RoundTrip/isocpp2
        rm -rf ${HDE_dir}/examples/dcps/Tutorial/isocpp2
        rm -rf ${HDE_dir}/examples/dcps/Throughput/isocpp2
        rm -rf ${HDE_dir}/examples/streams/Throughput/isocpp2
    fi

    if [ "${INCLUDE_CXX}" != "yes" ]
    then
        rm -rf ${HDE_dir}/examples/dcps/Tutorial/cpp
        rm -rf ${HDE_dir}/examples/dcps/PingPong/cpp
        rm -rf ${HDE_dir}/examples/dcps/RoundTrip/cpp
        rm -rf ${HDE_dir}/examples/dcps/Throughput/cpp
        rm -rf ${HDE_dir}/examples/streams/Throughput/cpp
    fi

    if [ "${INCLUDE_C}" != "yes" ]
    then
        rm -rf ${HDE_dir}/examples/dcps/Tutorial/c
        rm -rf ${HDE_dir}/examples/dcps/PingPong/c
        rm -rf ${HDE_dir}/examples/dcps/RoundTrip/c
        rm -rf ${HDE_dir}/examples/dcps/Throughput/c
    fi
    if [ "${INCLUDE_JAVA}" != "yes" -o "${INCLUDE_API_DCPS_SAJ5}" != "yes" ]
    then
        rm -rf ${HDE_dir}/examples/dcps/RoundTrip/java5
        rm -rf ${HDE_dir}/examples/dcps/Throughput/java5
        rm -rf ${HDE_dir}/examples/protobuf/java5
        rm -rf ${HDE_dir}/examples/dcps/Tutorial/java5
        rm -rf ${HDE_dir}/examples/dcps/HelloWorld/java5
        rm -rf ${HDE_dir}/examples/dcps/BuiltInTopics/java5
        rm -rf ${HDE_dir}/examples/dcps/ContentFilteredTopic/java5
        rm -rf ${HDE_dir}/examples/dcps/Lifecycle/java5
        rm -rf ${HDE_dir}/examples/dcps/Listener/java5
        rm -rf ${HDE_dir}/examples/dcps/Ownership/java5
        rm -rf ${HDE_dir}/examples/dcps/QueryCondition/java5
        rm -rf ${HDE_dir}/examples/dcps/WaitSet/java5
        rm -rf ${HDE_dir}/examples/dcps/PingPong/java5
    fi

    # RoundTrip example doesn't seem to work on Kernel Mode VxWorks at the moment.
    if [ "${VXWORKS_KERNEL_MODE}" = "yes" ]
    then
        rm -rf ${HDE_dir}/examples/dcps/RoundTrip
    fi

    if [ "${PROTOBUF_HOME}" = "" ]
    then
        rm -rf ${HDE_dir}/examples/protobuf
    fi

    if [ "${INCLUDE_CS}" != "yes" ] || [ "${SOURCE_TARGET_SHORT}" != "win" -a "${SOURCE_TARGET_SHORT}" != "wince" ]
    then
        rm -rf ${HDE_dir}/examples/dcps/Tutorial/cs
        rm -rf ${HDE_dir}/examples/dcps/PingPong/cs
    fi

    if [ "${INCLUDE_JAVA}" != "yes" -o "${INCLUDE_API_DCPS_SAJ}" != "yes" ]
    then
        rm -rf ${HDE_dir}/examples/dcps/Tutorial/java/standalone
        rm -rf ${HDE_dir}/examples/dcps/PingPong/java/standalone
        rm -rf ${HDE_dir}/examples/dcps/Throughput/java
        rm -rf ${HDE_dir}/examples/dcps/RoundTrip/java
    fi
    if [ "${INCLUDE_JAVA}" != "yes" -o "${INCLUDE_API_DCPS_CJ}" != "yes" ]
    then
        rm -rf ${HDE_dir}/examples/dcps/Tutorial/java/corba
        rm -rf ${HDE_dir}/examples/dcps/PingPong/java/corba
    fi

    if [ "${INCLUDE_JAVA}" != "yes" ] || [ "${SOURCE_TARGET_SHORT}" = "int" \
        -o "${SOURCE_TARGET_SHORT}" = "vxworks" -o "${SOURCE_TARGET_SHORT}" = "wince" \
        -o "${SOURCE_TARGET_SHORT}" = "WRlinux" -o "${SOURCE_TARGET_SHORT}" = "pikeos" ]
    then
        rm -rf ${HDE_dir}/examples/dcps/Tutorial/java
        rm -rf ${HDE_dir}/examples/dcps/PingPong/java
    fi

    echo "*       For Protobuf"

    if [ "${PROTOBUF_HOME}" = "" ]
    then
        rm -rf ${HDE_dir}/examples/protobuf
    else

      if [ "${INCLUDE_TOOLS_PROTOBUF}" = "yes" ]
      then
        mkdir -p ${HDE_dir}/examples/protobuf
        mkdir -p ${HDE_dir}/examples/protobuf/proto

        install_ascii_fileset "${OSPL_HOME}/examples/protobuf/proto/*.proto" \
                "${HDE_dir}/examples/protobuf/proto"

        if [ "${INCLUDE_JAVA}" = "yes" -a "${INCLUDE_API_DCPS_SAJ5}" = "yes" ]
        then
            echo "*               Java5"
            install_ascii_fileset "${OSPL_HOME}/examples/protobuf/pom.xml" \
                "${HDE_dir}/examples/protobuf/"
            install_git_files_dir_recursive "${OSPL_HOME}/examples/protobuf/java5" "${HDE_dir}/examples/protobuf/java5"

            if [ "${SOURCE_TARGET_SHORT}" = "win" ]
            then
               install_ascii_file ${OSPL_HOME}/examples/protobuf/java5/RUN.bat \
                      ${HDE_dir}/examples/protobuf/java5/
            else
               install_ascii_file ${OSPL_HOME}/examples/protobuf/java5/RUN \
                      ${HDE_dir}/examples/protobuf/java5/
            fi
            echo "*               ready"
        fi

        if [ "${INCLUDE_CXX}" = "yes" -a "${INCLUDE_API_DCPS_ISOCPP2}" = "yes" ]
        then
            echo "*               ISOCPP2"
            mkdir -p ${HDE_dir}/examples/protobuf/isocpp2
            mkdir -p ${HDE_dir}/examples/protobuf/isocpp2/src
            mkdir -p ${HDE_dir}/examples/protobuf/isocpp2/standalone

            install_ascii_fileset "${OSPL_HOME}/examples/protobuf/isocpp2/src/*.cpp" \
               " ${HDE_dir}/examples/protobuf/isocpp2/src"
            install_ascii_fileset "${OSPL_HOME}/examples/protobuf/isocpp2/src/*.hpp" \
               " ${HDE_dir}/examples/protobuf/isocpp2/src"

            if [ "${SOURCE_TARGET_SHORT}" = "win" ]
            then
               install_ascii_file ${OSPL_HOME}/examples/protobuf/isocpp2/standalone/RUN.bat \
                      ${HDE_dir}/examples/protobuf/isocpp2/standalone
               install_ascii_file ${OSPL_HOME}/examples/protobuf/isocpp2/standalone/BUILD.bat \
                      ${HDE_dir}/examples/protobuf/isocpp2/standalone
            else
               install_ascii_file ${OSPL_HOME}/examples/protobuf/isocpp2/standalone/RUN \
                      ${HDE_dir}/examples/protobuf/isocpp2/standalone
               if [ -f ${OSPL_HOME}/examples/protobuf/isocpp2/standalone/BUILD.${SPLICE_TARGET_FULL} ]
               then
                  install_ascii_file ${OSPL_HOME}/examples/protobuf/isocpp2/standalone/BUILD.${SPLICE_TARGET_FULL} \
                         ${HDE_dir}/examples/protobuf/isocpp2/standalone BUILD
               else
                  install_ascii_file ${OSPL_HOME}/examples/protobuf/isocpp2/standalone/BUILD \
                         ${HDE_dir}/examples/protobuf/isocpp2/standalone
               fi
            fi
            echo "*               ready"
        fi
      fi
    fi

    update_copyright ${HDE_dir}/examples

    echo "*       ready"
    echo "*     Copy examples Ready"

    #
    # Copy in ospli src for distro
    #
    printf "*     Creating source release ... "
    mkdir -p ${HDE_dir}/src
    if [ $? != 0 ]
    then
        echo "ERROR - couldn't make ${HDE_dir}/src "
    fi
    OSPL_SRC=${HDE_dir}/tmpsrc/VortexOpenSplice
    mkdir -p ${OSPL_SRC}
    if [ $? != 0 ]
    then
        echo "ERROR - couldn't make ${OSPL_SRC} "
    fi
    CURRENT_WD="`pwd`"
    cd $OSPL_HOME
    if [ ! -d "$OSPL_HOME/.git" ]
    then
        echo "WARNING - Not in a repository. Will not include a source package into the distribution - presumably you are building this distribution from a source package already?"
    else
        # Get branch revision, if not found then use head
        if [ -f "${OSPL_HOME}/etc/BUILDINFO" ]
        then
            BREV=`grep -n REV $OSPL_HOME/etc/BUILDINFO`
            BREV_SHA=${BREV#*=}
        else
            BREV_SHA=HEAD
        fi

        git archive --prefix=${OSPL_SRC}/ --format=tar ${BREV_SHA} | $TAR -P -xf -
        if [ $? != 0 ]
        then
            echo "ERROR - archiving $OSPL_HOME failed "
        fi
        MPC_PATH=submods/MPC_ROOT
        cd $MPC_PATH
        git archive --prefix=${OSPL_SRC}/$MPC_PATH/ --format=tar HEAD | $TAR -P -xf -
        if [ $? != 0 ]
        then
            echo "ERROR - archiving $OSPL_HOME/$MPC_PATH failed "
        fi

        BUILD=buildTarGZ
        if [ "${SOURCE_HOST_SHORT}" = "win" ]
        then
            BUILD=buildZip
        fi

        update_copyright ${OSPL_SRC}/examples
        update_copyright ${OSPL_SRC}/external
        update_copyright ${OSPL_SRC}/setup
        update_copyright ${OSPL_SRC}/src
        update_copyright ${OSPL_SRC}/testsuite

        if [ "${SOURCE_HOST_SHORT}" == "darwin" ]
        then
            sed -i '' "s/TO_YEAR/${THIS_YEAR}/g" ${OSPL_SRC}/index.html
            sed -i '' "s/TO_YEAR/${THIS_YEAR}/g" ${OSPL_SRC}/docs/html/GPBTutorial/using-generated-api.html
        else
            sed -i "s/TO_YEAR/${THIS_YEAR}/g" ${OSPL_SRC}/index.html
            sed -i "s/TO_YEAR/${THIS_YEAR}/g" ${OSPL_SRC}/docs/html/GPBTutorial/using-generated-api.html
        fi
        (
            cd $OSPL_SRC/..
            $BUILD ${HDE_dir}/src/VortexOpenSplice-src VortexOpenSplice > /dev/null 2>&1
        )
    fi
    rm -rf ${HDE_dir}/tmpsrc
    cd $CURRENT_WD
    echo "Ready"

    #
    # Platform specific redistributables
    #
    if [ "${SOURCE_HOST_SHORT}" = "win" ]
    then
        printf "*     Copy redistributable system packages ... "
        copy_windows_redist "${HDE_dir}/redist"
        echo "Ready"
    fi

    if [ "${SOURCE_HOST_SHORT}" = "win" ]
    then
        printf "*     Prepare default release.bat ... "
        RELF=${HDE_dir}/release.bat
        echo "@echo off" >> $RELF
        echo "echo \"<<< Vortex OpenSplice HDE Release ${target_version} For ${target}${target_env}, Date ${target_date} >>>\"" >> ${RELF}
        # If SPLICE_ORB is defined during the ospl build make that the default
        # value for the 'runtime' environment but permit overriding
        if [ "${SPLICE_ORB}" = "" ]
        then
            echo "if \"%SPLICE_ORB%\"==\"\" set SPLICE_ORB=DDS_OpenFusion_1_6_1" >> $RELF
        else
            echo "if \"%SPLICE_ORB%\"==\"\" set SPLICE_ORB=${SPLICE_ORB}" >> $RELF
        fi
        echo "set OSPL_HOME=%~dp0" >> $RELF
        if [ "${SPLICE_TARGET}" != "${SPLICE_HOST}" ]
        then
            echo "set PATH=%OSPL_HOME%\bin;%OSPL_HOME%\host\lib;%PATH%" >> $RELF
        else
            echo "set PATH=%OSPL_HOME%\bin;%OSPL_HOME%\lib;%OSPL_HOME%\examples\lib;%PATH%" >> $RELF
        fi
        echo "set OSPL_TMPL_PATH=%OSPL_HOME%\etc\idlpp" >> $RELF

        echo  "if \"%OSPL_URI%\"==\"\" set OSPL_URI=file://%OSPL_HOME%\etc\config\ospl.xml" >> $RELF

        echo "Ready"
    fi
    if [ "${SOURCE_HOST_SHORT}" != "win" -o "${SOURCE_TARGET_SHORT}" = "pikeos" ]
    then
        case "${target}" in
            x86.darwin*|x86_64.darwin*)
                ld_lib_path_var=DYLD_LIBRARY_PATH
                ;;
            *)
                ld_lib_path_var=LD_LIBRARY_PATH
                ;;
        esac
        printf "*     Prepare default release.com ... "
        RELF=${HDE_dir}/release.com
        echo "echo \"<<< Vortex OpenSplice HDE Release ${target_version} For ${target}${target_env}, Date ${target_date} >>>\"" >> ${RELF}
        # If SPLICE_ORB is defined during the ospl build make that the default
        # value for the 'runtime' environment but permit overriding
        if [ "${SPLICE_ORB}" = "" ]
        then
            echo 'if [ "${SPLICE_ORB:=}" = "" ]' >> ${RELF}
            echo "then" >> ${RELF}
            echo "    SPLICE_ORB=DDS_OpenFusion_1_6_1" >> ${RELF}
            echo "    export SPLICE_ORB" >> ${RELF}
            echo "fi"  >> ${RELF}
        else
            echo 'if [ "${SPLICE_ORB:=}" = "" ]' >> ${RELF}
            echo "then" >> ${RELF}
            echo "    SPLICE_ORB=${SPLICE_ORB}" >> ${RELF}
            echo "    export SPLICE_ORB" >> ${RELF}
            echo "fi"  >> ${RELF}
        fi
        echo 'if [ "${SPLICE_JDK:=}" = "" ]' >> ${RELF}
        echo "then" >> ${RELF}
        if [ "${JAVA_IS_PERC}" = "yes" ]
        then
            echo "    SPLICE_JDK=perc" >> ${RELF}
        else
            echo "    SPLICE_JDK=jdk" >> ${RELF}
        fi
        echo "    export SPLICE_JDK" >> ${RELF}
        echo "fi"  >> ${RELF}
        if [ "${SOURCE_HOST_SHORT}" = "win" -a "${SOURCE_TARGET_SHORT}" = "pikeos" ]
        then
            echo 'RELDIR=`dirname "${BASH_SOURCE[0]}"`' >> ${RELF}
            echo 'pushd $RELDIR > /dev/null' >> ${RELF}
            echo "OSPL_HOME=\`cygpath -u \"\$(pwd)\"\`" >> ${RELF}
            echo 'popd > /dev/null' >> ${RELF}
        else
            if [ -z "${OSPL_BUILDER}" ]
            then
                echo "if [ -n \"\${BASH_VERSION}\" ]" >> ${RELF}
                echo "then" >> ${RELF}
                echo "    OSPL_HOME=\"\$(cd \"\$(dirname \"\${BASH_SOURCE[0]}\")\" && pwd)\"" >> ${RELF}
                echo "else" >> ${RELF}
                echo "    echo \"Please manually set OSPL_HOME to the install directory.\"" >> ${RELF}
                echo "fi" >> ${RELF}
            else
                echo "OSPL_HOME=\"@@INSTALLDIR@@/HDE/${target}${target_env}\"" >> ${RELF}
                echo "VORTEX_DIR=\"@@VORTEXDIR@@\"" >> ${RELF}
            fi
        fi
        echo "PATH=\$OSPL_HOME/bin:\$PATH" >> ${RELF}
        if [ "${SPLICE_TARGET}" != "${SPLICE_HOST}" ]
        then
            echo "$ld_lib_path_var=\$OSPL_HOME/host/lib\${$ld_lib_path_var:+:}\$$ld_lib_path_var" >> ${RELF}
        else
            echo "$ld_lib_path_var=\$OSPL_HOME/lib\${$ld_lib_path_var:+:}\$$ld_lib_path_var" >> ${RELF}
        fi
        echo "CPATH=\$OSPL_HOME/include:\$OSPL_HOME/include/sys:\${CPATH:=}" >> ${RELF}

        echo 'if [ "${OSPL_URI:=}" = "" ]' >> $RELF
        echo "then" >> $RELF
        echo "    OSPL_URI=file://\$OSPL_HOME/etc/config/ospl.xml" >> $RELF
        echo "    export OSPL_URI" >> $RELF
        echo "fi" >> $RELF

        if [ "${SOURCE_HOST_SHORT}" = "win" -a "${SOURCE_TARGET_SHORT}" = "pikeos" ]
        then
            echo "PATH=\$OSPL_HOME/host/lib:\$PATH" >> ${RELF}
            echo "OSPL_TMPL_PATH=\`cygpath -w \"\$OSPL_HOME/etc/idlpp\"\`" >> ${RELF}
        else
            echo "OSPL_TMPL_PATH=\$OSPL_HOME/etc/idlpp" >> ${RELF}
            echo ". \$OSPL_HOME/etc/java/defs.\$SPLICE_JDK" >> ${RELF}
        fi

        echo "export OSPL_HOME PATH $ld_lib_path_var CPATH OSPL_TMPL_PATH VORTEX_DIR" >> $RELF

        if [ "$VALGRIND" = "yes" ]
        then
            cat $OSPL_HOME/bin/valgrind_cmds >> $RELF
        fi
        echo "Ready"
    fi

    #
    # Copy documentation
    #
    printf "*     Copy documentation... "
    if [ $? -ne 0 ]
    then
        return 1
    fi

    cp -rp ${OSPL_HOME}/docs ${HDE_dir}

    # Remove the qosprovider source code that exists purely to ensure that the code examples
    # used in the docs actually compiles.  It does not need to be in the installer
    rm -rf ${HDE_dir}/docs/qosprovider
    rm -rf ${HDE_dir}/docs/makefile

    install_ascii_file "${OSPL_HOME}/index.html" "${HDE_dir}"

    echo "Ready"

    #
    # Delete Generic DCPS Docs (Generation run should be complete)
    #
    if [ -n "${OSPL_DOCS}" ] && [ "${INCLUDE_API_DCPS_DOCS}" = "yes" -a "${OSPL_DOCS}" != "none" -a "${OSPL_DOCS}" != "ship" ]
    then
            rm -rf ${HDE_dir}/include/dcps/docs
    fi

    if [ "${SOURCE_HOST_SHORT}" == "darwin" ]
    then
        sed -i '' "s/TO_YEAR/$THIS_YEAR/g" ${HDE_dir}/index.html
    else
        sed -i "s/TO_YEAR/$THIS_YEAR/g" ${HDE_dir}/index.html
    fi

    if [ -d  ${HDE_dir}/custom_lib ]
    then
       update_copyright ${HDE_dir}/custom_lib
    fi

    update_copyright ${HDE_dir}/docs
    update_copyright ${HDE_dir}/include

    if [ -d  ${HDE_dir}/tools ]
    then
        update_copyright ${HDE_dir}/tools
    fi

    return 0
}

install_rts_target ()
{
    target_os=`expr "${target}" : '[a-zA-Z0-9]*\.\([a-zA-Z]*\)'`

    mkdir -p ${RTS_dir}

    #
    # Copy default configuration file for OpenSplice
    #
    echo "*     Copy OpenSplice default configuration file "
    mkdir -p ${RTS_dir}/etc
    mkdir -p ${RTS_dir}/etc/config

    if [ "${INCLUDE_SINGLE_PROCESS}" = "yes" ]
    then
        install_configuration_file "${OSPL_HOME}/etc/ospl_sp_no_network.xml" "${RTS_dir}/etc/config"

        if [ "${INCLUDE_SERVICES_DDSI}" = "yes" -o "${INCLUDE_SERVICES_DDSI2E}" = "yes" ]
        then
            install_configuration_file "${OSPL_HOME}/etc/ospl_sp_ddsi.xml" "${RTS_dir}/etc/config"
            install_configuration_file "${OSPL_HOME}/etc/ospl_sp_ddsi_statistics.xml" "${RTS_dir}/etc/config"
            install_configuration_file "${OSPL_HOME}/etc/ospl_sp_ddsi_1gbps.xml" "${RTS_dir}/etc/config"
            install_configuration_file "${OSPL_HOME}/etc/ospl_sp_ddsi_10gbps.xml" "${RTS_dir}/etc/config"
            # current requirement is the single process configuration with ddsi2 networking should be default:
            if [ "${target_os}" = "lynxos" ]
            then
                install_configuration_file "${OSPL_OUTER_HOME}/etc/ospl_shmem_ddsi.xml" "${RTS_dir}/etc/config" "ospl.xml"
            else
                install_configuration_file "${OSPL_HOME}/etc/ospl_sp_ddsi.xml" "${RTS_dir}/etc/config" "ospl.xml"
            fi
        else
            install_configuration_file "${OSPL_HOME}/etc/ospl_sp_no_network.xml" "${RTS_dir}/etc/config" "ospl.xml"
        fi
    fi

    # Copy meta-config file used for validating configuration files
    install_ascii_file "${OSPL_HOME}/src/tools/cm/config/code/splice_metaconfig_6.1.xml" "${RTS_dir}/etc" "ospl_metaconfig.xml"

    #
    # Copy in the buildinfo if produced from the scoreboard
    #
    if [ -f "${OSPL_HOME}/etc/BUILDINFO" ]
    then
        cp ${OSPL_HOME}/etc/BUILDINFO ${RTS_dir}/etc/.
    fi

    # Copy in features file to the etc directory of the installer.
    if [ -f "${OSPL_HOME}/etc/features.txt" ]
    then
        cp ${OSPL_HOME}/etc/features.txt ${RTS_dir}/etc/.
    fi

    # java definitions

    mkdir -p ${RTS_dir}/etc/java
    cp ${OSPL_HOME}/etc/java/defs.jdk ${RTS_dir}/etc/java

    # done with etc dir

    #
    # Copy in the releaseinfo file
    #
    if [ -f "${OSPL_HOME}/release_info/RELEASE" ]
    then
        cp ${OSPL_HOME}/release_info/RELEASE ${RTS_dir}/etc/RELEASEINFO
    fi
    echo "*     Ready"

    #
    # Copy library files
    #
    printf "*     Copy library files ... "
    release=${OSPL_HOME}/lib/${target}${source_env}
    if [ -d "${release}" ]
    then
        mkdir -p ${RTS_dir}/lib
        install_dir ${release} ${RTS_dir} lib
        if [ "${VXWORKS_KERNEL_MODE}" == "yes" ]
        then
            cp ${RTS_dir}/lib/libddskernel${target_suffix_lib} ${RTS_dir}/lib/libddscore${target_suffix_lib}
        fi
        # remove cpp lib
        rm -f ${RTS_dir}/lib/*ddscpp*
        rm -f ${RTS_dir}/lib/*ddslic*
        rm -f ${RTS_dir}/lib/lib*.a
        rm -f ${RTS_dir}/lib/libthingsdk.so
        # remove all windows .lib files
        if [ "${SOURCE_TARGET_SHORT}" = "win" -o "${SOURCE_TARGET_SHORT}" = "wince" ]
        then
          rm -f ${RTS_dir}/lib/*.lib
        fi
    else
        echo "* ##    No library files detected"
    fi
    echo "Ready"

    #
    # Copy java archive files
    #
    if [ "${target_os}" != "vxworks" -a "${INCLUDE_JAVA}" = "yes" ]
    then
        echo "*     Copy JAVA archive files"
        release=${OSPL_HOME}/jar/${target}${source_env}
        if [ -d "${release}" ]
        then
            mkdir -p ${RTS_dir}/jar
            install_dir ${release} ${RTS_dir} jar
            rm -f ${RTS_dir}/jar/openorb*
            # OSPL-6341 Create dcpssaj-osgi-bundle.jar for backwards compatibility
            if  [ "${INCLUDE_API_DCPS_SAJ}" = "yes" ]
            then
                cp ${release}/dcpssaj.jar ${RTS_dir}/jar/dcpssaj-osgi-bundle.jar
            fi
        else
            echo "* ##    No JAVA archive files detected"
        fi
        echo "*     JAVA archive Ready"
    fi

    #
    # Copy script files
    #
    echo "*     Copy script files"
    release=${OSPL_HOME}/install/bin
    if [ -d "${release}" ]
    then
        mkdir -p ${RTS_dir}/bin
    if [ "${VXWORKS_KERNEL_MODE}" != "yes" -a "${SOURCE_TARGET_SHORT}" != "vxworks" ]
    then
           install_ascii_file "${release}/osplconf${suffix_script}" "${RTS_dir}/bin"
    fi
        if [ "${SOURCE_HOST_SHORT}" = "win" ]
        then
            if [ "${SOURCE_TARGET_SHORT}" = "win" ]
            then
                install_ascii_file "${release}/osplctrl${suffix_script}" "${RTS_dir}/bin"
                if [ "${INCLUDE_TOOLS_MMSTAT}" = "yes" ]
                then
                    install_ascii_file "${release}/osplmmstat${suffix_script}" "${RTS_dir}/bin"
                fi
            fi
            install_ascii_file "${release}/run.vbs" "${RTS_dir}/bin"
        fi
    else
        echo "* ##    No script files detected"
    fi
    echo "*     Script files Ready"

    #
    # Copy executable files
    #
    echo "*     Copy OpenSplice executables"
    release=${OSPL_HOME}/exec/${target}${source_env}
    if [ -d "${release}" ]
    then
        mkdir -p ${RTS_dir}/bin

        if [ "${SOURCE_TARGET_SHORT}" != "int" ]
        then
            if [ "${INCLUDE_TOOLS_SHMDUMP}" = "yes" ]
            then
                install_bin_file ${release} ${RTS_dir} bin shmdump${target_suffix_exe}
            fi
            if [ "$INCLUDE_TOOLS_MMSTAT" = "yes" ]
            then
                install_bin_file ${release} ${RTS_dir} bin mmstat${target_suffix_exe}
            fi

            if [ "${INCLUDE_TOOLS_DEBUG_DBD}" = "yes" ]
            then
                install_bin_file ${release} ${RTS_dir} bin dbd${target_suffix_exe}
            fi
        fi

        pdbfiles=`ls ${OSPL_HOME}/exec/${target}${source_env}/*.pdb 2>/dev/null`
        if [ "${SOURCE_TARGET_SHORT}" = "win" -o "${SOURCE_TARGET_SHORT}" = "wince" ] && [ -n "${pdbfiles}" ]
        then
            cp ${pdbfiles} ${RTS_dir}/bin
            rm -rf ${RTS_dir}/bin/corecount.pdb
        fi
    else
        echo "* ##    No executable files detected"
    fi

    if [ "${SOURCE_TARGET_SHORT}" = "win" ]
    then
        # Put all the *.pdb's into the bin directory if this is win platform.
        mv ${RTS_dir}/lib/*.dll ${RTS_dir}/bin/.  >& /dev/null
        mv ${RTS_dir}/lib/*.netmodule ${RTS_dir}/bin/.  >& /dev/null
        mv ${RTS_dir}/lib/*.pdb ${RTS_dir}/bin/.  >& /dev/null
        rm -rf ${RTS_dir}/bin/corecount.pdb
    fi

    #
    # Platform specific redistributables
    #

    if [ "${SOURCE_HOST_SHORT}" = "win" ]
    then
        printf "*     Copy redistributable system packages ... "
        copy_windows_redist "${RTS_dir}/redist"
        echo "Ready"
    fi

    #
    # Create and sign a Global Assembly for the SACS Dll
    #
    if [ "${INCLUDE_CS}" = "yes" -a "${INCLUDE_API_DCPS_SACS}" = "yes" ]
    then
        if [ "${SOURCE_TARGET_SHORT}" = "win" -o "${SOURCE_TARGET_SHORT}" = "wince" ]
        then
            printf "*     Create and sign a Global Assembly for the SACS DLL ..."
            cskeyfile=`cygpath -d "${OSPL_HOME}/src/api/dcps/sacs/dcpssacs.snk"`
            csoutdir=`cygpath -d "${RTS_dir}/bin/"`
            csmodfile=`cygpath -d "${OSPL_HOME}/lib/${target}${source_env}/dcpssacs.netmodule"`
            csoutfile="${csoutdir}${CS_ASSEMBLY_NAME}.dll"

            case "${target}" in
                x86.*)
                    CS_PLATFORM=x86
                    ;;
                x86_64.*)
                    CS_PLATFORM=x64
                    ;;
                *)
                    CS_PLATFORM=anycpu
                    ;;
            esac

            al /t:library /keyfile:"${cskeyfile}" /platform:${CS_PLATFORM} /v:${CS_DLL_VERSION} /out:"${csoutfile}" "${csmodfile}"
        fi
    fi
    # This needs to be changed when we support C# for linux and add an else part
    # that will set all these variables correctly and call the appropriate mono
    # executable for the assembly linker.
    echo "*     Ready"

    if [ "${SOURCE_TARGET_SHORT}" != "win" -a "${SOURCE_TARGET_SHORT}" != "wince" ]
    then
        # release.com on VxWorks isn't needed in the RTS installer.
        if [ "${SOURCE_TARGET_SHORT}" != "vxworks" ]
        then
            printf "*     Prepare default release.com ... "
            RELF=${RTS_dir}/release.com
            echo "echo \"<<< Vortex OpenSplice RTS Release ${target_version} For ${target}${target_env} Date ${target_date} >>>\"" >> $RELF
            if [ "${SPLICE_ORB}" = "" ]
            then
                echo 'if [ "${SPLICE_ORB:=}" = "" ]' >> $RELF
                echo "then" >> $RELF
                echo "    SPLICE_ORB=DDS_OpenFusion_1_6_1" >> $RELF
                echo "    export SPLICE_ORB" >> $RELF
                echo "fi"  >> $RELF
            else
                echo 'if [ "${SPLICE_ORB:=}" = "" ]' >> $RELF
                echo "then" >> $RELF
                echo "    SPLICE_ORB=${SPLICE_ORB}" >> $RELF
                echo "    export SPLICE_ORB" >> $RELF
                echo "fi"  >> $RELF
            fi
            echo 'if [ "${SPLICE_JDK:=}" = "" ]' >> ${RELF}
            echo "then" >> ${RELF}
            if [ "${JAVA_IS_PERC}" = "yes" ]
            then
                echo "    SPLICE_JDK=perc" >> ${RELF}
            else
                echo "    SPLICE_JDK=jdk" >> ${RELF}
            fi
            echo "    export SPLICE_JDK" >> ${RELF}
            echo "fi"  >> ${RELF}
            if [ -z "${OSPL_BUILDER}" ]
            then
		echo "if test -n \"\$BASH_VERSION\"; then" >> ${RELF}
                echo "    OSPL_HOME=\"\$( cd \"\$( echo \"\${BASH_SOURCE[0]%/*}\")\" && pwd )\"" >> ${RELF}
		echo "else" >> ${RELF}
		echo "    echo \"Please manually set OSPL_HOME to the install directory.\"" >> ${RELF}
		echo "fi" >> ${RELF}
            else
                echo "OSPL_HOME=\"@@INSTALLDIR@@/RTS/${target}${target_env}\"" >> ${RELF}
                echo "VORTEX_DIR=\"@@VORTEXDIR@@\"" >> ${RELF}
            fi
            echo "PATH=\$OSPL_HOME/bin:\$PATH" >> $RELF
            echo "LD_LIBRARY_PATH=\$OSPL_HOME/lib:\${LD_LIBRARY_PATH:=}" >> $RELF

            echo 'if [ "${OSPL_URI:=}" = "" ]' >> $RELF
            echo "then" >> $RELF
            echo "    OSPL_URI=file://\$OSPL_HOME/etc/config/ospl.xml" >> $RELF
            echo "    export OSPL_URI" >> $RELF
            echo "fi" >> $RELF

            echo ". \$OSPL_HOME/etc/java/defs.\$SPLICE_JDK" >> ${RELF}
            echo "export OSPL_HOME PATH LD_LIBRARY_PATH" >> $RELF
        fi
        echo "Ready"
    else
        printf "*     Prepare default release.bat ... "
        RELF=${RTS_dir}/release.bat
        echo "@echo off" >> $RELF
        echo "if \"%SPLICE_ORB%\"==\"\" set SPLICE_ORB=DDS_OpenFusion_1_6_1" >> $RELF
        echo "set OSPL_HOME=%~dp0" >> $RELF
        echo "set PATH=%OSPL_HOME%\bin;%PATH%" >> $RELF
        echo "set OSPL_TMPL_PATH=%OSPL_HOME%\etc\idlpp" >> $RELF
        echo  "if \"%OSPL_URI%\"==\"\" set OSPL_URI=file://%OSPL_HOME%\etc\config\ospl.xml" >> $RELF
        echo "Ready"
    fi

    if [ -d  ${RTS_dir}/tools ]
    then
        update_copyright ${RTS_dir}/tools
    fi

    #
    # DCPS PYTHON
    #
    if [ "${INCLUDE_API_DCPS_PYTHON}" = "yes" ]
    then
        echo "*         Copying Python API binary package"
        install_dir "${OSPL_HOME}/src/api/dcps/python/bld/${SPLICE_TARGET}/dist" "${RTS_dir}" "tools/python"
    fi
}
