|
@@ -0,0 +1,84 @@
|
|
|
+#!/usr/bin/perl
|
|
|
+
|
|
|
+# Transform Makefile.am and config.in so they can be executed
|
|
|
+# standalone. Then run the test suite.
|
|
|
+
|
|
|
+# There should be a way to use m4 for this.
|
|
|
+
|
|
|
+use 5.010;
|
|
|
+use strict;
|
|
|
+use warnings;
|
|
|
+
|
|
|
+use Config;
|
|
|
+use Cwd;
|
|
|
+
|
|
|
+my $big_endian = sub {
|
|
|
+ my $bo = $Config{'byteorder'};
|
|
|
+ ($bo == 87654321) and return 1;
|
|
|
+ ($bo == 12345678) and return;
|
|
|
+ die ("Cannot understand byte order: $bo");
|
|
|
+}->();
|
|
|
+
|
|
|
+chdir ('test') or die ("Cannot change to test/: $!");
|
|
|
+
|
|
|
+my $PWD = getcwd;
|
|
|
+
|
|
|
+sub transform {
|
|
|
+ my ($src_file, $dst_file) = @_;
|
|
|
+
|
|
|
+ my $fh_in;
|
|
|
+ my $fh_out;
|
|
|
+ open ($fh_in, '<', $src_file) or
|
|
|
+ die ("Cannot open '$src_file': $!");
|
|
|
+ open ($fh_out, '>', $dst_file) or
|
|
|
+ die ("Cannot write '$dst_file': $!");
|
|
|
+
|
|
|
+ my $in_clause;
|
|
|
+ my $mute;
|
|
|
+ while (defined (my $line = <$fh_in>)) {
|
|
|
+ if ($line =~ /if WORDS_BIGENDIAN/) {
|
|
|
+ $in_clause and die ('State machine error');
|
|
|
+ $in_clause = 1;
|
|
|
+ $mute = !$big_endian;
|
|
|
+ next;
|
|
|
+ } elsif ($line =~ /^else/) {
|
|
|
+ $in_clause or die ('State machine error');
|
|
|
+ $mute = $big_endian;
|
|
|
+ next;
|
|
|
+ } elsif ($line =~ /^endif/) {
|
|
|
+ $in_clause or die ('State machine error');
|
|
|
+ $mute = undef;
|
|
|
+ $in_clause = undef;
|
|
|
+ next;
|
|
|
+ }
|
|
|
+
|
|
|
+ $mute and next;
|
|
|
+
|
|
|
+ $line =~ s/\@PRINTF\@/printf/;
|
|
|
+ $line =~ s/\@host\@/localhost/;
|
|
|
+ $line =~ s/\@(target|build|nic1|nic2)\@/'-$1-'/;
|
|
|
+ $line =~ s:=../src/:=/usr/bin/:;
|
|
|
+ $line =~ s/\@debug_run_time_flag\@/--dbug=1/;
|
|
|
+ $line =~ s/^(all: .+) tcpreplay (.+)$/$1 $2/;
|
|
|
+ $line =~ s/\@srcdir\@/$PWD/g;
|
|
|
+ print $fh_out $line;
|
|
|
+ }
|
|
|
+ close ($fh_in);
|
|
|
+ close ($fh_out) or die;
|
|
|
+
|
|
|
+ system ('diff', '-u', $src_file, $dst_file);
|
|
|
+}
|
|
|
+
|
|
|
+transform ('Makefile.am', 'Makefile.test');
|
|
|
+transform ('config.in', 'config');
|
|
|
+
|
|
|
+$ENV{'srcdir'} = $PWD;
|
|
|
+system ('make', '-f', 'Makefile.test');
|
|
|
+my $exit = $? ? 1 : 0;
|
|
|
+
|
|
|
+print "test.log content:\n";
|
|
|
+system ('cat', 'test.log');
|
|
|
+
|
|
|
+exit $exit;
|
|
|
+
|
|
|
+__END__
|