#! /usr/bin/perl

use strict;

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

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/
          || $flag =~ m/-ffile-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|CXX)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");
