From f7cfcfe15528a1619927aa61d138bbc87b2a2b5b Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Wed, 25 Nov 2015 04:16:47 +0100 Subject: Add vendor specific compile scripts (from Patrick Lehmann). for: Altera Quartus-II (tested with 15.0), Xilinx ISE (tested with 14.7) Xilinx Vivado vunit OSVVM. --- libraries/vendors/shared.psm1 | 135 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 libraries/vendors/shared.psm1 (limited to 'libraries/vendors/shared.psm1') diff --git a/libraries/vendors/shared.psm1 b/libraries/vendors/shared.psm1 new file mode 100644 index 0000000..9685f1f --- /dev/null +++ b/libraries/vendors/shared.psm1 @@ -0,0 +1,135 @@ +# EMACS settings: -*- tab-width: 2; indent-tabs-mode: t -*- +# vim: tabstop=2:shiftwidth=2:noexpandtab +# kate: tab-width 2; replace-tabs off; indent-width 2; +# +# ============================================================================== +# PowerShell Module: The module provides common CmdLets for the library +# pre-compilation process. +# +# Authors: Patrick Lehmann +# +# Description: +# ------------------------------------ +# This PowerShell module provides CommandLets (CmdLets) to handle the GHDL.exe +# output streams (stdout and stderr). +# +# ============================================================================== +# Copyright (C) 2015 Patrick Lehmann +# +# GHDL is free software; you can redistribute it and/or modify it under +# the terms of the GNU General Public License as published by the Free +# Software Foundation; either version 2, or (at your option) any later +# version. +# +# GHDL is distributed in the hope that it will be useful, but WITHOUT ANY +# WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# for more details. +# +# You should have received a copy of the GNU General Public License +# along with GHDL; see the file COPYING. If not, write to the Free +# Software Foundation, 59 Temple Place - Suite 330, Boston, MA +# 02111-1307, USA. +# ============================================================================== +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. + #> + [CmdletBinding()] + param( + [Parameter(ValueFromPipeline=$true)] + $InputObject + ) + + begin + { $LineRemainer = "" } + + process + { if (-not $InputObject) + { Write-Host "Empty pipeline!" } + elseif ($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 } + } +} + +function Write-ColoredGHDLLine +{ <# + .SYNOPSIS + This CmdLet colors GHDL output lines. + + .DESCRIPTION + This CmdLet colors GHDL output lines. Warnings are prefixed with 'WARNING: ' + in yellow and errors are prefixed with 'ERROR: ' in red. + + .PARAMETER InputObject + A object stream is required as an input. + + .PARAMETER SuppressWarnings + Skip warning messages. (Show errors only.) + #> + [CmdletBinding()] + param( + [Parameter(ValueFromPipeline=$true)] + $InputObject, + + [Parameter(Position=1)] + [switch]$SuppressWarnings = $false + ) + + begin + { $ErrorRecordFound = $false } + + process + { if (-not $InputObject) + { Write-Host "Empty pipeline!" } + elseif ($InputObject -is [String]) + { if ($InputObject.Contains("warning")) + { if (-not $SuppressWarnings) + { Write-Host "WARNING: " -NoNewline -ForegroundColor Yellow + Write-Host $InputObject + } + } + else + { $ErrorRecordFound = $true + Write-Host "ERROR: " -NoNewline -ForegroundColor Red + Write-Host $InputObject + } + } + else + { Write-Host "Unsupported object in pipeline stream" } + } + + end + { $ErrorRecordFound } +} + +Export-ModuleMember -Function 'Restore-NativeCommandStream' +Export-ModuleMember -Function 'Write-ColoredGHDLLine' -- cgit