diff options
author | Ted Kremenek <kremenek@apple.com> | 2014-12-31 07:44:51 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2014-12-31 07:44:51 +0000 |
commit | 398f46f8f237497591901c6952dd936dc503c79b (patch) | |
tree | 19ff766cf7342d618f923c8e5ae994da047fa120 /clang/tools | |
parent | a7a8c4c09e947a8a5898a640536ee2fc131163ed (diff) | |
download | bcm5719-llvm-398f46f8f237497591901c6952dd936dc503c79b.tar.gz bcm5719-llvm-398f46f8f237497591901c6952dd936dc503c79b.zip |
[analyzer] Change ccc-analyzer to mimick behavior on OSX Mavericks/Yosemite to automatically infer the SDK location.
llvm-svn: 225038
Diffstat (limited to 'clang/tools')
-rwxr-xr-x | clang/tools/scan-build/ccc-analyzer | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/clang/tools/scan-build/ccc-analyzer b/clang/tools/scan-build/ccc-analyzer index 4c8f6482a15..c99328221ab 100755 --- a/clang/tools/scan-build/ccc-analyzer +++ b/clang/tools/scan-build/ccc-analyzer @@ -41,10 +41,14 @@ my $Clang; my $DefaultCCompiler; my $DefaultCXXCompiler; my $IsCXX; +my $UseXCRUN = 0; if (`uname -a` =~ m/Darwin/) { $DefaultCCompiler = 'clang'; $DefaultCXXCompiler = 'clang++'; + if (-x "/usr/bin/xcrun") { + $UseXCRUN = 1; + } } else { $DefaultCCompiler = 'gcc'; $DefaultCXXCompiler = 'g++'; @@ -478,6 +482,7 @@ my $HtmlDir = $ENV{'CCC_ANALYZER_HTML'}; my %DisabledArchs = ('ppc' => 1, 'ppc64' => 1); my %ArchsSeen; my $HadArch = 0; +my $HasSDK = 0; # Process the arguments. foreach (my $i = 0; $i < scalar(@ARGV); ++$i) { @@ -500,6 +505,12 @@ foreach (my $i = 0; $i < scalar(@ARGV); ++$i) { next; } + # On OSX/iOS, record if an SDK path was specified. This + # is innocuous for other platforms, so the check just happens. + if ($Arg =~ /^-isysroot/) { + $HasSDK = 1; + } + # Options with possible arguments that should pass through to compiler. if (defined $CompileOptionMap{$ArgKey}) { my $Cnt = $CompileOptionMap{$ArgKey}; @@ -644,6 +655,15 @@ foreach (my $i = 0; $i < scalar(@ARGV); ++$i) { } } +# If we are on OSX and have an installation where the +# default SDK is inferred by xcrun use xcrun to infer +# the SDK. +if (not $HasSDK and $UseXCRUN) { + my $sdk = `/usr/bin/xcrun --show-sdk-path -sdk macosx`; + chomp $sdk; + push @CompileOpts, "-isysroot", $sdk; +} + if ($Action eq 'compile' or $Action eq 'link') { my @Archs = keys %ArchsSeen; # Skip the file if we don't support the architectures specified. |