#!/bin/bash

set -xe

#extract-gcov-info - automagically generate collects gcov info(*.gcno files) and file list
#for inclusion in an rpm spec file.
#
# Usage: extract-gcov-info [-o gcnofiles.list] [builddir]
#
# If using normal root, avoid changing anything.
if [ -z "$RPM_BUILD_ROOT" -o "$RPM_BUILD_ROOT" = "/" ]; then
        exit 0
fi

BUILDDIR=.
while [ $# -gt 0 ]; do
  case "$1" in
  -o)
    out=$2
    shift
    ;;
  *)
    BUILDDIR=$1
    shift
    break
    ;;
  esac
  shift
done

BUILDDIR=${BUILDDIR%/}
PREFIX=gcnofiles

mkdir -p "${RPM_BUILD_ROOT}/${PREFIX}"

get_gcovfn()
{
  dn=$(dirname "${1#$BUILDDIR}")
  bn=$(basename "$1")
  gcovdn="${RPM_BUILD_ROOT}/${PREFIX}/${dn}"
  gcovfn="${gcovdn}/${bn}"
}

set -o pipefail

find $BUILDDIR -name "*.gcno" | sort |
while read f; do
  get_gcovfn $f
  mkdir -p $gcovdn
  cp $f $gcovfn
done

if ! find "${RPM_BUILD_ROOT}/${PREFIX}" -mindepth 1 -print -quit | grep -q .; then
  touch "${RPM_BUILD_ROOT}/${PREFIX}/fake.gcno"
fi
