diff --git CMakeLists.txt CMakeLists.txt index 5ad99cbf0..3828ee192 100644 --- CMakeLists.txt +++ CMakeLists.txt @@ -98,8 +98,21 @@ else() 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. if(NOT CMAKE_OSX_DEPLOYMENT_TARGET) diff --git cmake.deps/cmake/BuildTreesitterParsers.cmake cmake.deps/cmake/BuildTreesitterParsers.cmake index 837d075d2..6dbd69554 100644 --- cmake.deps/cmake/BuildTreesitterParsers.cmake +++ cmake.deps/cmake/BuildTreesitterParsers.cmake @@ -20,15 +20,17 @@ function(BuildTSParser) get_externalproject_options(${NAME} ${DEPS_IGNORE_SHA}) 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 python bash 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 python bash) BuildTSParser(LANG ${lang}) endforeach() BuildTSParser(LANG markdown CMAKE_FILE MarkdownParserCMakeLists.txt) diff --git src/nvim/CMakeLists.txt src/nvim/CMakeLists.txt index d9cc695c5..53bf044ba 100644 --- src/nvim/CMakeLists.txt +++ src/nvim/CMakeLists.txt @@ -767,12 +767,10 @@ if(WIN32) 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 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 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} USE_SOURCE_PERMISSIONS)