aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/vendors/shared.psm1
diff options
context:
space:
mode:
authorTristan Gingold <gingold@adacore.com>2015-11-25 04:16:47 +0100
committerTristan Gingold <gingold@adacore.com>2015-11-25 04:16:47 +0100
commitf7cfcfe15528a1619927aa61d138bbc87b2a2b5b (patch)
tree59cb32f67befbc431450b000bbf440336804e377 /libraries/vendors/shared.psm1
parentbd320d6260009f7d625bb70954d84bdec32b7917 (diff)
downloadghdl-f7cfcfe15528a1619927aa61d138bbc87b2a2b5b.tar.gz
ghdl-f7cfcfe15528a1619927aa61d138bbc87b2a2b5b.tar.bz2
ghdl-f7cfcfe15528a1619927aa61d138bbc87b2a2b5b.zip
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.
Diffstat (limited to 'libraries/vendors/shared.psm1')
-rw-r--r--libraries/vendors/shared.psm1135
1 files changed, 135 insertions, 0 deletions
diff --git a/libraries/vendors/shared.psm1 b/libraries/vendors/shared.psm1
new file mode 100644
index 000000000..9685f1f00
--- /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'