diff options
-rw-r--r-- | .appveyor/build.ps1 | 122 | ||||
-rw-r--r-- | .appveyor/test.ps1 | 90 | ||||
-rw-r--r-- | .gitattributes | 1 | ||||
-rw-r--r-- | appveyor.yml | 27 |
4 files changed, 240 insertions, 0 deletions
diff --git a/.appveyor/build.ps1 b/.appveyor/build.ps1 new file mode 100644 index 0000000..173ba3c --- /dev/null +++ b/.appveyor/build.ps1 @@ -0,0 +1,122 @@ +param( + [string] $BuildDir = 'C:\Projects\build', + [string] $ProjectDir = $null, + [string] $Platform = $null, + [string] $Configuration = $null, + [string] $BoostDir = $null, + [string] $BoostLibraryDir = $null, + [bool] $UseAsm = $false +) + +$ErrorActionPreference = "Stop"; + +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 Format-AppVeyorBoostDir { + return "boost_" + $env:appveyor_boost_version.replace('.', '_') +} + +function Get-AppVeyorBoostDir { + return "C:\Libraries\$(Format-AppVeyorBoostDir)" +} + +function Get-AppVeyorBoostLibraryDir { + param( + [string] $Platform = $env:PLATFORM + ) + + $BoostDir = Get-AppVeyorBoostDir + + if ($Platform -eq 'x64') { + return "$BoostDir\lib64-msvc-14.1" + } else { + return "$BoostDir\lib32-msvc-14.1" + } +} + +function Build-Project { + param( + [Parameter(Mandatory=$true)] + [string] $ProjectDir, + [Parameter(Mandatory=$true)] + [string] $BuildDir, + [Parameter(Mandatory=$true)] + [string] $Platform, + [Parameter(Mandatory=$true)] + [string] $Configuration, + [Parameter(Mandatory=$true)] + [string] $BoostDir, + [string] $BoostLibraryDir = $null, + [bool] $UseAsm = $false + ) + + if (-not $BoostLibraryDir) { + $BoostLibraryDir = "$BoostDir\stage\lib" + } + + if ($UseAsm) { + $cmake_asm = 'ON' + } else { + $cmake_asm = 'OFF' + } + + mkdir $BuildDir + cd $BuildDir + + Invoke-Exe { cmake -Wno-dev ` + -G "Visual Studio 15 2017" -A $Platform ` + -D "AES_TOOLS_ASM=$cmake_asm" ` + -D "BOOST_ROOT=$BoostDir" ` + -D "BOOST_LIBRARYDIR=$BoostLibraryDir" ` + -D Boost_USE_STATIC_LIBS=ON ` + -D Boost_USE_STATIC_RUNTIME=ON ` + $ProjectDir + } + + Invoke-Exe { cmake --build . --config "$Configuration" -- /m } +} + +if (Test-AppVeyor) { + $cwd = pwd + $ProjectDir = $env:APPVEYOR_BUILD_FOLDER + $BuildDir = 'C:\Projects\build' + $Platform = $env:PLATFORM + $Configuration = $env:CONFIGURATION + $BoostDir = Get-AppVeyorBoostDir + $BoostLibraryDir = Get-AppVeyorBoostLibraryDir -Platform $Platform + $UseAsm = -not ($env:appveyor_asm -eq '0') +} + +Build-Project ` + -ProjectDir $ProjectDir ` + -BuildDir $BuildDir ` + -Platform $Platform ` + -Configuration $Configuration ` + -BoostDir $BoostDir ` + -BoostLibraryDir $BoostLibraryDir ` + -UseAsm $UseAsm + +if (Test-AppVeyor) { + cd $cwd +} diff --git a/.appveyor/test.ps1 b/.appveyor/test.ps1 new file mode 100644 index 0000000..88ad8a9 --- /dev/null +++ b/.appveyor/test.ps1 @@ -0,0 +1,90 @@ +param( + [string] $ProjectDir = $null, + [string] $UtilsDir = $null, + [string] $PythonDir = $null +) + +$ErrorActionPreference = "Stop"; + +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-AppVeyorBuildDir { + return 'C:\Projects\build' +} + +function Get-AppVeyorUtilsDir { + $configuration = $env:CONFIGURATION + return "$(Get-AppVeyorBuildDir)\utils\$configuration" +} + +function Get-AppVeyorPythonDir { + $platform = $env:PLATFORM + if ($platform -eq 'x64') { + return 'C:\Python36-x64' + } else { + return 'C:\Python36' + } +} + +function Run-ProjectTests { + param( + [Parameter(Mandatory=$true)] + [string] $ProjectDir, + [Parameter(Mandatory=$true)] + [string] $UtilsDir + ) + + $test_dir = "$ProjectDir\test" + cd $test_dir + + Invoke-Exe { python nist.py --path $UtilsDir --log nist.log } + Get-Content nist.log -Tail 5 + Invoke-Exe { python cavp.py --path $UtilsDir --log cavp.log } + Get-Content cavp.log -Tail 5 + Invoke-Exe { python nist.py --path $UtilsDir --log nist.log --boxes } + Get-Content nist.log -Tail 5 + Invoke-Exe { python cavp.py --path $UtilsDir --log cavp.log --boxes } + Get-Content cavp.log -Tail 5 + Invoke-Exe { python file.py --path $UtilsDir --log file.log } + Get-Content file.log -Tail 5 +} + +if (Test-AppVeyor) { + $cwd = pwd + $ProjectDir = $env:APPVEYOR_BUILD_FOLDER + $UtilsDir = Get-AppVeyorUtilsDir + $PythonDir = Get-AppVeyorPythonDir +} + +if ($PythonDir) { + $env:PATH = "${PythonDir};${env:PATH}" +} + +Run-ProjectTests ` + -ProjectDir $ProjectDir ` + -UtilsDir $UtilsDir + +if (Test-AppVeyor) { + cd $cwd +} diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..b086bda --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.ps1 text eol=crlf diff --git a/appveyor.yml b/appveyor.yml new file mode 100644 index 0000000..f6640b1 --- /dev/null +++ b/appveyor.yml @@ -0,0 +1,27 @@ +image: + - Visual Studio 2017 + +environment: + appveyor_boost_version: 1.69.0 + matrix: + - appveyor_asm: 1 + - appveyor_asm: 0 + +platform: + - Win32 + - x64 + +configuration: + - Debug + - Release + +matrix: + exclude: + - appveyor_asm: 1 + platform: x64 + +build_script: + - ps: .\.appveyor\build.ps1 + +test_script: + - ps: .\.appveyor\test.ps1 |