#! /usr/bin/perl -w

use strict;

use Text::Balanced qw ( extract_bracketed );

sub add_alias
{
	$_ = shift;
	my $src = shift;
	my $tgt = shift;

	s/^(([^!{]*\|)*static-libgcc)((\|[^:|]*)*:)/$1|uclibc$3/;
	s/^(!static-libgcc:)(.*)$/$1\%{!uclibc:$2}/;

	my $ret;

	for(;;)
	{
		my @res = extract_bracketed($_, '{}', '[^{]*');
		if(!$res[0])
		{
			$ret .= $_;
			return $ret;
		}
		$ret .= $res[2];
		my $child = $res[0];
		$child =~ s/^{(.*)}$/$1/;
		$ret .= '{' . add_alias($child, $src, $tgt) . '}';
		$_ = $res[1];
	}
}

while(<>)
{
	if(/^\*([0-9A-Za-z_]*):$/)
	{
		print;
		next;
	}

	s/(\%{I\*[^}]*})/$1 \%{uclibc:-I\/usr\/arm-linux-uclibc\/include}/g;
	s/(\%{L\*[^}]*})/$1 \%{uclibc:-L\/usr\/arm-linux-uclibc\/lib}/g;
	s/((S|g|)crt(0|1|i|n)(.o|\%O))(\%s)?/\%{uclibc:\/usr\/arm-linux-uclibc\/lib\/$1;:$1$5}/g;
	s/(\/lib\/ld-linux.so.2)/\%{uclibc:\/lib\/ld-uClibc.so.0;:$1}/g;

	if(/static-libgcc/)
	{
		# "uclibc" behaves like "static-libgcc"
		$_ = add_alias($_, 'uclibc', 'static-libgcc');
	}

	print;
}
