blob: e88942841b1786916e7e9c898194bfb411d2f962 [file] [log] [blame]
# 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