#! /usr/bin/perl

use strict;

my %FLAGS = {
	'CFLAGS' => $ARGV[0],
	'CPPFLAGS' => $ARGV[1],
	'LDDFLAGS' => $ARGV[2],
};


sub clean_and_deduplicate
{
	my $arg = shift;
	my $return_flags = "";
	my @flags = split(/\s+/, $arg);
	my %seen = ();
        my @flags = grep { ! $seen{ $_ }++ } @flags;
	foreach my $flag (@flags)
	{
		#print("FLAG: $flag\n");
		$return_flags .= "$flag " unless
			$flag =~ m/PLATFORM/ ||
			$flag =~ m/-DBUILD_DATETIME/ ||
			$flag =~ m/-fdebug-prefix-map/;
	}
	return $return_flags;
}

chdir("debian/tmp/usr/share/apache2/build/") || die("$1");

open(CONFIG_VARS, "<", "config_vars.mk") || die("config_vars.mk: $!");
open(TMP_CONFIG_VARS, ">", "tmp_config_vars.mk") || die("tmp_config_vars.mk: $1");


while(my $line = <CONFIG_VARS>)
{
	chomp $line;
	unless ($line =~ m/(^|_)(LD|CPP|C)FLAGS/)
	{
		print TMP_CONFIG_VARS "$line\n";
	}
	else
	{
		my ($flag, $value) = split(/\s*=\s*/, $line, 2);
		if (exists $FLAGS{$flag})
		{
			$value .= ' ' . $FLAGS{$flag};
		}
		my $mangled = clean_and_deduplicate($value);
		print  "mangle: $flag: '$value' => '$mangled'\n";
		printf TMP_CONFIG_VARS "%s = %s\n", $flag, $mangled;
	}
}

close(CONFIG_VARS);
close(TMP_CONFIG_VARS);

unlink("config_vars.mk") || die("unlink: config_vars.mk: $1");
rename("tmp_config_vars.mk", "config_vars.mk") || die("rename: tmp_config_vars.mk: $1");
