diff options
author | John Mark Bell <jmb@netsurf-browser.org> | 2009-05-30 02:30:21 +0000 |
---|---|---|
committer | John Mark Bell <jmb@netsurf-browser.org> | 2009-05-30 02:30:21 +0000 |
commit | db16fcee4cbc5bd469b1c2b6c9a554f9c3a42f2b (patch) | |
tree | b0ec00bcf73993235e5872bca82665300edbc993 /llvm | |
parent | ce00cdf8abb41ce1a993bd1404438bc553b40e1a (diff) | |
download | buildsystem-db16fcee4cbc5bd469b1c2b6c9a554f9c3a42f2b.tar.gz buildsystem-db16fcee4cbc5bd469b1c2b6c9a554f9c3a42f2b.tar.bz2 |
Add some hackery so that clang-cc is found correctly.
svn path=/trunk/tools/buildsystem/; revision=7650
Diffstat (limited to 'llvm')
-rwxr-xr-x | llvm/scan-build | 64 |
1 files changed, 48 insertions, 16 deletions
diff --git a/llvm/scan-build b/llvm/scan-build index 5835628..13c8883 100755 --- a/llvm/scan-build +++ b/llvm/scan-build @@ -17,6 +17,7 @@ use warnings; use FindBin qw($RealBin); use Digest::MD5; use File::Basename; +use File::Spec; use Term::ANSIColor; use Term::ANSIColor qw(:constants); use Cwd qw/ getcwd abs_path /; @@ -81,6 +82,41 @@ sub DieDiag { # Some initial preprocessing of Clang options. ##----------------------------------------------------------------------------## +my $ClangPath = undef; + +sub Which { + my $bin = shift; + my @paths = File::Spec->path(); + + foreach my $p (@paths) { + my $candidate = File::Spec->catfile($p, $bin); + + if (-x $candidate) { + $ClangPath = $p; + return $candidate; + } + } + + return undef; +} + +# First, look for 'clang' in bin. +my $ClangSB = Cwd::realpath("$RealBin/bin/clang"); +# Second, look for 'clang' in same directory as scan-build +if (!defined $ClangSB || ! -x $ClangSB) { + $ClangSB = Cwd::realpath("$RealBin/clang"); +} +# Third, look for 'clang' in ../bin +if (!defined $ClangSB || ! -x $ClangSB) { + $ClangSB = Cwd::realpath("$RealBin/../bin/clang"); +} +# Finally, default to looking for 'clang' in the path. +if (!defined $ClangSB || ! -x $ClangSB) { + $ClangSB = Which("clang"); +} +my $Clang = $ClangSB; + + # First, look for 'clang-cc' in libexec. my $ClangCCSB = Cwd::realpath("$RealBin/libexec/clang-cc"); # Second, look for 'clang-cc' in the same directory as scan-build. @@ -93,24 +129,20 @@ if (!defined $ClangCCSB || ! -x $ClangCCSB) { } # Finally, default to looking for 'clang-cc' in the path. if (!defined $ClangCCSB || ! -x $ClangCCSB) { - $ClangCCSB = "clang-cc"; -} -my $ClangCC = $ClangCCSB; + if (defined $ClangPath) { + my @dirs = ( $ClangPath, "..", "libexec" ); + my $candidate = File::Spec->catfile(@dirs, "clang-cc"); -# Now find 'clang' -my $ClangSB = Cwd::realpath("$RealBin/bin/clang"); -if (!defined $ClangSB || ! -x $ClangSB) { - $ClangSB = Cwd::realpath("$RealBin/clang"); -} -# Third, look for 'clang' in ../bin -if (!defined $ClangSB || ! -x $ClangSB) { - $ClangSB = Cwd::realpath("$RealBin/../bin/clang"); -} -# Finally, default to looking for 'clang-cc' in the path. -if (!defined $ClangSB || ! -x $ClangSB) { - $ClangSB = "clang"; + if (-x $candidate) { + $ClangCCSB = $candidate; + } else { + $ClangCCSB = "clang-cc"; + } + } else { + $ClangCCSB = "clang-cc"; + } } -my $Clang = $ClangSB; +my $ClangCC = $ClangCCSB; my %AvailableAnalyses; |