#! /usr/bin/env bash

# file      : build/cxx/gnu/dep
# author    : Boris Kolpackov <boris@kolpackov.net>
# copyright : Copyright (c) 2004-2009 Boris Kolpackov
# license   : GNU GPL v2; see accompanying LICENSE file

# Post-process generated dependency information.
#
# $1       current project's $(out_base)
# $2 - $N  optional .cpp-options files

out_base=$1
shift

files=$*

#echo $out_base
#echo $files

script=

function gen_script ()
{
  while [ "$1" ]; do
    prefix=$1
    shift

    path=$1
    shift

    # Besides unresolved paths also replace default installation
    # targets (/usr/include and /usr/local/include).
    #
    script="$script"\
"s \\ $prefix \\ $path$prefix g;"\
"s \\ /usr/include/$prefix \\ $path$prefix g;"\
"s \\ /usr/local/include/$prefix \\ $path$prefix g;"\
"s ^$prefix $path$prefix ;"\
"s ^/usr/include/$prefix $path$prefix ;"\
"s ^/usr/local/include/$prefix $path$prefix ;"
  done
}

if [ "$files" ]; then
  prefixes=`sed -e 's%^prefix: \(.*\)$%\1%' -e t -e d $files`
  gen_script $prefixes
fi

# The last part of the script translates all file names that don't start
# with / (that is, local generated files) to files in $out_base. Note that
# it is assumed that such files are never installed and therefore there is
# no way get around the situation where this file is picket up from some
# other place (e.g., /usr/include).
#
epilogue="s% \([^/ \\\\]\)% $out_base/\1%g;s%^\([^/ ].*:\)%$out_base/\1%"

exec sed -e "$script$epilogue"
