diff options
author | Enan Ajmain <3nan.ajmain@gmail.com> | 2023-02-08 15:08:18 +0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-02-08 10:08:18 +0100 |
commit | 645daaf5e912ca8623a99dbc2cdbeb34d64a91f8 (patch) | |
tree | 09030b5fb303edab73337bc94e9b3b405bc57d71 | |
parent | 1ca4a8b1ddf5256ad53cf486d0b2125434168270 (diff) | |
download | rneovim-645daaf5e912ca8623a99dbc2cdbeb34d64a91f8.tar.gz rneovim-645daaf5e912ca8623a99dbc2cdbeb34d64a91f8.tar.bz2 rneovim-645daaf5e912ca8623a99dbc2cdbeb34d64a91f8.zip |
build(Windows): make bundling nvim-qt optional (#21866)
Closes https://github.com/neovim/neovim/issues/14552.
-rw-r--r-- | CMakeLists.txt | 8 | ||||
-rw-r--r-- | cmake.deps/CMakeLists.txt | 10 | ||||
-rwxr-xr-x | src/nvim/CMakeLists.txt | 127 |
3 files changed, 81 insertions, 64 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 8df9eb19f9..00a1d3f7af 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -310,12 +310,18 @@ install_helper( # Go down the tree. # +if(EXISTS "${DEPS_PREFIX}/share/nvim-qt") + option(USE_BUNDLED_NVIMQT "Bundle neovim-qt" ON) +else() + option(USE_BUNDLED_NVIMQT "Bundle neovim-qt" OFF) +endif() + add_subdirectory(src/nvim) add_subdirectory(cmake.config) add_subdirectory(test/functional/fixtures) # compile test programs add_subdirectory(runtime) get_directory_property(GENERATED_HELP_TAGS DIRECTORY runtime DEFINITION GENERATED_HELP_TAGS) -if(WIN32) +if(WIN32 AND USE_BUNDLED_NVIMQT) install_helper( FILES ${DEPS_PREFIX}/share/nvim-qt/runtime/plugin/nvim_gui_shim.vim DESTINATION ${CMAKE_INSTALL_DATAROOTDIR}/nvim-qt/runtime/plugin) diff --git a/cmake.deps/CMakeLists.txt b/cmake.deps/CMakeLists.txt index 90ae91463d..9d5c793db4 100644 --- a/cmake.deps/CMakeLists.txt +++ b/cmake.deps/CMakeLists.txt @@ -76,6 +76,10 @@ else() option(USE_BUNDLED_LIBICONV "Use the bundled version of libiconv." OFF) endif() +if(WIN32) + option(USE_BUNDLED_NVIMQT "Bundle neovim-qt" ON) +endif() + option(USE_EXISTING_SRC_DIR "Skip download of deps sources in case of existing source directory." OFF) find_package(Git) @@ -261,9 +265,11 @@ if(WIN32) GetBinaryDep(TARGET wintools INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory . ${DEPS_INSTALL_DIR}/bin) - GetBinaryDep(TARGET wingui - INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory bin ${DEPS_INSTALL_DIR}/bin + if(USE_BUNDLED_NVIMQT) + GetBinaryDep(TARGET wingui + INSTALL_COMMAND ${CMAKE_COMMAND} -E copy_directory bin ${DEPS_INSTALL_DIR}/bin COMMAND ${CMAKE_COMMAND} -E copy_directory share ${DEPS_INSTALL_DIR}/share) + endif() GetBinaryDep(TARGET win32yank_X86_64 INSTALL_COMMAND ${CMAKE_COMMAND} -E copy win32yank.exe ${DEPS_INSTALL_DIR}/bin) diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt index e4bbdda0c3..fd1c3c28db 100755 --- a/src/nvim/CMakeLists.txt +++ b/src/nvim/CMakeLists.txt @@ -712,6 +712,59 @@ if(WIN32) -P ${PROJECT_SOURCE_DIR}/cmake/WindowsDllCopy.cmake) add_dependencies(nvim_runtime_deps nvim_dll_deps) + if(USE_BUNDLED_NVIMQT) + set(NVIMQT_DEPS + # Dependencies for neovim-qt + bearer/qgenericbearer.dll + iconengines/qsvgicon.dll + imageformats/qgif.dll + imageformats/qicns.dll + imageformats/qico.dll + imageformats/qjpeg.dll + imageformats/qsvg.dll + imageformats/qtga.dll + imageformats/qtiff.dll + imageformats/qwbmp.dll + imageformats/qwebp.dll + platforms/qwindows.dll + styles/qwindowsvistastyle.dll + translations/qt_ar.qm + translations/qt_bg.qm + translations/qt_ca.qm + translations/qt_cs.qm + translations/qt_da.qm + translations/qt_de.qm + translations/qt_en.qm + translations/qt_es.qm + translations/qt_fi.qm + translations/qt_fr.qm + translations/qt_gd.qm + translations/qt_he.qm + translations/qt_hu.qm + translations/qt_it.qm + translations/qt_ja.qm + translations/qt_ko.qm + translations/qt_lv.qm + translations/qt_pl.qm + translations/qt_ru.qm + translations/qt_sk.qm + translations/qt_uk.qm + D3Dcompiler_47.dll + libEGL.dll + libgcc_s_seh-1.dll + libGLESv2.dll + libstdc++-6.dll + libwinpthread-1.dll + nvim-qt.exe + opengl32sw.dll + Qt5Core.dll + Qt5Gui.dll + Qt5Network.dll + Qt5Svg.dll + Qt5Widgets.dll + ) + endif() + # A CMake script is used for copying the files to avoid the # "command line is too long" error that occurs when Ninja tries running # a command that exceeds the length limit (8191 characters) on Windows. @@ -719,67 +772,19 @@ if(WIN32) set(EXTERNAL_BLOBS_SCRIPT "file(MAKE_DIRECTORY \"${PROJECT_BINARY_DIR}/windows_runtime_deps/platforms\")") foreach(DEP_FILE IN ITEMS - curl-ca-bundle.crt - curl.exe - diff.exe - tee.exe - win32yank.exe - xxd.exe - - # Dependencies for neovim-qt - bearer/qgenericbearer.dll - iconengines/qsvgicon.dll - imageformats/qgif.dll - imageformats/qicns.dll - imageformats/qico.dll - imageformats/qjpeg.dll - imageformats/qsvg.dll - imageformats/qtga.dll - imageformats/qtiff.dll - imageformats/qwbmp.dll - imageformats/qwebp.dll - platforms/qwindows.dll - styles/qwindowsvistastyle.dll - translations/qt_ar.qm - translations/qt_bg.qm - translations/qt_ca.qm - translations/qt_cs.qm - translations/qt_da.qm - translations/qt_de.qm - translations/qt_en.qm - translations/qt_es.qm - translations/qt_fi.qm - translations/qt_fr.qm - translations/qt_gd.qm - translations/qt_he.qm - translations/qt_hu.qm - translations/qt_it.qm - translations/qt_ja.qm - translations/qt_ko.qm - translations/qt_lv.qm - translations/qt_pl.qm - translations/qt_ru.qm - translations/qt_sk.qm - translations/qt_uk.qm - D3Dcompiler_47.dll - libEGL.dll - libgcc_s_seh-1.dll - libGLESv2.dll - libstdc++-6.dll - libwinpthread-1.dll - nvim-qt.exe - opengl32sw.dll - Qt5Core.dll - Qt5Gui.dll - Qt5Network.dll - Qt5Svg.dll - Qt5Widgets.dll - - ) - get_filename_component(DEP_FILE_DIR ${DEP_FILE} DIRECTORY) - set(EXTERNAL_BLOBS_SCRIPT "${EXTERNAL_BLOBS_SCRIPT}\n" - "file(COPY \"${DEPS_PREFIX}/bin/${DEP_FILE}\" - DESTINATION \"${PROJECT_BINARY_DIR}/windows_runtime_deps/${DEP_FILE_DIR}\")") + curl-ca-bundle.crt + curl.exe + diff.exe + tee.exe + win32yank.exe + xxd.exe + + ${NVIMQT_DEPS} + ) + get_filename_component(DEP_FILE_DIR ${DEP_FILE} DIRECTORY) + set(EXTERNAL_BLOBS_SCRIPT "${EXTERNAL_BLOBS_SCRIPT}\n" + "file(COPY \"${DEPS_PREFIX}/bin/${DEP_FILE}\" + DESTINATION \"${PROJECT_BINARY_DIR}/windows_runtime_deps/${DEP_FILE_DIR}\")") endforeach() file(WRITE ${PROJECT_BINARY_DIR}/external_blobs.cmake ${EXTERNAL_BLOBS_SCRIPT}) add_custom_target(external_blobs |