diff --git a/packages/libllvm/build.sh b/packages/libllvm/build.sh index 451eb8c40..b505dc57f 100644 --- a/packages/libllvm/build.sh +++ b/packages/libllvm/build.sh @@ -1,12 +1,11 @@ TERMUX_PKG_HOMEPAGE=https://clang.llvm.org/ TERMUX_PKG_DESCRIPTION="Modular compiler and toolchain technologies library" TERMUX_PKG_LICENSE="NCSA" -TERMUX_PKG_VERSION=7.0.1 -TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=(a38dfc4db47102ec79dcc2aa61e93722c5f6f06f0a961073bd84b78fb949419b - a45b62dde5d7d5fdcdfa876b0af92f164d434b06e9e89b5d0b1cbc65dfe3f418 - 8869aab2dd2d8e00d69943352d3166d159d7eae2615f66a684f4a0999fc74031 - bf16b78a678da67d68405214ec7ee59d86a15f599855806192a75dcfca9b0d0c) +TERMUX_PKG_VERSION=8.0.0 +TERMUX_PKG_SHA256=(8872be1b12c61450cacc82b3d153eab02be2546ef34fa3580ed14137bb26224c + 084c115aab0084e63b23eee8c233abb6739c399e29966eaeccfc6e088e0b736b + 9caec8ec922e32ffa130f0fb08e4c5a242d7e68ce757631e425e9eba2e1a6e37 + f7b1705d2f16c4fc23d6531f67d2dd6fb78a077dd346b02fed64f4b8df65c9d5) TERMUX_PKG_SRCURL=(https://releases.llvm.org/${TERMUX_PKG_VERSION}/llvm-${TERMUX_PKG_VERSION}.src.tar.xz https://releases.llvm.org/${TERMUX_PKG_VERSION}/cfe-${TERMUX_PKG_VERSION}.src.tar.xz https://llvm.org/releases/${TERMUX_PKG_VERSION}/lld-${TERMUX_PKG_VERSION}.src.tar.xz @@ -45,7 +44,8 @@ TERMUX_PKG_EXTRA_CONFIGURE_ARGS=" -DLLVM_BINUTILS_INCDIR=$TERMUX_PREFIX/include -DLLVM_ENABLE_SPHINX=ON -DSPHINX_OUTPUT_MAN=ON --DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=WebAssembly +-DLLVM_TARGETS_TO_BUILD=all +-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=RISCV -DPERL_EXECUTABLE=$(which perl) -DLLVM_ENABLE_FFI=ON " diff --git a/packages/libllvm/llvm-config.in b/packages/libllvm/llvm-config.in index 6ce9d1f3e..69366255a 100644 --- a/packages/libllvm/llvm-config.in +++ b/packages/libllvm/llvm-config.in @@ -45,53 +45,56 @@ version=@TERMUX_PKG_VERSION@ prefix=@TERMUX_PREFIX@ has_rtti=NO CPPFLAGS="-I${prefix}/include -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS" -CFLAGS="${CPPFLAGS} ${CFLAGS} -fPIC -Werror=date-time -Wall -W -Wno-unused-parameter -Wwrite-strings -Wmissing-field-initializers -pedantic \ --Wno-long-long -Wcovered-switch-default -Wdelete-non-virtual-dtor -Wstring-conversion \ --ffunction-sections -fdata-sections -Os -DNDEBUG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS \ --D__STDC_LIMIT_MACROS" +CFLAGS="${CPPFLAGS} ${CFLAGS} -D__STDC_CONSTANT_MACROS -D__STDC_FORMAT_MACROS -D__STDC_LIMIT_MACROS" CXXFLAGS="${CFLAGS} -fvisibility-inlines-hidden -Wcast-qual -Wnon-virtual-dtor -std=c++11 -fno-exceptions" if [ "$has_rtti" != "YES" ]; then CXXFLAGS="$CXXFLAGS -fno-rtti"; fi LDFLAGS="-L${prefix}/lib" LIBFILE="${prefix}/lib/libLLVM-$version.so" - components="aarch64 aarch64asmparser aarch64asmprinter aarch64codegen aarch64desc \ -aarch64disassembler aarch64info aarch64utils all all-targets amdgpu amdgpuasmparser amdgpuasmprinter \ -amdgpucodegen amdgpudesc amdgpudisassembler amdgpuinfo amdgpuutils analysis arm armasmparser armasmprinter \ -armcodegen armdesc armdisassembler arminfo armutils asmparser asmprinter binaryformat bitreader bitwriter \ -bpf bpfasmparser bpfasmprinter bpfcodegen bpfdesc bpfdisassembler bpfinfo codegen core coroutines coverage \ -debuginfocodeview debuginfodwarf debuginfomsf debuginfopdb demangle dlltooldriver engine executionengine \ -fuzzmutate globalisel hexagon hexagonasmparser hexagoncodegen hexagondesc hexagondisassembler hexagoninfo \ -instcombine instrumentation interpreter ipo irreader lanai lanaiasmparser lanaiasmprinter lanaicodegen \ -lanaidesc lanaidisassembler lanaiinfo libdriver lineeditor linker lto mc mcdisassembler mcjit mcparser \ -mips mipsasmparser mipsasmprinter mipscodegen mipsdesc mipsdisassembler mipsinfo mirparser msp430 \ -msp430asmprinter msp430codegen msp430desc msp430info native nativecodegen nvptx nvptxasmprinter \ -nvptxcodegen nvptxdesc nvptxinfo objcarcopts object objectyaml option orcjit passes powerpc powerpcasmparser \ -powerpcasmprinter powerpccodegen powerpcdesc powerpcdisassembler powerpcinfo profiledata runtimedyld scalaropts \ -selectiondag sparc sparcasmparser sparcasmprinter sparccodegen sparcdesc sparcdisassembler sparcinfo support symbolize \ -systemz systemzasmparser systemzasmprinter systemzcodegen systemzdesc systemzdisassembler systemzinfo tablegen target \ -transformutils vectorize webassembly webassemblyasmprinter webassemblycodegen webassemblydesc webassemblydisassembler \ -webassemblyinfo windowsmanifest x86 x86asmparser x86asmprinter x86codegen x86desc x86disassembler x86info x86utils xcore \ -xcoreasmprinter xcorecodegen xcoredesc xcoredisassembler xcoreinfo" -static_libs="-lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMMIRParser -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF \ --lLLVMCoverage -lLLVMTableGen -lLLVMDlltoolDriver -lLLVMOrcJIT -lLLVMWebAssemblyDisassembler -lLLVMWebAssemblyCodeGen \ --lLLVMWebAssemblyDesc -lLLVMWebAssemblyInfo -lLLVMWebAssemblyAsmPrinter -lLLVMXCoreDisassembler -lLLVMXCoreCodeGen \ --lLLVMXCoreDesc -lLLVMXCoreInfo -lLLVMXCoreAsmPrinter -lLLVMSystemZDisassembler -lLLVMSystemZCodeGen -lLLVMSystemZAsmParser \ --lLLVMSystemZDesc -lLLVMSystemZInfo -lLLVMSystemZAsmPrinter -lLLVMSparcDisassembler -lLLVMSparcCodeGen -lLLVMSparcAsmParser \ --lLLVMSparcDesc -lLLVMSparcInfo -lLLVMSparcAsmPrinter -lLLVMPowerPCDisassembler -lLLVMPowerPCCodeGen -lLLVMPowerPCAsmParser \ --lLLVMPowerPCDesc -lLLVMPowerPCInfo -lLLVMPowerPCAsmPrinter -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMNVPTXAsmPrinter \ --lLLVMMSP430CodeGen -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMSP430AsmPrinter -lLLVMMipsDisassembler -lLLVMMipsCodeGen -lLLVMMipsAsmParser \ --lLLVMMipsDesc -lLLVMMipsInfo -lLLVMMipsAsmPrinter -lLLVMLanaiDisassembler -lLLVMLanaiCodeGen -lLLVMLanaiAsmParser -lLLVMLanaiDesc \ --lLLVMLanaiAsmPrinter -lLLVMLanaiInfo -lLLVMHexagonDisassembler -lLLVMHexagonCodeGen -lLLVMHexagonAsmParser -lLLVMHexagonDesc -lLLVMHexagonInfo \ --lLLVMBPFDisassembler -lLLVMBPFCodeGen -lLLVMBPFAsmParser -lLLVMBPFDesc -lLLVMBPFInfo -lLLVMBPFAsmPrinter -lLLVMARMDisassembler \ --lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo -lLLVMARMAsmPrinter -lLLVMARMUtils -lLLVMAMDGPUDisassembler \ --lLLVMAMDGPUCodeGen -lLLVMAMDGPUAsmParser -lLLVMAMDGPUDesc -lLLVMAMDGPUInfo -lLLVMAMDGPUAsmPrinter -lLLVMAMDGPUUtils \ --lLLVMAArch64Disassembler -lLLVMAArch64CodeGen -lLLVMAArch64AsmParser -lLLVMAArch64Desc -lLLVMAArch64Info -lLLVMAArch64AsmPrinter \ --lLLVMAArch64Utils -lLLVMObjectYAML -lLLVMLibDriver -lLLVMOption -lLLVMWindowsManifest -lLLVMFuzzMutate -lLLVMX86Disassembler \ --lLLVMX86AsmParser -lLLVMX86CodeGen -lLLVMGlobalISel -lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF \ --lLLVMX86Desc -lLLVMMCDisassembler -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils -lLLVMMCJIT -lLLVMLineEditor -lLLVMInterpreter \ --lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMCodeGen -lLLVMTarget -lLLVMCoroutines -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize \ --lLLVMScalarOpts -lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMInstCombine -lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis \ --lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMMC -lLLVMBitReader -lLLVMCore -lLLVMBinaryFormat -lLLVMSupport -lLLVMDemangle" +aarch64disassembler aarch64info aarch64utils aggressiveinstcombine all all-targets amdgpu \ +amdgpuasmparser amdgpuasmprinter amdgpucodegen amdgpudesc amdgpudisassembler amdgpuinfo amdgpuutils \ +analysis arm armasmparser armasmprinter armcodegen armdesc armdisassembler arminfo armutils asmparser \ +asmprinter binaryformat bitreader bitwriter bpf bpfasmparser bpfasmprinter bpfcodegen bpfdesc \ +bpfdisassembler bpfinfo codegen core coroutines coverage debuginfocodeview debuginfodwarf debuginfomsf \ +debuginfopdb demangle dlltooldriver engine executionengine fuzzmutate globalisel hexagon hexagonasmparser \ +hexagoncodegen hexagondesc hexagondisassembler hexagoninfo instcombine instrumentation interpreter ipo \ +irreader lanai lanaiasmparser lanaiasmprinter lanaicodegen lanaidesc lanaidisassembler lanaiinfo libdriver \ +lineeditor linker lto mc mca mcdisassembler mcjit mcparser mips mipsasmparser mipsasmprinter mipscodegen \ +mipsdesc mipsdisassembler mipsinfo mirparser msp430 msp430asmparser msp430asmprinter msp430codegen \ +msp430desc msp430disassembler msp430info native nativecodegen nvptx nvptxasmprinter nvptxcodegen \ +nvptxdesc nvptxinfo objcarcopts object objectyaml option optremarks orcjit passes powerpc \ +powerpcasmparser powerpcasmprinter powerpccodegen powerpcdesc powerpcdisassembler powerpcinfo \ +profiledata riscv riscvasmparser riscvasmprinter riscvcodegen riscvdesc riscvdisassembler riscvinfo \ +riscvutils runtimedyld scalaropts selectiondag sparc sparcasmparser sparcasmprinter sparccodegen sparcdesc \ +sparcdisassembler sparcinfo support symbolize systemz systemzasmparser systemzasmprinter systemzcodegen \ +systemzdesc systemzdisassembler systemzinfo tablegen target textapi transformutils vectorize webassembly \ +webassemblyasmparser webassemblyasmprinter webassemblycodegen webassemblydesc webassemblydisassembler \ +webassemblyinfo windowsmanifest x86 x86asmparser x86asmprinter x86codegen x86desc x86disassembler x86info \ +x86utils xcore xcoreasmprinter xcorecodegen xcoredesc xcoredisassembler xcoreinfo xray" +static_libs="-lLLVMObjectYAML -lLLVMDlltoolDriver -lLLVMLineEditor -lLLVMFuzzMutate -lLLVMCoroutines \ +-lLLVMLTO -lLLVMPasses -lLLVMObjCARCOpts -lLLVMTextAPI -lLLVMCoverage -lLLVMXRay -lLLVMInterpreter \ +-lLLVMMIRParser -lLLVMSymbolize -lLLVMDebugInfoPDB -lLLVMDebugInfoDWARF -lLLVMRISCVDisassembler \ +-lLLVMRISCVCodeGen -lLLVMRISCVAsmParser -lLLVMRISCVDesc -lLLVMRISCVInfo -lLLVMRISCVAsmPrinter \ +-lLLVMRISCVUtils -lLLVMXCoreDisassembler -lLLVMXCoreCodeGen -lLLVMXCoreDesc -lLLVMXCoreInfo -lLLVMXCoreAsmPrinter \ +-lLLVMX86Disassembler -lLLVMX86CodeGen -lLLVMX86AsmParser -lLLVMX86Desc -lLLVMX86Info -lLLVMX86AsmPrinter -lLLVMX86Utils \ +-lLLVMWebAssemblyDisassembler -lLLVMWebAssemblyCodeGen -lLLVMWebAssemblyDesc -lLLVMWebAssemblyAsmPrinter -lLLVMWebAssemblyAsmParser \ +-lLLVMWebAssemblyInfo -lLLVMSystemZDisassembler -lLLVMSystemZCodeGen -lLLVMSystemZAsmParser -lLLVMSystemZDesc -lLLVMSystemZInfo \ +-lLLVMSystemZAsmPrinter -lLLVMSparcDisassembler -lLLVMSparcCodeGen -lLLVMSparcAsmParser -lLLVMSparcDesc -lLLVMSparcInfo \ +-lLLVMSparcAsmPrinter -lLLVMPowerPCDisassembler -lLLVMPowerPCCodeGen -lLLVMPowerPCAsmParser -lLLVMPowerPCDesc -lLLVMPowerPCInfo \ +-lLLVMPowerPCAsmPrinter -lLLVMNVPTXCodeGen -lLLVMNVPTXDesc -lLLVMNVPTXInfo -lLLVMNVPTXAsmPrinter -lLLVMMSP430Disassembler \ +-lLLVMMSP430CodeGen -lLLVMMSP430AsmParser -lLLVMMSP430Desc -lLLVMMSP430Info -lLLVMMSP430AsmPrinter -lLLVMMipsDisassembler \ +-lLLVMMipsCodeGen -lLLVMMipsAsmParser -lLLVMMipsDesc -lLLVMMipsInfo -lLLVMMipsAsmPrinter -lLLVMLanaiDisassembler -lLLVMLanaiCodeGen \ +-lLLVMLanaiAsmParser -lLLVMLanaiDesc -lLLVMLanaiAsmPrinter -lLLVMLanaiInfo -lLLVMHexagonDisassembler -lLLVMHexagonCodeGen \ +-lLLVMHexagonAsmParser -lLLVMHexagonDesc -lLLVMHexagonInfo -lLLVMBPFDisassembler -lLLVMBPFCodeGen -lLLVMBPFAsmParser -lLLVMBPFDesc \ +-lLLVMBPFInfo -lLLVMBPFAsmPrinter -lLLVMARMDisassembler -lLLVMARMCodeGen -lLLVMARMAsmParser -lLLVMARMDesc -lLLVMARMInfo \ +-lLLVMARMAsmPrinter -lLLVMARMUtils -lLLVMAMDGPUDisassembler -lLLVMAMDGPUCodeGen -lLLVMipo -lLLVMInstrumentation -lLLVMVectorize \ +-lLLVMLinker -lLLVMIRReader -lLLVMAsmParser -lLLVMAMDGPUAsmParser -lLLVMAMDGPUDesc -lLLVMAMDGPUInfo -lLLVMAMDGPUAsmPrinter \ +-lLLVMAMDGPUUtils -lLLVMLibDriver -lLLVMOption -lLLVMWindowsManifest -lLLVMAArch64Disassembler -lLLVMMCDisassembler -lLLVMAArch64AsmParser \ +-lLLVMMCJIT -lLLVMTableGen -lLLVMOrcJIT -lLLVMExecutionEngine -lLLVMRuntimeDyld -lLLVMOptRemarks -lLLVMMCA -lLLVMAArch64CodeGen -lLLVMGlobalISel \ +-lLLVMSelectionDAG -lLLVMAsmPrinter -lLLVMCodeGen -lLLVMTarget -lLLVMScalarOpts -lLLVMInstCombine -lLLVMAggressiveInstCombine \ +-lLLVMTransformUtils -lLLVMBitWriter -lLLVMAnalysis -lLLVMProfileData -lLLVMObject -lLLVMMCParser -lLLVMBitReader -lLLVMCore -lLLVMAArch64Desc \ +-lLLVMAArch64Info -lLLVMAArch64AsmPrinter -lLLVMMC -lLLVMDebugInfoCodeView -lLLVMDebugInfoMSF -lLLVMBinaryFormat -lLLVMAArch64Utils \ +-lLLVMSupport -lLLVMDemangle" shared_libs="-lLLVM-$version" libs=$shared_libs handle_args () { diff --git a/packages/libllvm/tools-llvm-shlib-CMakeLists.txt.patch b/packages/libllvm/tools-llvm-shlib-CMakeLists.txt.patch index 0e6e1afcc..94c6a33cc 100644 --- a/packages/libllvm/tools-llvm-shlib-CMakeLists.txt.patch +++ b/packages/libllvm/tools-llvm-shlib-CMakeLists.txt.patch @@ -1,11 +1,10 @@ ---- ../../cache/llvm-project-20170507-release_600/llvm/tools/llvm-shlib/CMakeLists.txt 2018-03-02 09:50:00.000000000 +0000 -+++ ./tools/llvm-shlib/CMakeLists.txt 2018-03-08 01:56:32.764107349 +0000 -@@ -37,7 +37,7 @@ - add_llvm_library(LLVM SHARED DISABLE_LLVM_LINK_LLVM_DYLIB SONAME ${SOURCES}) - - list(REMOVE_DUPLICATES LIB_NAMES) --if(("${CMAKE_SYSTEM_NAME}" STREQUAL "Linux") OR (MINGW) OR (HAIKU) -+if(("${CMAKE_SYSTEM_NAME}" MATCHES "^(Linux|Android)$") OR (MINGW) OR (HAIKU) - OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "FreeBSD") - OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "DragonFly") - OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")) # FIXME: It should be "GNU ld for elf" +--- ./tools/llvm-shlib/CMakeLists.txt.orig 2019-03-20 21:24:00.144316380 +0000 ++++ ./tools/llvm-shlib/CMakeLists.txt 2019-03-20 21:25:26.117941452 +0000 +@@ -48,6 +48,7 @@ + OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "OpenBSD") + OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "Fuchsia") + OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "DragonFly") ++ OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "Android") + OR ("${CMAKE_SYSTEM_NAME}" STREQUAL "SunOS")) # FIXME: It should be "GNU ld for elf" + configure_file( + ${CMAKE_CURRENT_SOURCE_DIR}/simple_version_script.map.in diff --git a/packages/lldb/build.sh b/packages/lldb/build.sh index b4d6da6e6..e1407629c 100644 --- a/packages/lldb/build.sh +++ b/packages/lldb/build.sh @@ -1,9 +1,8 @@ TERMUX_PKG_HOMEPAGE=https://lldb.llvm.org TERMUX_PKG_DESCRIPTION="LLVM based debugger" TERMUX_PKG_LICENSE="NCSA" -TERMUX_PKG_VERSION=7.0.1 -TERMUX_PKG_REVISION=1 -TERMUX_PKG_SHA256=76b46be75b412a3d22f0d26279306ae7e274fe4d7988a2184c529c38a6a76982 +TERMUX_PKG_VERSION=8.0.0 +TERMUX_PKG_SHA256=49918b9f09816554a20ac44c5f85a32dc0a7a00759b3259e78064d674eac0373 TERMUX_PKG_SRCURL=https://releases.llvm.org/${TERMUX_PKG_VERSION}/lldb-$TERMUX_PKG_VERSION.src.tar.xz TERMUX_PKG_DEPENDS="libedit, libllvm, libxml2, ncurses-ui-libs" TERMUX_PKG_BLACKLISTED_ARCHES="i686" diff --git a/packages/rust/0001-Backport-deprecation-fixes-from-commit-b7f030e.patch b/packages/rust/0001-Backport-deprecation-fixes-from-commit-b7f030e.patch new file mode 100644 index 000000000..6e51ef37d --- /dev/null +++ b/packages/rust/0001-Backport-deprecation-fixes-from-commit-b7f030e.patch @@ -0,0 +1,57 @@ +From 55030c7543d8e877ec7a6b577a51422c38f01259 Mon Sep 17 00:00:00 2001 +From: Josh Stone +Date: Fri, 1 Mar 2019 09:27:45 -0800 +Subject: [PATCH] Backport deprecation fixes from commit b7f030e + +--- + src/tools/linkchecker/main.rs | 6 +++--- + src/tools/tidy/src/features.rs | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/src/tools/linkchecker/main.rs b/src/tools/linkchecker/main.rs +index 59662be349dc..2cf0fcfd34cd 100644 +--- a/src/tools/linkchecker/main.rs ++++ b/src/tools/linkchecker/main.rs +@@ -78,7 +78,7 @@ impl FileEntry { + fn parse_ids(&mut self, file: &Path, contents: &str, errors: &mut bool) { + if self.ids.is_empty() { + with_attrs_in_source(contents, " id", |fragment, i, _| { +- let frag = fragment.trim_left_matches("#").to_owned(); ++ let frag = fragment.trim_start_matches("#").to_owned(); + let encoded = small_url_encode(&frag); + if !self.ids.insert(frag) { + *errors = true; +@@ -343,7 +343,7 @@ fn with_attrs_in_source(contents: &str, attr: &str, + Some(i) => i, + None => continue, + }; +- if rest[..pos_equals].trim_left_matches(" ") != "" { ++ if rest[..pos_equals].trim_start_matches(" ") != "" { + continue; + } + +@@ -355,7 +355,7 @@ fn with_attrs_in_source(contents: &str, attr: &str, + }; + let quote_delim = rest.as_bytes()[pos_quote] as char; + +- if rest[..pos_quote].trim_left_matches(" ") != "" { ++ if rest[..pos_quote].trim_start_matches(" ") != "" { + continue; + } + let rest = &rest[pos_quote + 1..]; +diff --git a/src/tools/tidy/src/features.rs b/src/tools/tidy/src/features.rs +index 2435a0cfd4e3..bf2cfbf32fc7 100644 +--- a/src/tools/tidy/src/features.rs ++++ b/src/tools/tidy/src/features.rs +@@ -188,7 +188,7 @@ pub fn collect_lang_features(base_src_path: &Path, bad: &mut bool) -> Features { + } + + let mut parts = line.split(','); +- let level = match parts.next().map(|l| l.trim().trim_left_matches('(')) { ++ let level = match parts.next().map(|l| l.trim().trim_start_matches('(')) { + Some("active") => Status::Unstable, + Some("removed") => Status::Removed, + Some("accepted") => Status::Stable, +-- +2.20.1 + diff --git a/packages/rust/build.sh b/packages/rust/build.sh index 5ae4f9964..8174f16e9 100644 --- a/packages/rust/build.sh +++ b/packages/rust/build.sh @@ -2,8 +2,8 @@ TERMUX_PKG_HOMEPAGE=https://www.rust-lang.org/ TERMUX_PKG_DESCRIPTION="Systems programming language focused on safety, speed and concurrency" TERMUX_PKG_LICENSE="MIT" TERMUX_PKG_MAINTAINER="Kevin Cotugno @kcotugno" -TERMUX_PKG_VERSION=1.32.0 -TERMUX_PKG_SHA256=d617a7dc39daaafa8256320991005fc376c8ef2080593918301b24466d0067af +TERMUX_PKG_VERSION=1.33.0 +TERMUX_PKG_SHA256=f4b1a72f1a29b23dcc9d7be5f60878f0434560513273906aa93dcd5c0de39b71 TERMUX_PKG_SRCURL=https://static.rust-lang.org/dist/rustc-$TERMUX_PKG_VERSION-src.tar.xz TERMUX_PKG_DEPENDS="clang, openssl, lld" @@ -32,13 +32,16 @@ termux_step_configure() { export ${env_host}_OPENSSL_DIR=$TERMUX_PREFIX export X86_64_UNKNOWN_LINUX_GNU_OPENSSL_LIB_DIR=/usr/lib/x86_64-linux-gnu export X86_64_UNKNOWN_LINUX_GNU_OPENSSL_INCLUDE_DIR=/usr/include + export PKG_CONFIG_ALLOW_CROSS=1 # for backtrace-sys export CC_x86_64_unknown_linux_gnu=gcc export CFLAGS_x86_64_unknown_linux_gnu="-O2" - unset CC CXX CPP LD CFLAGS CXXFLAGS CPPFLAGS LDFLAGS PKG_CONFIG + unset CC CXX CPP LD CFLAGS CXXFLAGS CPPFLAGS LDFLAGS PKG_CONFIG AR } termux_step_make() { + # bug workaround with unstable-book-gen + $TERMUX_PKG_SRCDIR/x.py --host $CARGO_TARGET_NAME build cargo $TERMUX_PKG_SRCDIR/x.py dist \ --host $CARGO_TARGET_NAME \ --target $CARGO_TARGET_NAME \ diff --git a/packages/rust/config.toml b/packages/rust/config.toml index fa67b4016..bc6ebac57 100644 --- a/packages/rust/config.toml +++ b/packages/rust/config.toml @@ -30,6 +30,10 @@ channel = "stable" rpath = false +[target.x86_64-unknown-linux-gnu] +llvm-config = "/usr/bin/llvm-config-7" + + [target.@triple@] android-ndk = "@TERMUX_STANDALONE_TOOLCHAIN@" llvm-config = "@TERMUX_PREFIX@/bin/llvm-config" diff --git a/packages/rust/llvm-8.patch b/packages/rust/llvm-8.patch new file mode 100644 index 000000000..6382e4e7e --- /dev/null +++ b/packages/rust/llvm-8.patch @@ -0,0 +1,399 @@ +--- a/src/rustllvm/PassWrapper.cpp ++++ b/src/rustllvm/PassWrapper.cpp +@@ -789,7 +789,7 @@ struct LLVMRustThinLTOData { + StringMap ModuleToDefinedGVSummaries; + + #if LLVM_VERSION_GE(7, 0) +- LLVMRustThinLTOData() : Index(/* isPerformingAnalysis = */ false) {} ++ LLVMRustThinLTOData() : Index(/* HaveGVs = */ false) {} + #endif + }; + +@@ -865,7 +865,12 @@ LLVMRustCreateThinLTOData(LLVMRustThinLTOModule *modules, + auto deadIsPrevailing = [&](GlobalValue::GUID G) { + return PrevailingType::Unknown; + }; ++#if LLVM_VERSION_GE(8, 0) ++ computeDeadSymbolsWithConstProp(Ret->Index, Ret->GUIDPreservedSymbols, ++ deadIsPrevailing, /* ImportEnabled = */ true); ++#else + computeDeadSymbols(Ret->Index, Ret->GUIDPreservedSymbols, deadIsPrevailing); ++#endif + #else + computeDeadSymbols(Ret->Index, Ret->GUIDPreservedSymbols); + #endif +diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp +index 9d3e6f93b0c1..7905e9f0f237 100644 +--- a/src/rustllvm/RustWrapper.cpp ++++ b/src/rustllvm/RustWrapper.cpp +@@ -294,7 +294,7 @@ extern "C" void LLVMRustSetHasUnsafeAlgebra(LLVMValueRef V) { + extern "C" LLVMValueRef + LLVMRustBuildAtomicLoad(LLVMBuilderRef B, LLVMValueRef Source, const char *Name, + LLVMAtomicOrdering Order) { +- LoadInst *LI = new LoadInst(unwrap(Source), 0); ++ LoadInst *LI = new LoadInst(unwrap(Source)); + LI->setAtomic(fromRust(Order)); + return wrap(unwrap(B)->Insert(LI, Name)); + } +@@ -511,6 +511,71 @@ static DINode::DIFlags fromRust(LLVMRustDIFlags Flags) { + return Result; + } + ++// These values **must** match debuginfo::DISPFlags! They also *happen* ++// to match LLVM, but that isn't required as we do giant sets of ++// matching below. The value shouldn't be directly passed to LLVM. ++enum class LLVMRustDISPFlags : uint32_t { ++ SPFlagZero = 0, ++ SPFlagVirtual = 1, ++ SPFlagPureVirtual = 2, ++ SPFlagLocalToUnit = (1 << 2), ++ SPFlagDefinition = (1 << 3), ++ SPFlagOptimized = (1 << 4), ++ // Do not add values that are not supported by the minimum LLVM ++ // version we support! see llvm/include/llvm/IR/DebugInfoFlags.def ++ // (In LLVM < 8, createFunction supported these as separate bool arguments.) ++}; ++ ++inline LLVMRustDISPFlags operator&(LLVMRustDISPFlags A, LLVMRustDISPFlags B) { ++ return static_cast(static_cast(A) & ++ static_cast(B)); ++} ++ ++inline LLVMRustDISPFlags operator|(LLVMRustDISPFlags A, LLVMRustDISPFlags B) { ++ return static_cast(static_cast(A) | ++ static_cast(B)); ++} ++ ++inline LLVMRustDISPFlags &operator|=(LLVMRustDISPFlags &A, LLVMRustDISPFlags B) { ++ return A = A | B; ++} ++ ++inline bool isSet(LLVMRustDISPFlags F) { return F != LLVMRustDISPFlags::SPFlagZero; } ++ ++inline LLVMRustDISPFlags virtuality(LLVMRustDISPFlags F) { ++ return static_cast(static_cast(F) & 0x3); ++} ++ ++#if LLVM_VERSION_GE(8, 0) ++static DISubprogram::DISPFlags fromRust(LLVMRustDISPFlags SPFlags) { ++ DISubprogram::DISPFlags Result = DISubprogram::DISPFlags::SPFlagZero; ++ ++ switch (virtuality(SPFlags)) { ++ case LLVMRustDISPFlags::SPFlagVirtual: ++ Result |= DISubprogram::DISPFlags::SPFlagVirtual; ++ break; ++ case LLVMRustDISPFlags::SPFlagPureVirtual: ++ Result |= DISubprogram::DISPFlags::SPFlagPureVirtual; ++ break; ++ default: ++ // The rest are handled below ++ break; ++ } ++ ++ if (isSet(SPFlags & LLVMRustDISPFlags::SPFlagLocalToUnit)) { ++ Result |= DISubprogram::DISPFlags::SPFlagLocalToUnit; ++ } ++ if (isSet(SPFlags & LLVMRustDISPFlags::SPFlagDefinition)) { ++ Result |= DISubprogram::DISPFlags::SPFlagDefinition; ++ } ++ if (isSet(SPFlags & LLVMRustDISPFlags::SPFlagOptimized)) { ++ Result |= DISubprogram::DISPFlags::SPFlagOptimized; ++ } ++ ++ return Result; ++} ++#endif ++ + extern "C" uint32_t LLVMRustDebugMetadataVersion() { + return DEBUG_METADATA_VERSION; + } +@@ -575,16 +640,26 @@ LLVMRustDIBuilderCreateSubroutineType(LLVMRustDIBuilderRef Builder, + extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateFunction( + LLVMRustDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, + const char *LinkageName, LLVMMetadataRef File, unsigned LineNo, +- LLVMMetadataRef Ty, bool IsLocalToUnit, bool IsDefinition, +- unsigned ScopeLine, LLVMRustDIFlags Flags, bool IsOptimized, +- LLVMValueRef Fn, LLVMMetadataRef TParam, LLVMMetadataRef Decl) { ++ LLVMMetadataRef Ty, unsigned ScopeLine, LLVMRustDIFlags Flags, ++ LLVMRustDISPFlags SPFlags, LLVMValueRef Fn, LLVMMetadataRef TParam, ++ LLVMMetadataRef Decl) { + DITemplateParameterArray TParams = + DITemplateParameterArray(unwrap(TParam)); ++#if LLVM_VERSION_GE(8, 0) ++ DISubprogram *Sub = Builder->createFunction( ++ unwrapDI(Scope), Name, LinkageName, unwrapDI(File), ++ LineNo, unwrapDI(Ty), ScopeLine, fromRust(Flags), ++ fromRust(SPFlags), TParams, unwrapDIPtr(Decl)); ++#else ++ bool IsLocalToUnit = isSet(SPFlags & LLVMRustDISPFlags::SPFlagLocalToUnit); ++ bool IsDefinition = isSet(SPFlags & LLVMRustDISPFlags::SPFlagDefinition); ++ bool IsOptimized = isSet(SPFlags & LLVMRustDISPFlags::SPFlagOptimized); + DISubprogram *Sub = Builder->createFunction( + unwrapDI(Scope), Name, LinkageName, unwrapDI(File), + LineNo, unwrapDI(Ty), IsLocalToUnit, IsDefinition, + ScopeLine, fromRust(Flags), IsOptimized, TParams, + unwrapDIPtr(Decl)); ++#endif + unwrap(Fn)->setSubprogram(Sub); + return wrap(Sub); + } +@@ -773,14 +848,14 @@ extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateEnumerationType( + LLVMRustDIBuilderRef Builder, LLVMMetadataRef Scope, const char *Name, + LLVMMetadataRef File, unsigned LineNumber, uint64_t SizeInBits, + uint32_t AlignInBits, LLVMMetadataRef Elements, +- LLVMMetadataRef ClassTy, bool IsFixed) { ++ LLVMMetadataRef ClassTy, bool IsScoped) { + #if LLVM_VERSION_GE(7, 0) + return wrap(Builder->createEnumerationType( + unwrapDI(Scope), Name, unwrapDI(File), LineNumber, + SizeInBits, AlignInBits, DINodeArray(unwrapDI(Elements)), +- unwrapDI(ClassTy), "", IsFixed)); ++ unwrapDI(ClassTy), "", IsScoped)); + #else +- // Ignore IsFixed on older LLVM. ++ // Ignore IsScoped on older LLVM. + return wrap(Builder->createEnumerationType( + unwrapDI(Scope), Name, unwrapDI(File), LineNumber, + SizeInBits, AlignInBits, DINodeArray(unwrapDI(Elements)), +@@ -920,7 +995,11 @@ extern "C" void LLVMRustUnpackOptimizationDiagnostic( + if (loc.isValid()) { + *Line = loc.getLine(); + *Column = loc.getColumn(); ++#if LLVM_VERSION_GE(8, 0) ++ FilenameOS << loc.getAbsolutePath(); ++#else + FilenameOS << loc.getFilename(); ++#endif + } + + RawRustStringOstream MessageOS(MessageOut); +diff --git a/src/rustllvm/llvm-rebuild-trigger b/src/rustllvm/llvm-rebuild-trigger +index a268838de451..9ee1bceb632b 100644 +--- ./src/librustc_codegen_llvm/llvm/ffi.rs ++++ ./src/librustc_codegen_llvm/llvm/ffi.rs +@@ -2,7 +2,7 @@ use super::debuginfo::{ + DIBuilder, DIDescriptor, DIFile, DILexicalBlock, DISubprogram, DIType, + DIBasicType, DIDerivedType, DICompositeType, DIScope, DIVariable, + DIGlobalVariableExpression, DIArray, DISubrange, DITemplateTypeParameter, DIEnumerator, +- DINameSpace, DIFlags, ++ DINameSpace, DIFlags, DISPFlags, + }; + + use libc::{c_uint, c_int, size_t, c_char}; +@@ -591,6 +591,20 @@ pub mod debuginfo { + const FlagMainSubprogram = (1 << 21); + } + } ++ ++ // These values **must** match with LLVMRustDISPFlags!! ++ bitflags! { ++ #[repr(C)] ++ #[derive(Default)] ++ pub struct DISPFlags: ::libc::uint32_t { ++ const SPFlagZero = 0; ++ const SPFlagVirtual = 1; ++ const SPFlagPureVirtual = 2; ++ const SPFlagLocalToUnit = (1 << 2); ++ const SPFlagDefinition = (1 << 3); ++ const SPFlagOptimized = (1 << 4); ++ } ++ } + } + + extern { pub type ModuleBuffer; } +@@ -1387,11 +1401,9 @@ extern "C" { + File: &'a DIFile, + LineNo: c_uint, + Ty: &'a DIType, +- isLocalToUnit: bool, +- isDefinition: bool, + ScopeLine: c_uint, + Flags: DIFlags, +- isOptimized: bool, ++ SPFlags: DISPFlags, + Fn: &'a Value, + TParam: &'a DIArray, + Decl: Option<&'a DIDescriptor>) +@@ -1529,7 +1541,7 @@ extern "C" { + AlignInBits: u32, + Elements: &'a DIArray, + ClassType: &'a DIType, +- IsFixed: bool) ++ IsScoped: bool) + -> &'a DIType; + + pub fn LLVMRustDIBuilderCreateUnionType(Builder: &DIBuilder<'a>, +--- a/src/librustc_codegen_llvm/debuginfo/mod.rs ++++ ./src/librustc_codegen_llvm/debuginfo/mod.rs +@@ -12,7 +12,7 @@ use self::source_loc::InternalDebugLocation::{self, UnknownLocation}; + + use llvm; + use llvm::debuginfo::{DIFile, DIType, DIScope, DIBuilder, DISubprogram, DIArray, DIFlags, +- DILexicalBlock}; ++ DISPFlags, DILexicalBlock}; + use rustc::hir::CodegenFnAttrFlags; + use rustc::hir::def_id::{DefId, CrateNum, LOCAL_CRATE}; + use rustc::ty::subst::{Substs, UnpackedKind}; +@@ -283,7 +283,6 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> { + let linkage_name = mangled_name_of_instance(self, instance); + + let scope_line = span_start(self, span).line; +- let is_local_to_unit = is_node_local_to_unit(self, def_id); + + let function_name = CString::new(name).unwrap(); + let linkage_name = SmallCStr::new(&linkage_name.as_str()); +@@ -300,6 +299,14 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> { + flags |= DIFlags::FlagNoReturn; + } + ++ let mut spflags = DISPFlags::SPFlagDefinition; ++ if is_node_local_to_unit(self, def_id) { ++ spflags |= DISPFlags::SPFlagLocalToUnit; ++ } ++ if self.sess().opts.optimize != config::OptLevel::No { ++ spflags |= DISPFlags::SPFlagOptimized; ++ } ++ + let fn_metadata = unsafe { + llvm::LLVMRustDIBuilderCreateFunction( + DIB(self), +@@ -309,11 +316,9 @@ impl DebugInfoMethods<'tcx> for CodegenCx<'ll, 'tcx> { + file_metadata, + loc.line as c_uint, + function_type_metadata, +- is_local_to_unit, +- true, + scope_line as c_uint, + flags, +- self.sess().opts.optimize != config::OptLevel::No, ++ spflags, + llfn, + template_parameters, + None) +diff --git a/src/librustc_codegen_llvm/debuginfo/metadata.rs b/src/librustc_codegen_llvm/debuginfo/metadata.rs +index 9f63038c3623..3a7864cb7a5a 100644 +--- a/src/librustc_codegen_llvm/debuginfo/metadata.rs ++++ ./src/librustc_codegen_llvm/debuginfo/metadata.rs +@@ -13,7 +13,7 @@ use value::Value; + + use llvm; + use llvm::debuginfo::{DIArray, DIType, DIFile, DIScope, DIDescriptor, +- DICompositeType, DILexicalBlock, DIFlags}; ++ DICompositeType, DILexicalBlock, DIFlags, DebugEmissionKind}; + use llvm_util; + + use rustc_data_structures::stable_hasher::{HashStable, StableHasher}; +@@ -846,6 +846,7 @@ pub fn compile_unit_metadata(tcx: TyCtxt, + let producer = CString::new(producer).unwrap(); + let flags = "\0"; + let split_name = "\0"; ++ let kind = DebugEmissionKind::from_generic(tcx.sess.opts.debuginfo); + + unsafe { + let file_metadata = llvm::LLVMRustDIBuilderCreateFile( +@@ -859,7 +860,8 @@ pub fn compile_unit_metadata(tcx: TyCtxt, + tcx.sess.opts.optimize != config::OptLevel::No, + flags.as_ptr() as *const _, + 0, +- split_name.as_ptr() as *const _); ++ split_name.as_ptr() as *const _, ++ kind); + + if tcx.sess.opts.debugging_opts.profile { + let cu_desc_metadata = llvm::LLVMRustMetadataAsValue(debug_context.llcontext, +diff --git a/src/librustc_codegen_llvm/llvm/ffi.rs b/src/librustc_codegen_llvm/llvm/ffi.rs +index 853c1ff0047e..199c1220a2c4 100644 +--- a/src/librustc_codegen_llvm/llvm/ffi.rs ++++ ./src/librustc_codegen_llvm/llvm/ffi.rs +@@ -2,7 +2,7 @@ use super::debuginfo::{ + DIBuilder, DIDescriptor, DIFile, DILexicalBlock, DISubprogram, DIType, + DIBasicType, DIDerivedType, DICompositeType, DIScope, DIVariable, + DIGlobalVariableExpression, DIArray, DISubrange, DITemplateTypeParameter, DIEnumerator, +- DINameSpace, DIFlags, DISPFlags, ++ DINameSpace, DIFlags, DISPFlags, DebugEmissionKind, + }; + + use libc::{c_uint, c_int, size_t, c_char}; +@@ -605,6 +605,26 @@ pub mod debuginfo { + const SPFlagOptimized = (1 << 4); + } + } ++ ++ /// LLVMRustDebugEmissionKind ++ #[derive(Copy, Clone)] ++ #[repr(C)] ++ pub enum DebugEmissionKind { ++ NoDebug, ++ FullDebug, ++ LineTablesOnly, ++ } ++ ++ impl DebugEmissionKind { ++ pub fn from_generic(kind: rustc::session::config::DebugInfo) -> Self { ++ use rustc::session::config::DebugInfo; ++ match kind { ++ DebugInfo::None => DebugEmissionKind::NoDebug, ++ DebugInfo::Limited => DebugEmissionKind::LineTablesOnly, ++ DebugInfo::Full => DebugEmissionKind::FullDebug, ++ } ++ } ++ } + } + + extern { pub type ModuleBuffer; } +@@ -1381,7 +1401,8 @@ extern "C" { + isOptimized: bool, + Flags: *const c_char, + RuntimeVer: c_uint, +- SplitName: *const c_char) ++ SplitName: *const c_char, ++ kind: DebugEmissionKind) + -> &'a DIDescriptor; + + pub fn LLVMRustDIBuilderCreateFile(Builder: &DIBuilder<'a>, +diff --git a/src/rustllvm/RustWrapper.cpp b/src/rustllvm/RustWrapper.cpp +index 7905e9f0f237..e973318057c6 100644 +--- a/src/rustllvm/RustWrapper.cpp ++++ ./src/rustllvm/RustWrapper.cpp +@@ -576,6 +576,25 @@ static DISubprogram::DISPFlags fromRust(LLVMRustDISPFlags SPFlags) { + } + #endif + ++enum class LLVMRustDebugEmissionKind { ++ NoDebug, ++ FullDebug, ++ LineTablesOnly, ++}; ++ ++static DICompileUnit::DebugEmissionKind fromRust(LLVMRustDebugEmissionKind Kind) { ++ switch (Kind) { ++ case LLVMRustDebugEmissionKind::NoDebug: ++ return DICompileUnit::DebugEmissionKind::NoDebug; ++ case LLVMRustDebugEmissionKind::FullDebug: ++ return DICompileUnit::DebugEmissionKind::FullDebug; ++ case LLVMRustDebugEmissionKind::LineTablesOnly: ++ return DICompileUnit::DebugEmissionKind::LineTablesOnly; ++ default: ++ report_fatal_error("bad DebugEmissionKind."); ++ } ++} ++ + extern "C" uint32_t LLVMRustDebugMetadataVersion() { + return DEBUG_METADATA_VERSION; + } +@@ -616,11 +635,13 @@ extern "C" void LLVMRustDIBuilderFinalize(LLVMRustDIBuilderRef Builder) { + extern "C" LLVMMetadataRef LLVMRustDIBuilderCreateCompileUnit( + LLVMRustDIBuilderRef Builder, unsigned Lang, LLVMMetadataRef FileRef, + const char *Producer, bool isOptimized, const char *Flags, +- unsigned RuntimeVer, const char *SplitName) { ++ unsigned RuntimeVer, const char *SplitName, ++ LLVMRustDebugEmissionKind Kind) { + auto *File = unwrapDI(FileRef); + + return wrap(Builder->createCompileUnit(Lang, File, Producer, isOptimized, +- Flags, RuntimeVer, SplitName)); ++ Flags, RuntimeVer, SplitName, ++ fromRust(Kind))); + } + + extern "C" LLVMMetadataRef diff --git a/scripts/build/setup/termux_setup_rust.sh b/scripts/build/setup/termux_setup_rust.sh index 023c2d8c8..de277a980 100644 --- a/scripts/build/setup/termux_setup_rust.sh +++ b/scripts/build/setup/termux_setup_rust.sh @@ -10,7 +10,7 @@ termux_setup_rust() { export $ENV_NAME=$CC curl https://sh.rustup.rs -sSf > $TERMUX_PKG_TMPDIR/rustup.sh - sh $TERMUX_PKG_TMPDIR/rustup.sh -y --default-toolchain 1.32.0 + sh $TERMUX_PKG_TMPDIR/rustup.sh -y --default-toolchain 1.33.0 export PATH=$HOME/.cargo/bin:$PATH export RUSTFLAGS="-C link-arg=-Wl,-rpath=$TERMUX_PREFIX/lib -C link-arg=-Wl,--enable-new-dtags" diff --git a/scripts/setup-ubuntu.sh b/scripts/setup-ubuntu.sh index 672a1657f..db7d21a0f 100755 --- a/scripts/setup-ubuntu.sh +++ b/scripts/setup-ubuntu.sh @@ -40,6 +40,8 @@ PACKAGES+=" libssl-dev" # Needed to build Rust PACKAGES+=" gnupg" # Needed to verify downloaded .debs PACKAGES+=" jq" # Needed by bintray upload script. PACKAGES+=" lua5.3" # Needed to build luarocks package. +PACKAGES+=" python3-recommonmark" # needed for llvm-8 documentation +PACKAGES+=" llvm-7-tools" # so we don't build llvm for build sudo DEBIAN_FRONTEND=noninteractive \ apt-get install -yq --no-install-recommends $PACKAGES