neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

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)