| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- #!/usr/bin/perl -w
- # This tiny little script, which should be run from the clang
- # directory (with clang in your patch), tries to take each
- # compilable Clang test and build a PCH file from that test, then read
- # and dump the contents of the PCH file just created.
- use POSIX;
- $exitcode = 0;
- sub testfiles($$) {
- my $suffix = shift;
- my $language = shift;
- my $passed = 0;
- my $failed = 0;
- my $skipped = 0;
- @files = `ls test/*/*.$suffix`;
- foreach $file (@files) {
- chomp($file);
- my $code = system("clang -fsyntax-only -x $language $file > /dev/null 2>&1");
- if ($code == 0) {
- print(".");
- $code = system("clang -cc1 -emit-pch -x $language -o $file.pch $file > /dev/null 2>&1");
- if ($code == 0) {
- $code = system("clang -cc1 -include-pch $file.pch -x $language -ast-dump /dev/null > /dev/null 2>&1");
- if ($code == 0) {
- $passed++;
- } elsif (($code & 0xFF) == SIGINT) {
- exit($exitcode);
- } else {
- print("\n---Failed to dump AST file for \"$file\"---\n");
- $exitcode = 1;
- $failed++;
- }
- unlink "$file.pch";
- } elsif (($code & 0xFF) == SIGINT) {
- exit($exitcode);
- } else {
- print("\n---Failed to build PCH file for \"$file\"---\n");
- $exitcode = 1;
- $failed++;
- }
- } elsif (($code & 0xFF) == SIGINT) {
- exit($exitcode);
- } else {
- print("x");
- $skipped++;
- }
- }
- print("\n\n$passed tests passed\n");
- print("$failed tests failed\n");
- print("$skipped tests skipped ('x')\n")
- }
- printf("-----Testing precompiled headers for C-----\n");
- testfiles("c", "c");
- printf("\n-----Testing precompiled headers for Objective-C-----\n");
- testfiles("m", "objective-c");
- print("\n");
- exit($exitcode);
|