summaryrefslogtreecommitdiff
path: root/lang/clang-devel/files
diff options
context:
space:
mode:
authorBrooks Davis <brooks@FreeBSD.org>2013-11-06 00:13:02 +0000
committerBrooks Davis <brooks@FreeBSD.org>2013-11-06 00:13:02 +0000
commit544d2a5976a862030bf26c33b27ab85f193f2e99 (patch)
tree299f776921c11714470e2d36b42ead7bfe10d4d7 /lang/clang-devel/files
parent- Reduce unnecessary dependencies by use cups-client for library. (diff)
Upgrade the llvm development ports to r193887. We're about two weeks
from the LLVM 3.4 branch starting. Apply the clang portion of r255321 from base switching the default C++ library to libc++ on 10+. Correct clang's notion of the underlying type of (u)intmax_t on MIPS64.
Diffstat (limited to 'lang/clang-devel/files')
-rw-r--r--lang/clang-devel/files/llvm-wrapper.sh.in10
-rw-r--r--lang/clang-devel/files/mips-long-double-hack.diff15
-rw-r--r--lang/clang-devel/files/patch-tools_clang_lib_Basic_Targets.cpp14
-rw-r--r--lang/clang-devel/files/patch-tools_clang_lib_Driver_ToolChains.cpp44
-rw-r--r--lang/clang-devel/files/patch-tools_clang_lib_Driver_ToolChains.h20
5 files changed, 88 insertions, 15 deletions
diff --git a/lang/clang-devel/files/llvm-wrapper.sh.in b/lang/clang-devel/files/llvm-wrapper.sh.in
new file mode 100644
index 000000000000..0a460f3156e5
--- /dev/null
+++ b/lang/clang-devel/files/llvm-wrapper.sh.in
@@ -0,0 +1,10 @@
+#!/bin/sh
+# $FreeBSD$
+
+LLVM_PREFIX="%%LLVM_PREFIX%%"
+LLVM_SUFFIX="%%LLVM_SUFFIX%%"
+
+tool=$(basename $0)
+tool="${LLVM_PREFIX}/bin/${tool%${LLVM_SUFFIX}}"
+LD_LIBRARY_PATH="${LD_LIBRARY_PATH:+${LD_LIBRARY_PATH}:}${LLVM_PREFIX}/lib" \
+ "${tool}" "${@}"
diff --git a/lang/clang-devel/files/mips-long-double-hack.diff b/lang/clang-devel/files/mips-long-double-hack.diff
deleted file mode 100644
index dbc45f6f85e3..000000000000
--- a/lang/clang-devel/files/mips-long-double-hack.diff
+++ /dev/null
@@ -1,15 +0,0 @@
-
-$FreeBSD$
-
---- tools/clang/lib/Basic/Targets.cpp.orig
-+++ tools/clang/lib/Basic/Targets.cpp
-@@ -3957,6 +3957,9 @@
- PointerWidth = PointerAlign = 64;
- LongDoubleWidth = LongDoubleAlign = 128;
- LongDoubleFormat = &llvm::APFloat::IEEEquad;
-+ // FIXME: Ugly ABI-Breaking hack until the back end supports 128-bit floats
-+ LongDoubleWidth = LongDoubleAlign = 64;
-+ LongDoubleFormat = &llvm::APFloat::IEEEdouble;
- SuitableAlign = 128;
- }
- virtual bool setABI(const std::string &Name) {
diff --git a/lang/clang-devel/files/patch-tools_clang_lib_Basic_Targets.cpp b/lang/clang-devel/files/patch-tools_clang_lib_Basic_Targets.cpp
new file mode 100644
index 000000000000..bb0f833e5a30
--- /dev/null
+++ b/lang/clang-devel/files/patch-tools_clang_lib_Basic_Targets.cpp
@@ -0,0 +1,14 @@
+
+$FreeBSD$
+
+--- tools/clang/lib/Basic/Targets.cpp.orig
++++ tools/clang/lib/Basic/Targets.cpp
+@@ -4981,6 +4981,8 @@
+ LongDoubleWidth = LongDoubleAlign = 128;
+ LongDoubleFormat = &llvm::APFloat::IEEEquad;
+ if (getTriple().getOS() == llvm::Triple::FreeBSD) {
++ IntMaxType = SignedLong;
++ UIntMaxType = UnsignedLong;
+ LongDoubleWidth = LongDoubleAlign = 64;
+ LongDoubleFormat = &llvm::APFloat::IEEEdouble;
+ }
diff --git a/lang/clang-devel/files/patch-tools_clang_lib_Driver_ToolChains.cpp b/lang/clang-devel/files/patch-tools_clang_lib_Driver_ToolChains.cpp
new file mode 100644
index 000000000000..d34e4d8781a4
--- /dev/null
+++ b/lang/clang-devel/files/patch-tools_clang_lib_Driver_ToolChains.cpp
@@ -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)
diff --git a/lang/clang-devel/files/patch-tools_clang_lib_Driver_ToolChains.h b/lang/clang-devel/files/patch-tools_clang_lib_Driver_ToolChains.h
new file mode 100644
index 000000000000..1c35a3f5f16d
--- /dev/null
+++ b/lang/clang-devel/files/patch-tools_clang_lib_Driver_ToolChains.h
@@ -0,0 +1,20 @@
+
+$FreeBSD$
+
+--- tools/clang/lib/Driver/ToolChains.h.orig
++++ tools/clang/lib/Driver/ToolChains.h
+@@ -515,9 +515,14 @@
+ FreeBSD(const Driver &D, const llvm::Triple &Triple,
+ const llvm::opt::ArgList &Args);
+
++ virtual CXXStdlibType GetCXXStdlibType(const llvm::opt::ArgList &Args) const;
++
+ virtual bool IsMathErrnoDefault() const { return false; }
+ virtual bool IsObjCNonFragileABIDefault() const { return true; }
+
++ virtual void AddClangCXXStdlibIncludeArgs(const llvm::opt::ArgList &DriverArgs,
++ llvm::opt::ArgStringList &CC1Args) const;
++
+ virtual bool UseSjLjExceptions() const;
+ protected:
+ virtual Tool *buildAssembler() const;