llvm: add recipe for 3.9.0 git version.

This commit is contained in:
Jerome Duval
2016-01-31 16:46:50 +00:00
parent 3997f345e9
commit 77246f536d
3 changed files with 1008 additions and 0 deletions

View File

@@ -0,0 +1,393 @@
SUMMARY="Modular and reuseable compiler and toolchain technologies"
DESCRIPTION="LLVM is a collection of modular and reuseable compiler and and \
toolchain technologies.The LLVM compiler system for C and C++ includes the \
following:
- Front-ends for C, C++, Objective-C, Fortran, etc. based on the GCC 4.2 \
parsers. They support the ANSI-standard C and C++ languages to the same \
degree that GCC supports them. Additionally, many GCC extensions are \
supported.
- A stable implementation of the LLVM instruction set, which serves as both \
the online and offline code representation, together with assembly (ASCII) \
and bytecode (binary) readers and writers, and a verifier.
- A powerful pass-management system that automatically sequences passes \
(including analysis, transformation, and code-generation passes) based on \
their dependences, and pipelines them for efficiency.
- A wide range of global scalar optimizations.
- A link-time interprocedural optimization framework with a rich set of \
analyses and transformations, including sophisticated whole-program pointer \
analysis, call graph construction, and support for profile-guided optimizations.
- An easily retargettable code generator, which currently supports X86, \
X86-64, PowerPC, PowerPC-64, ARM, Thumb, SPARC, Alpha, CellSPU, MIPS, MSP430, \
SystemZ, and XCore.
- A Just-In-Time (JIT) code generation system, which currently supports X86, \
X86-64, ARM, AArch64, Mips, SystemZ, PowerPC, and PowerPC-64.
- Support for generating DWARF debugging information.
- A C back-end useful for testing and for generating native code on targets \
other than the ones listed above.
- A profiling system similar to gprof.
- A test framework with a number of benchmark codes and applications.
- APIs and debugging tools to simplify rapid development of LLVM components."
HOMEPAGE="http://www.llvm.org/"
COPYRIGHT="2003-2014 University of Illinois at Urbana-Champaign"
LICENSE="UIUC"
REVISION="1"
llvmSrcGitRev="79c213f615de77eb4b72279e2e3f654a977462ab"
clangSrcGitRev="1f64ddbc4c5d1036b68ec896765a7535537ded85"
clangToolsExtraSrcGitRev="a66cd9b490807894b8176309607f15c92e52d1eb"
SOURCE_URI="https://github.com/llvm-mirror/llvm/archive/$llvmSrcGitRev.tar.gz"
SOURCE_URI_2="https://github.com/llvm-mirror/clang/archive/$clangSrcGitRev.tar.gz"
SOURCE_URI_3="https://github.com/llvm-mirror/clang-tools-extra/archive/$clangToolsExtraSrcGitRev.tar.gz"
SOURCE_FILENAME="llvm-${llvmSrcGitRev}.tar.gz"
SOURCE_FILENAME_2="clang-${clangSrcGitRev}.tar.gz"
SOURCE_FILENAME_3="clang-tools-extra-${clangToolsExtraSrcGitRev}.tar.gz"
CHECKSUM_SHA256="7d4e4c1e9180dd4d85ba650fac2f3835a6b04a6a061d45fd03df730a9b8fc954"
CHECKSUM_SHA256_2="9853dd85e4322de5429c75cd9d560cc0c2e76141a9fed34715da45b6eac1ca26"
CHECKSUM_SHA256_3="c2f27f9c23f3992c903ea195f47d07ce7d8fad59812656289d8ddcd1ae82f24f"
SOURCE_DIR="llvm-$llvmSrcGitRev"
SOURCE_DIR_2="clang-$clangSrcGitRev"
SOURCE_DIR_3="clang-tools-extra-$clangToolsExtraSrcGitRev"
PATCHES="llvm-${portVersion}.patchset"
PATCHES_2="clang-${portVersion}.patchset"
ARCHITECTURES="!x86_gcc2 ?x86 ?x86_64"
SECONDARY_ARCHITECTURES="?x86"
PROVIDES="
llvm$secondaryArchSuffix = $portVersion
cmd:bugpoint
cmd:llc
cmd:lli
cmd:lli_child_target
cmd:llvm_ar
cmd:llvm_as
cmd:llvm_bcanalyzer
cmd:llvm_c_test
cmd:llvm_config
cmd:llvm_cov
cmd:llvm_cxxdump
cmd:llvm_diff
cmd:llvm_dis
cmd:llvm_dsymutil
cmd:llvm_dwarfdump
cmd:llvm_dwp
cmd:llvm_extract
cmd:llvm_lib
cmd:llvm_link
cmd:llvm_lto
cmd:llvm_mc
cmd:llvm_mcmarkup
cmd:llvm_nm
cmd:llvm_objdump
cmd:llvm_pdbdump
cmd:llvm_profdata
cmd:llvm_ranlib
cmd:llvm_readobj
cmd:llvm_rtdyld
cmd:llvm_size
cmd:llvm_split
cmd:llvm_stress
cmd:llvm_symbolizer
cmd:llvm_tblgen
cmd:macho_dump
cmd:verify_uselistorder
cmd:obj2yaml
cmd:yaml2obj
cmd:opt
cmd:FileCheck
cmd:count
cmd:not
cmd:sancov
lib:BugpointPasses$secondaryArchSuffix
lib:LLVMHello$secondaryArchSuffix
lib:libLTO$secondaryArchSuffix
devel:libLLVMAArch64AsmParser$secondaryArchSuffix
devel:libLLVMAArch64AsmPrinter$secondaryArchSuffix
devel:libLLVMAArch64CodeGen$secondaryArchSuffix
devel:libLLVMAArch64Desc$secondaryArchSuffix
devel:libLLVMAArch64Disassembler$secondaryArchSuffix
devel:libLLVMAArch64Info$secondaryArchSuffix
devel:libLLVMAArch64Utils$secondaryArchSuffix
devel:libLLVMAMDGPUAsmParser$secondaryArchSuffix
devel:libLLVMAMDGPUAsmPrinter$secondaryArchSuffix
devel:libLLVMAMDGPUCodeGen$secondaryArchSuffix
devel:libLLVMAMDGPUDesc$secondaryArchSuffix
devel:libLLVMAMDGPUInfo$secondaryArchSuffix
devel:libLLVMAMDGPUUtils$secondaryArchSuffix
devel:libLLVMARMAsmParser$secondaryArchSuffix
devel:libLLVMARMAsmPrinter$secondaryArchSuffix
devel:libLLVMARMCodeGen$secondaryArchSuffix
devel:libLLVMARMDesc$secondaryArchSuffix
devel:libLLVMARMDisassembler$secondaryArchSuffix
devel:libLLVMARMInfo$secondaryArchSuffix
devel:libLLVMAnalysis$secondaryArchSuffix
devel:libLLVMAsmParser$secondaryArchSuffix
devel:libLLVMAsmPrinter$secondaryArchSuffix
devel:libLLVMBPFAsmPrinter$secondaryArchSuffix
devel:libLLVMBPFCodeGen$secondaryArchSuffix
devel:libLLVMBPFDesc$secondaryArchSuffix
devel:libLLVMBPFInfo$secondaryArchSuffix
devel:libLLVMBitReader$secondaryArchSuffix
devel:libLLVMBitWriter$secondaryArchSuffix
devel:libLLVMCodeGen$secondaryArchSuffix
devel:libLLVMCore$secondaryArchSuffix
devel:libLLVMCppBackendCodeGen$secondaryArchSuffix
devel:libLLVMCppBackendInfo$secondaryArchSuffix
devel:libLLVMDebugInfoCodeView$secondaryArchSuffix
devel:libLLVMDebugInfoDWARF$secondaryArchSuffix
devel:libLLVMDebugInfoPDB$secondaryArchSuffix
devel:libLLVMExecutionEngine$secondaryArchSuffix
devel:libLLVMHexagonAsmParser$secondaryArchSuffix
devel:libLLVMHexagonCodeGen$secondaryArchSuffix
devel:libLLVMHexagonDesc$secondaryArchSuffix
devel:libLLVMHexagonDisassembler$secondaryArchSuffix
devel:libLLVMHexagonInfo$secondaryArchSuffix
devel:libLLVMIRReader$secondaryArchSuffix
devel:libLLVMInstCombine$secondaryArchSuffix
devel:libLLVMInstrumentation$secondaryArchSuffix
devel:libLLVMInterpreter$secondaryArchSuffix
devel:libLLVMLTO$secondaryArchSuffix
devel:libLLVMLibDriver$secondaryArchSuffix
devel:libLLVMLineEditor$secondaryArchSuffix
devel:libLLVMLinker$secondaryArchSuffix
devel:libLLVMMC$secondaryArchSuffix
devel:libLLVMMCDisassembler$secondaryArchSuffix
devel:libLLVMMCJIT$secondaryArchSuffix
devel:libLLVMMCParser$secondaryArchSuffix
devel:libLLVMMIRParser$secondaryArchSuffix
devel:libLLVMMSP430AsmPrinter$secondaryArchSuffix
devel:libLLVMMSP430CodeGen$secondaryArchSuffix
devel:libLLVMMSP430Desc$secondaryArchSuffix
devel:libLLVMMSP430Info$secondaryArchSuffix
devel:libLLVMMipsAsmParser$secondaryArchSuffix
devel:libLLVMMipsAsmPrinter$secondaryArchSuffix
devel:libLLVMMipsCodeGen$secondaryArchSuffix
devel:libLLVMMipsDesc$secondaryArchSuffix
devel:libLLVMMipsDisassembler$secondaryArchSuffix
devel:libLLVMMipsInfo$secondaryArchSuffix
devel:libLLVMNVPTXAsmPrinter$secondaryArchSuffix
devel:libLLVMNVPTXCodeGen$secondaryArchSuffix
devel:libLLVMNVPTXDesc$secondaryArchSuffix
devel:libLLVMNVPTXInfo$secondaryArchSuffix
devel:libLLVMObjCARCOpts$secondaryArchSuffix
devel:libLLVMObject$secondaryArchSuffix
devel:libLLVMOption$secondaryArchSuffix
devel:libLLVMOrcJIT$secondaryArchSuffix
devel:libLLVMPasses$secondaryArchSuffix
devel:libLLVMPowerPCAsmParser$secondaryArchSuffix
devel:libLLVMPowerPCAsmPrinter$secondaryArchSuffix
devel:libLLVMPowerPCCodeGen$secondaryArchSuffix
devel:libLLVMPowerPCDesc$secondaryArchSuffix
devel:libLLVMPowerPCDisassembler$secondaryArchSuffix
devel:libLLVMPowerPCInfo$secondaryArchSuffix
devel:libLLVMProfileData$secondaryArchSuffix
devel:libLLVMRuntimeDyld$secondaryArchSuffix
devel:libLLVMScalarOpts$secondaryArchSuffix
devel:libLLVMSelectionDAG$secondaryArchSuffix
devel:libLLVMSparcAsmParser$secondaryArchSuffix
devel:libLLVMSparcAsmPrinter$secondaryArchSuffix
devel:libLLVMSparcCodeGen$secondaryArchSuffix
devel:libLLVMSparcDesc$secondaryArchSuffix
devel:libLLVMSparcDisassembler$secondaryArchSuffix
devel:libLLVMSparcInfo$secondaryArchSuffix
devel:libLLVMSupport$secondaryArchSuffix
devel:libLLVMSymbolize$secondaryArchSuffix
devel:libLLVMSystemZAsmParser$secondaryArchSuffix
devel:libLLVMSystemZAsmPrinter$secondaryArchSuffix
devel:libLLVMSystemZCodeGen$secondaryArchSuffix
devel:libLLVMSystemZDesc$secondaryArchSuffix
devel:libLLVMSystemZDisassembler$secondaryArchSuffix
devel:libLLVMSystemZInfo$secondaryArchSuffix
devel:libLLVMTableGen$secondaryArchSuffix
devel:libLLVMTarget$secondaryArchSuffix
devel:libLLVMTransformUtils$secondaryArchSuffix
devel:libLLVMVectorize$secondaryArchSuffix
devel:libLLVMX86AsmParser$secondaryArchSuffix
devel:libLLVMX86AsmPrinter$secondaryArchSuffix
devel:libLLVMX86CodeGen$secondaryArchSuffix
devel:libLLVMX86Desc$secondaryArchSuffix
devel:libLLVMX86Disassembler$secondaryArchSuffix
devel:libLLVMX86Info$secondaryArchSuffix
devel:libLLVMX86Utils$secondaryArchSuffix
devel:libLLVMXCoreAsmPrinter$secondaryArchSuffix
devel:libLLVMXCoreCodeGen$secondaryArchSuffix
devel:libLLVMXCoreDesc$secondaryArchSuffix
devel:libLLVMXCoreDisassembler$secondaryArchSuffix
devel:libLLVMXCoreInfo$secondaryArchSuffix
devel:libLLVMipo$secondaryArchSuffix
devel:libLTO$secondaryArchSuffix
"
REQUIRES="
haiku$secondaryArchSuffix
lib:libz$secondaryArchSuffix
"
PROVIDES_clang="
llvm${secondaryArchSuffix}_clang = $portVersion
cmd:clang = $portVersion
cmd:clang_3.9 = $portVersion
cmd:clang++ = $portVersion
cmd:clang_apply_replacements = $portVersion
cmd:clang_check = $portVersion
cmd:clang_cl = $portVersion
cmd:clang_format = $portVersion
cmd:clang_modernize = $portVersion
cmd:clang_query = $portVersion
cmd:clang_rename = $portVersion
cmd:clang_tblgen = $portVersion
cmd:clang_tidy = $portVersion
cmd:c_index_test = $portVersion
cmd:git_clang_format = $portVersion
cmd:modularize = $portVersion
lib:libclang$secondaryArchSuffix = $portVersion
devel:libclang$secondaryArchSuffix = $portVersion
devel:libclangarcmigrate$secondaryArchSuffix = $portVersion
devel:libclangast$secondaryArchSuffix = $portVersion
devel:libclangastmatchers$secondaryArchSuffix = $portVersion
devel:libclanganalysis$secondaryArchSuffix = $portVersion
devel:libclangapplyreplacements$secondaryArchSuffix = $portVersion
devel:libclangbasic$secondaryArchSuffix = $portVersion
devel:libclangcodegen$secondaryArchSuffix = $portVersion
devel:libclangdriver$secondaryArchSuffix = $portVersion
devel:libclangdynamicastmatchers$secondaryArchSuffix = $portVersion
devel:libclangedit$secondaryArchSuffix = $portVersion
devel:libclangformat$secondaryArchSuffix = $portVersion
devel:libclangfrontend$secondaryArchSuffix = $portVersion
devel:libclangfrontendtool$secondaryArchSuffix = $portVersion
devel:libclangindex$secondaryArchSuffix = $portVersion
devel:libclanglex$secondaryArchSuffix = $portVersion
devel:libclangparse$secondaryArchSuffix = $portVersion
devel:libclangquery$secondaryArchSuffix = $portVersion
devel:libclangrename$secondaryArchSuffix = $portVersion
devel:libclangrewrite$secondaryArchSuffix = $portVersion
devel:libclangrewritefrontend$secondaryArchSuffix = $portVersion
devel:libclangsema$secondaryArchSuffix = $portVersion
devel:libclangserialization$secondaryArchSuffix = $portVersion
devel:libclangstaticanalyzercheckers$secondaryArchSuffix = $portVersion
devel:libclangstaticanalyzercore$secondaryArchSuffix = $portVersion
devel:libclangstaticanalyzerfrontend$secondaryArchSuffix = $portVersion
devel:libclangtidy$secondaryArchSuffix = $portVersion
devel:libclangtidycertmodule$secondaryArchSuffix = $portVersion
devel:libclangtidycppcoreguidelinesmodule$secondaryArchSuffix = $portVersion
devel:libclangtidygooglemodule$secondaryArchSuffix = $portVersion
devel:libclangtidyllvmmodule$secondaryArchSuffix = $portVersion
devel:libclangtidymiscmodule$secondaryArchSuffix = $portVersion
devel:libclangtidymodernizemodule$secondaryArchSuffix = $portVersion
devel:libclangtidyperformancemodule$secondaryArchSuffix = $portVersion
devel:libclangtidyreadability$secondaryArchSuffix = $portVersion
devel:libclangtidyreadabilitymodule$secondaryArchSuffix = $portVersion
devel:libclangtidyutils$secondaryArchSuffix = $portVersion
devel:libclangtooling$secondaryArchSuffix = $portVersion
devel:libclangtoolingcore$secondaryArchSuffix = $portVersion
"
REQUIRES_clang="
haiku$secondaryArchSuffix
lib:libz$secondaryArchSuffix
"
PROVIDES_clang_analysis="
llvm${secondaryArchSuffix}_clang_analysis = $portVersion
cmd:c++_analyzer$secondaryArchSuffix = $portVersion
cmd:ccc_analyzer$secondaryArchSuffix = $portVersion
cmd:scan_build$secondaryArchSuffix = $portVersion
cmd:scan_view$secondaryArchSuffix = $portVersion
"
REQUIRES_clang_analysis="
llvm${secondaryArchSuffix}_clang == $portVersion base
cmd:python
"
BUILD_REQUIRES="
haiku${secondaryArchSuffix}_devel
devel:libz$secondaryArchSuffix
"
BUILD_PREREQUIRES="
cmd:cmake
cmd:find
cmd:gcc$secondaryArchSuffix
cmd:groff
cmd:ld$secondaryArchSuffix
cmd:make
cmd:python
cmd:sed
cmd:grep
"
BUILD()
{
# Add clang tools
mkdir -p tools/clang
cp -rd $sourceDir2/* tools/clang/
# Add clang tools's tool's (really llvm?)
mkdir -p tools/clang/tools/extra
cp -rd $sourceDir3/* tools/clang/tools/extra
mkdir -p build; cd build
# Haiku C++ requires rtti in a lot of central system components
# such as Mesa
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=$prefix \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_ENABLE_THREADS=NO \
..
make $jobArgs PROJ_datadir=$dataDir PROJ_docsdir=$docDir \
PROJ_mandir=$manDir PROJ_includedir=$includeDir PROJ_libdir=$libDir
}
INSTALL()
{
cd build
mkdir -p $binDir $developDir $dataDir $docDir $includeDir $manDir
make install PROJ_datadir=$dataDir PROJ_docsdir=$docDir \
PROJ_mandir=$manDir PROJ_includedir=$includeDir PROJ_libdir=$libDir
# You can try and be fancy here parsing each arch in a for loop... but
# not all arches contain the same libraries. The inventory for each arch
# also changes between releases... so lets KISS.
prepareInstalledDevelLibs \
libLLVM* \
libLTO
make -C tools/clang install PROJ_datadir=$dataDir PROJ_docsdir=$docDir \
PROJ_mandir=$manDir PROJ_includedir=$includeDir PROJ_libdir=$libDir
prepareInstalledDevelLibs libclang*
mv $prefix/include/* $includeDir/
mv $prefix/libexec/* $binDir/
mv $prefix/share/man/* $manDir/
mv $prefix/share/clang $dataDir/
mv $prefix/share/llvm $dataDir/
mv $prefix/share/scan-build $dataDir/
mv $prefix/share/scan-view $dataDir/
rmdir $prefix/include $prefix/libexec $prefix/share/man
sed -i 's|/libexec/|/bin/|' $binDir/scan-build
sed -i 's|/share/|/data/|' $binDir/scan-build $binDir/scan-view
# clang package
packageEntries clang \
$binDir/c-index-test \
$binDir/clang* \
$binDir/git-clang-format \
$binDir/modularize \
$dataDir/clang \
$includeDir/clang* \
$libDir/libclang* \
$libDir/clang \
$developLibDir/libclang*
# analysis package
packageEntries clang_analysis \
$binDir/scan-build \
$binDir/scan-view \
$binDir/c++-analyzer \
$binDir/ccc-analyzer \
$dataDir/scan-build \
$dataDir/scan-view \
$manDir/man1/scan-build.1
}
TEST()
{
make check
}

View File

@@ -0,0 +1,278 @@
From 70b3ba03bcb82e0fd4e4220a2a085ac1a93c5927 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: haiku: fix header search paths
* /boot/develop no longer exists
* /boot/common no longer exists
diff --git a/lib/Frontend/InitHeaderSearch.cpp b/lib/Frontend/InitHeaderSearch.cpp
index 26bab0d..6066d2b 100644
--- a/lib/Frontend/InitHeaderSearch.cpp
+++ b/lib/Frontend/InitHeaderSearch.cpp
@@ -267,38 +267,41 @@ void InitHeaderSearch::AddDefaultCIncludePaths(const llvm::Triple &triple,
}
case llvm::Triple::Haiku:
- AddPath("/boot/common/include", System, false);
- AddPath("/boot/develop/headers/os", System, false);
- AddPath("/boot/develop/headers/os/app", System, false);
- AddPath("/boot/develop/headers/os/arch", System, false);
- AddPath("/boot/develop/headers/os/device", System, false);
- AddPath("/boot/develop/headers/os/drivers", System, false);
- AddPath("/boot/develop/headers/os/game", System, false);
- AddPath("/boot/develop/headers/os/interface", System, false);
- AddPath("/boot/develop/headers/os/kernel", System, false);
- AddPath("/boot/develop/headers/os/locale", System, false);
- AddPath("/boot/develop/headers/os/mail", System, false);
- AddPath("/boot/develop/headers/os/media", System, false);
- AddPath("/boot/develop/headers/os/midi", System, false);
- AddPath("/boot/develop/headers/os/midi2", System, false);
- AddPath("/boot/develop/headers/os/net", System, false);
- AddPath("/boot/develop/headers/os/storage", System, false);
- AddPath("/boot/develop/headers/os/support", System, false);
- AddPath("/boot/develop/headers/os/translation", System, false);
- AddPath("/boot/develop/headers/os/add-ons/graphics", System, false);
- AddPath("/boot/develop/headers/os/add-ons/input_server", System, false);
- AddPath("/boot/develop/headers/os/add-ons/screen_saver", System, false);
- AddPath("/boot/develop/headers/os/add-ons/tracker", System, false);
- AddPath("/boot/develop/headers/os/be_apps/Deskbar", System, false);
- AddPath("/boot/develop/headers/os/be_apps/NetPositive", System, false);
- AddPath("/boot/develop/headers/os/be_apps/Tracker", System, false);
- AddPath("/boot/develop/headers/cpp", System, false);
- AddPath("/boot/develop/headers/cpp/i586-pc-haiku", System, false);
- AddPath("/boot/develop/headers/3rdparty", System, false);
- AddPath("/boot/develop/headers/bsd", System, false);
- AddPath("/boot/develop/headers/glibc", System, false);
- AddPath("/boot/develop/headers/posix", System, false);
- AddPath("/boot/develop/headers", System, false);
+ AddPath("/boot/system/non-packaged/develop/headers", System, false);
+ AddPath("/boot/system/develop/headers/os", System, false);
+ AddPath("/boot/system/develop/headers/os/app", System, false);
+ AddPath("/boot/system/develop/headers/os/arch", System, false);
+ AddPath("/boot/system/develop/headers/os/device", System, false);
+ AddPath("/boot/system/develop/headers/os/drivers", System, false);
+ AddPath("/boot/system/develop/headers/os/game", System, false);
+ AddPath("/boot/system/develop/headers/os/interface", System, false);
+ AddPath("/boot/system/develop/headers/os/kernel", System, false);
+ AddPath("/boot/system/develop/headers/os/locale", System, false);
+ AddPath("/boot/system/develop/headers/os/mail", System, false);
+ AddPath("/boot/system/develop/headers/os/media", System, false);
+ AddPath("/boot/system/develop/headers/os/midi", System, false);
+ AddPath("/boot/system/develop/headers/os/midi2", System, false);
+ AddPath("/boot/system/develop/headers/os/net", System, false);
+ AddPath("/boot/system/develop/headers/os/opengl", System, false);
+ AddPath("/boot/system/develop/headers/os/storage", System, false);
+ AddPath("/boot/system/develop/headers/os/support", System, false);
+ AddPath("/boot/system/develop/headers/os/translation", System, false);
+ AddPath("/boot/system/develop/headers/os/add-ons/graphics", System, false);
+ AddPath("/boot/system/develop/headers/os/add-ons/input_server", System, false);
+ AddPath("/boot/system/develop/headers/os/add-ons/mail_daemon", System, false);
+ AddPath("/boot/system/develop/headers/os/add-ons/registrar", System, false);
+ AddPath("/boot/system/develop/headers/os/add-ons/screen_saver", System, false);
+ AddPath("/boot/system/develop/headers/os/add-ons/tracker", System, false);
+ 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);
+ AddPath("/boot/system/develop/headers/posix", System, false);
+ AddPath("/boot/system/develop/headers", System, false);
break;
case llvm::Triple::RTEMS:
break;
--
2.2.2
From ebe103791980578644ada1df702424e9ed75b752 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/lib/Driver/Driver.cpp b/lib/Driver/Driver.cpp
index 22eed5c..c53a341 100644
--- a/lib/Driver/Driver.cpp
+++ b/lib/Driver/Driver.cpp
@@ -2260,6 +2260,9 @@ const ToolChain &Driver::getToolChain(const ArgList &Args,
ToolChain *&TC = ToolChains[Target.str()];
if (!TC) {
switch (Target.getOS()) {
+ case llvm::Triple::Haiku:
+ TC = new toolchains::Haiku(*this, Target, Args);
+ break;
case llvm::Triple::CloudABI:
TC = new toolchains::CloudABI(*this, Target, Args);
break;
diff --git a/lib/Driver/ToolChains.cpp b/lib/Driver/ToolChains.cpp
index 45cd8bd..2bf12f5 100644
--- a/lib/Driver/ToolChains.cpp
+++ b/lib/Driver/ToolChains.cpp
@@ -2980,6 +2980,34 @@ Tool *CloudABI::buildLinker() const {
return new tools::cloudabi::Linker(*this);
}
+/// 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,
diff --git a/lib/Driver/ToolChains.h b/lib/Driver/ToolChains.h
index a5f5473..cce2406 100644
--- a/lib/Driver/ToolChains.h
+++ b/lib/Driver/ToolChains.h
@@ -670,6 +670,18 @@ private:
void findGccLibDir();
};
+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:
OpenBSD(const Driver &D, const llvm::Triple &Triple,
diff --git a/lib/Frontend/InitHeaderSearch.cpp b/lib/Frontend/InitHeaderSearch.cpp
index 6066d2b..d8f0881 100644
--- a/lib/Frontend/InitHeaderSearch.cpp
+++ b/lib/Frontend/InitHeaderSearch.cpp
@@ -295,8 +295,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 6098ac112772786f873ef6961c8337318ffe7161 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/lib/Basic/Targets.cpp b/lib/Basic/Targets.cpp
index d75aa3e..6ff5ada 100644
--- a/lib/Basic/Targets.cpp
+++ b/lib/Basic/Targets.cpp
@@ -373,6 +373,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> {
@@ -3874,25 +3898,6 @@ public:
}
};
-// 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__");
- }
-};
-
// X86-32 MCU target
class MCUX86_32TargetInfo : public X86_32TargetInfo {
public:
@@ -7847,7 +7852,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:
@@ -7898,6 +7903,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);
case llvm::Triple::PS4:
--
2.2.2

View File

@@ -0,0 +1,337 @@
From f8f5011cb888276d69e9b906049d3db4bca7d9df Mon Sep 17 00:00:00 2001
From: Alexander von Gluck IV <kallisti5@unixzen.com>
Date: Wed, 22 Jan 2014 05:04:31 +0000
Subject: haiku: fix Host.h for endian.h
diff --git a/include/llvm/Support/Host.h b/include/llvm/Support/Host.h
index 8f4bf3c..8114f9b 100644
--- a/include/llvm/Support/Host.h
+++ b/include/llvm/Support/Host.h
@@ -16,7 +16,7 @@
#include "llvm/ADT/StringMap.h"
-#if defined(__linux__) || defined(__GNU__)
+#if defined(__linux__) || defined(__GNU__) || defined(__HAIKU__)
#include <endian.h>
#else
#if !defined(BYTE_ORDER) && !defined(LLVM_ON_WIN32)
--
2.2.2
From dae59491bb1f626f5c8befae95f62589507bd6a1 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Wed, 20 Jan 2016 21:13:28 +0000
Subject: llvm-config: use /develop/headers instead of /include
* don't provide obj-root and src-root.
diff --git a/tools/llvm-config/llvm-config.cpp b/tools/llvm-config/llvm-config.cpp
index b9c2293..c652035 100644
--- a/tools/llvm-config/llvm-config.cpp
+++ b/tools/llvm-config/llvm-config.cpp
@@ -333,7 +333,11 @@ int main(int argc, char **argv) {
("-I" + ActiveIncludeDir + " " + "-I" + ActiveObjRoot + "/include");
} else {
ActivePrefix = CurrentExecPrefix;
+#ifdef __HAIKU__
+ ActiveIncludeDir = ActivePrefix + "/develop/headers";
+#else
ActiveIncludeDir = ActivePrefix + "/include";
+#endif
ActiveBinDir = ActivePrefix + "/bin";
ActiveLibDir = ActivePrefix + "/lib" + LLVM_LIBDIR_SUFFIX;
ActiveIncludeOption = "-I" + ActiveIncludeDir;
@@ -532,10 +536,16 @@ int main(int argc, char **argv) {
OS << LLVM_HAS_RTTI << '\n';
} else if (Arg == "--shared-mode") {
PrintSharedMode = true;
- } else if (Arg == "--obj-root") {
- OS << ActivePrefix << '\n';
- } else if (Arg == "--src-root") {
- OS << LLVM_SRC_ROOT << '\n';
+ } else if (Arg == "--obj-root" || Arg == "--src-root") {
+ if (IsInDevelopmentTree) {
+ if (Arg == "--obj-root")
+ OS << ActivePrefix << '\n';
+ else
+ OS << LLVM_SRC_ROOT << '\n';
+ } else {
+ llvm::errs() << "llvm-config: sources not installed\n";
+ exit(1);
+ }
} else if (Arg == "--link-shared") {
LinkMode = LinkModeShared;
} else if (Arg == "--link-static") {
--
2.2.2
From 69a00f2328d1fdf50bd1937cf040331e0f160643 Mon Sep 17 00:00:00 2001
From: Jerome Duval <jerome.duval@gmail.com>
Date: Sun, 31 Jan 2016 10:23:24 +0000
Subject: patch cmake build for Haiku.
diff --git a/cmake/config-ix.cmake b/cmake/config-ix.cmake
index f699211..c5be442 100755
--- a/cmake/config-ix.cmake
+++ b/cmake/config-ix.cmake
@@ -13,7 +13,7 @@ include(TestBigEndian)
include(HandleLLVMStdlib)
-if( UNIX AND NOT BEOS )
+if( UNIX AND NOT (BEOS OR HAIKU) )
# Used by check_symbol_exists:
set(CMAKE_REQUIRED_LIBRARIES m)
endif()
diff --git a/cmake/config.guess b/cmake/config.guess
index b209a1a..1804e9f 100644
--- a/cmake/config.guess
+++ b/cmake/config.guess
@@ -2,13 +2,13 @@
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-# 2011 Free Software Foundation, Inc.
+# 2011, 2012, 2013 Free Software Foundation, Inc.
-timestamp='2011-08-20'
+timestamp='2012-12-29'
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
+# the Free Software Foundation; either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
@@ -17,26 +17,22 @@ timestamp='2011-08-20'
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA
-# 02110-1301, USA.
+# along with this program; if not, see <http://www.gnu.org/licenses/>.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner. Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
+# the same distribution terms that you use for the rest of that
+# program. This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
#
-# This script attempts to guess a canonical system name similar to
-# config.sub. If it succeeds, it prints the system name on stdout, and
-# exits with 0. Otherwise, it exits with 1.
+# Originally written by Per Bothner.
#
# You can get the latest version of this script from:
# http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+
me=`echo "$0" | sed -e 's,.*/,,'`
@@ -57,8 +53,8 @@ GNU config.guess ($timestamp)
Originally written by Per Bothner.
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free
-Software Foundation, Inc.
+2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011,
+2012, 2013 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -145,7 +141,7 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
*:NetBSD:*:*)
# NetBSD (nbsd) targets should (where applicable) match one or
- # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*,
+ # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*,
# *-*-netbsdecoff* and *-*-netbsd*. For targets that recently
# switched to ELF, *-*-netbsd* would select the old
# object file format. This provides both forward
@@ -202,14 +198,14 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
echo "${machine}-${os}${release}"
exit ;;
- *:OpenBSD:*:*)
- UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
- echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
- exit ;;
*:Bitrig:*:*)
UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'`
echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE}
exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
*:ekkoBSD:*:*)
echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
exit ;;
@@ -308,7 +304,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit ;;
- arm:riscos:*:*|arm:RISCOS:*:*)
+ arm*:riscos:*:*|arm*:RISCOS:*:*)
echo arm-unknown-riscos
exit ;;
SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -807,10 +803,13 @@ EOF
i*:CYGWIN*:*)
echo ${UNAME_MACHINE}-pc-cygwin
exit ;;
+ *:MINGW64*:*)
+ echo ${UNAME_MACHINE}-pc-mingw64
+ exit ;;
*:MINGW*:*)
echo ${UNAME_MACHINE}-pc-mingw32
exit ;;
- *:MSYS*:*)
+ i*:MSYS*:*)
echo ${UNAME_MACHINE}-pc-msys
exit ;;
i*:windows32*:*)
@@ -867,8 +866,12 @@ EOF
i*86:Minix:*:*)
echo ${UNAME_MACHINE}-pc-minix
exit ;;
- aarch64*:Linux:*)
- echo ${UNAME_MACHINE}-unknown-linux-gnu
+ aarch64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ aarch64_be:Linux:*:*)
+ UNAME_MACHINE=aarch64_be
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
alpha:Linux:*:*)
case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
@@ -904,13 +907,16 @@ EOF
echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
cris:Linux:*:*)
- echo cris-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
crisv32:Linux:*:*)
- echo crisv32-axis-linux-gnu
+ echo ${UNAME_MACHINE}-axis-linux-gnu
exit ;;
frv:Linux:*:*)
- echo frv-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ hexagon:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
i*86:Linux:*:*)
LIBC=gnu
@@ -952,7 +958,7 @@ EOF
test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
;;
or32:Linux:*:*)
- echo or32-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
padre:Linux:*:*)
echo sparc-unknown-linux-gnu
@@ -971,9 +977,6 @@ EOF
ppc64:Linux:*:*)
echo powerpc64-unknown-linux-gnu
exit ;;
- ppc64le:Linux:*:*)
- echo powerpc64le-unknown-linux-gnu
- exit ;;
ppc:Linux:*:*)
echo powerpc-unknown-linux-gnu
exit ;;
@@ -996,7 +999,7 @@ EOF
echo ${UNAME_MACHINE}-dec-linux-gnu
exit ;;
x86_64:Linux:*:*)
- echo x86_64-unknown-linux-gnu
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
exit ;;
xtensa*:Linux:*:*)
echo ${UNAME_MACHINE}-unknown-linux-gnu
@@ -1203,6 +1206,9 @@ EOF
BePC:Haiku:*:*) # Haiku running on Intel PC compatible.
echo i586-pc-haiku
exit ;;
+ x86_64:Haiku:*:*)
+ echo x86_64-unknown-haiku
+ exit ;;
SX-4:SUPER-UX:*:*)
echo sx4-nec-superux${UNAME_RELEASE}
exit ;;
@@ -1258,7 +1264,7 @@ EOF
NEO-?:NONSTOP_KERNEL:*:*)
echo neo-tandem-nsk${UNAME_RELEASE}
exit ;;
- NSE-?:NONSTOP_KERNEL:*:*)
+ NSE-*:NONSTOP_KERNEL:*:*)
echo nse-tandem-nsk${UNAME_RELEASE}
exit ;;
NSR-?:NONSTOP_KERNEL:*:*)
@@ -1327,11 +1333,11 @@ EOF
i*86:AROS:*:*)
echo ${UNAME_MACHINE}-pc-aros
exit ;;
+ x86_64:VMkernel:*:*)
+ echo ${UNAME_MACHINE}-unknown-esx
+ exit ;;
esac
-#echo '(No uname command or uname output not recognized.)' 1>&2
-#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
-
eval $set_cc_for_build
cat >$dummy.c <<EOF
#ifdef _SEQUENT_
diff --git a/cmake/modules/CheckAtomic.cmake b/cmake/modules/CheckAtomic.cmake
index 551de6a..d43fd7b 100644
--- a/cmake/modules/CheckAtomic.cmake
+++ b/cmake/modules/CheckAtomic.cmake
@@ -32,8 +32,6 @@ if (LLVM_COMPILER_IS_GCC_COMPATIBLE)
if (NOT HAVE_CXX_ATOMICS_WITH_LIB)
message(FATAL_ERROR "Host compiler must support std::atomic!")
endif()
- else()
- message(FATAL_ERROR "Host compiler appears to require libatomic, but cannot find it.")
endif()
endif()
endif()
diff --git a/lib/Support/CMakeLists.txt b/lib/Support/CMakeLists.txt
index 75b3e89..db5c555 100644
--- a/lib/Support/CMakeLists.txt
+++ b/lib/Support/CMakeLists.txt
@@ -24,7 +24,9 @@ if( NOT MSVC )
if ( LLVM_ENABLE_ZLIB AND HAVE_LIBZ )
set(system_libs ${system_libs} z)
endif()
- set(system_libs ${system_libs} m)
+ if( UNIX AND NOT (BEOS OR HAIKU) )
+ set(system_libs ${system_libs} m)
+ endif()
endif( MINGW )
endif( NOT MSVC )
--
2.2.2