BuildTreesitterParsers.cmake (993B)
1 # Helper function to download treesitter parsers 2 # 3 # Single value arguments: 4 # LANG - Parser language 5 # CMAKE_FILE - Cmake file to build the parser with. Defaults to 6 # TreesitterParserCMakeLists.txt. 7 function(BuildTSParser) 8 cmake_parse_arguments(TS 9 "" 10 "LANG;CMAKE_FILE" 11 "" 12 ${ARGN}) 13 14 if(NOT TS_CMAKE_FILE) 15 set(TS_CMAKE_FILE TreesitterParserCMakeLists.txt) 16 endif() 17 18 set(NAME treesitter_${TS_LANG}) 19 20 get_externalproject_options(${NAME} ${DEPS_IGNORE_SHA}) 21 ExternalProject_Add(${NAME} 22 DOWNLOAD_DIR ${DEPS_DOWNLOAD_DIR}/${NAME} 23 PATCH_COMMAND ${CMAKE_COMMAND} -E copy 24 ${CMAKE_CURRENT_SOURCE_DIR}/cmake/${TS_CMAKE_FILE} 25 ${DEPS_BUILD_DIR}/src/${NAME}/CMakeLists.txt 26 CMAKE_ARGS ${DEPS_CMAKE_ARGS} 27 -D PARSERLANG=${TS_LANG} 28 ${EXTERNALPROJECT_OPTIONS}) 29 endfunction() 30 31 foreach(lang c lua vim vimdoc query) 32 BuildTSParser(LANG ${lang}) 33 endforeach() 34 BuildTSParser(LANG markdown CMAKE_FILE MarkdownParserCMakeLists.txt)