diff options
| author | Egor Tensin <egor@tensin.name> | 2026-06-14 20:13:01 +0200 |
|---|---|---|
| committer | Egor Tensin <egor@tensin.name> | 2026-06-14 20:13:01 +0200 |
| commit | f7ef10481f0053da96d1913d0b22869ea584e6b5 (patch) | |
| tree | c9e90de72f7fb33329beefff94e44fb759740fdd /scripts/build.ps1 | |
| parent | build.ps1: refactoring (diff) | |
| download | windows7-drivers-f7ef10481f0053da96d1913d0b22869ea584e6b5.tar.gz windows7-drivers-f7ef10481f0053da96d1913d0b22869ea584e6b5.zip | |
.appveyor/ -> scripts/
Diffstat (limited to 'scripts/build.ps1')
| -rw-r--r-- | scripts/build.ps1 | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/scripts/build.ps1 b/scripts/build.ps1 new file mode 100644 index 0000000..a68caad --- /dev/null +++ b/scripts/build.ps1 @@ -0,0 +1,99 @@ +param( + [Parameter(Mandatory=$true)] + [string] $InstallDir = $null, + [Parameter(Mandatory=$true)] + [string] $Platform = $null, + [Parameter(Mandatory=$true)] + [string] $Configuration = $null +) + +$ErrorActionPreference = "Stop"; +Set-PSDebug -Strict + +function Invoke-Exe { + param( + [ScriptBlock] $Cmd, + [int[]] $AllowedExitCodes = @(0) + ) + + $backupErrorActionPreference = $script:ErrorActionPreference + $script:ErrorActionPreference = 'Continue' + + try { + & $Cmd + if ($AllowedExitCodes -notcontains $LastExitCode) { + throw "External command failed with exit code ${LastExitCode}: $Cmd" + } + } finally { + $script:ErrorActionPreference = $backupErrorActionPreference + } +} + +function Test-AppVeyor { + return Test-Path env:APPVEYOR +} + +function Get-DriverBuildDir { + param( + [Parameter(Mandatory=$true)] + [string] $DriverName + ) + + return "$script:PSScriptRoot\..\km\build\wdk8.1update\$DriverName" +} + +function Get-DriverSolutionPath { + param( + [Parameter(Mandatory=$true)] + [string] $DriverName + ) + + $build_dir = Get-DriverBuildDir -DriverName $DriverName + return "$build_dir\$DriverName.sln" +} + +function Build-Driver { + param( + [Parameter(Mandatory=$true)] + [string] $DriverName + ) + + $build_dir = Get-DriverBuildDir -DriverName $DriverName + $solution_path = Get-DriverSolutionPath -DriverName $DriverName + + $msbuild_params = @() + $msbuild_params += "/p:Platform=$script:Platform" + $msbuild_params += "/p:Configuration=$script:Configuration" + $msbuild_params += "/p:SignMode=TestSign" + $msbuild_params += "/p:OutDir=$InstallDir\lib" + + cd $build_dir + Invoke-Exe { msbuild.exe $msbuild_params $solution_path } +} + +function Build-ProjectKernelMode { + $drivers = 'minimal', 'simple', 'nt_namespace' + + foreach ($driver in $drivers) { + Build-Driver -DriverName $driver + } +} + +function Build-Project { + if (Test-AppVeyor) { + $appveyor_cwd = pwd + } + + $script:InstallDir = (Resolve-Path $script:InstallDir).Path + + try { + Build-ProjectKernelMode + } finally { + if (Test-AppVeyor) { + cd $appveyor_cwd + Set-PSDebug -Off + } + } +} + +Build-Project |
