aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEnan Ajmain <3nan.ajmain@gmail.com>2023-02-08 15:08:18 +0600
committerGitHub <noreply@github.com>2023-02-08 10:08:18 +0100
commit645daaf5e912ca8623a99dbc2cdbeb34d64a91f8 (patch)
tree09030b5fb303edab73337bc94e9b3b405bc57d71
parent1ca4a8b1ddf5256ad53cf486d0b2125434168270 (diff)
downloadrneovim-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.txt8
-rw-r--r--cmake.deps/CMakeLists.txt10
-rwxr-xr-xsrc/nvim/CMakeLists.txt127
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