| # Copyright 2022 The IREE Authors | 
 | # | 
 | # Licensed under the Apache License v2.0 with LLVM Exceptions. | 
 | # See https://llvm.org/LICENSE.txt for license information. | 
 | # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
 |  | 
 | # iree_fetch_artifact() | 
 | # | 
 | # Download file from URL. NEVER Use this rule to download from untrusted | 
 | # sources, it doesn't unpack the file safely. | 
 | # | 
 | # Parameters: | 
 | # NAME: Name of target (see Note). | 
 | # SOURCE_URL: Source URL to donwload the file. | 
 | # OUTPUT: Path to the output file or directory to unpack. | 
 | # UNPACK: When added, it will try to unpack the archive if supported. | 
 | # | 
 | # Note: | 
 | # By default, it will create a target named ${_PACKAGE_NAME}_${_RULE_NAME}. | 
 | function(iree_fetch_artifact) | 
 |   cmake_parse_arguments( | 
 |     _RULE | 
 |     "UNPACK" | 
 |     "NAME;SOURCE_URL;OUTPUT" | 
 |     "" | 
 |     ${ARGN} | 
 |   ) | 
 |  | 
 |   set(_ARGS "${IREE_ROOT_DIR}/build_tools/scripts/download_file.py") | 
 |   list(APPEND _ARGS "${_RULE_SOURCE_URL}") | 
 |   list(APPEND _ARGS "-o") | 
 |   list(APPEND _ARGS "${_RULE_OUTPUT}") | 
 |  | 
 |   if(_RULE_UNPACK) | 
 |     list(APPEND _ARGS "--unpack") | 
 |   endif() | 
 |  | 
 |   # TODO: CMake built-in file command can replace the python script. But python | 
 |   # script also provides streaming unpack (doesn't use double space when | 
 |   # unpacking). Need to evaluate if we want to replace. | 
 |   add_custom_command( | 
 |     OUTPUT "${_RULE_OUTPUT}" | 
 |     COMMAND | 
 |       "${Python3_EXECUTABLE}" | 
 |       ${_ARGS} | 
 |     DEPENDS | 
 |       "${IREE_ROOT_DIR}/build_tools/scripts/download_file.py" | 
 |     COMMENT "Downloading ${_RULE_SOURCE_URL}" | 
 |   ) | 
 |  | 
 |   iree_package_name(_PACKAGE_NAME) | 
 |   add_custom_target("${_PACKAGE_NAME}_${_RULE_NAME}" | 
 |     DEPENDS | 
 |       "${_RULE_OUTPUT}" | 
 |   ) | 
 | endfunction() |