: #-*- Perl -*-
eval 'exec perl -w -S $0 ${1+"$@"}' # Portability kludge
    if 0;

(my $myName = $0) =~ s@.*/@@; my $usage="
Usage: $myName

Test hpp files for independent includability.
All dependencies of a header file should be specified
using a #include directive in the header file.\n";

use strict;

sub test_header {
  my ($header) = @_;
  my ($cc_file) = ${myName}."_tmp.cc";
  my ($o_file) = ${myName}."_tmp.o";
  open CC, "> $cc_file" or die $!;
  print CC "#include \"$header\"\n";
  close CC;
  unlink $o_file;
  system ("make --no-print-directory $o_file CXX=g++");
  unlink $o_file;
  system ("make --no-print-directory $o_file CXX=icc");
  unlink $o_file;
  unlink $cc_file;
}

my @headers;
if (@ARGV) {
  @headers = @ARGV;
} else {
  opendir (DIR, ".") or die $!;
  @headers = readdir (DIR);
  closedir (DIR);
}

foreach my $header (grep /\.hpp$/, @headers) {
  test_header $header;
}
