1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-02-01 10:59:55 +00:00

Apply the clang portion of r255321 from base switching the default C++

library to libc++ on 10+.

PR:		ports/183956
Submitted by:	dpl
This commit is contained in:
Brooks Davis 2013-11-15 01:35:17 +00:00
parent b90bec6d7a
commit 04f74f32f0
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=333812
3 changed files with 65 additions and 1 deletions

View File

@ -2,7 +2,7 @@
PORTNAME= clang
DISTVERSION= 3.2
PORTREVISION= 1
PORTREVISION= 2
CATEGORIES= lang devel
MASTER_SITES= http://llvm.org/releases/${PORTVERSION}/
PKGNAMESUFFIX= ${LLVM_SUFFIX}

View File

@ -0,0 +1,44 @@
$FreeBSD$
--- tools/clang/lib/Driver/ToolChains.cpp.orig
+++ tools/clang/lib/Driver/ToolChains.cpp
@@ -1950,6 +1950,38 @@
}
}
+ToolChain::CXXStdlibType
+FreeBSD::GetCXXStdlibType(const ArgList &Args) const {
+ if (Arg *A = Args.getLastArg(options::OPT_stdlib_EQ)) {
+ StringRef Value = A->getValue();
+ if (Value == "libc++")
+ return ToolChain::CST_Libcxx;
+ if (Value == "libstdc++")
+ return ToolChain::CST_Libstdcxx;
+ getDriver().Diag(diag::err_drv_invalid_stdlib_name)
+ << A->getAsString(Args);
+ }
+
+ return getTriple().getOSMajorVersion() >= 10 ? ToolChain::CST_Libcxx :
+ ToolChain::CST_Libstdcxx;
+}
+
+void FreeBSD::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
+ ArgStringList &CC1Args) const {
+ if (DriverArgs.hasArg(options::OPT_nostdlibinc) ||
+ DriverArgs.hasArg(options::OPT_nostdincxx))
+ return;
+
+ if (GetCXXStdlibType(DriverArgs) == ToolChain::CST_Libcxx)
+ addSystemInclude(DriverArgs, CC1Args,
+ getDriver().SysRoot + "/usr/include/c++/v1");
+ else
+ addSystemInclude(DriverArgs, CC1Args,
+ getDriver().SysRoot + "/usr/include/c++/4.2");
+ return;
+
+}
+
/// NetBSD - NetBSD tool chain which can call as(1) and ld(1) directly.
NetBSD::NetBSD(const Driver &D, const llvm::Triple& Triple, const ArgList &Args)

View File

@ -0,0 +1,20 @@
$FreeBSD$
--- tools/clang/lib/Driver/ToolChains.h.orig
+++ tools/clang/lib/Driver/ToolChains.h
@@ -463,9 +463,14 @@
public:
FreeBSD(const Driver &D, const llvm::Triple& Triple, const ArgList &Args);
+ virtual CXXStdlibType GetCXXStdlibType(const ArgList &Args) const;
+
virtual bool IsMathErrnoDefault() const { return false; }
virtual bool IsObjCNonFragileABIDefault() const { return true; }
+ virtual void AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
+ ArgStringList &CC1Args) const;
+
virtual Tool &SelectTool(const Compilation &C, const JobAction &JA,
const ActionList &Inputs) const;
};