@@ -2,6 +2,7 @@ cmake_minimum_required(VERSION 3.24)
2
2
3
3
include (FetchContent )
4
4
5
+ # Note that this function only fetches the content and does NOT make it available
5
6
function (fetch_content )
6
7
set (oneValueArgs NAME GIT_REPO GIT_TAG DOWNLOAD_URL DOWNLOAD_URL_HASH ROOT_DIR )
7
8
@@ -36,37 +37,36 @@ function(fetch_content)
36
37
37
38
string (TOUPPER "${ARG_NAME} " UPPERCASE_NAME )
38
39
39
- # if root dir is defined, fetch content will not use git
40
- set (FETCHCONTENT_SOURCE_DIR_${UPPERCASE_NAME} ${ARG_ROOT_DIR} )
41
-
42
- if (ARG_DOWNLOAD_URL )
43
- FetchContent_Declare ( ${ARG_NAME}
44
- URL "${ARG_DOWNLOAD_URL} "
45
- URL_HASH "${ARG_DOWNLOAD_URL_HASH} "
46
- SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR} /${ARG_NAME} -src"
47
- BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR} /${ARG_NAME} -build"
48
- DOWNLOAD_EXTRACT_TIMESTAMP true
49
- )
50
- set (FETCH_SOURCE "${ARG_DOWNLOAD_URL} " )
51
- else ()
40
+ if (ARG_ROOT_DIR )
41
+ message (STATUS "Using ${ARG_NAME} from local ${ARG_ROOT_DIR} " )
52
42
FetchContent_Declare (${ARG_NAME}
53
- GIT_REPOSITORY ${ARG_GIT_REPO}
54
- GIT_TAG ${ARG_GIT_TAG}
55
- GIT_CONFIG advice.detachedHead=false
56
- GIT_SHALLOW true
57
- SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR} /${ARG_NAME} -src"
58
- BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR} /${ARG_NAME} -build"
59
- )
60
- set (FETCH_SOURCE "${ARG_GIT_REPO} /tree/${ARG_GIT_TAG} " )
61
- endif ()
62
-
63
-
64
- FetchContent_GetProperties (${ARG_NAME} )
65
-
66
- if (FETCHCONTENT_SOURCE_DIR_${UPPERCASE_NAME} )
67
- message (STATUS "Using ${ARG_NAME} from local ${FETCHCONTENT_SOURCE_DIR_${UPPERCASE_NAME} }" )
43
+ SOURCE_DIR "${ARG_ROOT_DIR} "
44
+ BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR} /${ARG_NAME} -build"
45
+ SOURCE_SUBDIR "do_not_make_available" # invalid folder to not execute CMakeLists.txt
46
+ )
68
47
else ()
69
- message (STATUS "Fetching ${ARG_NAME} from ${FETCH_SOURCE} " )
48
+ if (ARG_DOWNLOAD_URL )
49
+ message (STATUS "Fetching ${ARG_NAME} from ${ARG_DOWNLOAD_URL} " )
50
+ FetchContent_Declare ( ${ARG_NAME}
51
+ URL "${ARG_DOWNLOAD_URL} "
52
+ URL_HASH "${ARG_DOWNLOAD_URL_HASH} "
53
+ SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR} /${ARG_NAME} -src"
54
+ BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR} /${ARG_NAME} -build"
55
+ DOWNLOAD_EXTRACT_TIMESTAMP true
56
+ SOURCE_SUBDIR "do_not_make_available"
57
+ )
58
+ else ()
59
+ message (STATUS "Fetching ${ARG_NAME} from ${ARG_GIT_REPO} /tree/${ARG_GIT_TAG} " )
60
+ FetchContent_Declare (${ARG_NAME}
61
+ GIT_REPOSITORY ${ARG_GIT_REPO}
62
+ GIT_TAG ${ARG_GIT_TAG}
63
+ GIT_CONFIG advice.detachedHead=false
64
+ GIT_SHALLOW true
65
+ SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR} /${ARG_NAME} -src"
66
+ BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR} /${ARG_NAME} -build"
67
+ SOURCE_SUBDIR "do_not_make_available"
68
+ )
69
+ endif ()
70
70
endif ()
71
71
72
72
FetchContent_MakeAvailable (${ARG_NAME} )
0 commit comments