#!/bin/sh
set -e

CXX=${1:-g++}

AUTOPKGTEST_TMP=${AUTOPKGTEST_TMP:-$(mktemp -d)}

parallel=$(echo " $DEB_BUILD_OPTIONS " | sed -rn 's/.* parallel=([0-9]+) .*/\1/p')

cd $AUTOPKGTEST_TMP

git clone https://github.com/nvidia/cuda-samples

cd cuda-samples

tag=
nvccver=$(nvcc --version | sed -rn 's/.*release ([0-9.]+),.*/\1/p')
for t in $(git tag --sort=version:refname)
do
	dpkg --compare-versions "${t#v}" le "$nvccver" && tag="$t"
done
git checkout $tag

mv Common/GL Common/GL.off

FILTER_OUT=
# only qnx has screen/screen.h
FILTER_OUT="$FILTER_OUT Samples/nbody_screen/Makefile"
FILTER_OUT="$FILTER_OUT Samples/simpleGLES_screen/Makefile"
# needs unavailable cudla.h
FILTER_OUT="$FILTER_OUT Samples/cuDLAErrorReporting/Makefile"
FILTER_OUT="$FILTER_OUT Samples/cuDLAHybridMode/Makefile"
# needs unavailable rendercheck_gles.h
FILTER_OUT="$FILTER_OUT Samples/fluidsGLES/Makefile"
if [ "$(uname -m)" = "aarch64" ]; then
# underlinked
FILTER_OUT="$FILTER_OUT Samples/cdpAdvancedQuicksort/Makefile"
FILTER_OUT="$FILTER_OUT Samples/cdpBezierTessellation/Makefile"
FILTER_OUT="$FILTER_OUT Samples/cdpQuadtree/Makefile"
FILTER_OUT="$FILTER_OUT Samples/cdpSimplePrint/Makefile"
FILTER_OUT="$FILTER_OUT Samples/cdpSimpleQuicksort/Makefile"
FILTER_OUT="$FILTER_OUT Samples/conjugateGradientMultiDeviceCG/Makefile"
fi
if [ "$(uname -m)" = "ppc64le" ]; then
# no cudaEGL.h on ppc64el
FILTER_OUT="$FILTER_OUT Samples/EGLStream_CUDA_CrossGPU/Makefile"
FILTER_OUT="$FILTER_OUT Samples/EGLStream_CUDA_Interop/Makefile"
FILTER_OUT="$FILTER_OUT Samples/EGLStreams_CUDA_Interop/Makefile"
FILTER_OUT="$FILTER_OUT Samples/EGLSync_CUDAEvent_Interop/Makefile"
fi

MA_LIBDIR=/usr/lib/$(dpkg-architecture -qDEB_HOST_MULTIARCH)
make ${parallel:+-j${parallel}} -k \
	CUDA_PATH="/usr" \
	CUDA_SEARCH_PATH="$MA_LIBDIR" \
	CUDA_INSTALL_TARGET_DIR= \
	GLPATH="$MA_LIBDIR" \
	VULKAN_SDK_PATH="$MA_LIBDIR" \
	HOST_COMPILER="$CXX" \
	EXTRA_NVCCFLAGS="-Wno-deprecated-gpu-targets -Wno-deprecated-declarations" \
	FILTER_OUT="$FILTER_OUT" \
