#!/usr/bin/ruby

# /* LICENSE:
#   =========================================================================
#     CMPack'04 Source Code Release for OPEN-R SDK 1.1.5-r2 for ERS7
#     Copyright (C) 2004 Multirobot Lab [Project Head: Manuela Veloso]
#     School of Computer Science, Carnegie Mellon University
#     All rights reserved.
#   ========================================================================= */

filename = ARGV.shift

obj_name = nil
if(!ARGV[0].nil? && ARGV[0]=~/\.o$/)
  obj_name = ARGV.shift
end

generated_h_files = ARGV

dep_file = File.open(filename,"r")
if(dep_file.nil?)
  exit 1
end

if(dep_file.stat.file?)
  # It's a file, set the dir as the file's location
  dir = File.dirname(filename)
elsif(dep_file.stat.directory?)
  # Its a directory, and the input is on stdin
  dir = filename.chomp("/");
  dep_file = $stdin;
else
  exit 2
end

line = dep_file.gets()
parts = line.split(/:/)
if(parts.size < 2)
  exit 2
end

if(obj_name.nil?)
  obj_name = File.join(dir,parts[0].strip())
end
dep_name = obj_name.dup()
dep_name[-1,1] = "d"

deps = parts[1]
rest_of_file = dep_file.gets(nil)
if(!rest_of_file.nil?)
  deps += rest_of_file
end

print "#{obj_name} : #{deps}"

deps.gsub!(%r%([^[:blank:]\\]\S+)%) {|filename|
  if(generated_h_files.index(filename).nil?)
    "$(wildcard #{filename})"
  else
    filename
  end
}

print "\n\n#{dep_name} : #{deps}"

exit 0
