Windows Build and release scripts (#220)

This commit is contained in:
Shadowtrance 2025-02-13 21:08:16 +10:00 committed by GitHub
parent 55bfb9fe3b
commit 6e77d5027f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 129 additions and 0 deletions

50
Buildscripts/build.ps1 Normal file
View File

@ -0,0 +1,50 @@
<#
.SYNOPSIS
Usage: build.ps1 [boardname]
Example: build.ps1 lilygo-tdeck
Description: Makes a clean build for the specified board.
#>
function EchoNewPhase {
param (
[string]$message
)
Write-Host "$message" -ForegroundColor Cyan
}
function FatalError {
param (
[string]$message
)
Write-Host "⚠️ $message" -ForegroundColor Red
exit 0
}
$sdkconfig_file = "sdkconfig.board.$($args[0])"
if ($args.Count -lt 1) {
FatalError "Must pass board name as first argument. (e.g. lilygo_tdeck)"
}
if (-Not (Test-Path $sdkconfig_file)) {
FatalError "Board not found: $sdkconfig_file"
}
EchoNewPhase "Cleaning build folder"
$BuildFolder = "build"
if (Test-Path $BuildFolder) {
Remove-Item -Path $BuildFolder -Recurse -Force
EchoNewPhase "Build folder deleted"
} else {
EchoNewPhase "Build folder doesn't exist."
}
EchoNewPhase "Building $sdkconfig_file"
Copy-Item -Path $sdkconfig_file -Destination "sdkconfig"
try {
& idf.py build
} catch {
FatalError "Failed to build esp32s3 SDK"
}

79
Buildscripts/release.ps1 Normal file
View File

@ -0,0 +1,79 @@
<#
.SYNOPSIS
Releases the current build labeled as a release for the specified board name.
.DESCRIPTION
Usage: .\release.ps1 [boardname]
Example: .\release.ps1 lilygo-tdeck
.PARAMETER board
The name of the board to release.
#>
function EchoNewPhase {
param(
[string]$Message
)
Write-Host "$message" -ForegroundColor Cyan
}
function FatalError {
param(
[string]$Message
)
Write-Host "⚠️ $message" -ForegroundColor Red
exit 0
}
function Release-Symbols {
param(
[string]$TargetPath
)
EchoNewPhase "Making symbols release at '$TargetPath'"
New-Item -ItemType Directory -Path $TargetPath -Force | Out-Null
Copy-Item -Path "build\*.elf" -Destination $TargetPath -Force
}
function Release-Build {
param(
[string]$TargetPath
)
EchoNewPhase "Making release at '$TargetPath'"
$binPath = Join-Path $TargetPath "Binaries"
$partitionTablePath = Join-Path $binPath "partition_table"
$bootloaderPath = Join-Path $binPath "bootloader"
New-Item -ItemType Directory -Path $binPath -Force | Out-Null
New-Item -ItemType Directory -Path $partitionTablePath -Force | Out-Null
New-Item -ItemType Directory -Path $bootloaderPath -Force | Out-Null
Copy-Item -Path "build\*.bin" -Destination $binPath -Force
Copy-Item -Path "build\bootloader\*.bin" -Destination $bootloaderPath -Force
Copy-Item -Path "build\partition_table\*.bin" -Destination $partitionTablePath -Force
Copy-Item -Path "build\flash_args" -Destination $binPath -Force
Copy-Item -Path "build\flasher_args.json" -Destination $binPath -Force
Copy-Item -Path "Buildscripts\Flashing\*" -Destination $TargetPath -Force
}
# Script start
$releasePath = "release"
$sdkconfig_file = "sdkconfig.board.$($args[0])"
$board = "$($args[0])"
if ($args.Count -lt 1) {
FatalError "Must pass board name as first argument. (e.g. lilygo_tdeck)"
}
if (-not (Test-Path $sdkconfig_file)) {
FatalError "Board not found: $sdkconfig_file"
}
$targetReleasePath = Join-Path $releasePath "Tactility-$board"
$targetSymbolsPath = Join-Path $releasePath "Tactility-$board-symbols"
Release-Build $targetReleasePath
Release-Symbols $targetSymbolsPath