diff options
| author | Sylvestre Ledru <sylvestre@debian.org> | 2014-08-08 17:15:13 +0000 |
|---|---|---|
| committer | Sylvestre Ledru <sylvestre@debian.org> | 2014-08-08 17:15:13 +0000 |
| commit | 9e0752980c549f175197032a14c27bca2e647193 (patch) | |
| tree | f9ca4a88677cb7656022f69ac25a8765a8fb0b49 /clang | |
| parent | bd56fbb9765995b68cc26911ed623b96d0dec9c8 (diff) | |
| download | bcm5719-llvm-9e0752980c549f175197032a14c27bca2e647193.tar.gz bcm5719-llvm-9e0752980c549f175197032a14c27bca2e647193.zip | |
Fix a bug when scan-build is used in a cross-compilation environment with
the --use-cc option.
Instead, we will search in the PATH
For example:
scan-build --use-cc=arm-none-eabi-gcc -o out make -e
Initially reported as a Debian Bug:
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=748777
llvm-svn: 215229
Diffstat (limited to 'clang')
| -rwxr-xr-x | clang/tools/scan-build/ccc-analyzer | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/clang/tools/scan-build/ccc-analyzer b/clang/tools/scan-build/ccc-analyzer index 087f0f0cb1d..4c8f6482a15 100755 --- a/clang/tools/scan-build/ccc-analyzer +++ b/clang/tools/scan-build/ccc-analyzer @@ -25,6 +25,17 @@ use Text::ParseWords; # Compiler command setup. ##===----------------------------------------------------------------------===## +# Search in the PATH if the compiler exists +sub SearchInPath { + my $file = shift; + foreach my $dir (split (':', $ENV{PATH})) { + if (-x "$dir/$file") { + return 1; + } + } + return 0; +} + my $Compiler; my $Clang; my $DefaultCCompiler; @@ -41,7 +52,7 @@ if (`uname -a` =~ m/Darwin/) { if ($FindBin::Script =~ /c\+\+-analyzer/) { $Compiler = $ENV{'CCC_CXX'}; - if (!defined $Compiler || ! -x $Compiler) { $Compiler = $DefaultCXXCompiler; } + if (!defined $Compiler || (! -x $Compiler && ! SearchInPath($Compiler))) { $Compiler = $DefaultCXXCompiler; } $Clang = $ENV{'CLANG_CXX'}; if (!defined $Clang || ! -x $Clang) { $Clang = 'clang++'; } @@ -50,7 +61,7 @@ if ($FindBin::Script =~ /c\+\+-analyzer/) { } else { $Compiler = $ENV{'CCC_CC'}; - if (!defined $Compiler || ! -x $Compiler) { $Compiler = $DefaultCCompiler; } + if (!defined $Compiler || (! -x $Compiler && ! SearchInPath($Compiler))) { $Compiler = $DefaultCCompiler; } $Clang = $ENV{'CLANG'}; if (!defined $Clang || ! -x $Clang) { $Clang = 'clang'; } |

