# sourced by the various icm_bootstrap shell scripts

try()
{
    echo "    $*"
    $* || exit 1
}

subdirs()
{
    [ "`find ./  -mindepth 1 -maxdepth 1 -type d -name ORG`" != "" ] && return

    for subdir in `find ./  -mindepth 1 -maxdepth 1 -type d` ; do
        try cd $subdir
        add=0
        srclist=`find -mindepth 1 -maxdepth 1 -type f -name '*.cc' \
                                  -exec basename '{}' ';'`
        if [ "$srclist" != "" ]
        then
            ih=${subdir}.ih

            if [ ! -e ${ih}.gch ] ; then
                try ${CXX} ${CXXFLAGS} -x c++-header $ih
            fi
            for src in `find -mindepth 1 -maxdepth 1 -type f -name '*.cc' \
                                    -exec basename '{}' ';'` ; do
                obj=../${dir}${src%%.*}.o
                if [ $src -nt ${obj} ] ; then 
                    try ${CXX}  ${CXXFLAGS} -o${obj} -c $src
                fi
                add=1
            done
        fi
        let dir=${dir}+${add}
        try cd ..
    done
}

maindir()   #         $1: destination program path, 
{           # unused: $2: optional -s, use LDFLAGS
    for src in `find -mindepth 1 -maxdepth 1 -type f -name '*.cc' \
                            -exec basename '{}' ';'` ; do
        if [ "$src" != "main.cc" ] ; then
            obj=${src%%.*}.o
            if [ $src -nt ${obj} ] ; then 
                try ${CXX}  ${CXXFLAGS} -o${obj} -c $src
            fi
        fi
    done

    ls *.o > /dev/null 2>&1
    if [ $? -ne 0 ] ; then
        try ${CXX}  ${CXXFLAGS} -o ../tmp${1} main.cc ${LDFLAGS}
    else
        try ${CXX}  ${CXXFLAGS} -o ../tmp${1} *.o main.cc \
                    -L../tmp -lsupport -lbobcat ${LDFLAGS}
    fi
}

build()
{
    program=$1
    shift

    rm -f *.o */*.o

    NR=1
    for x in $* ; do
        try cd $x

        echo -n .

        try ${CXX} ${CXXFLAGS} -c *.cc
        for file in *.o
        do
            try mv $file ${NR}$file
        done
        try cd ..
        let NR=${NR}+1
    done


    echo -n .

    try ${CXX} ${CXXFLAGS} -c *.c

    echo -n .

    try ar crs ../tmp/lib${program}.a */*.o

    echo -n .

    try ${CXX} -o ../tmp/${LIBDIR}/${program} *.o -l${program} -lsupport \
                                                          -L../tmp ${LDFLAGS}
    echo -n .

    rm *.o */*.o ../tmp/lib${program}.a

    echo .
}

