Skip to content

Commit 653eb92

Browse files
authored
Merge pull request #163 from eseiler/infra/fallback_data
[INFRA] Add fallback for cmake < 3.30
2 parents e0c6339 + a21a75a commit 653eb92

File tree

2 files changed

+36
-17
lines changed

2 files changed

+36
-17
lines changed

cmake/test/add_local_data.cmake

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,12 @@ file (GLOB_RECURSE datasources
99
RELATIVE ${DATASOURCES_DATA_DIR}
1010
CONFIGURE_DEPENDS ${DATASOURCES_DATA_DIR}/*
1111
)
12-
list (REMOVE_ITEM datasources datasources.cmake README.md)
13-
list (FILTER datasources EXCLUDE REGEX "\.license")
12+
list (REMOVE_ITEM datasources datasources.cmake README.md REUSE.toml)
1413

1514
foreach (datasource IN LISTS datasources)
1615
get_filename_component (datasource_name "${datasource}" NAME)
17-
file (SHA256 ${DATASOURCES_DATA_DIR}/${datasource} datasource_hash)
16+
set (data_dir "${CMAKE_CURRENT_BINARY_DIR}/data")
17+
file (MAKE_DIRECTORY "${data_dir}")
1818

19-
declare_datasource (FILE ${datasource_name}
20-
URL ${DATASOURCES_DATA_DIR}/${datasource}
21-
URL_HASH SHA256=${datasource_hash}
22-
)
19+
configure_file ("${DATASOURCES_DATA_DIR}/${datasource}" "${data_dir}/${datasource_name}" COPYONLY)
2320
endforeach ()

cmake/test/declare_datasource.cmake

Lines changed: 32 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22
# SPDX-FileCopyrightText: 2016-2024 Knut Reinert & MPI für molekulare Genetik
33
# SPDX-License-Identifier: CC0-1.0
44

5-
include (FetchContent)
5+
if (CMAKE_VERSION VERSION_LESS 3.30)
6+
include (ExternalProject)
7+
else ()
8+
include (FetchContent)
9+
endif ()
610

711
# Example call:
812
#
@@ -38,6 +42,7 @@ include (FetchContent)
3842
# This uses under the hood ExternalProject's and you can pass any viable option of ExternalProject to this function and
3943
# overwrite the default behaviour. See https://cmake.org/cmake/help/latest/module/ExternalProject.html for more
4044
# information.
45+
4146
function (declare_datasource)
4247
set (options "")
4348
set (one_value_args FILE URL_HASH)
@@ -50,15 +55,32 @@ function (declare_datasource)
5055
# create data folder
5156
file (MAKE_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/data)
5257

53-
FetchContent_Populate ("${datasource_name}"
54-
URL "${ARG_URL}"
55-
URL_HASH "${ARG_URL_HASH}"
56-
DOWNLOAD_NAME "${ARG_FILE}"
57-
DOWNLOAD_NO_EXTRACT TRUE # don't extract archive files like .tar.gz.
58-
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/data/"
59-
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/data/"
60-
EXCLUDE_FROM_ALL TRUE ${ARG_UNPARSED_ARGUMENTS}
61-
)
58+
if (CMAKE_VERSION VERSION_LESS 3.30)
59+
ExternalProject_Add ("${datasource_name}"
60+
URL "${ARG_URL}"
61+
URL_HASH "${ARG_URL_HASH}"
62+
DOWNLOAD_NAME "${ARG_FILE}"
63+
CONFIGURE_COMMAND ""
64+
BUILD_COMMAND ""
65+
INSTALL_COMMAND ${CMAKE_COMMAND} -E create_symlink <DOWNLOADED_FILE>
66+
${CMAKE_CURRENT_BINARY_DIR}/data/${ARG_FILE}
67+
TEST_COMMAND ""
68+
PREFIX "${CMAKE_CURRENT_BINARY_DIR}/_datasources"
69+
DOWNLOAD_NO_EXTRACT TRUE # don't extract archive files like .tar.gz.
70+
EXCLUDE_FROM_ALL TRUE
71+
${ARG_UNPARSED_ARGUMENTS}
72+
)
73+
else ()
74+
FetchContent_Populate ("${datasource_name}"
75+
URL "${ARG_URL}"
76+
URL_HASH "${ARG_URL_HASH}"
77+
DOWNLOAD_NAME "${ARG_FILE}"
78+
DOWNLOAD_NO_EXTRACT TRUE # don't extract archive files like .tar.gz.
79+
SOURCE_DIR "${CMAKE_CURRENT_BINARY_DIR}/data/"
80+
BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/data/"
81+
EXCLUDE_FROM_ALL TRUE ${ARG_UNPARSED_ARGUMENTS}
82+
)
83+
endif ()
6284

6385
add_dependencies (${PROJECT_NAME}_test "${datasource_name}")
6486
endfunction ()

0 commit comments

Comments
 (0)