summaryrefslogtreecommitdiff
path: root/eclass
diff options
context:
space:
mode:
authorMichał Górny <mgorny@gentoo.org>2020-06-20 20:56:39 +0200
committerMichał Górny <mgorny@gentoo.org>2020-06-23 20:30:36 +0200
commit0593f945a6a1aaed13f6e3eb5938ab50d31c7c0a (patch)
tree638f91ac07ea5c25e7ec4b9b14cb05594d6dd517 /eclass
parentdev-erlang/jose: Bump. (diff)
downloadgentoo-0593f945a6a1aaed13f6e3eb5938ab50d31c7c0a.tar.gz
gentoo-0593f945a6a1aaed13f6e3eb5938ab50d31c7c0a.tar.bz2
gentoo-0593f945a6a1aaed13f6e3eb5938ab50d31c7c0a.zip
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>
Diffstat (limited to 'eclass')
-rw-r--r--eclass/llvm.org.eclass23
1 files changed, 23 insertions, 0 deletions
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
+}