build: fix USE_EXISTING_SRC_DIR option

Since 0007aa50bd the build unsets all URL
variable immediately when USE_EXISTING_SRC_DIR is TRUE, which is
correct. However, this causes the function BuildTSParser to break down
as cmake functions aren't traditionally equipped to deal with empty
variables. Using cmake_parse_arguments fixes this issue.
This commit is contained in:
dundargoc 2023-03-05 18:45:34 +01:00 committed by GitHub
parent f636619d9e
commit 5dcf544f8a
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -1,5 +1,11 @@
function(BuildTSParser LANG TS_URL TS_SHA256 TS_CMAKE_FILE)
set(NAME treesitter-${LANG})
function(BuildTSParser)
cmake_parse_arguments(TS
""
"LANG;URL;SHA256;CMAKE_FILE"
""
${ARGN})
set(NAME treesitter-${TS_LANG})
ExternalProject_Add(${NAME}
URL ${TS_URL}
URL_HASH SHA256=${TS_SHA256}
@ -9,12 +15,36 @@ function(BuildTSParser LANG TS_URL TS_SHA256 TS_CMAKE_FILE)
${CMAKE_CURRENT_SOURCE_DIR}/cmake/${TS_CMAKE_FILE}
${DEPS_BUILD_DIR}/src/${NAME}/CMakeLists.txt
CMAKE_ARGS ${DEPS_CMAKE_ARGS}
-D PARSERLANG=${LANG}
-D PARSERLANG=${TS_LANG}
CMAKE_CACHE_ARGS ${DEPS_CMAKE_CACHE_ARGS})
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)
BuildTSParser(query ${TREESITTER_QUERY_URL} ${TREESITTER_QUERY_SHA256} TreesitterParserCMakeLists.txt)
BuildTSParser(
LANG c
URL ${TREESITTER_C_URL}
SHA256 ${TREESITTER_C_SHA256}
CMAKE_FILE TreesitterParserCMakeLists.txt)
BuildTSParser(
LANG lua
URL ${TREESITTER_LUA_URL}
SHA256 ${TREESITTER_LUA_SHA256}
CMAKE_FILE TreesitterParserCMakeLists.txt)
BuildTSParser(
LANG vim
URL ${TREESITTER_VIM_URL}
SHA256 ${TREESITTER_VIM_SHA256}
CMAKE_FILE TreesitterParserCMakeLists.txt)
BuildTSParser(
LANG help
URL ${TREESITTER_HELP_URL}
SHA256 ${TREESITTER_HELP_SHA256}
CMAKE_FILE TreesitterParserCMakeLists.txt)
BuildTSParser(
LANG query
URL ${TREESITTER_QUERY_URL}
SHA256 ${TREESITTER_QUERY_SHA256}
CMAKE_FILE TreesitterParserCMakeLists.txt)