#!/usr/bin/env sh

# Only test OpenMP for Macs:
if [ "$(uname)" = "Darwin" ] ; then
	#if mac
	
	# Find R compilers
	CC=`${R_HOME}/bin/R CMD config CC`
	CFLAGS=`${R_HOME}/bin/R CMD config CFLAGS`

# Test source code to see if OpenMP compiles this:
cat <<EOF > test-omp.c
#include <omp.h>
int main() {
  return omp_get_num_threads();
}
EOF
	
	# First, try R CMD SHLIB to see if R can already compile
	R_OPENMP="work"
	"${R_HOME}/bin/R" CMD SHLIB test-omp.c >/dev/null 2>&1 || R_OPENMP="fail"

	if [ "$R_OPENMP" = "fail" ]; then
	  # Compilation failed -- try forcing -fopenmp instead.
	  R_OPENMP="work"
	  "${R_HOME}/bin/R" CMD SHLIB -Xclang -fopenmp test-omp.c >/dev/null 2>&1 || R_OPENMP="fail"
	fi

	# Clean up.
	rm -f test-omp.* a.out

	# make the Makevars temp file
	if [ ! -e "./src/Makevars.tmp" ]; then
		touch ./src/Makevars.tmp
	fi
	
	if [ "$R_OPENMP" = "work" ]; then
		echo "Configuring OpenMP compiler / linker flags for MacOS"
		
		echo "OMPBAM_PKG_CXXFLAGS = -Xclang -fopenmp" > ./src/Makevars.tmp
		echo "OMPBAM_PKG_LIBS = -lomp" >> ./src/Makevars.tmp
		echo "" >> ./src/Makevars.tmp		
	else
		echo "Configuring without OpenMP for MacOS"
		
		echo "OMPBAM_PKG_CXXFLAGS=" > ./src/Makevars.tmp
		echo "OMPBAM_PKG_LIBS=" >> ./src/Makevars.tmp
		echo "" >> ./src/Makevars.tmp		
	fi

	cat ./src/Makevars.tmp ./src/Makevars.in > ./src/Makevars
	rm ./src/Makevars.tmp

elif [ "$(expr substr $(uname -s) 1 5)" = "Linux" ] ;then
	#if linux, make the Makevars temp file
	if [ ! -e "./src/Makevars.tmp" ]; then
		touch ./src/Makevars.tmp
	fi

	echo "OMPBAM_PKG_CXXFLAGS = \$(SHLIB_OPENMP_CXXFLAGS)" > ./src/Makevars.tmp
	echo "OMPBAM_PKG_LIBS = \$(SHLIB_OPENMP_CXXFLAGS)" >> ./src/Makevars.tmp
	echo "" >> ./src/Makevars.tmp

	cat ./src/Makevars.tmp ./src/Makevars.in > ./src/Makevars
	rm ./src/Makevars.tmp
fi