#!/usr/bin/perl -w # (C) 2003-2007 Willem Jan Hengeveld # 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}, $_); } } }