#!/usr/bin/perl -w

use strict;

my %depends;
my %tokenpath;

sub getdepends ($$)
{
	my ($token, $path, $intoken);
	$token = shift || return;
	$token =~ s/CONFIG_//;
	$path = shift || return;
#print "opening $path/config.in\n";
#	print "token is $token\n";
	open( FILE, "< $path/config.in" ) || return;
	$intoken = 0;
	while( <FILE> ) {
		if( $intoken == 1 ) {
			/depends\S*(.*)/ && return $1;
			if( /\S*(config|menu)/ ) {
				$intoken = 0;
				return;
			}
		} else {
			/$token/ || next;
			$intoken = 1;
		}
		/$token/ || next;
	}
	close( FILE );
	return;
}

sub makedepends ($$)
{
	my ($depends, $tokenpath, $token, $depword, $mustbesep, $state);
	$depends = shift || return;
	$tokenpath = shift || return;
	$mustbesep = 0;

	for $token (keys %$depends){
		print ${$tokenpath}{$token} . " : ";
		for (split(/\s+/, ${$depends}{$token})){
			/^\s+$/ && next;
			/\&\&/ && next;
			/\|\|/ && next;
			/^$/ && next;
			/^\($/ && next;
			/^\)$/ && next;
			/^on$/ && next;
			/^!$/ && next;
			if(defined(${$tokenpath}{"CONFIG_" . $_})){
				print '$(if $(CONFIG_' . $_ . '),' . ${$tokenpath}{"CONFIG_" . $_} . ') ';
			} else {
#				print STDERR "Warning: unable to locate path for token CONFIG_$_\n";
			}
		}
		print "\n";
	}
}

while( <> ) {
	my $dep;
	my ($token, $path, $pro);
	chomp;
	s/^\s*//g;
	s/\s*$//g;
	($token, $path, $pro) = split(/\s+/,$_);
	$tokenpath{$token} = $path;
	$dep = getdepends($token, $path);
	if( $dep ) {
		$depends{$token} = $dep;
	}
}

makedepends(\%depends, \%tokenpath);