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:
parent
b90bec6d7a
commit
04f74f32f0
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=333812
@ -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}
|
||||
|
@ -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)
|
20
lang/clang32/files/patch-tools_clang_lib_Driver_ToolChains.h
Normal file
20
lang/clang32/files/patch-tools_clang_lib_Driver_ToolChains.h
Normal 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;
|
||||
};
|
Loading…
x
Reference in New Issue
Block a user