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+
4146function (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} " )
6486endfunction ()
0 commit comments