aboutsummaryrefslogtreecommitdiff
path: root/cmake.deps/cmake/BuildTreesitterParsers.cmake
diff options
context:
space:
mode:
authorJosh Rahm <joshuarahm@gmail.com>2023-11-30 20:35:25 +0000
committerJosh Rahm <joshuarahm@gmail.com>2023-11-30 20:35:25 +0000
commit1b7b916b7631ddf73c38e3a0070d64e4636cb2f3 (patch)
treecd08258054db80bb9a11b1061bb091c70b76926a /cmake.deps/cmake/BuildTreesitterParsers.cmake
parenteaa89c11d0f8aefbb512de769c6c82f61a8baca3 (diff)
parent4a8bf24ac690004aedf5540fa440e788459e5e34 (diff)
downloadrneovim-1b7b916b7631ddf73c38e3a0070d64e4636cb2f3.tar.gz
rneovim-1b7b916b7631ddf73c38e3a0070d64e4636cb2f3.tar.bz2
rneovim-1b7b916b7631ddf73c38e3a0070d64e4636cb2f3.zip
Merge remote-tracking branch 'upstream/master' into aucmd_textputpostaucmd_textputpost
Diffstat (limited to 'cmake.deps/cmake/BuildTreesitterParsers.cmake')
-rw-r--r--cmake.deps/cmake/BuildTreesitterParsers.cmake44
1 files changed, 31 insertions, 13 deletions
diff --git a/cmake.deps/cmake/BuildTreesitterParsers.cmake b/cmake.deps/cmake/BuildTreesitterParsers.cmake
index d62b19d97d..eddc896e69 100644
--- a/cmake.deps/cmake/BuildTreesitterParsers.cmake
+++ b/cmake.deps/cmake/BuildTreesitterParsers.cmake
@@ -1,22 +1,40 @@
-function(BuildTSParser LANG TS_URL TS_SHA256 TS_CMAKE_FILE)
- set(NAME treesitter-${LANG})
- if(USE_EXISTING_SRC_DIR)
- unset(TS_URL)
+# Helper function to download treesitter parsers
+#
+# Single value arguments:
+# LANG - Parser language
+# CMAKE_FILE - Cmake file to build the parser with. Defaults to
+# TreesitterParserCMakeLists.txt.
+function(BuildTSParser)
+ cmake_parse_arguments(TS
+ ""
+ "LANG;CMAKE_FILE"
+ ""
+ ${ARGN})
+
+ if(NOT TS_CMAKE_FILE)
+ set(TS_CMAKE_FILE TreesitterParserCMakeLists.txt)
endif()
+
+ set(NAME treesitter-${TS_LANG})
+ string(TOUPPER "TREESITTER_${TS_LANG}_URL" URL_VARNAME)
+ set(URL ${${URL_VARNAME}})
+ string(TOUPPER "TREESITTER_${TS_LANG}_SHA256" HASH_VARNAME)
+ set(HASH ${${HASH_VARNAME}})
+
ExternalProject_Add(${NAME}
- URL ${TS_URL}
- URL_HASH SHA256=${TS_SHA256}
- DOWNLOAD_NO_PROGRESS TRUE
+ URL ${URL}
+ URL_HASH SHA256=${HASH}
DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/${NAME}
PATCH_COMMAND ${CMAKE_COMMAND} -E copy
${CMAKE_CURRENT_SOURCE_DIR}/cmake/${TS_CMAKE_FILE}
${DEPS_BUILD_DIR}/src/${NAME}/CMakeLists.txt
CMAKE_ARGS ${DEPS_CMAKE_ARGS}
- -DPARSERLANG=${LANG}
- CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
+ -D PARSERLANG=${TS_LANG}
+ CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS}
+ ${EXTERNALPROJECT_OPTIONS})
endfunction()
-BuildTSParser(c ${TREESITTER_C_URL} ${TREESITTER_C_SHA256} TreesitterParserCMakeLists.txt)
-BuildTSParser(lua ${TREESITTER_LUA_URL} ${TREESITTER_LUA_SHA256} TreesitterParserCMakeLists.txt)
-BuildTSParser(vim ${TREESITTER_VIM_URL} ${TREESITTER_VIM_SHA256} TreesitterParserCMakeLists.txt)
-BuildTSParser(help ${TREESITTER_HELP_URL} ${TREESITTER_HELP_SHA256} TreesitterParserCMakeLists.txt)
+foreach(lang c lua vim vimdoc query python bash)
+ BuildTSParser(LANG ${lang})
+endforeach()
+BuildTSParser(LANG markdown CMAKE_FILE MarkdownParserCMakeLists.txt)