123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- #!/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__
|