]> granicus.if.org Git - clang/commitdiff
[driver] Have -isysroot warn on nonexistent paths.
authorChad Rosier <mcrosier@apple.com>
Wed, 19 Dec 2012 23:41:50 +0000 (23:41 +0000)
committerChad Rosier <mcrosier@apple.com>
Wed, 19 Dec 2012 23:41:50 +0000 (23:41 +0000)
rdar://12282267

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@170611 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Basic/DiagnosticDriverKinds.td
lib/Driver/ToolChains.cpp
test/Driver/warning-options.cpp

index 4b430351756a8f217bfe789353d2c276bf222bf0..a8b21173dbbed10fc1db4ad3316663731aac98d3 100644 (file)
@@ -136,6 +136,8 @@ def warn_drv_objc_gc_unsupported : Warning<
   "Objective-C garbage collection is not supported on this platform, ignoring '%0'">;
 def warn_drv_pch_not_first_include : Warning<
   "precompiled header '%0' was ignored because '%1' is not first '-include'">;
+def warn_missing_sysroot : Warning<"no such sysroot directory: '%0'">,
+  InGroup<DiagGroup<"missing-sysroot">>;
 
 def note_drv_command_failed_diag_msg : Note<
   "diagnostic msg: %0">;
index 251467c75e011ba47f41682c78d72b7396ad0f3a..b84a96953a9b6de4c6d41ed8013ea422b3489fcb 100644 (file)
@@ -397,7 +397,12 @@ void Darwin::AddDeploymentTarget(DerivedArgList &Args) const {
   // Support allowing the SDKROOT environment variable used by xcrun and other
   // Xcode tools to define the default sysroot, by making it the default for
   // isysroot.
-  if (!Args.hasArg(options::OPT_isysroot)) {
+  if (const Arg *A = Args.getLastArg(options::OPT_isysroot)) {
+    // Warn if the path does not exist.
+    bool Exists;
+    if (llvm::sys::fs::exists(A->getValue(), Exists) || !Exists)
+      getDriver().Diag(clang::diag::warn_missing_sysroot) << A->getValue();
+  } else {
     if (char *env = ::getenv("SDKROOT")) {
       // We only use this value as the default if it is an absolute path and
       // exists.
index cce88e65c259b979bdc12da1c7a1a52ef8ec6efc..c3a0214aa644c82a2f81092d93c16cf9d695deab 100644 (file)
@@ -13,3 +13,7 @@
 // RUN: %clang -### -Warc-abi -Wno-arc-abi %s 2>&1 | FileCheck -check-prefix=ARCABI %s
 // ARCABI-NOT: unknown warning option '-Warc-abi'
 // ARCABI-NOT: unknown warning option '-Wno-arc-abi'
+
+// Check that -isysroot warns on non-existant paths.
+// RUN: %clang -### -c -target i386-apple-darwin10 -isysroot /FOO %s 2>&1 | FileCheck --check-prefix=CHECK-ISYSROOT %s
+// CHECK-ISYSROOT: warning: no such sysroot directory: '/FOO'