diff options
author | umarcor <unai.martinezcorral@ehu.eus> | 2021-01-05 20:46:15 +0100 |
---|---|---|
committer | tgingold <tgingold@users.noreply.github.com> | 2021-01-06 07:30:46 +0100 |
commit | 99853361819bff87e7cf8103c5205721ec195c32 (patch) | |
tree | 29a6dda1199534497f5a09ea1268aa3a619c41b8 /scripts/windows/appveyor | |
parent | 301f442a6e66a83b47ed7d40e5b61389b9c33446 (diff) | |
download | ghdl-99853361819bff87e7cf8103c5205721ec195c32.tar.gz ghdl-99853361819bff87e7cf8103c5205721ec195c32.tar.bz2 ghdl-99853361819bff87e7cf8103c5205721ec195c32.zip |
mv dist/* scripts/
Diffstat (limited to 'scripts/windows/appveyor')
-rw-r--r-- | scripts/windows/appveyor/build.ps1 | 112 | ||||
-rw-r--r-- | scripts/windows/appveyor/info.ps1 | 68 | ||||
-rw-r--r-- | scripts/windows/appveyor/install.ps1 | 39 | ||||
-rw-r--r-- | scripts/windows/appveyor/shared.psm1 | 49 | ||||
-rw-r--r-- | scripts/windows/appveyor/test.ps1 | 121 |
5 files changed, 389 insertions, 0 deletions
diff --git a/scripts/windows/appveyor/build.ps1 b/scripts/windows/appveyor/build.ps1 new file mode 100644 index 000000000..359fb4da7 --- /dev/null +++ b/scripts/windows/appveyor/build.ps1 @@ -0,0 +1,112 @@ +function Restore-NativeCommandStream +{ <# + .SYNOPSIS + This CmdLet gathers multiple ErrorRecord objects and reconstructs outputs + as a single line. + + .DESCRIPTION + This CmdLet collects multiple ErrorRecord objects and emits one String + object per line. + .PARAMETER InputObject + A object stream is required as an input. + .PARAMETER Indent + Indentation string. + #> + [CmdletBinding()] + param( + [Parameter(ValueFromPipeline=$true)] + $InputObject + ) + + begin + { $LineRemainer = "" } + + process + { if ($InputObject -is [System.Management.Automation.ErrorRecord]) + { if ($InputObject.FullyQualifiedErrorId -eq "NativeCommandError") + { Write-Output $InputObject.ToString() } + elseif ($InputObject.FullyQualifiedErrorId -eq "NativeCommandErrorMessage") + { $NewLine = $LineRemainer + $InputObject.ToString() + while (($NewLinePos = $NewLine.IndexOf("`n")) -ne -1) + { Write-Output $NewLine.Substring(0, $NewLinePos) + $NewLine = $NewLine.Substring($NewLinePos + 1) + } + $LineRemainer = $NewLine + } + } + elseif ($InputObject -is [String]) + { Write-Output $InputObject } + else + { Write-Host "Unsupported object in pipeline stream" } + } + + end + { if ($LineRemainer -ne "") + { Write-Output $LineRemainer } + } +} + +#### Environment + +$BUILD_DIRNAME = "$($env:BUILD_MINGW)-$($env:BUILD_BACKEND)" +$GHDL_BUILD_DIR = "$($env:APPVEYOR_BUILD_FOLDER)\build\$BUILD_DIRNAME" + +if ($env:APPVEYOR_REPO_TAG -eq "true") +{ + # There is a tag. Remove the leading v. + $BUILD_VERSION = $($env:APPVEYOR_REPO_TAG_NAME) -creplace "^v", "" +} +else +{ + $BUILD_VERSION = $($env:APPVEYOR_BUILD_VERSION) +} + +$PREFIX_DIRNAME = "$BUILD_VERSION-$BUILD_DIRNAME" + +$GHDL_PREFIX_DIR = "c:/Tools/GHDL/$PREFIX_DIRNAME" +$ZipFile = "ghdl-$PREFIX_DIRNAME.zip" + +$env:GHDL_BUILD_DIR = $GHDL_BUILD_DIR +$env:GHDL_PREFIX_DIR = $GHDL_PREFIX_DIR + +#### Build + +mkdir $GHDL_BUILD_DIR | cd + +if ($env:BUILD_BACKEND -eq "mcode") +{ Write-Host "Configuring GHDL for $($env:BUILD_MINGW), mcode..." -Foreground Yellow + + c:\msys64\usr\bin\bash.exe -c "../../configure --prefix=$GHDL_PREFIX_DIR LDFLAGS=-static" 2>&1 | Restore-NativeCommandStream | %{ "$_" } +} +elseif ($env:BUILD_BACKEND -eq "llvm") +{ Write-Host "Configuring GHDL for $($env:BUILD_MINGW), LLVM..." -Foreground Yellow + + c:\msys64\usr\bin\bash.exe -c "../../configure --prefix=$GHDL_PREFIX_DIR --with-llvm-config='llvm-config --link-static' LDFLAGS='-static' --enable-libghdl --enable-synth CXX=clang++" 2>&1 | Restore-NativeCommandStream | %{ "$_" } +} + +Write-Host "Building GHDL and libraries..." -Foreground Yellow +c:\msys64\usr\bin\make.exe 2>&1 | Restore-NativeCommandStream | %{ "$_" } +$Err = $LastExitCode + +if ($Err -eq 0) +{ + Write-Host "Installing GHDL and libraries..." -Foreground Yellow + c:\msys64\usr\bin\make.exe install 2>&1 | Restore-NativeCommandStream | %{ "$_" } + $Err = $LastExitCode +} + +#### Binaries + +if ($Err -eq 0) +{ + Write-Host "Building binary archives..." -Foreground Yellow + cd c:\Tools + 7z a "$($env:APPVEYOR_BUILD_FOLDER)\$ZipFile" -r "GHDL\$PREFIX_DIRNAME\" + + cd $env:APPVEYOR_BUILD_FOLDER + Push-AppveyorArtifact $ZipFile +} + +cd $env:APPVEYOR_BUILD_FOLDER + +exit $Err diff --git a/scripts/windows/appveyor/info.ps1 b/scripts/windows/appveyor/info.ps1 new file mode 100644 index 000000000..675bbe77e --- /dev/null +++ b/scripts/windows/appveyor/info.ps1 @@ -0,0 +1,68 @@ +function Restore-NativeCommandStream +{ <# + .SYNOPSIS + This CmdLet gathers multiple ErrorRecord objects and reconstructs outputs + as a single line. + + .DESCRIPTION + This CmdLet collects multiple ErrorRecord objects and emits one String + object per line. + .PARAMETER InputObject + A object stream is required as an input. + .PARAMETER Indent + Indentation string. + #> + [CmdletBinding()] + param( + [Parameter(ValueFromPipeline=$true)] + $InputObject + ) + + begin + { $LineRemainer = "" } + + process + { if ($InputObject -is [System.Management.Automation.ErrorRecord]) + { if ($InputObject.FullyQualifiedErrorId -eq "NativeCommandError") + { Write-Output $InputObject.ToString() } + elseif ($InputObject.FullyQualifiedErrorId -eq "NativeCommandErrorMessage") + { $NewLine = $LineRemainer + $InputObject.ToString() + while (($NewLinePos = $NewLine.IndexOf("`n")) -ne -1) + { Write-Output $NewLine.Substring(0, $NewLinePos) + $NewLine = $NewLine.Substring($NewLinePos + 1) + } + $LineRemainer = $NewLine + } + } + elseif ($InputObject -is [String]) + { Write-Output $InputObject } + else + { Write-Host "Unsupported object in pipeline stream" } + } + + end + { if ($LineRemainer -ne "") + { Write-Output $LineRemainer } + } +} + + +Write-Host ("ExecutionPolicy = {0}" -f (Get-ExecutionPolicy)) -Foreground Yellow +Write-Host "List env:..." -Foreground Yellow +dir env: | foreach { Write-Host (" {0}={1}" -f $_.Name,$_.Value) } +Write-Host "Print env:PATH..." -Foreground Yellow +$env:PATH.Split(";") | foreach { Write-Host " $_" } +Write-Host "Print GCC setup..." -Foreground Yellow +gcc.exe -v 2>&1 | Restore-NativeCommandStream | %{ "$_" } +Write-Host "Print GCC search directories..." -Foreground Yellow +gcc.exe -print-search-dirs 2>&1 | Restore-NativeCommandStream | %{ "$_" } + +if ($env:BUILD_BACKEND -eq "llvm") +{ Write-Host "Print CLang setup..." -Foreground Yellow + clang.exe -v 2>&1 | Restore-NativeCommandStream | %{ "$_" } + Write-Host "Print CLang search directories..." -Foreground Yellow + clang.exe -print-search-dirs 2>&1 | Restore-NativeCommandStream | %{ "$_" } +} + +Write-Host "Print gnatls setup..." -Foreground Yellow +gnatls.exe -v 2>&1 | Restore-NativeCommandStream | %{ "$_" } diff --git a/scripts/windows/appveyor/install.ps1 b/scripts/windows/appveyor/install.ps1 new file mode 100644 index 000000000..bf780fa19 --- /dev/null +++ b/scripts/windows/appveyor/install.ps1 @@ -0,0 +1,39 @@ +Write-Host "Installing dependencies ..." -Foreground Yellow +Write-Host "----------------------------------------" -Foreground Yellow +Write-Host "Installing MinGW64 packages ..." -Foreground Yellow + +C:\msys64\usr\bin\pacman -V +# list installed packages and versions +# C:\msys64\usr\bin\pacman -Q + +if ($env:BUILD_MINGW -eq "mingw32") +{ Write-Host "Installing MinGW32 packages ..." -Foreground Yellow + if ($env:BUILD_BACKEND -eq "mcode") + { + } + elseif ($env:BUILD_BACKEND -eq "llvm") + { C:\msys64\usr\bin\pacman -S mingw-w64-i686-llvm mingw-w64-i686-clang --noconfirm + } +} +elseif ($env:BUILD_MINGW -eq "mingw64") +{ Write-Host "Installing MinGW64 packages ..." -Foreground Yellow + if ($env:BUILD_BACKEND -eq "mcode") + { + } + elseif ($env:BUILD_BACKEND -eq "llvm") + { C:\msys64\usr\bin\pacman -S mingw-w64-x86_64-llvm mingw-w64-x86_64-clang --noconfirm + } +} + +Write-Host "Installing NuGet as PackageProvider ..." -Foreground Yellow +Install-PackageProvider NuGet -Force +Import-PackageProvider NuGet -Force +Set-PSRepository -Name PSGallery -InstallationPolicy Trusted + +Write-Host "Installing PowerShell modules ..." -Foreground Yellow +Install-Module Pscx -AllowClobber + +#Write-Host "Check all Write-* CmdLets ..." -Foreground Yellow +#Get-Command -Verb Write | Format-Table + +exit $LastExitCode diff --git a/scripts/windows/appveyor/shared.psm1 b/scripts/windows/appveyor/shared.psm1 new file mode 100644 index 000000000..3335182ff --- /dev/null +++ b/scripts/windows/appveyor/shared.psm1 @@ -0,0 +1,49 @@ +function Restore-NativeCommandStream +{ <# + .SYNOPSIS + This CmdLet gathers multiple ErrorRecord objects and reconstructs outputs + as a single line. + + .DESCRIPTION + This CmdLet collects multiple ErrorRecord objects and emits one String + object per line. + .PARAMETER InputObject + A object stream is required as an input. + .PARAMETER Indent + Indentation string. + #> + [CmdletBinding()] + param( + [Parameter(ValueFromPipeline=$true)] + $InputObject + ) + + begin + { $LineRemainer = "" } + + process + { if ($InputObject -is [System.Management.Automation.ErrorRecord]) + { if ($InputObject.FullyQualifiedErrorId -eq "NativeCommandError") + { Write-Output $InputObject.ToString() } + elseif ($InputObject.FullyQualifiedErrorId -eq "NativeCommandErrorMessage") + { $NewLine = $LineRemainer + $InputObject.ToString() + while (($NewLinePos = $NewLine.IndexOf("`n")) -ne -1) + { Write-Output $NewLine.Substring(0, $NewLinePos) + $NewLine = $NewLine.Substring($NewLinePos + 1) + } + $LineRemainer = $NewLine + } + } + elseif ($InputObject -is [String]) + { Write-Output $InputObject } + else + { Write-Host "Unsupported object in pipeline stream" } + } + + end + { if ($LineRemainer -ne "") + { Write-Output $LineRemainer } + } +} + +Export-ModuleMember -Function 'Restore-NativeCommandStream' diff --git a/scripts/windows/appveyor/test.ps1 b/scripts/windows/appveyor/test.ps1 new file mode 100644 index 000000000..65045f889 --- /dev/null +++ b/scripts/windows/appveyor/test.ps1 @@ -0,0 +1,121 @@ +function Restore-NativeCommandStream +{ <# + .SYNOPSIS + This CmdLet gathers multiple ErrorRecord objects and reconstructs outputs + as a single line. + + .DESCRIPTION + This CmdLet collects multiple ErrorRecord objects and emits one String + object per line. + .PARAMETER InputObject + A object stream is required as an input. + .PARAMETER Indent + Indentation string. + #> + [CmdletBinding()] + param( + [Parameter(ValueFromPipeline=$true)] + $InputObject + ) + + begin + { $LineRemainer = "" } + + process + { if ($InputObject -is [System.Management.Automation.ErrorRecord]) + { if ($InputObject.FullyQualifiedErrorId -eq "NativeCommandError") + { Write-Output $InputObject.ToString() } + elseif ($InputObject.FullyQualifiedErrorId -eq "NativeCommandErrorMessage") + { $NewLine = $LineRemainer + $InputObject.ToString() + while (($NewLinePos = $NewLine.IndexOf("`n")) -ne -1) + { Write-Output $NewLine.Substring(0, $NewLinePos) + $NewLine = $NewLine.Substring($NewLinePos + 1) + } + $LineRemainer = $NewLine + } + } + elseif ($InputObject -is [String]) + { Write-Output $InputObject } + else + { Write-Host "Unsupported object in pipeline stream" } + } + + end + { if ($LineRemainer -ne "") + { Write-Output $LineRemainer } + } +} + +Write-Host "Run testsuites..." -Foreground Yellow +cd "$($env:APPVEYOR_BUILD_FOLDER)\testsuite" +# Use a MinGW compatible path +$env:GHDL="$($env:GHDL_PREFIX_DIR)/bin/ghdl.exe" + +# Exit status +$Err = 0 + +# ============================================================================= +$TestFramework = "GNA" +Write-Host "Running GNA tests..." -Foreground Yellow +cd gna + +$Directories = dir -Directory * +foreach ($Directory in $Directories) +{ $TestName = "GNA test: {0}" -f $Directory.Name + $FileName = $Directory.Name + + Write-Host $TestName -Foreground Yellow + cd $Directory + Add-AppveyorTest -Name $TestName -Framework $TestFramework -FileName $FileName -Outcome Running + $start = Get-Date + c:\msys64\usr\bin\bash.exe -c "./testsuite.sh" 2>&1 | Restore-NativeCommandStream | %{ "$_" } + $end = Get-Date + $TotalMilliseconds = ($end - $start).TotalMilliseconds + if ($LastExitCode -eq 0) + { Write-Host "PASSED" -Foreground Green + Update-AppveyorTest -Name $TestName -Framework $TestFramework -FileName $FileName -Outcome Passed -Duration $TotalMilliseconds + } + else + { Write-Host "FAILED" -Foreground Red + Update-AppveyorTest -Name $TestName -Framework $TestFramework -FileName $FileName -Outcome Failed -Duration $TotalMilliseconds + $Err = 1 + } +} +cd ..\.. + +# ============================================================================= +$TestFramework = "VESTS" +Write-Host "Running VESTS tests..." -Foreground Yellow + +cd vests + +$TestName = "VESTS test:" # {0}" -f $Directory +$FileName = "VESTS" #$Directory + +Write-Host $TestName -Foreground Yellow +# Disable vests. It works but takes ~20 min +if ($true) +{ Add-AppveyorTest -Name $TestName -Framework $TestFramework -FileName $FileName -Outcome Skipped + $start = Get-Date +} +else +{ Add-AppveyorTest -Name $TestName -Framework $TestFramework -FileName $FileName -Outcome Running + $start = Get-Date + c:\msys64\usr\bin\bash.exe -c "./testsuite.sh" 2>&1 | Restore-NativeCommandStream | %{ "$_" } + $end = Get-Date + $TotalMilliseconds = ($end - $start).TotalMilliseconds + if ($LastExitCode -eq 0) + { Write-Host "PASSED" -Foreground Green + Update-AppveyorTest -Name $TestName -Framework $TestFramework -FileName $FileName -Outcome Passed -Duration $TotalMilliseconds + } + else + { Write-Host "FAILED" -Foreground Red + Update-AppveyorTest -Name $TestName -Framework $TestFramework -FileName $FileName -Outcome Failed -Duration $TotalMilliseconds + $Err = 1 + } + cd .. +} + +# ============================================================================= +cd $env:APPVEYOR_BUILD_FOLDER +exit $Err |