summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndreas Sturmlechner <asturm@gentoo.org>2025-11-09 10:38:30 +0100
committerAndreas Sturmlechner <asturm@gentoo.org>2025-11-11 16:59:53 +0100
commit05e860b77eb752ec90b106ee0ceebe92ddb3e38a (patch)
treed37c9dee48413faacea187835a0bb744ac0549fa
parenteb6ee16360d104199935405ebd010f716d8f9c37 (diff)
downloadkde-05e860b77eb752ec90b106ee0ceebe92ddb3e38a.tar.gz
kde-05e860b77eb752ec90b106ee0ceebe92ddb3e38a.tar.bz2
kde-05e860b77eb752ec90b106ee0ceebe92ddb3e38a.zip
cmake.eclass: cmake_comment_add_subdirectory: optionally accept "-f <path>"
New function description: Comment out one or more add_subdirectory calls with #DONOTBUILD in a) a given file path (error out on nonexisting path) b) a CMakeLists.txt file inside a given directory (ewarn if not found) c) CMakeLists.txt in current directory (do nothing if not found). c) is unchanged prior behaviour. Signed-off-by: Andreas Sturmlechner <asturm@gentoo.org>
-rw-r--r--eclass/cmake.eclass41
1 files changed, 32 insertions, 9 deletions
diff --git a/eclass/cmake.eclass b/eclass/cmake.eclass
index b853727b473..98f10f8d9aa 100644
--- a/eclass/cmake.eclass
+++ b/eclass/cmake.eclass
@@ -207,21 +207,44 @@ cmake_run_in() {
}
# @FUNCTION: cmake_comment_add_subdirectory
-# @USAGE: <subdirectory>
+# @USAGE: [-f <filename or directory>] <subdirectory> [<subdirectories>]
# @DESCRIPTION:
-# Comment out one or more add_subdirectory calls in CMakeLists.txt in the current directory
+# Comment out one or more add_subdirectory calls with #DONOTBUILD in
+# a) a given file path (error out on nonexisting path)
+# b) a CMakeLists.txt file inside a given directory (ewarn if not found)
+# c) CMakeLists.txt in current directory (do nothing if not found).
cmake_comment_add_subdirectory() {
- if [[ -z ${1} ]]; then
- die "${FUNCNAME[0]} must be passed at least one directory name to comment"
+ local d filename="CMakeLists.txt"
+ if [[ $# -lt 1 ]]; then
+ die "${FUNCNAME} must be passed at least one subdirectory name to comment"
fi
+ case ${1} in
+ -f)
+ if [[ $# -ge 2 ]]; then
+ filename="${2}"
+ if [[ -d ${filename} ]]; then
+ filename+="/CMakeLists.txt"
+ if [[ ! -e ${filename} ]]; then
+ ewarn "You've given me nothing to work with in ${filename}!"
+ return
+ fi
+ elif [[ ! -e ${filename} ]]; then
+ die "${FUNCNAME}: called on non-existing ${filename}"
+ fi
+ else
+ die "${FUNCNAME}: bad number of arguments: -f <filename or directory> <subdirectory> expected"
+ fi
+ shift 2
+ ;;
+ *)
+ [[ -e ${filename} ]] || return
+ ;;
+ esac
- [[ -e "CMakeLists.txt" ]] || return
-
- local d
for d in $@; do
d=${d//\//\\/}
- sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${d}[[:space:]]*)/I s/^/#DONOTCOMPILE /" \
- -i CMakeLists.txt || die "failed to comment add_subdirectory(${d})"
+ sed -e "/add_subdirectory[[:space:]]*([[:space:]]*${d}[[:space:]]*)/I s/^/#DONOTBUILD /" \
+ -i ${filename} || die "failed to comment add_subdirectory(${d})"
done
}