diff options
Diffstat (limited to 'contrib/llvm/utils/UpdateCMakeLists.pl')
-rwxr-xr-x | contrib/llvm/utils/UpdateCMakeLists.pl | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/contrib/llvm/utils/UpdateCMakeLists.pl b/contrib/llvm/utils/UpdateCMakeLists.pl deleted file mode 100755 index 8f535145..0000000 --- a/contrib/llvm/utils/UpdateCMakeLists.pl +++ /dev/null @@ -1,119 +0,0 @@ -#!/usr/bin/env perl -use strict; -use File::Find; -use File::Copy; -use Digest::MD5; - -my @fileTypes = ("cpp", "c"); -my %dirFiles; -my %dirCMake; - -sub GetFiles { - my $dir = shift; - my $x = $dirFiles{$dir}; - if (!defined $x) { - $x = []; - $dirFiles{$dir} = $x; - } - return $x; -} - -sub ProcessFile { - my $file = $_; - my $dir = $File::Find::dir; - # Record if a CMake file was found. - if ($file eq "CMakeLists.txt") { - $dirCMake{$dir} = $File::Find::name; - return 0; - } - # Grab the extension of the file. - $file =~ /\.([^.]+)$/; - my $ext = $1; - my $files; - foreach my $x (@fileTypes) { - if ($ext eq $x) { - if (!defined $files) { - $files = GetFiles($dir); - } - push @$files, $file; - return 0; - } - } - return 0; -} - -sub EmitCMakeList { - my $dir = shift; - my $files = $dirFiles{$dir}; - - if (!defined $files) { - return; - } - - foreach my $file (sort @$files) { - print OUT " "; - print OUT $file; - print OUT "\n"; - } -} - -sub UpdateCMake { - my $cmakeList = shift; - my $dir = shift; - my $cmakeListNew = $cmakeList . ".new"; - open(IN, $cmakeList); - open(OUT, ">", $cmakeListNew); - my $foundLibrary = 0; - - while(<IN>) { - if (!$foundLibrary) { - print OUT $_; - if (/^add_clang_library\(/ || /^add_llvm_library\(/ || /^add_llvm_target\(/ - || /^add_executable\(/) { - $foundLibrary = 1; - EmitCMakeList($dir); - } - } - else { - if (/\)/) { - print OUT $_; - $foundLibrary = 0; - } - } - } - - close(IN); - close(OUT); - - open(FILE, $cmakeList) or - die("Cannot open $cmakeList when computing digest\n"); - binmode FILE; - my $digestA = Digest::MD5->new->addfile(*FILE)->hexdigest; - close(FILE); - - open(FILE, $cmakeListNew) or - die("Cannot open $cmakeListNew when computing digest\n"); - binmode FILE; - my $digestB = Digest::MD5->new->addfile(*FILE)->hexdigest; - close(FILE); - - if ($digestA ne $digestB) { - move($cmakeListNew, $cmakeList); - return 1; - } - - unlink($cmakeListNew); - return 0; -} - -sub UpdateCMakeFiles { - foreach my $dir (sort keys %dirCMake) { - if (UpdateCMake($dirCMake{$dir}, $dir)) { - print "Updated: $dir\n"; - } - } -} - -find({ wanted => \&ProcessFile, follow => 1 }, '.'); -UpdateCMakeFiles(); - |