62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Perl
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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);
 | 
