| # Copyright 2023 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 |
| |
| # One stop build of IREE Python packages for Windows. This presumes that |
| # dependencies are installed from install_windows_deps.ps1. |
| |
| # Configure settings with script parameters. |
| param( |
| [array]$python_versions=@("3.11"), |
| [array]$packages=@("iree-base-runtime", "iree-base-compiler"), |
| [System.String]$output_dir |
| ) |
| |
| # Also allow setting parameters via environment variables. |
| if ($env:override_python_versions) { $python_versions = $env:override_python_versions -split ' '}; |
| if ($env:packages) { $packages = $env:packages -split ' '}; |
| if ($env:output_dir) { $output_dir = $env:output_dir }; |
| # Default output directory requires evaluating an expression. |
| if (!$output_dir) { $output_dir = "${PSScriptRoot}\wheelhouse" }; |
| |
| $repo_root = resolve-path "${PSScriptRoot}\..\.." |
| |
| # Canonicalize paths. |
| md -Force ${output_dir} | Out-Null |
| $output_dir = resolve-path "${output_dir}" |
| |
| function run() { |
| Write-Host "Using Python versions: ${python_versions}" |
| |
| $installed_versions_output = py --list | Out-String |
| |
| # Build phase. |
| for($i=0 ; $i -lt $packages.Length; $i++) { |
| $package = $packages[$i] |
| |
| echo "******************** BUILDING PACKAGE ${package} ********************" |
| for($j=0 ; $j -lt $python_versions.Length; $j++) { |
| $python_version = $python_versions[$j] |
| |
| if (!("${installed_versions_output}" -like "*${python_version}*")) { |
| Write-Host "ERROR: Could not find python version: ${python_version}" |
| continue |
| } |
| |
| Write-Host ":::: Version: $(py -${python_version} --version)" |
| switch ($package) { |
| "iree-base-runtime" { |
| clean_wheels iree_base_runtime $python_version |
| build_iree_runtime $python_version |
| } |
| "iree-base-compiler" { |
| clean_wheels iree_base_compiler $python_version |
| build_iree_compiler $python_version |
| } |
| Default { |
| Write-Host "Unrecognized package '$package'" |
| exit 1 |
| } |
| } |
| } |
| } |
| } |
| |
| function build_iree_runtime() { |
| param($python_version) |
| $env:IREE_HAL_DRIVER_VULKAN = "ON" |
| $env:IREE_HAL_DRIVER_HIP = "ON" |
| $env:IREE_HAL_DRIVER_CUDA = "ON" |
| & py -${python_version} -m pip wheel -v -w $output_dir $repo_root/runtime/ |
| } |
| |
| function build_iree_compiler() { |
| param($python_version) |
| $env:IREE_TARGET_BACKEND_CUDA = "ON" |
| $env:IREE_TARGET_BACKEND_ROCM = "ON" |
| py -${python_version} -m pip wheel -v -w $output_dir $repo_root/compiler/ |
| } |
| |
| function clean_wheels() { |
| param($wheel_basename, $python_version) |
| Write-Host ":::: Clean wheels $wheel_basename $python_version" |
| |
| # python_version is something like "3.11", but we'd want something like "cp311". |
| $python_version_parts = $python_version.Split(".") |
| $python_version_major = $python_version_parts[0] |
| $python_version_minor = $python_version_parts[1] |
| $cpython_version_string = "cp${python_version_major}${python_version_minor}" |
| |
| Get-ChildItem ${output_dir} | Where{$_.Name -Match "${wheel_basename}-.*-${cpython_version_string}-.*.whl"} | Remove-Item |
| } |
| |
| run |