| # 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() |