#!/usr/bin/perl -w
# (C) 2003-2007 Willem Jan Hengeveld <itsme@xs4all.nl>
# Web: http://www.xs4all.nl/~itsme/
#      http://wiki.xda-developers.com/
#
# $Id$
#
$|=1;
# this script takes the output of 'diff -duw project1.vcp project2.vcp'
# and summarizes the differences in the compiler option lines.
#
use strict;
my @plus;
my @minus;
while (<>) {
    s/\s+$//;
    if (/^\+(.*)/) {
        push @plus, $1
    }
    elsif (/^-(.*)/) {
        push @minus, $1
    }
}
for (0..$#plus) {
    my ($plusargs, $plusopts)= splitline($plus[$_], "+");
    my ($minusargs, $minusopts)= splitline($minus[$_], "-");

    difflist($plusargs, $minusargs);
    difflist($plusopts, $minusopts);
}
sub splitline {
    my $line= shift;
    my $name= shift;

    my %args= (__name=>"$name");
    my %opts= (__name=>"$name/");
    if ($line =~ /^((?:[^ ]| [^\/])+)(?: \/(.*))?$/) {
        my ($args, $opts)= ($1, $2);
        for (split(/\s+/, $args)) {
            $args{lc($_)}= $_;
        }
        if ($opts) {
            for (split(/\s\//, $opts)) {
                $opts{lc($_)}= $_;
            }
        }
    }
    return (\%args, \%opts);
}
sub difflist {
    my ($a, $b)= @_;

    for (keys %$a) {
        if (!exists $b->{$_}) {
            printf("%s: %s\n", $a->{__name}, $_);
        }
    }
    for (keys %$b) {
        if (!exists $a->{$_}) {
            printf("%s: %s\n", $b->{__name}, $_);
        }
    }
}
