From 3b316cfc1782dbe004be880327f98a69e04e573d Mon Sep 17 00:00:00 2001 From: Finagolfin Date: Tue, 18 Jul 2023 21:17:51 +0530 Subject: [PATCH] enhance(libllvm): add a flag to clang so the Termux rpaths are not automatically added --- packages/libllvm/build.sh | 2 +- .../clang-include-clang-Driver-Options.td.patch | 15 +++++++++++++++ .../clang-lib-Driver-ToolChains-Linux.cpp.patch | 12 +++++++----- 3 files changed, 23 insertions(+), 6 deletions(-) create mode 100644 packages/libllvm/clang-include-clang-Driver-Options.td.patch diff --git a/packages/libllvm/build.sh b/packages/libllvm/build.sh index 4f3d95438f2866d..1ebfa21f930633b 100644 --- a/packages/libllvm/build.sh +++ b/packages/libllvm/build.sh @@ -5,7 +5,7 @@ TERMUX_PKG_LICENSE_FILE="llvm/LICENSE.TXT" TERMUX_PKG_MAINTAINER="@finagolfin" LLVM_MAJOR_VERSION=16 TERMUX_PKG_VERSION=${LLVM_MAJOR_VERSION}.0.6 -TERMUX_PKG_REVISION=1 +TERMUX_PKG_REVISION=2 TERMUX_PKG_SHA256=ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e 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 diff --git a/packages/libllvm/clang-include-clang-Driver-Options.td.patch b/packages/libllvm/clang-include-clang-Driver-Options.td.patch new file mode 100644 index 000000000000000..4b98436439e5efa --- /dev/null +++ b/packages/libllvm/clang-include-clang-Driver-Options.td.patch @@ -0,0 +1,15 @@ +diff --git a/clang/include/clang/Driver/Options.td b/clang/include/clang/Driver/Options.td +index 59e1337599b2..656545555349 100644 +--- a/clang/include/clang/Driver/Options.td ++++ b/clang/include/clang/Driver/Options.td +@@ -4879,6 +4879,10 @@ defm spec_constr_count : BooleanFFlag<"spec-constr-count">, Group, Group; + defm strength_reduce : + BooleanFFlag<"strength-reduce">, Group; ++defm termux_rpath : BoolFOption<"termux-rpath", ++ LangOpts<"OpenMP">, DefaultTrue, ++ NegFlag, PosFlag, ++ BothFlags<[], " setting rpaths for the Termux environment">>; + defm tls_model : BooleanFFlag<"tls-model">, Group; + defm tracer : BooleanFFlag<"tracer">, Group; + defm tree_dce : BooleanFFlag<"tree-dce">, Group; diff --git a/packages/libllvm/clang-lib-Driver-ToolChains-Linux.cpp.patch b/packages/libllvm/clang-lib-Driver-ToolChains-Linux.cpp.patch index c08a83d39ca1c56..49da07fb79603b9 100644 --- a/packages/libllvm/clang-lib-Driver-ToolChains-Linux.cpp.patch +++ b/packages/libllvm/clang-lib-Driver-ToolChains-Linux.cpp.patch @@ -20,7 +20,7 @@ addPathIfExists(D, concat(SysRoot, "/usr/lib/..", OSLibDir), Paths); if (IsRISCV) { StringRef ABIName = tools::riscv::getRISCVABI(Args, Triple); -@@ -311,7 +311,18 @@ +@@ -311,7 +311,20 @@ addPathIfExists(D, D.Dir + "/../lib", Paths); addPathIfExists(D, concat(SysRoot, "/lib"), Paths); @@ -32,10 +32,12 @@ + if (IsAndroid) { + addPathIfExists(D, concat(SysRoot, "/usr/", MultiarchTriple, "/lib"), Paths); + addPathIfExists(D, concat("/system/", OSLibDir), Paths); -+ if (nativeBuild) -+ ExtraOpts.push_back("-rpath=" + SysRoot + "/usr/lib"); -+ else -+ ExtraOpts.push_back("-rpath=" + SysRoot + "/usr/" + MultiarchTriple + "/lib"); ++ if (Args.hasFlag(options::OPT_ftermux_rpath, options::OPT_fno_termux_rpath, true)) { ++ if (nativeBuild) ++ ExtraOpts.push_back("-rpath=" + SysRoot + "/usr/lib"); ++ else ++ ExtraOpts.push_back("-rpath=" + SysRoot + "/usr/" + MultiarchTriple + "/lib"); ++ } + } }