packages/libllvm

This commit is contained in:
termux-actions[bot]
2022-04-13 06:47:34 +00:00
parent c69712ab6f
commit f2bf79a2a2
11 changed files with 100 additions and 56 deletions

View File

@@ -2,8 +2,8 @@ TERMUX_PKG_HOMEPAGE=https://clang.llvm.org/
TERMUX_PKG_DESCRIPTION="Modular compiler and toolchain technologies library"
TERMUX_PKG_LICENSE="NCSA"
TERMUX_PKG_MAINTAINER="@buttaface"
TERMUX_PKG_VERSION=13.0.1
TERMUX_PKG_SHA256=326335a830f2e32d06d0a36393b5455d17dc73e0bd1211065227ee014f92cbf8
TERMUX_PKG_VERSION=14.0.0
TERMUX_PKG_SHA256=35ce9edbc8f774fe07c8f4acdf89ec8ac695c8016c165dd86b8d10e7cba07e23
TERMUX_PKG_SRCURL=https://github.com/llvm/llvm-project/releases/download/llvmorg-$TERMUX_PKG_VERSION/llvm-project-$TERMUX_PKG_VERSION.src.tar.xz
TERMUX_PKG_HOSTBUILD=true
TERMUX_PKG_RM_AFTER_INSTALL="
@@ -20,9 +20,10 @@ TERMUX_PKG_REPLACES="gcc, libclang, libclang-dev, libllvm-dev"
TERMUX_PKG_GROUPS="base-devel"
# See http://llvm.org/docs/CMake.html:
TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
-DANDROID_PLATFORM_LEVEL=$TERMUX_PKG_API_LEVEL
-DPYTHON_EXECUTABLE=$(command -v python3)
-DLLVM_ENABLE_PIC=ON
-DLLVM_ENABLE_PROJECTS=clang;clang-tools-extra;compiler-rt;lld;lldb;openmp;polly
-DLLVM_ENABLE_PROJECTS=clang;clang-tools-extra;compiler-rt;lld;lldb;mlir;openmp;polly
-DLLVM_ENABLE_LIBEDIT=OFF
-DLLVM_INCLUDE_TESTS=OFF
-DCLANG_DEFAULT_CXX_STDLIB=libc++
@@ -33,18 +34,22 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS="
-DDEFAULT_SYSROOT=$(dirname $TERMUX_PREFIX)
-DLLVM_LINK_LLVM_DYLIB=ON
-DLLDB_ENABLE_PYTHON=OFF
-DCLANG_TABLEGEN=$TERMUX_PKG_HOSTBUILD_DIR/bin/clang-tblgen
-DLLDB_TABLEGEN=$TERMUX_PKG_HOSTBUILD_DIR/bin/lldb-tblgen
-DLLVM_TABLEGEN=$TERMUX_PKG_HOSTBUILD_DIR/bin/llvm-tblgen
-DCLANG_TABLEGEN=$TERMUX_PKG_HOSTBUILD_DIR/bin/clang-tblgen
-DMLIR_TABLEGEN=$TERMUX_PKG_HOSTBUILD_DIR/bin/mlir-tblgen
-DLIBOMP_ENABLE_SHARED=FALSE
-DOPENMP_ENABLE_LIBOMPTARGET=OFF
-DLLVM_ENABLE_SPHINX=ON
-DSPHINX_OUTPUT_MAN=ON
-DSPHINX_WARNINGS_AS_ERRORS=OFF
-DLLVM_TARGETS_TO_BUILD=all
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=AVR;RISCV
-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=ARC;CSKY;M68k;VE
-DPERL_EXECUTABLE=$(command -v perl)
-DLLVM_ENABLE_FFI=ON
-DLLVM_INSTALL_UTILS=ON
-DMLIR_INSTALL_AGGREGATE_OBJECTS=OFF
-DMLIR_LINALG_ODS_YAML_GEN=$TERMUX_PKG_HOSTBUILD_DIR/bin/mlir-linalg-ods-yaml-gen
"
if [ $TERMUX_ARCH_BITS = 32 ]; then
@@ -62,8 +67,8 @@ termux_step_host_build() {
termux_setup_cmake
termux_setup_ninja
cmake -G Ninja -DLLVM_ENABLE_PROJECTS='clang;lldb' $TERMUX_PKG_SRCDIR/llvm
ninja -j $TERMUX_MAKE_PROCESSES clang-tblgen lldb-tblgen llvm-tblgen
cmake -G Ninja -DLLVM_ENABLE_PROJECTS='clang;lldb;mlir' $TERMUX_PKG_SRCDIR/llvm
ninja -j $TERMUX_MAKE_PROCESSES clang-tblgen lldb-tblgen llvm-tblgen mlir-tblgen mlir-linalg-ods-yaml-gen
}
termux_step_pre_configure() {
@@ -97,13 +102,13 @@ termux_step_post_configure() {
termux_step_post_make_install() {
if [ "$TERMUX_CMAKE_BUILD" = Ninja ]; then
ninja docs-llvm-man docs-clang-man
ninja -j $TERMUX_MAKE_PROCESSES docs-{llvm,clang}-man
else
make docs-llvm-man docs-clang-man
make -j $TERMUX_MAKE_PROCESSES docs-{llvm,clang}-man
fi
cp docs/man/* $TERMUX_PREFIX/share/man/man1
cp tools/clang/docs/man/clang.1 $TERMUX_PREFIX/share/man/man1
cp tools/clang/docs/man/{clang,diagtool}.1 $TERMUX_PREFIX/share/man/man1
cd $TERMUX_PREFIX/bin
for tool in clang clang++ cc c++ cpp gcc g++ ${TERMUX_HOST_PLATFORM}-{clang,clang++,gcc,g++,cpp}; do

View File

@@ -2,14 +2,6 @@ diff --git a/clang/lib/Driver/ToolChain.cpp b/clang/lib/Driver/ToolChain.cpp
index 469ef62f1a9d..218f5af748f4 100644
--- a/clang/lib/Driver/ToolChain.cpp
+++ b/clang/lib/Driver/ToolChain.cpp
@@ -374,6 +374,6 @@ StringRef ToolChain::getOSLibName() const {
case llvm::Triple::Solaris:
return "sunos";
default:
- return getOS();
+ return Triple.isAndroid() ? "android":getOS();
}
}
@@ -632,7 +632,7 @@
switch (Type) {

View File

@@ -1,6 +1,6 @@
--- a/clang/lib/Driver/ToolChains/Linux.cpp 2019-12-21 22:30:03.676720096 +0000
+++ b/clang/lib/Driver/ToolChains/Linux.cpp 2019-12-21 22:34:42.941719383 +0000
@@ -162,8 +162,8 @@ static StringRef getOSLibDir(const llvm::Triple &Triple, const ArgList &Args) {
--- a/clang/lib/Driver/ToolChains/Linux.cpp
+++ b/clang/lib/Driver/ToolChains/Linux.cpp
@@ -162,8 +162,8 @@
// FIXME: This is a bit of a hack. We should really unify this code for
// reasoning about oslibdir spellings with the lib dir spellings in the
// GCCInstallationDetector, but that is a more significant refactoring.
@@ -11,7 +11,7 @@
return "lib32";
if (Triple.getArch() == llvm::Triple::x86_64 && Triple.isX32())
@@ -403,7 +403,7 @@ Linux::Linux(const Driver &D, const llvm::Triple &Triple, const ArgList &Args)
@@ -287,7 +287,7 @@
if (Triple.getVendor() == llvm::Triple::OpenEmbedded &&
Triple.isArch64Bit())
addPathIfExists(D, SysRoot + "/usr/" + OSLibDir, Paths);
@@ -20,13 +20,17 @@
addPathIfExists(D, SysRoot + "/usr/lib/../" + OSLibDir, Paths);
if (IsRISCV) {
StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple);
@@ -447,11 +447,19 @@
@@ -302,7 +302,7 @@
// searched.
// FIXME: It's not clear whether we should use the driver's installed
// directory ('Dir' below) or the ResourceDir.
- if (StringRef(D.Dir).startswith(SysRoot))
+ if (StringRef(D.Dir).startswith(SysRoot) && !IsAndroid)
- if (StringRef(D.Dir).startswith(SysRoot)) {
+ if (StringRef(D.Dir).startswith(SysRoot) && !IsAndroid) {
// Even if OSLibDir != "lib", this is needed for Clang in the build
// directory (not installed) to find libc++.
addPathIfExists(D, D.Dir + "/../lib", Paths);
@@ -311,7 +311,15 @@
}
addPathIfExists(D, SysRoot + "/lib", Paths);
- addPathIfExists(D, SysRoot + "/usr/lib", Paths);
@@ -41,4 +45,4 @@
+ }
}
ToolChain::CXXStdlibType Linux::GetDefaultCXXStdlibType() const {
ToolChain::RuntimeLibType Linux::GetDefaultRuntimeLibType() const {

View File

@@ -30,6 +30,7 @@ lib/libscanbuild/
libexec/
share/clang
share/man/man1/clang.1.gz
share/man/man1/diagtool.1.gz
share/man/man1/scan-*
share/scan-*
"

View File

@@ -6,7 +6,7 @@ lib/clang/*/include/fuzzer/FuzzedDataProvider.h
lib/clang/*/include/profile/InstrProfData.inc
lib/clang/*/include/sanitizer/
lib/clang/*/include/xray/
lib/clang/*/lib/android/
lib/clang/*/lib/linux/
lib/clang/*/share/asan_ignorelist.txt
lib/clang/*/share/cfi_ignorelist.txt
lib/clang/*/share/hwasan_ignorelist.txt

View File

@@ -1,15 +0,0 @@
lldb wants to serialize a FILE, so pass it the header with the size now that it's an opaque
struct.
diff --git a/lldb/source/API/SBReproducerPrivate.h b/lldb/source/API/SBReproducerPrivate.h
index 02ac31c2ad89..0ec65e63fffe 100644
--- a/lldb/source/API/SBReproducerPrivate.h
+++ b/lldb/source/API/SBReproducerPrivate.h
@@ -19,6 +19,7 @@
#include "lldb/Utility/ReproducerProvider.h"
#include "llvm/ADT/DenseMap.h"
+#include <bits/struct_file.h>
#define LLDB_GET_INSTRUMENTATION_DATA() \
lldb_private::repro::InstrumentationData::Instance()

View File

@@ -50,18 +50,19 @@ LDFLAGS="-L${prefix}/lib"
LIBFILE="${prefix}/lib/libLLVM-$version.so"
components="aarch64 aarch64asmparser aarch64codegen aarch64desc \
aarch64disassembler aarch64info aarch64utils aggressiveinstcombine all all-targets amdgpu \
amdgpuasmparser amdgpucodegen amdgpudesc amdgpudisassembler amdgpuinfo amdgpuutils \
analysis arm armasmparser armcodegen armdesc armdisassembler arminfo armutils asmparser \
asmprinter avr avrasmparser avrcodegen avrdesc avrdisassembler avrinfo binaryformat \
bitreader bitstreamreader bitwriter bpf bpfasmparser bpfcodegen bpfdesc bpfdisassembler \
bpfinfo cfguard codegen core coroutines coverage debuginfocodeview debuginfodwarf \
amdgpuasmparser amdgpucodegen amdgpudesc amdgpudisassembler amdgpuinfo amdgputargetmca amdgpuutils \
analysis arc arccodegen arcdesc arcdissembler arcinfo arm armasmparser armcodegen armdesc \
armdisassembler arminfo armutils asmparser asmprinter avr avrasmparser avrcodegen avrdesc \
avrdisassembler avrinfo binaryformat bitreader bitstreamreader bitwriter bpf bpfasmparser \
bpfcodegen bpfdesc bpfdisassembler bpfinfo csky cskyasmparser cskycodegen cskydesc cskyinfo \
cfguard codegen core coroutines coverage debuginfocodeview debuginfodwarf \
debuginfogsym debuginfomsf debuginfopdb demangle dlltooldriver dwarflinker dwp engine \
executionengine extensions filecheck frontendopenacc frontendopenmp \
fuzzmutate globalisel hexagon hexagonasmparser hexagoncodegen hexagondesc \
hexagondisassembler hexagoninfo instcombine instrumentation interfacestub \
interpreter ipo irreader jitlink lanai lanaiasmparser lanaicodegen lanaidesc \
lanaidisassembler lanaiinfo libdriver lineeditor linker lto mc mca mcdisassembler \
mcjit mcparser mips mipsasmparser mipscodegen \
lanaidisassembler lanaiinfo libdriver lineeditor linker lto m68k m68kasmparser m68kcodegen \
m68kdesc m68kdisassembler m68kinfo mc mca mcdisassembler mcjit mcparser mips mipsasmparser mipscodegen \
mipsdesc mipsdisassembler mipsinfo mirparser msp430 msp430asmparser msp430codegen \
msp430desc msp430disassembler msp430info native nativecodegen nvptx nvptxcodegen \
nvptxdesc nvptxinfo objcarcopts object objectyaml option orcjit orcshared orctargetprocess passes powerpc \
@@ -69,18 +70,22 @@ powerpcasmparser powerpccodegen powerpcdesc powerpcdisassembler powerpcinfo \
profiledata remarks riscv riscvasmparser riscvcodegen riscvdesc riscvdisassembler riscvinfo \
runtimedyld scalaropts selectiondag sparc sparcasmparser sparccodegen sparcdesc \
sparcdisassembler sparcinfo support symbolize systemz systemzasmparser systemzcodegen \
systemzdesc systemzdisassembler systemzinfo tablegen target textapi transformutils vectorize webassembly \
systemzdesc systemzdisassembler systemzinfo tablegen target textapi transformutils ve veasmparser \
vecodegen vedesc vedisassembler veinfo vectorize webassembly \
webassemblyasmparser webassemblycodegen webassemblydesc webassemblydisassembler \
webassemblyinfo webassemblyutils windowsmanifest x86 x86asmparser x86codegen x86desc x86disassembler x86info \
xcore xcorecodegen xcoredesc xcoredisassembler xcoreinfo xray"
x86targetmca xcore xcorecodegen xcoredesc xcoredisassembler xcoreinfo xray"
static_libs="-lLLVMObjectYAML -lLLVMDlltoolDriver -lLLVMLineEditor -lLLVMFuzzMutate \
-lLLVMCoroutines -lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMTextAPI -lLLVMCoverage \
-lLLVMXRay -lLLVMInterpreter -lLLVMRemarks -lLLVMMIRParser -lLLVMDWP -lLLVMSymbolize -lLLVMDebugInfoPDB \
-lLLVMDebugInfoDWARF -lLLVMAVRAsmParser -lLLVMInterfaceStub -lLLVMFileCheck -lLLVMAVRCodeGen -lLLVMAVRDesc -lLLVMAVRDisassembler \
-lLLVMAVRInfo -lLLVMRISCVDisassembler -lLLVMRISCVCodeGen -lLLVMRISCVAsmParser \
-lLLVMDebugInfoDWARF -lLLVMARCCodeGen -lLLVMARCDesc -lLLVMARCDisassembler -lLLVMARCInfo -lLLVMCSKYAsmParser \
-lLLVMCSKYCodeGen -lLLVMCSKYDesc -lLLVMCSKYInfo -lLLVMM68kAsmParser -lLLVMM68kCodeGen -lLLVMM68kDesc \
-lLLVMM68kDisassembler -lLLVMM68kInfo -lLLVMVEAsmParser -lLLVMVECodeGen -lLLVMVEDesc -lLLVMVEDisassembler \
-lLLVMVEInfo -lLLVMAVRAsmParser -lLLVMInterfaceStub -lLLVMFileCheck -lLLVMAVRCodeGen -lLLVMAVRDesc \
-lLLVMAVRDisassembler -lLLVMAVRInfo -lLLVMRISCVDisassembler -lLLVMRISCVCodeGen -lLLVMRISCVAsmParser \
-lLLVMRISCVDesc -lLLVMRISCVInfo -lLLVMXCoreDisassembler -lLLVMXCoreCodeGen \
-lLLVMXCoreDesc -lLLVMXCoreInfo -lLLVMX86Disassembler -lLLVMX86CodeGen -lLLVMX86AsmParser \
-lLLVMX86Desc -lLLVMX86Info -lLLVMWebAssemblyDisassembler \
-lLLVMX86Desc -lLLVMX86Info -lLLVMX86TargetMCA -lLLVMWebAssemblyDisassembler \
-lLLVMWebAssemblyCodeGen -lLLVMWebAssemblyDesc -lLLVMWebAssemblyAsmParser \
-lLLVMWebAssemblyUtils -lLLVMWebAssemblyInfo -lLLVMSystemZDisassembler -lLLVMSystemZCodeGen \
-lLLVMSystemZAsmParser -lLLVMSystemZDesc -lLLVMSystemZInfo -lLLVMSparcDisassembler \
@@ -96,7 +101,7 @@ static_libs="-lLLVMObjectYAML -lLLVMDlltoolDriver -lLLVMLineEditor -lLLVMFuzzMut
-lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMUtils \
-lLLVMAMDGPUDisassembler -lLLVMAMDGPUCodeGen -lLLVMipo -lLLVMInstrumentation \
-lLLVMVectorize -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMAMDGPUAsmParser \
-lLLVMAMDGPUDesc -lLLVMAMDGPUInfo -lLLVMAMDGPUUtils -lLLVMLibDriver -lLLVMOption \
-lLLVMAMDGPUDesc -lLLVMAMDGPUInfo -lLLVMAMDGPUTargetMCA -lLLVMAMDGPUUtils -lLLVMLibDriver -lLLVMOption \
-lLLVMWindowsManifest -lLLVMAArch64Disassembler -lLLVMMCDisassembler \
-lLLVMAArch64AsmParser -lLLVMMCJIT -lLLVMTableGen -lLLVMOrcJIT -lLLVMOrcTargetProcess -lLLVMOrcShared -lLLVMExecutionEngine \
-lLLVMRuntimeDyld -lLLVMBitstreamReader -lLLVMCFGuard -lLLVMFrontendOpenACC -lLLVMExtensions -lLLVMDWARFLinker \

View File

@@ -0,0 +1,29 @@
--- a/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp 2022-03-14 09:44:55.000000000 +0000
+++ b/llvm/tools/llvm-rtdyld/llvm-rtdyld.cpp 2022-04-06 11:14:07.627066038 +0000
@@ -286,7 +286,7 @@
uintptr_t SlabSize = 0;
uintptr_t CurrentSlabOffset = 0;
SectionIDMap *SecIDMap = nullptr;
-#if defined(__x86_64__) && defined(__ELF__) && defined(__linux__)
+#if defined(__x86_64__) && defined(__ELF__) && defined(__linux__) && !defined(__ANDROID__)
unsigned UsedTLSStorage = 0;
#endif
};
@@ -350,7 +350,7 @@
// In case the execution needs TLS storage, we define a very small TLS memory
// area here that will be used in allocateTLSSection().
-#if defined(__x86_64__) && defined(__ELF__) && defined(__linux__)
+#if defined(__x86_64__) && defined(__ELF__) && defined(__linux__) && !defined(__ANDROID__)
extern "C" {
alignas(16) __attribute__((visibility("hidden"), tls_model("initial-exec"),
used)) thread_local char LLVMRTDyldTLSSpace[16];
@@ -361,7 +361,7 @@
TrivialMemoryManager::allocateTLSSection(uintptr_t Size, unsigned Alignment,
unsigned SectionID,
StringRef SectionName) {
-#if defined(__x86_64__) && defined(__ELF__) && defined(__linux__)
+#if defined(__x86_64__) && defined(__ELF__) && defined(__linux__) && !defined(__ANDROID__)
if (Size + UsedTLSStorage > sizeof(LLVMRTDyldTLSSpace)) {
return {};
}

View File

@@ -0,0 +1,14 @@
TERMUX_SUBPKG_INCLUDE="
bin/FileCheck
bin/count
bin/lli-child-target
bin/llvm-PerfectShuffle
bin/llvm-jitlink-executor
bin/not
bin/obj2yaml
bin/yaml2obj
bin/yaml-bench
share/man/man1/FileCheck.1.gz
"
TERMUX_SUBPKG_DESCRIPTION="LLVM Development Tools"
TERMUX_SUBPKG_DEPENDS="libc++, ncurses, zlib"

View File

@@ -3,7 +3,7 @@ bin/bugpoint
bin/dsymutil
bin/llc
bin/lli
bin/llvm*
bin/llvm!(-jitlink-executor|-PerfectShuffle)
bin/opt
bin/sancov
bin/sanstats

View File

@@ -0,0 +1,9 @@
TERMUX_SUBPKG_INCLUDE="
bin/mlir-*
include/mlir*
lib/cmake/mlir/
lib/libMLIR.so
lib/libmlir*so
"
TERMUX_SUBPKG_DESCRIPTION="A Multi-Level Intermediate Representation for compilers from LLVM"
TERMUX_SUBPKG_DEPENDS="libc++, ncurses"