mirror of
https://github.com/yann64/haikuports.git
synced 2026-04-23 04:00:05 +02:00
clang: fix packaging and headers inclusion.
* clang headers were not included. * the x86_64 target wasn't working as expected, ie missing __HAIKU__, etc. * this recipe should probably be merged with llvm's recipe.
This commit is contained in:
@@ -8,7 +8,7 @@ level tools."
|
||||
HOMEPAGE="http://www.llvm.org/"
|
||||
COPYRIGHT="2003-2012 University of Illinois at Urbana-Champaign"
|
||||
LICENSE="UIUC"
|
||||
REVISION="1"
|
||||
REVISION="2"
|
||||
SOURCE_URI="http://llvm.org/releases/${portVersion}/llvm-${portVersion}.src.tar.xz"
|
||||
SOURCE_URI_2="http://llvm.org/releases/${portVersion}/cfe-${portVersion}.src.tar.xz"
|
||||
SOURCE_URI_3="http://llvm.org/releases/${portVersion}/clang-tools-extra-${portVersion}.src.tar.xz"
|
||||
@@ -27,9 +27,7 @@ PROVIDES="
|
||||
cmd:clang = $portVersion
|
||||
cmd:clang++ = $portVersion
|
||||
cmd:c_index_test = $portVersion
|
||||
lib:libLTO$secondaryArchSuffix = $portVersion
|
||||
lib:libclang$secondaryArchSuffix = $portVersion
|
||||
devel:libLTO$secondaryArchSuffix = $portVersion
|
||||
devel:libclang$secondaryArchSuffix = $portVersion
|
||||
"
|
||||
REQUIRES="
|
||||
@@ -52,6 +50,7 @@ BUILD_PREREQUIRES="
|
||||
cmd:aclocal
|
||||
cmd:autoconf
|
||||
cmd:automake
|
||||
cmd:find
|
||||
cmd:gcc$secondaryArchSuffix
|
||||
cmd:groff
|
||||
cmd:ld$secondaryArchSuffix
|
||||
@@ -87,12 +86,9 @@ INSTALL()
|
||||
mkdir -p $docDir
|
||||
mkdir -p $binDir
|
||||
|
||||
make install-clang PROJ_datadir=$dataDir PROJ_docsdir=$docDir \
|
||||
make -C tools/clang install PROJ_datadir=$dataDir PROJ_docsdir=$docDir \
|
||||
PROJ_mandir=$manDir PROJ_includedir=$includeDir PROJ_libdir=$libDir
|
||||
|
||||
# Remove empty dir that shouldn't be created
|
||||
rmdir $prefix/include
|
||||
|
||||
# Install static analysis tools
|
||||
mkdir -p $developDir/tools/clang$secondaryArchSuffix
|
||||
cp -Ra tools/clang/tools/scan-build $developDir/tools/clang$secondaryArchSuffix/
|
||||
@@ -102,7 +98,7 @@ INSTALL()
|
||||
ln -s $developDir/tools/clang$secondaryArchSuffix/scan-view/scan-view $binDir/scan-view
|
||||
ln -s $binDir/clang $developDir/tools/clang$secondaryArchSuffix/scan-build/clang
|
||||
|
||||
prepareInstalledDevelLibs libclang libLTO
|
||||
prepareInstalledDevelLibs libclang
|
||||
|
||||
# analysis package
|
||||
packageEntries analysis \
|
||||
@@ -114,4 +110,4 @@ INSTALL()
|
||||
TEST()
|
||||
{
|
||||
make check
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,18 +1,15 @@
|
||||
From 3a2476543f16aa2afe5030875bd6c82f3eedfc73 Mon Sep 17 00:00:00 2001
|
||||
From 5cee69285df1bff7c1a8911e2a866457af414f50 Mon Sep 17 00:00:00 2001
|
||||
From: Alexander von Gluck IV <kallisti5@unixzen.com>
|
||||
Date: Sun, 1 Feb 2015 15:13:57 +0000
|
||||
Subject: [PATCH 1/2] haiku: fix header search paths
|
||||
Subject: haiku: fix header search paths
|
||||
|
||||
* /boot/develop no longer exists
|
||||
* /boot/common no longer exists
|
||||
---
|
||||
lib/Frontend/InitHeaderSearch.cpp | 67 ++++++++++++++++++++-------------------
|
||||
1 file changed, 35 insertions(+), 32 deletions(-)
|
||||
|
||||
diff --git a/lib/Frontend/InitHeaderSearch.cpp b/lib/Frontend/InitHeaderSearch.cpp
|
||||
diff --git a/cfe-3.5.1.src/lib/Frontend/InitHeaderSearch.cpp b/cfe-3.5.1.src/lib/Frontend/InitHeaderSearch.cpp
|
||||
index d2edc94..f91346b 100644
|
||||
--- a/lib/Frontend/InitHeaderSearch.cpp
|
||||
+++ b/lib/Frontend/InitHeaderSearch.cpp
|
||||
--- a/cfe-3.5.1.src/lib/Frontend/InitHeaderSearch.cpp
|
||||
+++ b/cfe-3.5.1.src/lib/Frontend/InitHeaderSearch.cpp
|
||||
@@ -271,38 +271,41 @@ void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple,
|
||||
llvm_unreachable("Include management is handled in the driver.");
|
||||
|
||||
@@ -88,21 +85,19 @@ index d2edc94..f91346b 100644
|
||||
case llvm::Triple::RTEMS:
|
||||
break;
|
||||
--
|
||||
1.8.3.4
|
||||
2.2.2
|
||||
|
||||
From 83b0b512f8a6c879338b988da585ba903ff2c504 Mon Sep 17 00:00:00 2001
|
||||
|
||||
From 899e1eb7ee73e55e68c4d139c73e7ddc3859d1c5 Mon Sep 17 00:00:00 2001
|
||||
From: Adrien Destugues <pulkomandy@pulkomandy.tk>
|
||||
Date: Sun, 1 Feb 2015 15:15:45 +0000
|
||||
Subject: [PATCH 2/2] libclang: add soname when building on Haiku.
|
||||
Subject: libclang: add soname when building on Haiku.
|
||||
|
||||
---
|
||||
tools/libclang/Makefile | 2 +-
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
|
||||
diff --git a/tools/libclang/Makefile b/tools/libclang/Makefile
|
||||
diff --git a/cfe-3.5.1.src/tools/libclang/Makefile b/cfe-3.5.1.src/tools/libclang/Makefile
|
||||
index db3d4f8..149f245 100644
|
||||
--- a/tools/libclang/Makefile
|
||||
+++ b/tools/libclang/Makefile
|
||||
--- a/cfe-3.5.1.src/tools/libclang/Makefile
|
||||
+++ b/cfe-3.5.1.src/tools/libclang/Makefile
|
||||
@@ -33,7 +33,7 @@ USEDLIBS = clangIndex.a clangARCMigrate.a \
|
||||
include $(CLANG_LEVEL)/Makefile
|
||||
|
||||
@@ -113,5 +108,195 @@ index db3d4f8..149f245 100644
|
||||
endif
|
||||
|
||||
--
|
||||
1.8.3.4
|
||||
2.2.2
|
||||
|
||||
|
||||
From feedddcc5561774a081fecde1feb292a5a410982 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Duval <jerome.duval@gmail.com>
|
||||
Date: Tue, 22 Dec 2015 22:07:06 +0000
|
||||
Subject: don't include c++ headers in C include search paths.
|
||||
|
||||
* define a Haiku toolchain, and add c++ headers path.
|
||||
|
||||
diff --git a/cfe-3.5.1.src/lib/Driver/Driver.cpp b/cfe-3.5.1.src/lib/Driver/Driver.cpp
|
||||
index ef26bfa..ca1f4c4 100644
|
||||
--- a/cfe-3.5.1.src/lib/Driver/Driver.cpp
|
||||
+++ b/cfe-3.5.1.src/lib/Driver/Driver.cpp
|
||||
@@ -1982,6 +1982,9 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
|
||||
case llvm::Triple::Solaris:
|
||||
TC = new toolchains::Solaris(*this, Target, Args);
|
||||
break;
|
||||
+ case llvm::Triple::Haiku:
|
||||
+ TC = new toolchains::Haiku(*this, Target, Args);
|
||||
+ break;
|
||||
case llvm::Triple::Win32:
|
||||
switch (Target.getEnvironment()) {
|
||||
default:
|
||||
diff --git a/cfe-3.5.1.src/lib/Driver/ToolChains.cpp b/cfe-3.5.1.src/lib/Driver/ToolChains.cpp
|
||||
index b46f69d..0701013 100644
|
||||
--- a/cfe-3.5.1.src/lib/Driver/ToolChains.cpp
|
||||
+++ b/cfe-3.5.1.src/lib/Driver/ToolChains.cpp
|
||||
@@ -2429,6 +2429,34 @@ bool TCEToolChain::isPICDefaultForced() const {
|
||||
return false;
|
||||
}
|
||||
|
||||
+/// Haiku - Haiku tool chain which can call as(1) and ld(1) directly.
|
||||
+
|
||||
+Haiku::Haiku(const Driver &D, const llvm::Triple& Triple, const ArgList &Args)
|
||||
+ : Generic_ELF(D, Triple, Args) {
|
||||
+
|
||||
+}
|
||||
+
|
||||
+void Haiku::AddClangCXXStdlibIncludeArgs(const ArgList &DriverArgs,
|
||||
+ ArgStringList &CC1Args) const {
|
||||
+ if (DriverArgs.hasArg(options::OPT_nostdlibinc) ||
|
||||
+ DriverArgs.hasArg(options::OPT_nostdincxx))
|
||||
+ return;
|
||||
+
|
||||
+ switch (GetCXXStdlibType(DriverArgs)) {
|
||||
+ case ToolChain::CST_Libstdcxx:
|
||||
+ addSystemInclude(DriverArgs, CC1Args,
|
||||
+ getDriver().SysRoot + "/system/develop/headers/c++");
|
||||
+ addSystemInclude(DriverArgs, CC1Args,
|
||||
+ getDriver().SysRoot + "/system/develop/headers/c++/backward");
|
||||
+
|
||||
+ StringRef Triple = getTriple().str();
|
||||
+ addSystemInclude(DriverArgs, CC1Args,
|
||||
+ getDriver().SysRoot + "/system/develop/headers/c++/" +
|
||||
+ Triple);
|
||||
+ break;
|
||||
+ }
|
||||
+}
|
||||
+
|
||||
/// OpenBSD - OpenBSD tool chain which can call as(1) and ld(1) directly.
|
||||
|
||||
OpenBSD::OpenBSD(const Driver &D, const llvm::Triple& Triple, const ArgList &Args)
|
||||
diff --git a/cfe-3.5.1.src/lib/Driver/ToolChains.h b/cfe-3.5.1.src/lib/Driver/ToolChains.h
|
||||
index b5df866..add465d 100644
|
||||
--- a/cfe-3.5.1.src/lib/Driver/ToolChains.h
|
||||
+++ b/cfe-3.5.1.src/lib/Driver/ToolChains.h
|
||||
@@ -528,6 +528,17 @@ protected:
|
||||
|
||||
};
|
||||
|
||||
+class LLVM_LIBRARY_VISIBILITY Haiku : public Generic_ELF {
|
||||
+public:
|
||||
+ Haiku(const Driver &D, const llvm::Triple &Triple,
|
||||
+ const llvm::opt::ArgList &Args);
|
||||
+
|
||||
+ bool isPIEDefault() const override { return getTriple().getArch() == llvm::Triple::x86_64; }
|
||||
+
|
||||
+ void
|
||||
+ AddClangCXXStdlibIncludeArgs(const llvm::opt::ArgList &DriverArgs,
|
||||
+ llvm::opt::ArgStringList &CC1Args) const override;
|
||||
+};
|
||||
|
||||
class LLVM_LIBRARY_VISIBILITY OpenBSD : public Generic_ELF {
|
||||
public:
|
||||
diff --git a/cfe-3.5.1.src/lib/Frontend/InitHeaderSearch.cpp b/cfe-3.5.1.src/lib/Frontend/InitHeaderSearch.cpp
|
||||
index f91346b..f778752 100644
|
||||
--- a/cfe-3.5.1.src/lib/Frontend/InitHeaderSearch.cpp
|
||||
+++ b/cfe-3.5.1.src/lib/Frontend/InitHeaderSearch.cpp
|
||||
@@ -299,8 +299,6 @@ void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple,
|
||||
AddPath("/boot/system/develop/headers/os/be_apps/Deskbar", System, false);
|
||||
AddPath("/boot/system/develop/headers/os/be_apps/NetPositive", System, false);
|
||||
AddPath("/boot/system/develop/headers/os/be_apps/Tracker", System, false);
|
||||
- AddPath("/boot/system/develop/headers/cpp", System, false);
|
||||
- AddPath("/boot/system/develop/headers/cpp/i586-pc-haiku", System, false);
|
||||
AddPath("/boot/system/develop/headers/3rdparty", System, false);
|
||||
AddPath("/boot/system/develop/headers/bsd", System, false);
|
||||
AddPath("/boot/system/develop/headers/glibc", System, false);
|
||||
--
|
||||
2.2.2
|
||||
|
||||
|
||||
From b04cceb968495b02dd32d305fca9769f22c02bc3 Mon Sep 17 00:00:00 2001
|
||||
From: Jerome Duval <jerome.duval@gmail.com>
|
||||
Date: Thu, 14 Jan 2016 19:19:14 +0000
|
||||
Subject: add Haiku target info for x86_64
|
||||
|
||||
|
||||
diff --git a/cfe-3.5.1.src/lib/Basic/Targets.cpp b/cfe-3.5.1.src/lib/Basic/Targets.cpp
|
||||
index 075f905..09a4776 100644
|
||||
--- a/cfe-3.5.1.src/lib/Basic/Targets.cpp
|
||||
+++ b/cfe-3.5.1.src/lib/Basic/Targets.cpp
|
||||
@@ -320,6 +320,30 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
+// Haiku Target
|
||||
+template<typename Target>
|
||||
+class HaikuTargetInfo : public OSTargetInfo<Target> {
|
||||
+protected:
|
||||
+ void getOSDefines(const LangOptions &Opts, const llvm::Triple &Triple,
|
||||
+ MacroBuilder &Builder) const override {
|
||||
+ // Haiku defines; list based off of gcc output
|
||||
+ Builder.defineMacro("__HAIKU__");
|
||||
+ Builder.defineMacro("__ELF__");
|
||||
+ DefineStd(Builder, "unix", Opts);
|
||||
+ }
|
||||
+public:
|
||||
+ HaikuTargetInfo(const llvm::Triple &Triple)
|
||||
+ : OSTargetInfo<Target>(Triple) {
|
||||
+ this->SizeType = TargetInfo::UnsignedLong;
|
||||
+ this->IntPtrType = TargetInfo::SignedLong;
|
||||
+ this->PtrDiffType = TargetInfo::SignedLong;
|
||||
+ this->ProcessIDType = TargetInfo::SignedLong;
|
||||
+ this->TLSSupported = false;
|
||||
+ this->UserLabelPrefix = "";
|
||||
+
|
||||
+ }
|
||||
+};
|
||||
+
|
||||
// Minix Target
|
||||
template<typename Target>
|
||||
class MinixTargetInfo : public OSTargetInfo<Target> {
|
||||
@@ -3210,27 +3234,6 @@ public:
|
||||
};
|
||||
} // end anonymous namespace
|
||||
|
||||
-namespace {
|
||||
-// x86-32 Haiku target
|
||||
-class HaikuX86_32TargetInfo : public X86_32TargetInfo {
|
||||
-public:
|
||||
- HaikuX86_32TargetInfo(const llvm::Triple &Triple) : X86_32TargetInfo(Triple) {
|
||||
- SizeType = UnsignedLong;
|
||||
- IntPtrType = SignedLong;
|
||||
- PtrDiffType = SignedLong;
|
||||
- ProcessIDType = SignedLong;
|
||||
- this->UserLabelPrefix = "";
|
||||
- this->TLSSupported = false;
|
||||
- }
|
||||
- void getTargetDefines(const LangOptions &Opts,
|
||||
- MacroBuilder &Builder) const override {
|
||||
- X86_32TargetInfo::getTargetDefines(Opts, Builder);
|
||||
- Builder.defineMacro("__INTEL__");
|
||||
- Builder.defineMacro("__HAIKU__");
|
||||
- }
|
||||
-};
|
||||
-} // end anonymous namespace
|
||||
-
|
||||
// RTEMS Target
|
||||
template<typename Target>
|
||||
class RTEMSTargetInfo : public OSTargetInfo<Target> {
|
||||
@@ -6321,7 +6324,7 @@ static TargetInfo *AllocateTarget(const llvm::Triple &Triple) {
|
||||
}
|
||||
}
|
||||
case llvm::Triple::Haiku:
|
||||
- return new HaikuX86_32TargetInfo(Triple);
|
||||
+ return new HaikuTargetInfo<X86_32TargetInfo>(Triple);
|
||||
case llvm::Triple::RTEMS:
|
||||
return new RTEMSX86_32TargetInfo(Triple);
|
||||
case llvm::Triple::NaCl:
|
||||
@@ -6363,6 +6366,8 @@ static TargetInfo *AllocateTarget(const llvm::Triple &Triple) {
|
||||
return new MicrosoftX86_64TargetInfo(Triple);
|
||||
}
|
||||
}
|
||||
+ case llvm::Triple::Haiku:
|
||||
+ return new HaikuTargetInfo<X86_64TargetInfo>(Triple);
|
||||
case llvm::Triple::NaCl:
|
||||
return new NaClTargetInfo<X86_64TargetInfo>(Triple);
|
||||
default:
|
||||
--
|
||||
2.2.2
|
||||
|
||||
|
||||
Reference in New Issue
Block a user