aboutsummaryrefslogtreecommitdiff
path: root/cmake
diff options
context:
space:
mode:
authordundargoc <gocdundar@gmail.com>2024-03-18 12:23:53 +0100
committerdundargoc <33953936+dundargoc@users.noreply.github.com>2024-03-23 13:36:12 +0100
commit2c1e8f7e96926f70151d737ea32f1e6ff3589263 (patch)
treeb15ec6229fcbb724f18a7a7d5db3d10676fd42b7 /cmake
parent881f5e59173a4f1b9a4cb16e425709e40d79d0e9 (diff)
downloadrneovim-2c1e8f7e96926f70151d737ea32f1e6ff3589263.tar.gz
rneovim-2c1e8f7e96926f70151d737ea32f1e6ff3589263.tar.bz2
rneovim-2c1e8f7e96926f70151d737ea32f1e6ff3589263.zip
build: use `GIT_REPOSITORY` for local URLs
`GIT_REPOSITORY` will cause cmake to rebuild if local dependency changes, which isn't the case for `URL`. Also document how to test a different commits of a dependency.
Diffstat (limited to 'cmake')
-rw-r--r--cmake/Deps.cmake25
1 files changed, 19 insertions, 6 deletions
diff --git a/cmake/Deps.cmake b/cmake/Deps.cmake
index 4700d08427..2e9a78ee22 100644
--- a/cmake/Deps.cmake
+++ b/cmake/Deps.cmake
@@ -19,7 +19,6 @@ if(APPLE)
endif()
set(DEPS_CMAKE_CACHE_ARGS -DCMAKE_OSX_ARCHITECTURES:STRING=${CMAKE_OSX_ARCHITECTURES})
-set(EXTERNALPROJECT_OPTIONS DOWNLOAD_NO_PROGRESS TRUE)
# MAKE_PRG
if(UNIX)
@@ -55,10 +54,24 @@ if(CMAKE_OSX_ARCHITECTURES)
endforeach()
endif()
-function(get_sha name ignore)
- unset(EXTERNALPROJECT_URL_HASH)
- if(NOT ${ignore})
- string(TOUPPER ${name} name_allcaps)
- set(EXTERNALPROJECT_URL_HASH URL_HASH SHA256=${${name_allcaps}_SHA256} PARENT_SCOPE)
+function(get_externalproject_options name DEPS_IGNORE_SHA)
+ string(TOUPPER ${name} name_allcaps)
+ set(url ${${name_allcaps}_URL})
+
+ set(EXTERNALPROJECT_OPTIONS DOWNLOAD_NO_PROGRESS TRUE)
+
+ if(EXISTS ${url})
+ list(APPEND EXTERNALPROJECT_OPTIONS
+ GIT_REPOSITORY ${${name_allcaps}_URL})
+ if(${CMAKE_VERSION} VERSION_GREATER_EQUAL 3.18)
+ list(APPEND EXTERNALPROJECT_OPTIONS GIT_REMOTE_UPDATE_STRATEGY CHECKOUT)
+ endif()
+ else()
+ list(APPEND EXTERNALPROJECT_OPTIONS URL ${${name_allcaps}_URL})
+ if(NOT ${DEPS_IGNORE_SHA})
+ list(APPEND EXTERNALPROJECT_OPTIONS URL_HASH SHA256=${${name_allcaps}_SHA256})
+ endif()
endif()
+
+ set(EXTERNALPROJECT_OPTIONS ${EXTERNALPROJECT_OPTIONS} PARENT_SCOPE)
endfunction()