#!/bin/sh
# Copyright 2015 Ghislain Antony Vaillant
#
# This file is part of the autopkgtest testsuite for NFFT.

set -e

# Presence of $ADTTMP implies that someone will handle cleanup for us, so we
# can avoid duplicating the effort (signal handling, etc.) here.
if [ -z "$ADTTMP" ]
then
	echo "Required envvar \"$ADTTMP\"is not set" >&2
	exit 1
fi

cp ./examples/nfft/simple_test*.in "$ADTTMP"
cd "$ADTTMP"

echo "Non-threaded examples."

# Strip hard-coded define from source file.
sed -e '/@NFFT_PRECISION_MACRO@/d' simple_test.c.in > simple_test.c

# Build and run for single precision.
gcc -Wall -DNFFT_PRECISION_SINGLE `pkg-config --cflags --libs nfft3f` -o simple_test simple_test.c
echo "build: OK (single precision)"
[ -x simple_test ] && ./simple_test
echo "run: OK (single precision)"

# Build and run for double precision.
gcc -Wall -DNFFT_PRECISION_DOUBLE `pkg-config --cflags --libs nfft3` -o simple_test simple_test.c
echo "build: OK (double precision)"
[ -x simple_test ] && ./simple_test
echo "run: OK (double precision)"

echo "Multi-threaded examples."

# Strip hard-coded define from source file.
sed -e '/@NFFT_PRECISION_MACRO@/d' simple_test_threads.c.in > simple_test_threads.c

# Build and run for single precision.
gcc -Wall -DNFFT_PRECISION_SINGLE -lnfft3f -lnfft3f_threads -lfftw3f_threads -o simple_test_threads simple_test_threads.c
echo "build: OK (single precision)"
[ -x simple_test_threads ] && ./simple_test_threads
echo "run: OK (single precision)"

# Build and run for double precision.
gcc -Wall -DNFFT_PRECISION_DOUBLE -lnfft3 -lnfft3_threads -lfftw3_threads -o simple_test_threads simple_test_threads.c
echo "build: OK (double precision)"
[ -x simple_test_threads ] && ./simple_test_threads
echo "run: OK (double precision)"
