From 22efa1bf39c566e0a5073e392664b523379b63c3 Mon Sep 17 00:00:00 2001 From: Sylvestre Ledru <sylvestre@debian.org> Date: Fri, 8 Aug 2014 17:15:13 +0000 Subject: [PATCH] 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 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@215229 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/scan-build/ccc-analyzer | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/tools/scan-build/ccc-analyzer b/tools/scan-build/ccc-analyzer index 087f0f0cb1d..4c8f6482a15 100755 --- a/tools/scan-build/ccc-analyzer +++ b/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'; } -- GitLab