diff options
| author | Andreas Sturmlechner <asturm@gentoo.org> | 2025-11-09 10:38:30 +0100 |
|---|---|---|
| committer | Andreas Sturmlechner <asturm@gentoo.org> | 2025-11-11 16:59:53 +0100 |
| commit | 05e860b77eb752ec90b106ee0ceebe92ddb3e38a (patch) | |
| tree | d37c9dee48413faacea187835a0bb744ac0549fa /eclass | |
| parent | eb6ee16360d104199935405ebd010f716d8f9c37 (diff) | |
| download | kde-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>
Diffstat (limited to 'eclass')
| -rw-r--r-- | eclass/cmake.eclass | 41 |
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 } |
