summaryrefslogtreecommitdiff
path: root/cuth
blob: cce8c0c6d977ece9de8ad6d3690a16eabce81a24 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#!/usr/bin/perl

$| = 1;

sub writefile($@){
	my ($file, @lines) = @_;
	
	sleep(1);
	open(F, ">$file") || die "open >$file: $!";
	print F @lines;
	close(F);
}

# Cut out #include lines that don't contribute anything.
for($i=0; $i<@ARGV; $i++){
	$file = $ARGV[$i];
	if(!open(F, $file)){
		print STDERR "open $file: $!\n";
		next;
	}
	@lines = <F>;
	close(F);
	
	$obj = "$file.o";
	$obj =~ s/\.c\.o$/.o/;
	system("touch $file");

	if(system("make CC='gcc -Werror' $obj >/dev/null 2>\&1") != 0){
		print STDERR "make $obj failed: $rv\n";
		next;
	}

	system("cp $file =$file");
	for($j=@lines-1; $j>=0; $j--){
		if($lines[$j] =~ /^#include/){
			$old = $lines[$j];
			$lines[$j] = "/* CUT-H */\n";
			writefile($file, @lines);
			if(system("make CC='gcc -Werror' $obj >/dev/null 2>\&1") != 0){
				$lines[$j] = $old;
			}else{
				print STDERR "$file $old";
			}
		}
	}
	writefile($file, grep {!/CUT-H/} @lines);
	system("rm =$file");
}