keith created this revision. Herald added a project: All. keith requested review of this revision. Herald added subscribers: cfe-commits, MaskRay. Herald added a project: clang.
Starting with the SDKs provided with Xcode 14.3, this library no longer exists. Before this change this results in an opaque linker error in the case that your deployment target is low enough that this library is added. This produces a more useful error message in that case. Repository: rG LLVM Github Monorepo https://reviews.llvm.org/D150988 Files: clang/include/clang/Basic/DiagnosticDriverKinds.td clang/lib/Driver/ToolChains/Darwin.cpp clang/test/Driver/arclite-link-external-toolchain.c Index: clang/test/Driver/arclite-link-external-toolchain.c =================================================================== --- clang/test/Driver/arclite-link-external-toolchain.c +++ clang/test/Driver/arclite-link-external-toolchain.c @@ -4,5 +4,7 @@ // RUN: -isysroot %t.tmpdir/Xcode.app/Contents/Developers/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk \ // RUN: %s 2>&1 | FileCheck %s +// CHECK: error: SDK does not contain 'libarclite' at the path +// CHECK: This likely means you need to increase your minimum deployment target // CHECK: -lfoo // CHECK: .tmpdir/Xcode.app/{{.*}}libarclite_macosx.a Index: clang/lib/Driver/ToolChains/Darwin.cpp =================================================================== --- clang/lib/Driver/ToolChains/Darwin.cpp +++ clang/lib/Driver/ToolChains/Darwin.cpp @@ -1204,6 +1204,9 @@ P += "macosx"; P += ".a"; + if (!getVFS().exists(P)) + getDriver().Diag(clang::diag::err_drv_darwin_sdk_missing_arclite) << P; + CmdArgs.push_back(Args.MakeArgString(P)); } Index: clang/include/clang/Basic/DiagnosticDriverKinds.td =================================================================== --- clang/include/clang/Basic/DiagnosticDriverKinds.td +++ clang/include/clang/Basic/DiagnosticDriverKinds.td @@ -619,6 +619,9 @@ "SDK settings were ignored as 'SDKSettings.json' could not be parsed">, InGroup<DiagGroup<"darwin-sdk-settings">>; +def err_drv_darwin_sdk_missing_arclite : Error< + "SDK does not contain 'libarclite' at the path '%0'. This likely means you need to increase your minimum deployment target">; + def err_drv_trivial_auto_var_init_stop_after_missing_dependency : Error< "'-ftrivial-auto-var-init-stop-after=*' is used without " "'-ftrivial-auto-var-init=zero' or '-ftrivial-auto-var-init=pattern'">;
Index: clang/test/Driver/arclite-link-external-toolchain.c =================================================================== --- clang/test/Driver/arclite-link-external-toolchain.c +++ clang/test/Driver/arclite-link-external-toolchain.c @@ -4,5 +4,7 @@ // RUN: -isysroot %t.tmpdir/Xcode.app/Contents/Developers/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.14.sdk \ // RUN: %s 2>&1 | FileCheck %s +// CHECK: error: SDK does not contain 'libarclite' at the path +// CHECK: This likely means you need to increase your minimum deployment target // CHECK: -lfoo // CHECK: .tmpdir/Xcode.app/{{.*}}libarclite_macosx.a Index: clang/lib/Driver/ToolChains/Darwin.cpp =================================================================== --- clang/lib/Driver/ToolChains/Darwin.cpp +++ clang/lib/Driver/ToolChains/Darwin.cpp @@ -1204,6 +1204,9 @@ P += "macosx"; P += ".a"; + if (!getVFS().exists(P)) + getDriver().Diag(clang::diag::err_drv_darwin_sdk_missing_arclite) << P; + CmdArgs.push_back(Args.MakeArgString(P)); } Index: clang/include/clang/Basic/DiagnosticDriverKinds.td =================================================================== --- clang/include/clang/Basic/DiagnosticDriverKinds.td +++ clang/include/clang/Basic/DiagnosticDriverKinds.td @@ -619,6 +619,9 @@ "SDK settings were ignored as 'SDKSettings.json' could not be parsed">, InGroup<DiagGroup<"darwin-sdk-settings">>; +def err_drv_darwin_sdk_missing_arclite : Error< + "SDK does not contain 'libarclite' at the path '%0'. This likely means you need to increase your minimum deployment target">; + def err_drv_trivial_auto_var_init_stop_after_missing_dependency : Error< "'-ftrivial-auto-var-init-stop-after=*' is used without " "'-ftrivial-auto-var-init=zero' or '-ftrivial-auto-var-init=pattern'">;
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits