From 8a790cba559e22955f35c4089da597de10c406f8 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/2] 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 f7c9956325..1b89b6b606 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -102,6 +102,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 574344e4e0..04bc3cb842 100644 --- a/src/nvim/CMakeLists.txt +++ b/src/nvim/CMakeLists.txt @@ -771,13 +771,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) install(DIRECTORY ${BINARY_LIB_DIR} DESTINATION ${CMAKE_INSTALL_LIBDIR} -- 2.48.0