#!/usr/bin/env bash

home=`pwd`

# library Make.inc
cd $home/Grid
HFILES=`find . -type f -name '*.h' -not -name '*Hdf5*' -not -path '*/gamma-gen/*' -not -path '*/Old/*' -not -path '*/Eigen/*'`
HFILES="$HFILES"
CCFILES=`find . -name '*.cc' -not -path '*/instantiation/*/*' -not -path '*/gamma-gen/*' -not -name '*Communicator*.cc' -not -name '*SharedMemory*.cc' -not -name '*Hdf5*'`


ZWILS_FERMION_FILES=` find . -name '*.cc' -path '*/instantiation/*' -path '*/instantiation/ZWilsonImpl*' `
WILS_FERMION_FILES=`  find . -name '*.cc' -path '*/instantiation/*' -path '*/instantiation/WilsonImpl*' `
STAG_FERMION_FILES=`  find . -name '*.cc' -path '*/instantiation/*' -path '*/instantiation/Staggered*' `
GP_FERMION_FILES=`    find . -name '*.cc' -path '*/instantiation/*' -path '*/instantiation/Gparity*' `
ADJ_FERMION_FILES=`   find . -name '*.cc' -path '*/instantiation/*' -path '*/instantiation/WilsonAdj*' `
TWOIND_FERMION_FILES=`find . -name '*.cc' -path '*/instantiation/*' -path '*/instantiation/WilsonTwoIndex*'`

HPPFILES=`find . -type f -name '*.hpp'`
echo HFILES=$HFILES $HPPFILES > Make.inc
echo >> Make.inc
echo CCFILES=$CCFILES >> Make.inc

echo ZWILS_FERMION_FILES=$ZWILS_FERMION_FILES >> Make.inc
echo WILS_FERMION_FILES=$WILS_FERMION_FILES   >> Make.inc
echo STAG_FERMION_FILES=$STAG_FERMION_FILES   >> Make.inc
echo GP_FERMION_FILES=$GP_FERMION_FILES   >> Make.inc
echo ADJ_FERMION_FILES=$ADJ_FERMION_FILES   >> Make.inc
echo TWOIND_FERMION_FILES=$TWOIND_FERMION_FILES   >> Make.inc

# tests Make.inc
cd $home/tests
dirs=`find . -type d -not -path '*/\.*'`
for subdir in $dirs; do
    cd $home/tests/$subdir
    pwd
    TESTS=`ls T*.cc`
    TESTLIST=`echo ${TESTS} | sed s/.cc//g `
    PREF=`[ $subdir = '.' ] && echo noinst || echo EXTRA`
    echo "tests-local: ${TESTLIST} " > Make.inc
    echo ${PREF}_PROGRAMS = ${TESTLIST} >> Make.inc
    echo >> Make.inc
    for f in $TESTS; do
	   BNAME=`basename $f .cc`
	   echo ${BNAME}_SOURCES=$f >> Make.inc
	   echo ${BNAME}_LDADD='$(top_builddir)/Grid/libGrid.a' >> Make.inc
	   echo >> Make.inc
    done
    if [ $subdir != '.' ]; then
       echo CLEANFILES = ${TESTLIST} >> Make.inc
       echo >> Make.inc
    fi
done

# benchmarks Make.inc
cd $home/benchmarks
echo> Make.inc
TESTS=`ls B*.cc`
TESTLIST=`echo ${TESTS} | sed s/.cc//g `
echo bin_PROGRAMS = ${TESTLIST} > Make.inc
echo >> Make.inc
for f in $TESTS; do
    BNAME=`basename $f .cc`
    echo ${BNAME}_SOURCES=$f  >> Make.inc
    echo ${BNAME}_LDADD='$(top_builddir)/Grid/libGrid.a' >> Make.inc
    echo >> Make.inc
done
cd ..


# HMC Make.inc
cd $home/HMC
echo> Make.inc
TESTS=`ls *.cc`
TESTLIST=`echo ${TESTS} | sed s/.cc//g `
echo bin_PROGRAMS = ${TESTLIST} > Make.inc
echo >> Make.inc
for f in $TESTS; do
    BNAME=`basename $f .cc`
    echo ${BNAME}_SOURCES=$f  >> Make.inc
    echo ${BNAME}_LDADD='$(top_builddir)/Grid/libGrid.a'>> Make.inc
    echo >> Make.inc
done
cd ..

# examples Make.inc
cd $home/examples/
echo> Make.inc
TESTS=`ls *.cc`
TESTLIST=`echo ${TESTS} | sed s/.cc//g `
echo bin_PROGRAMS = ${TESTLIST} > Make.inc
echo >> Make.inc
for f in $TESTS; do
    BNAME=`basename $f .cc`
    echo ${BNAME}_SOURCES=$f  >> Make.inc
    echo ${BNAME}_LDADD='$(top_builddir)/Grid/libGrid.a'>> Make.inc
    echo >> Make.inc
done
cd ..