summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Meta/CMake/utils.cmake16
1 files changed, 16 insertions, 0 deletions
diff --git a/Meta/CMake/utils.cmake b/Meta/CMake/utils.cmake
index caee954fcd..6cddf3cb5a 100644
--- a/Meta/CMake/utils.cmake
+++ b/Meta/CMake/utils.cmake
@@ -194,3 +194,19 @@ function(invoke_generator name generator version_file prefix header implementati
add_custom_target("generate_${prefix}${name}" DEPENDS "${header}" "${implementation}")
add_dependencies(all_generated "generate_${prefix}${name}")
endfunction()
+
+function(download_file url path)
+ if (NOT EXISTS "${path}")
+ get_filename_component(file "${path}" NAME)
+ message(STATUS "Downloading file ${file} from ${url}")
+
+ file(DOWNLOAD "${url}" "${path}" INACTIVITY_TIMEOUT 10 STATUS download_result)
+ list(GET download_result 0 status_code)
+ list(GET download_result 1 error_message)
+
+ if (NOT status_code EQUAL 0)
+ file(REMOVE "${path}")
+ message(FATAL_ERROR "Failed to download ${url}: ${error_message}")
+ endif()
+ endif()
+endfunction()