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.
This commit is contained in:
dundargoc
2024-03-18 12:23:53 +01:00
committed by dundargoc
parent 881f5e5917
commit 2c1e8f7e96
16 changed files with 61 additions and 52 deletions

View File

@ -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()