mirror of
https://github.com/zeek/zeek.git
synced 2025-10-02 14:48:21 +00:00
Adding CI files
This commit is contained in:
parent
d352ace4d2
commit
b712f00b7e
4 changed files with 152 additions and 45 deletions
45
ci/build.ps1
45
ci/build.ps1
|
@ -1,45 +0,0 @@
|
|||
param(
|
||||
[Parameter()]
|
||||
[ValidateSet("Debug", "Release")]
|
||||
[string] $BuildType = "Release"
|
||||
)
|
||||
|
||||
$SourceDirectory = (Convert-Path "$PSScriptRoot/../").Replace("\", "/")
|
||||
$WorkingDirectory = "$pwd"
|
||||
$BuildOutputDirectory = "$SourceDirectory/out/build/x64/$BuildType"
|
||||
$InstallDirectory = "$SourceDirectory/out/install/x64/$BuildType"
|
||||
|
||||
$commands = @()
|
||||
if (!(Get-Command cl)) {
|
||||
$commands += '"C:/Program Files (x86)/Microsoft Visual Studio/2019/Enterprise/VC/Auxiliary/Build/vcvars64.bat"'
|
||||
}
|
||||
|
||||
$commands += @"
|
||||
cmake.exe
|
||||
-G "Ninja"
|
||||
-S "$SourceDirectory"
|
||||
-B "$WorkingDirectory"
|
||||
-DCMAKE_BUILD_TYPE:STRING=$BuildType
|
||||
-DCMAKE_INSTALL_PREFIX:PATH="$InstallDirectory"
|
||||
-DDISABLE_PYTHON_BINDINGS=1 `
|
||||
2>&1
|
||||
"@.Replace("`r`n", "")
|
||||
|
||||
$commands += @"
|
||||
cmake.exe --build $WorkingDirectory --config $BuildType
|
||||
"@
|
||||
|
||||
$commands += @"
|
||||
cmake.exe --install $WorkingDirectory
|
||||
"@
|
||||
cmd /c ($commands -join " && ")
|
||||
|
||||
Write-Host "Copying build output to $BuildOutputDirectory..."
|
||||
mkdir $BuildOutputDirectory -Force | Out-Null
|
||||
Get-ChildItem $WorkingDirectory -Recurse -Attributes !ReparsePoint | foreach {
|
||||
$path = $_.FullName.Replace("$pwd", $BuildOutputDirectory)
|
||||
$parent = Split-Path -Parent $path
|
||||
mkdir $parent -Force | Out-Null
|
||||
Copy-Item $_.FullName -Destination $path -Force
|
||||
}
|
||||
Write-Host "Done."
|
67
ci/windows/CMakePresets.json
Normal file
67
ci/windows/CMakePresets.json
Normal file
|
@ -0,0 +1,67 @@
|
|||
{
|
||||
"version": 2,
|
||||
"configurePresets": [
|
||||
{
|
||||
"name": "base",
|
||||
"hidden": true,
|
||||
"description": "Base preset",
|
||||
"generator": "Ninja",
|
||||
"binaryDir": "${sourceDir}/out/build/${presetName}",
|
||||
"cacheVariables": {
|
||||
"CMAKE_C_COMPILER": "cl.exe",
|
||||
"CMAKE_CXX_COMPILER": "cl.exe"
|
||||
},
|
||||
"architecture": {
|
||||
"value": "x64",
|
||||
"strategy": "external"
|
||||
},
|
||||
"toolset": {
|
||||
"value": "host=x64,version=16.11",
|
||||
"strategy": "external"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "x64-Debug",
|
||||
"inherits": "base",
|
||||
"displayName": "x64 Debug",
|
||||
"description": "Sets debug build type and x64 arch",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Debug"
|
||||
}
|
||||
},
|
||||
{
|
||||
"name": "x64-Release",
|
||||
"displayName": "x64 Release",
|
||||
"description": "Sets release build type",
|
||||
"inherits": "x64-Debug",
|
||||
"cacheVariables": {
|
||||
"CMAKE_BUILD_TYPE": "Release"
|
||||
}
|
||||
}
|
||||
],
|
||||
"buildPresets": [
|
||||
{
|
||||
"name": "default-debug-build",
|
||||
"displayName": "Debug Build",
|
||||
"configurePreset": "x64-Debug"
|
||||
},
|
||||
{
|
||||
"name": "verbose-debug-build",
|
||||
"displayName": "Verbose Debug Build",
|
||||
"configurePreset": "x64-Debug",
|
||||
"nativeToolOptions": [ "-v" ]
|
||||
},
|
||||
{
|
||||
"name": "default-release-build",
|
||||
"displayName": "Release Build",
|
||||
"configurePreset": "x64-Release"
|
||||
},
|
||||
{
|
||||
"name": "verbose-release-build",
|
||||
"displayName": "Verbose Release Build",
|
||||
"configurePreset": "x64-Release",
|
||||
"nativeToolOptions": [ "-v" ]
|
||||
}
|
||||
],
|
||||
"testPresets": []
|
||||
}
|
73
ci/windows/Initialize-MSVC.ps1
Normal file
73
ci/windows/Initialize-MSVC.ps1
Normal file
|
@ -0,0 +1,73 @@
|
|||
param (
|
||||
[string] $Architecture='x64'
|
||||
)
|
||||
|
||||
if (!(Get-Module VSSetup))
|
||||
{
|
||||
Install-PackageProvider -Name NuGet -MinimumVersion 2.8.5.201 -Force
|
||||
Install-Module VSSetup -Force
|
||||
}
|
||||
|
||||
function Get-VSInstallPath {
|
||||
[CmdletBinding()]
|
||||
param (
|
||||
[Parameter(Mandatory=$true)]
|
||||
[int] $MaxVersion
|
||||
)
|
||||
$latest = Get-VSSetupInstance `
|
||||
| where { $_.InstallationVersion.Major -le $MaxVersion } `
|
||||
| Select-VSSetupInstance -Require Microsoft.VisualStudio.VC.CMake -Latest
|
||||
|
||||
if (!$latest)
|
||||
{
|
||||
throw [System.IO.FileNotFoundException]::new("No Visual Studio installation found that matches max version: $MaxVersion!")
|
||||
}
|
||||
return $latest.InstallationPath
|
||||
}
|
||||
|
||||
function Where-Program {
|
||||
[CmdletBinding()]
|
||||
param (
|
||||
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
|
||||
[string] $Program
|
||||
)
|
||||
process
|
||||
{
|
||||
return Get-Command $Program | select Source -ExpandProperty source | Split-Path -Parent
|
||||
}
|
||||
}
|
||||
|
||||
function Persist-EnvironmentVariable {
|
||||
[CmdletBinding()]
|
||||
param (
|
||||
[Parameter(Mandatory=$true,ValueFromPipeline=$true)]
|
||||
[string] $Name
|
||||
)
|
||||
process
|
||||
{
|
||||
$value=[System.Environment]::GetEnvironmentVariable($Name)
|
||||
[System.Environment]::SetEnvironmentVariable($Name, $value, [System.EnvironmentVariableTarget]::Machine)
|
||||
}
|
||||
}
|
||||
|
||||
$VsInstallationPath = Get-VSInstallPath -MaxVersion 16
|
||||
Write-Host "Found VS installation: $VsInstallationPath"
|
||||
|
||||
[array] $originalEnv = [System.Environment]::GetEnvironmentVariables().Keys
|
||||
|
||||
Import-Module "$VsInstallationPath\Common7\Tools\Microsoft.VisualStudio.DevShell.dll"
|
||||
Enter-VsDevShell -VsInstallPath $VsInstallationPath -SkipAutomaticLocation -DevCmdArguments "-arch=$Architecture"
|
||||
|
||||
$Programs = 'cmake', 'Ninja', 'cl'
|
||||
$programsPath = $Programs | Where-Program
|
||||
Write-Host "Found paths for $($Programs -join ', '): $($programsPath -join ', ')"
|
||||
|
||||
$newPath = "$($programsPath -join ';');${env:Path}"
|
||||
Write-Host "Persisting new PATH: $newPath"
|
||||
[System.Environment]::SetEnvironmentVariable('PATH', $newPath, [System.EnvironmentVariableTarget]::Machine)
|
||||
|
||||
[array] $vsEnv = [System.Environment]::GetEnvironmentVariables().Keys
|
||||
[array] $newEnv = $vsEnv | where { $_ -notin $originalEnv -and $_ -ne 'PATH' }
|
||||
|
||||
Write-Host "Persisting new environment variables: $($newEnv -join ', ')"
|
||||
$newEnv | Persist-EnvironmentVariable
|
12
ci/windows/Install-Prerequisites.ps1
Normal file
12
ci/windows/Install-Prerequisites.ps1
Normal file
|
@ -0,0 +1,12 @@
|
|||
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
|
||||
iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
|
||||
|
||||
choco install conan -y
|
||||
choco install sed -y
|
||||
choco install winflexbison -y
|
||||
if (!(Get-Command python))
|
||||
{
|
||||
choco install python -y
|
||||
}
|
||||
|
||||
[System.Environment]::SetEnvironmentVariable('PATH', "C:\Program Files\Git\bin;${env:PATH}", [System.EnvironmentVariableTarget]::Machine)
|
Loading…
Add table
Add a link
Reference in a new issue