#!/bin/sh

# Copyright (C) CNRS, INRIA, Université Bordeaux 1, Télécom SudParis
# See COPYING in top-level directory.

# usage: eztrace_cc gcc -o foo foo.c -I/usr/include/bar -L/lib/bar -lbar

cc_cmd=$*


prefix=/usr
exec_prefix=${prefix}
libdir=/usr/lib/powerpc-linux-gnu
includedir=${prefix}/include
bindir=${exec_prefix}/bin

OPARI=${bindir}/opari2
CFLAGS=-I${includedir}
LDFLAGS="-lpomp -L${libdir} -Wl,-rpath=${libdir}"

tmpdir=`mktemp -d`
instrumentFile()
{
    param=$1
    new_file_name=$2

# copy the file to tmpdir and instrument it
    param_base=`basename $param`
    param_dir=`dirname $param`
    cp $param $tmpdir
    ${OPARI} --untied=keep --untied=no-warn ${tmpdir}/${param_base} $new_file_name
    cc_cmd=`echo $cc_cmd -I$param_dir | sed "s@$param\s@$new_file_name @"`
}

cleanup_cmd="rm -rf opari.rc $tmpdir"
for x in $(seq $#) ;
do
    param=$(eval echo \$"$x")
    case $param in
	*.c )
	    new_file_name=`mktemp --suffix=.c --tmpdir=$tmpdir`
	    instrumentFile $param $new_file_name
	    ;;
	*.f )
	    new_file_name=`mktemp --suffix=.f --tmpdir=$tmpdir`
	    instrumentFile $param $new_file_name
	    ;;
	*.F )
	    new_file_name=`mktemp --suffix=.F --tmpdir=$tmpdir`
	    instrumentFile $param $new_file_name
	    ;;
	*.f90 )
	    new_file_name=`mktemp --suffix=.f90 --tmpdir=$PWD`
	    instrumentFile $param $new_file_name
	    ;;
    esac
done

cc_cmd="$cc_cmd $CFLAGS $LDFLAGS"

$cc_cmd
$cleanup_cmd
