#!/bin/csh

#-----------------------------------------------------------------------------
# Quick and dirty build for unit testing with Host (serial) and TPI devices.
# To be replace with CMake integration.

set TBBROOT="/opt/intel/composerxe_mic/tbb"

set INC_PATH="-I. -I../src -I${TBBROOT}/include"

set GCC_SOURCES="../src/impl/*.cpp ../src/DeviceHost/*.cpp PerfTestMain.cpp"

set LIB=""

#-----------------------------------------------------------------------------

set GCC_SOURCES="${GCC_SOURCES} PerfTestTPIStub.cpp"

#-----------------------------------------------------------------------------

set GCC_SOURCES="${GCC_SOURCES} ../src/DeviceTBB/*.cpp"

set LIB="${LIB} -ltbb"

icpc -offload-build ${INC_PATH} -O3 -tbb -c ../src/DeviceFerry/*.cpp PerfTestFerry.cpp 

#-----------------------------------------------------------------------------

set GCC_SOURCES="${GCC_SOURCES} PerfTestTBBStub.cpp"

#-----------------------------------------------------------------------------

set GCC_SOURCES="${GCC_SOURCES} PerfTestCudaStub.cpp"

#-----------------------------------------------------------------------------

echo "#define HAVE_PTHREAD" > ThreadPool_config.h

set GCC_FLAGS="-Wall -O3 ${INC_PATH}"

icpc $GCC_FLAGS -c ${GCC_SOURCES}
icpc $GCC_FLAGS -offload-build -o  perf_test.exe KokkosArray_ArrayBounds.o KokkosArray_DeviceHost.o KokkosArray_ViewTracker.o PerfTestFerry.o KokkosArray_DeviceTBB.o PerfTestCudaStub.o PerfTestMain.o KokkosArray_DeviceFerry.o KokkosArray_MemoryInfo.o PerfTestTPIStub.o PerfTestTBBStub.o ${LIB} -offload-ldopts:"-L${TBBROOT}/lib/mic -ltbb -ltbbmalloc"

rm -f *.o *.a ThreadPool_config.h

#-----------------------------------------------------------------------------

