From 963028a65daf6a5b7153044282fc49c36c25946f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=A4rkl?= Date: Sat, 8 Jun 2024 07:47:36 +0200 Subject: [PATCH 1/3] build and install tree-sitter parsers neovim needs a number of prebuilt parsers in /lib/nvim/parser/ or else it will throw errors when opening e.g. ":help". USE_BUNDLED is also not a valid option for the root cmake build system anymore, but applies to the one in cmake.deps/. --- CMakeLists.txt | 13 +++++++++++++ cmake.deps/cmake/BuildTreesitterParsers.cmake | 4 +++- src/nvim/CMakeLists.txt | 12 +++++------- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index c99b0e0675..70966ccae9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -104,6 +104,19 @@ endif() list(INSERT CMAKE_PREFIX_PATH 0 ${DEPS_PREFIX}) +# Reading deps.txt adapted from cmake.deps/CMakeLists.txt +file(READ cmake.deps/deps.txt DEPENDENCIES) +STRING(REGEX REPLACE "\n" ";" DEPENDENCIES "${DEPENDENCIES}") +foreach(dep ${DEPENDENCIES}) + STRING(REGEX REPLACE " " ";" dep "${dep}") + list(GET dep 0 name) + list(GET dep 1 value) + set(${name} ${value}) +endforeach() +set(DEPS_IGNORE_SHA FALSE) +list(APPEND DEPS_CMAKE_ARGS -D "CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}" -D "CMAKE_C_FLAGS=${CMAKE_C_FLAGS}") +include(cmake.deps/cmake/BuildTreesitterParsers.cmake) + if(APPLE) # If the macOS deployment target is not set manually (via $MACOSX_DEPLOYMENT_TARGET), # fall back to local system version. Needs to be done both here and in cmake.deps. diff --git a/cmake.deps/cmake/BuildTreesitterParsers.cmake b/cmake.deps/cmake/BuildTreesitterParsers.cmake index 060447e6fe..9c3f7165e4 100644 --- a/cmake.deps/cmake/BuildTreesitterParsers.cmake +++ b/cmake.deps/cmake/BuildTreesitterParsers.cmake @@ -21,13 +21,15 @@ function(BuildTSParser) ExternalProject_Add(${NAME} DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/${NAME} PATCH_COMMAND ${CMAKE_COMMAND} -E copy - ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${TS_CMAKE_FILE} + ${CMAKE_CURRENT_LIST_DIR}/${TS_CMAKE_FILE} ${DEPS_BUILD_DIR}/src/${NAME}/CMakeLists.txt CMAKE_ARGS ${DEPS_CMAKE_ARGS} -D PARSERLANG=${TS_LANG} ${EXTERNALPROJECT_OPTIONS}) endfunction() +set(ALL_BUNDLED_TS_PARSER_TARGETS c lua vim vimdoc query markdown) # All parsers built in the lines directly below. +list(TRANSFORM ALL_BUNDLED_TS_PARSER_TARGETS PREPEND treesitter_) foreach(lang c lua vim vimdoc query) BuildTSParser(LANG ${lang}) endforeach() diff --git a/src/nvim/CMakeLists.txt b/src/nvim/CMakeLists.txt index 42bd94acd0..c04e477bc6 100644 --- a/src/nvim/CMakeLists.txt +++ b/src/nvim/CMakeLists.txt @@ -827,13 +827,11 @@ endif() file(MAKE_DIRECTORY ${BINARY_LIB_DIR}) -# install treesitter parser if bundled -if(EXISTS ${DEPS_PREFIX}/lib/nvim/parser) - add_custom_command( - TARGET nvim_runtime_deps - POST_BUILD - COMMAND ${CMAKE_COMMAND} -E ${COPY_DIRECTORY} ${DEPS_PREFIX}/lib/nvim/parser ${BINARY_LIB_DIR}/parser) -endif() +add_dependencies(nvim_runtime_deps ${ALL_BUNDLED_TS_PARSER_TARGETS}) +add_custom_command( + TARGET nvim_runtime_deps + POST_BUILD + COMMAND ${CMAKE_COMMAND} -E ${COPY_DIRECTORY} ${DEPS_INSTALL_DIR}/lib/nvim/parser ${BINARY_LIB_DIR}/parser) if(CYGWIN) if(NOT PREFER_LUA) -- 2.55.0