cmake: do not install shell completions when `BUILD_CURL_EXE=OFF` Follow-up to 74542c1f4bfea75f92562075370fd839891cc440 #21459 Closes #21460
diff --git a/scripts/CMakeLists.txt b/scripts/CMakeLists.txt index 54bb814..f0617e5 100644 --- a/scripts/CMakeLists.txt +++ b/scripts/CMakeLists.txt
@@ -22,57 +22,59 @@ # ########################################################################### -option(CURL_COMPLETION_FISH "Install fish completions" OFF) -option(CURL_COMPLETION_ZSH "Install zsh completions" OFF) +if(BUILD_CURL_EXE) + option(CURL_COMPLETION_FISH "Install fish completions" OFF) + option(CURL_COMPLETION_ZSH "Install zsh completions" OFF) -if(CURL_COMPLETION_FISH OR - CURL_COMPLETION_ZSH) - if(Perl_FOUND) - if(CURL_COMPLETION_FISH) - set(_completion_fish "${CMAKE_CURRENT_BINARY_DIR}/curl.fish") - add_custom_command(OUTPUT "${_completion_fish}" - COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/completion.pl" - --opts-dir "${PROJECT_SOURCE_DIR}/docs/cmdline-opts" --shell fish > "${_completion_fish}" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/completion.pl" - VERBATIM - ) - add_custom_target("curl-completion-fish" ALL DEPENDS "${_completion_fish}") - endif() - - if(CURL_COMPLETION_ZSH) - set(_completion_zsh "${CMAKE_CURRENT_BINARY_DIR}/_curl") - add_custom_command(OUTPUT "${_completion_zsh}" - COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/completion.pl" - --opts-dir "${PROJECT_SOURCE_DIR}/docs/cmdline-opts" --shell zsh > "${_completion_zsh}" - DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/completion.pl" - VERBATIM - ) - add_custom_target("curl-completion-zsh" ALL DEPENDS "${_completion_zsh}") - endif() - - if(NOT CURL_DISABLE_INSTALL) + if(CURL_COMPLETION_FISH OR + CURL_COMPLETION_ZSH) + if(Perl_FOUND) if(CURL_COMPLETION_FISH) - if(NOT CURL_COMPLETION_FISH_DIR AND NOT CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_INSTALL_PREFIX) - find_package(PkgConfig QUIET) - pkg_get_variable(CURL_COMPLETION_FISH_DIR "fish" "completionsdir") - endif() - if(NOT CURL_COMPLETION_FISH_DIR AND CMAKE_INSTALL_DATAROOTDIR) - set(CURL_COMPLETION_FISH_DIR "${CMAKE_INSTALL_DATAROOTDIR}/fish/vendor_completions.d") - endif() - if(CURL_COMPLETION_FISH_DIR) - install(FILES "${_completion_fish}" DESTINATION "${CURL_COMPLETION_FISH_DIR}") - endif() + set(_completion_fish "${CMAKE_CURRENT_BINARY_DIR}/curl.fish") + add_custom_command(OUTPUT "${_completion_fish}" + COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/completion.pl" + --opts-dir "${PROJECT_SOURCE_DIR}/docs/cmdline-opts" --shell fish > "${_completion_fish}" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/completion.pl" + VERBATIM + ) + add_custom_target("curl-completion-fish" ALL DEPENDS "${_completion_fish}") endif() + if(CURL_COMPLETION_ZSH) - if(NOT CURL_COMPLETION_ZSH_DIR AND CMAKE_INSTALL_DATAROOTDIR) - set(CURL_COMPLETION_ZSH_DIR "${CMAKE_INSTALL_DATAROOTDIR}/zsh/site-functions") + set(_completion_zsh "${CMAKE_CURRENT_BINARY_DIR}/_curl") + add_custom_command(OUTPUT "${_completion_zsh}" + COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/completion.pl" + --opts-dir "${PROJECT_SOURCE_DIR}/docs/cmdline-opts" --shell zsh > "${_completion_zsh}" + DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/completion.pl" + VERBATIM + ) + add_custom_target("curl-completion-zsh" ALL DEPENDS "${_completion_zsh}") + endif() + + if(NOT CURL_DISABLE_INSTALL) + if(CURL_COMPLETION_FISH) + if(NOT CURL_COMPLETION_FISH_DIR AND NOT CMAKE_CROSSCOMPILING AND NOT DEFINED CMAKE_INSTALL_PREFIX) + find_package(PkgConfig QUIET) + pkg_get_variable(CURL_COMPLETION_FISH_DIR "fish" "completionsdir") + endif() + if(NOT CURL_COMPLETION_FISH_DIR AND CMAKE_INSTALL_DATAROOTDIR) + set(CURL_COMPLETION_FISH_DIR "${CMAKE_INSTALL_DATAROOTDIR}/fish/vendor_completions.d") + endif() + if(CURL_COMPLETION_FISH_DIR) + install(FILES "${_completion_fish}" DESTINATION "${CURL_COMPLETION_FISH_DIR}") + endif() endif() - if(CURL_COMPLETION_ZSH_DIR) - install(FILES "${_completion_zsh}" DESTINATION "${CURL_COMPLETION_ZSH_DIR}") + if(CURL_COMPLETION_ZSH) + if(NOT CURL_COMPLETION_ZSH_DIR AND CMAKE_INSTALL_DATAROOTDIR) + set(CURL_COMPLETION_ZSH_DIR "${CMAKE_INSTALL_DATAROOTDIR}/zsh/site-functions") + endif() + if(CURL_COMPLETION_ZSH_DIR) + install(FILES "${_completion_zsh}" DESTINATION "${CURL_COMPLETION_ZSH_DIR}") + endif() endif() endif() + else() + message(WARNING "No perl: cannot generate completion script") endif() - else() - message(WARNING "No perl: cannot generate completion script") endif() endif()