mirror of
https://github.com/AssetRipper/Cpp2IL.git
synced 2026-11-12 18:07:39 -10:00
219 lines
6.7 KiB
PowerShell
219 lines
6.7 KiB
PowerShell
param (
|
|
[switch]$help,
|
|
[string]$version
|
|
)
|
|
|
|
$ErrorActionPreference = "Stop"
|
|
|
|
$NugetPackages = @(
|
|
"Cpp2IL.Core"
|
|
"LibCpp2IL"
|
|
"StableNameDotNet"
|
|
"WasmDisassembler"
|
|
)
|
|
|
|
$Plugins = @(
|
|
"Cpp2IL.Plugin.BuildReport"
|
|
"Cpp2IL.Plugin.OrbisPkg"
|
|
"Cpp2IL.Plugin.Pdb"
|
|
"Cpp2IL.Plugin.StrippedCodeRegSupport"
|
|
)
|
|
|
|
$ZippedPlugins = @(
|
|
"Cpp2IL.Plugin.ControlFlowGraph"
|
|
)
|
|
|
|
if ($help) {
|
|
Write-Host "Usage: do-release.ps1 [-help] [-version <version>]"
|
|
Write-Host " -help: Display this help message"
|
|
Write-Host " -version: The version to build"
|
|
exit
|
|
}
|
|
|
|
if (-not $version) {
|
|
Write-Host "You must specify a version to build"
|
|
exit
|
|
}
|
|
|
|
Write-Host "===CPP2IL RELEASE SCRIPT==="
|
|
|
|
$ProjectRoot = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
$MainCommandLineAppDir = Join-Path $ProjectRoot "Cpp2IL"
|
|
$ArtifactsDir = Join-Path $ProjectRoot "artifacts"
|
|
$BuildDir = Join-Path $MainCommandLineAppDir "bin"
|
|
$ReleaseBuildDir = Join-Path $BuildDir "release"
|
|
|
|
Write-Host "Cleaning up old bin and artifacts directories"
|
|
|
|
foreach($proj in $NugetPackages)
|
|
{
|
|
$projDir = Join-Path $ProjectRoot $proj
|
|
$projBuildDir = Join-Path $projDir "bin"
|
|
|
|
if(Test-Path $projBuildDir)
|
|
{
|
|
Remove-Item -Recurse -Force $projBuildDir
|
|
}
|
|
}
|
|
|
|
if(Test-Path $ArtifactsDir)
|
|
{
|
|
Remove-Item -Recurse -Force $ArtifactsDir
|
|
}
|
|
|
|
$null = New-Item -ItemType Directory -Force -Path $ArtifactsDir
|
|
|
|
Write-Host "Building all Nuget packages..."
|
|
|
|
foreach($proj in $NugetPackages)
|
|
{
|
|
Write-Host " Building $proj..."
|
|
$projDir = Join-Path $ProjectRoot $proj
|
|
$projBuildDir = Join-Path $projDir "bin\Release"
|
|
|
|
$null = dotnet build -c Release /p:VersionSuffix=$version $projDir
|
|
|
|
# Should only be one nupkg file in the bin directory
|
|
$files = Get-ChildItem $projBuildDir -Filter "*.nupkg"
|
|
|
|
if($files.Count -ne 1)
|
|
{
|
|
Write-Host "Error: Expected 1 nupkg file in $projBuildDir, found $($files.Count)"
|
|
exit 1
|
|
}
|
|
|
|
$nupkgFileName = $files[0].Name
|
|
$nupkgFile = $files[0].FullName
|
|
$nupkgDestFile = Join-Path $ArtifactsDir $nupkgFileName
|
|
|
|
Write-Host " Copying $nupkgFileName to artifacts directory..."
|
|
|
|
Copy-Item $nupkgFile $nupkgDestFile
|
|
}
|
|
|
|
cd $MainCommandLineAppDir
|
|
|
|
$baseVersion = (Select-Xml -XPath "//Project/PropertyGroup/VersionPrefix" -Path ".\Cpp2IL.csproj").Node.InnerText
|
|
$fullVersionString = "$baseVersion-$version"
|
|
Write-Host "Building Cpp2IL command line executable, release version $fullVersionString"
|
|
|
|
Write-Host " Building Cpp2IL - Windows x64, Standalone .NET"
|
|
|
|
$null = dotnet publish -c Release -f "net9.0" -r "win-x64" /p:VersionSuffix=$version /p:PublishSingleFile=true --self-contained
|
|
|
|
Write-Host " Building Cpp2IL - Windows ARM64, Standalone .NET"
|
|
|
|
$null = dotnet publish -c Release -f "net9.0" -r "win-arm64" /p:VersionSuffix=$version /p:PublishSingleFile=true --self-contained
|
|
|
|
Write-Host " Building Cpp2IL - Linux x64, Standalone .NET"
|
|
|
|
$null = dotnet publish -c Release -f "net9.0" -r "linux-x64" /p:VersionSuffix=$version /p:PublishSingleFile=true --self-contained
|
|
|
|
Write-Host " Building Cpp2IL - Linux ARM64, Standalone .NET"
|
|
|
|
$null = dotnet publish -c Release -f "net9.0" -r "linux-arm64" /p:VersionSuffix=$version /p:PublishSingleFile=true --self-contained
|
|
|
|
Write-Host " Building Cpp2IL - MacOS x64, Standalone .NET"
|
|
|
|
$null = dotnet publish -c Release -f "net9.0" -r "osx-x64" /p:VersionSuffix=$version /p:PublishSingleFile=true --self-contained
|
|
|
|
Write-Host " Building Cpp2IL - MacOS ARM64, Standalone .NET"
|
|
|
|
$null = dotnet publish -c Release -f "net9.0" -r "osx-arm64" /p:VersionSuffix=$version /p:PublishSingleFile=true --self-contained
|
|
|
|
Write-Host " Building Cpp2IL - Windows, .NET Framework"
|
|
|
|
$null = dotnet publish -c Release -f "net472" -r "win-x64" /p:VersionSuffix=$version
|
|
|
|
function CopyAndRename($rid, $platform, $releasePlatformString, $extension)
|
|
{
|
|
$ridDir = Join-Path $ReleaseBuildDir $rid
|
|
$platformDir = Join-Path $ridDir $platform
|
|
$publishDir = Join-Path $platformDir "publish"
|
|
$file = Join-Path $publishDir "Cpp2IL$extension"
|
|
|
|
if(Test-Path $file)
|
|
{
|
|
# Cpp2IL-2022.1.0.pre-release-17-Windows.exe
|
|
$destFileName = "Cpp2IL-$fullVersionString-$releasePlatformString$extension"
|
|
Write-Host " Copying $destFileName..."
|
|
$newFile = Join-Path $ArtifactsDir $destFileName
|
|
Copy-Item $file $newFile
|
|
}
|
|
}
|
|
|
|
function ZipAndRename($rid, $platform, $releasePlatformString, $extension)
|
|
{
|
|
$ridDir = Join-Path $ReleaseBuildDir $rid
|
|
$platformDir = Join-Path $ridDir $platform
|
|
$publishDir = Join-Path $platformDir "publish"
|
|
|
|
# Zip all files in the publish directory
|
|
$zipFileName = "Cpp2IL-$fullVersionString-$releasePlatformString.zip"
|
|
Write-Host " Zipping $zipFileName..."
|
|
$zipFile = Join-Path $ArtifactsDir $zipFileName
|
|
$null = Compress-Archive -Path $publishDir\* -DestinationPath $zipFile
|
|
}
|
|
|
|
Write-Host "Moving files to artifacts directory"
|
|
|
|
CopyAndRename "net9.0" "win-x64" "Windows" ".exe"
|
|
CopyAndRename "net9.0" "win-arm64" "Windows-ARM64" ".exe"
|
|
CopyAndRename "net9.0" "linux-x64" "Linux" ""
|
|
CopyAndRename "net9.0" "linux-arm64" "Linux-ARM64" ""
|
|
CopyAndRename "net9.0" "osx-x64" "OSX" ""
|
|
CopyAndRename "net9.0" "osx-arm64" "OSX-ARM64" ""
|
|
ZipAndRename "net472" "win-x64" "Windows-Netframework472" ".exe"
|
|
|
|
Set-Location $ProjectRoot
|
|
|
|
Write-Host "Building plugins..."
|
|
|
|
foreach($plugin in $Plugins)
|
|
{
|
|
Write-Host " Building $plugin..."
|
|
$pluginDir = Join-Path $ProjectRoot $plugin
|
|
$pluginBuildDir = Join-Path $pluginDir "bin\Release"
|
|
|
|
if(Test-Path $pluginBuildDir)
|
|
{
|
|
Remove-Item -Recurse -Force $pluginBuildDir
|
|
}
|
|
|
|
$null = dotnet build -c Release $pluginDir
|
|
|
|
$directories = Get-ChildItem $pluginBuildDir -Directory
|
|
$pluginBuildDir = $directories[0].FullName
|
|
|
|
$pluginFileName = "$plugin.dll"
|
|
$pluginFile = Join-Path $pluginBuildDir $pluginFileName
|
|
$pluginDestFile = Join-Path $ArtifactsDir $pluginFileName
|
|
|
|
Write-Host " Copying $pluginFileName to artifacts directory..."
|
|
Copy-Item $pluginFile $pluginDestFile
|
|
}
|
|
|
|
foreach($plugin in $ZippedPlugins)
|
|
{
|
|
Write-Host " Building $plugin..."
|
|
$pluginDir = Join-Path $ProjectRoot $plugin
|
|
$pluginBuildDir = Join-Path $pluginDir "bin\Release"
|
|
|
|
if(Test-Path $pluginBuildDir)
|
|
{
|
|
Remove-Item -Recurse -Force $pluginBuildDir
|
|
}
|
|
|
|
$null = dotnet build -c Release $pluginDir
|
|
|
|
$directories = Get-ChildItem $pluginBuildDir -Directory
|
|
$pluginBuildDir = $directories[0].FullName
|
|
|
|
Write-Host " Zipping $pluginFileName to artifacts directory..."
|
|
$zipFileName = "$plugin.zip"
|
|
$zipFile = Join-Path $ArtifactsDir $zipFileName
|
|
$null = Compress-Archive -Path $pluginBuildDir\* -DestinationPath $zipFile
|
|
}
|
|
|
|
Write-Host "Done!"
|