Mailing List Archive

[PATCH 01/18] llvm.org.eclass: Introduce llvm-project patch-friendly src_prepare
Introduce llvm.org_src_prepare() that calls appropriate src_prepare()
implementation (either cmake or default), causing patch application
to happen in ${WORKDIR} rather than ${S}. This makes it possible
to use patches made against llvm-project git repository out of the box.

Signed-off-by: Micha? Górny <mgorny@gentoo.org>
---
eclass/llvm.org.eclass | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)

diff --git a/eclass/llvm.org.eclass b/eclass/llvm.org.eclass
index b4b80df06d85..9fc975cd51cb 100644
--- a/eclass/llvm.org.eclass
+++ b/eclass/llvm.org.eclass
@@ -174,6 +174,9 @@ llvm.org_set_globals() {
# == phase functions ==

EXPORT_FUNCTIONS src_unpack
+if ver_test -ge 10.0.1_rc; then
+ EXPORT_FUNCTIONS src_prepare
+fi

# @FUNCTION: llvm.org_src_unpack
# @DESCRIPTION:
@@ -217,3 +220,23 @@ llvm.org_src_unpack() {
fi
fi
}
+
+# @FUNCTION: llvm.org_src_prepare
+# @DESCRIPTION:
+# Call appropriate src_prepare (cmake or default) depending on inherited
+# eclasses. Make sure that PATCHES and user patches are applied in top
+# ${WORKDIR}, so that patches straight from llvm-project repository
+# work correctly with -p1.
+llvm.org_src_prepare() {
+ if declare -f cmake_src_prepare >/dev/null; then
+ # cmake eclasses force ${S} for default_src_prepare
+ # but use ${CMAKE_USE_DIR} for everything else
+ CMAKE_USE_DIR=${S} \
+ S=${WORKDIR} \
+ cmake_src_prepare
+ else
+ pushd "${WORKDIR}" >/dev/null || die
+ default_src_prepare
+ popd >/dev/null || die
+ fi
+}
--
2.27.0