diff --git a/packages/libllvm/build.sh b/packages/libllvm/build.sh index 36573e51d0..f290bbde9a 100644 --- a/packages/libllvm/build.sh +++ b/packages/libllvm/build.sh @@ -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 diff --git a/packages/libllvm/clang-lib-Driver-ToolChain.cpp.patch b/packages/libllvm/clang-lib-Driver-ToolChain.cpp.patch index 4ca6fbe8e6..69985e39d8 100644 --- a/packages/libllvm/clang-lib-Driver-ToolChain.cpp.patch +++ b/packages/libllvm/clang-lib-Driver-ToolChain.cpp.patch @@ -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) { diff --git a/packages/libllvm/clang-lib-Driver-ToolChains-Linux.cpp.patch b/packages/libllvm/clang-lib-Driver-ToolChains-Linux.cpp.patch index e371e3b80c..7887896eaf 100644 --- a/packages/libllvm/clang-lib-Driver-ToolChains-Linux.cpp.patch +++ b/packages/libllvm/clang-lib-Driver-ToolChains-Linux.cpp.patch @@ -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 { diff --git a/packages/libllvm/clang.subpackage.sh b/packages/libllvm/clang.subpackage.sh index d7b5a494cb..335f67c61a 100644 --- a/packages/libllvm/clang.subpackage.sh +++ b/packages/libllvm/clang.subpackage.sh @@ -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-* " diff --git a/packages/libllvm/libcompiler-rt.subpackage.sh b/packages/libllvm/libcompiler-rt.subpackage.sh index b27259a89c..f4d69ac886 100644 --- a/packages/libllvm/libcompiler-rt.subpackage.sh +++ b/packages/libllvm/libcompiler-rt.subpackage.sh @@ -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 diff --git a/packages/libllvm/lldb-source-API-SBReproducerPrivate.h.patch b/packages/libllvm/lldb-source-API-SBReproducerPrivate.h.patch deleted file mode 100644 index 431ddaa3c1..0000000000 --- a/packages/libllvm/lldb-source-API-SBReproducerPrivate.h.patch +++ /dev/null @@ -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 - - #define LLDB_GET_INSTRUMENTATION_DATA() \ - lldb_private::repro::InstrumentationData::Instance() diff --git a/packages/libllvm/llvm-config.in b/packages/libllvm/llvm-config.in index f53b0a6e39..e1f064ab72 100644 --- a/packages/libllvm/llvm-config.in +++ b/packages/libllvm/llvm-config.in @@ -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 \ diff --git a/packages/libllvm/llvm-tools-llvm-rtdyld-llvm-rtdyld.cpp.patch b/packages/libllvm/llvm-tools-llvm-rtdyld-llvm-rtdyld.cpp.patch new file mode 100644 index 0000000000..30390ce214 --- /dev/null +++ b/packages/libllvm/llvm-tools-llvm-rtdyld-llvm-rtdyld.cpp.patch @@ -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 {}; + } diff --git a/packages/libllvm/llvm-tools.subpackage.sh b/packages/libllvm/llvm-tools.subpackage.sh new file mode 100644 index 0000000000..f4854c506b --- /dev/null +++ b/packages/libllvm/llvm-tools.subpackage.sh @@ -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" diff --git a/packages/libllvm/llvm.subpackage.sh b/packages/libllvm/llvm.subpackage.sh index 414065dc55..15569412ef 100644 --- a/packages/libllvm/llvm.subpackage.sh +++ b/packages/libllvm/llvm.subpackage.sh @@ -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 diff --git a/packages/libllvm/mlir.subpackage.sh b/packages/libllvm/mlir.subpackage.sh new file mode 100644 index 0000000000..332788be32 --- /dev/null +++ b/packages/libllvm/mlir.subpackage.sh @@ -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"