diff options
author | Patrick Lehmann <Patrick.Lehmann@tu-dresden.de> | 2017-02-17 04:53:59 +0100 |
---|---|---|
committer | Patrick Lehmann <Patrick.Lehmann@tu-dresden.de> | 2017-02-17 04:53:59 +0100 |
commit | 330ea6732666779dcadaf8936805acefa4eadc0a (patch) | |
tree | c651eef937cc0b70ac6b6bc4b40fd87938fb6eab /dist/windows/compile-libraries.ps1 | |
parent | f0857455d654fd3a3b9de1bbca52c7bd6fcb5033 (diff) | |
download | ghdl-330ea6732666779dcadaf8936805acefa4eadc0a.tar.gz ghdl-330ea6732666779dcadaf8936805acefa4eadc0a.tar.bz2 ghdl-330ea6732666779dcadaf8936805acefa4eadc0a.zip |
Fixed Windows compile flow (PowerShell scripts) for GHDL and library compilations.
Diffstat (limited to 'dist/windows/compile-libraries.ps1')
-rw-r--r-- | dist/windows/compile-libraries.ps1 | 868 |
1 files changed, 868 insertions, 0 deletions
diff --git a/dist/windows/compile-libraries.ps1 b/dist/windows/compile-libraries.ps1 new file mode 100644 index 000000000..6579f2ace --- /dev/null +++ b/dist/windows/compile-libraries.ps1 @@ -0,0 +1,868 @@ +# 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; +# +# ============================================================================== +# Authors: Patrick Lehmann (ported batch file to PowerShell) +# Brian Davis (contributions to the batch file) +# Tristan Gingold (initial batch file for compilations on Windows) +# +# PowerShell Script: Script to compile VHDL libraries for GHDL +# +# Description: +# ------------------------------------ +# This is a PowerShell script (executable) which: +# - sets up a compilation environment +# - test all dependencies +# - pre processes VHDL files with GHDLFilter +# - analyses VHDL files with GHDL +# +# ============================================================================== +# Copyright (C) 2002, 2003, 2004, 2005 Tristan Gingold +# Copyright (C) 2015-2017 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. +# ============================================================================== + +# .SYNOPSIS +# GHDL for Windows - Library compile script +# Use 'compile-libraries.ps1 -Help' to see the integrated help page +# +# .EXAMPLE +# C:\PS> .\compile-libraries.ps1 -Clean +# .EXAMPLE +# C:\PS> .\compile-libraries.ps1 -Compile -Verbose +# .EXAMPLE +# C:\PS> .\compile-libraries.ps1 -VHDL2008 -SuppressWarnings +# +[CmdletBinding()] +param( + # Display this help" + [switch]$Help = $false, + + # Clean up all files and directories + [switch]$Clean = $false, + + # Compile all library files + [switch]$Compile = $false, + + # Set VHDL Standard to '87 + [switch]$VHDL87 = $false, + # Set VHDL Standard to '93 + [switch]$VHDL93 = $false, + # Set VHDL Standard to '08 + [switch]$VHDL2008 = $false, + + # Skip warning messages. (Show errors only.) + [switch]$SuppressWarnings = $false, + # Halt on errors + [switch]$HaltOnError = $false, + + # Set GHDL executable + [string]$GHDL = "", + # Undocumented + [switch]$Hosted = $false +) + +# configure script here +$RelPathToRoot = "..\.." + +# --------------------------------------------- +# save parameters and working directory +$Script_ScriptDir = $PSScriptRoot +$Script_WorkingDir = Get-Location +$GHDLRootDir = Convert-Path (Resolve-Path ($PSScriptRoot + "\" + $RelPathToRoot)) + +# set default values +$EnableVerbose = $PSCmdlet.MyInvocation.BoundParameters["Verbose"] +$EnableDebug = $PSCmdlet.MyInvocation.BoundParameters["Debug"] +if ($EnableVerbose -eq $null) { $EnableVerbose = $false } +if ($EnableDebug -eq $null) { $EnableDebug = $false } +if ($EnableDebug -eq $true) { $EnableVerbose = $true } + +# load modules from GHDL's 'libraries' directory +Import-Module $PSScriptRoot\shared.psm1 -Verbose:$false -Debug:$false -ArgumentList "$Script_WorkingDir", $Hosted + +# Display help if no command was selected +$Help = $Help -or (-not ($Compile -or $VHDL87 -or $VHDL93 -or $VHDL2008 -or $Clean)) + +if ($Help) +{ Get-Help $MYINVOCATION.InvocationName -Detailed + Exit-CompileScript +} +if ($Compile) +{ $VHDL87 = $true + $VHDL93 = $true + $VHDL2008 = $true +} + +# configure some variables: paths, executables, directory names, ... +$VHDLLibrariesSourceDirectoryName = "libraries" +$VHDLLibrariesDestinationDirectoryName = "lib" +$BuildDirectoryName = "build" +$Backend = "mcode" + +# construct directories +$VHDLSourceLibraryDirectory = "$GHDLRootDir\$VHDLLibrariesSourceDirectoryName" +$VHDLDestinationLibraryDirectory = "$GHDLRootDir\$BuildDirectoryName\$Backend\$VHDLLibrariesDestinationDirectoryName" +# construct executables +$GHDLNewExecutable = "$GHDLRootDir\$BuildDirectoryName\$Backend\bin\ghdl.exe" + + +# Library sources +$SourceFiles = @{ + "std" = @( + "textio", "textio_body" + ); + "ieee" = @( + "std_logic_1164", "std_logic_1164_body", + "numeric_std", "numeric_std-body", + "numeric_bit", "numeric_bit-body" + ); + "math" = @( + "math_real", "math_real-body", + "math_complex", "math_complex-body" + ); + "std08" = @( + "textio", "textio_body", + "env", "env_body" + ); + "ieee2008" = @( + "std_logic_1164", "std_logic_1164-body", + "std_logic_textio", + "math_real", "math_real-body", + "math_complex", "math_complex-body", + "numeric_bit", "numeric_bit-body", + "numeric_bit_unsigned", "numeric_bit_unsigned-body", + "numeric_std", "numeric_std-body", + "numeric_std_unsigned", "numeric_std_unsigned-body", + "fixed_float_types", + "fixed_generic_pkg", "fixed_generic_pkg-body", + "fixed_pkg", + "float_generic_pkg", "float_generic_pkg-body", + "float_pkg", + "ieee_std_context", + "ieee_bit_context" + ); + "vital95" = @( + "vital_timing", "vital_timing_body", + "vital_primitives", "vital_primitives_body" + ); + "vital2000" = @( + "timing_p", "timing_b", + "prmtvs_p", "prmtvs_b", + "memory_p", "memory_b" + ); + "synopsys8793" = @( + "std_logic_textio" + ); + "synopsys" = @( + "std_logic_arith", + "std_logic_unsigned", + "std_logic_signed", + "std_logic_misc", "std_logic_misc-body" + ); + "mentor" = @( + "std_logic_arith", "std_logic_arith_body" + ) +} + +if (-not $Hosted) +{ Write-Host "================================================================================" -ForegroundColor Yellow + Write-Host "GHDL ($Backend) for Windows - Library compile script" -ForegroundColor Yellow + Write-Host "================================================================================" -ForegroundColor Yellow +} + +if ($Clean) +{ Write-Host "Removing all created files and directories..." -ForegroundColor Yellow + if (Test-Path -Path $VHDLDestinationLibraryDirectory) + { $EnableVerbose -and (Write-Host " rmdir $VHDLDestinationLibraryDirectory") | Out-Null + Remove-Item $VHDLDestinationLibraryDirectory -Force -Recurse -ErrorAction SilentlyContinue + if ($? -eq $false) + { Write-Host "[ERROR]: Cannot remove '$VHDLDestinationLibraryDirectory'." -ForegroundColor Red + Exit-CompileScript -1 + } + } + if (-not ($VHDL87 -or $VHDL93 -or $VHDL2008)) + { Exit-CompileScript } +} + +# get GHDL executable +if ($GHDL -ne "") +{ $GHDLExecutable = $GHDL } +elseif (Test-Path env:GHDL) +{ $GHDLExecutable = $env:GHDL } +elseif (Test-Path $GHDLNewExecutable -PathType Leaf) +{ $GHDLExecutable = $GHDLNewExecutable } +else +{ $GHDLExecutable = "ghdl.exe" } + +if (-not (Test-Path $GHDLExecutable -PathType Leaf)) +{ Write-Host "GHDL executable 'ghdl.exe' not found." -ForegroundColor Red + Write-Host "Use adv. options '-GHDL' to set the GHDL executable." -ForegroundColor Yellow + Exit-CompileScript -1 +} + + +$ErrorCount = 0 +if ($VHDL87 -or $VHDL93 -or $VHDL2008) +{ Write-Host "Compiling VHDL Libraries..." + Write-Host "Preparing..." + + # create lib directory if it does not exist + if (Test-Path -Path $VHDLDestinationLibraryDirectory) + { $EnableVerbose -and (Write-Host " Directory '$VHDLDestinationLibraryDirectory' already exists.") | Out-Null + + # change working directory to VHDLDestinationLibraryDirectory + $EnableVerbose -and (Write-Host " cd $VHDLDestinationLibraryDirectory") | Out-Null + Set-Location $VHDLDestinationLibraryDirectory + + $EnableVerbose -and (Write-Host " Cleaning up directory...") | Out-Null + Remove-Item ./* -Force -Recurse -ErrorAction SilentlyContinue + } + else + { $EnableVerbose -and (Write-Host " Creating directory '$VHDLDestinationLibraryDirectory'.") | Out-Null + New-Item -ItemType Directory -Path $VHDLDestinationLibraryDirectory -ErrorAction SilentlyContinue | Out-Null + if (-not $?) + { Write-Host "[ERROR]: Cannot create destination directory '$VHDLDestinationLibraryDirectory'." -ForegroundColor Red + Exit-CompileScript -1 + } + + # change working directory to VHDLDestinationLibraryDirectory + $EnableVerbose -and (Write-Host " Change working directory to $VHDLDestinationLibraryDirectory") | Out-Null + Set-Location $VHDLDestinationLibraryDirectory + } + + Write-Host + Write-Host "Start compilation..." +} +# ============================================================================ +# v87 +# ============================================================================ +if ($VHDL87) +{ $VHDLVersion = "87" + $VersionedDirectory = "$VHDLDestinationLibraryDirectory\v$VHDLVersion" + Write-Host "Compiling libraries for VHDL-$VHDLVersion" -ForegroundColor Cyan + + # ---------------------------------------------------------------------- + # v87\std + # ---------------------------------------------------------------------- + $VHDLLibrary = "std" + Write-Host " Compiling library '$VHDLLibrary'..." -ForegroundColor DarkCyan + + $LibraryDirectory = "$VersionedDirectory\$VHDLLibrary" + New-LibraryDirectory $LibraryDirectory # $EnableVerbose + Set-Location $LibraryDirectory + + $VHDLSourcesIndex = "std" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C --bootstrap --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + # ---------------------------------------------------------------------- + # v87\ieee + # ---------------------------------------------------------------------- + $VHDLLibrary = "ieee" + $VHDLFlavor = "ieee" + Write-Host " Compiling library '$VHDLLibrary'..." -ForegroundColor DarkCyan + + $LibraryDirectory = "$VersionedDirectory\$VHDLFlavor" + New-LibraryDirectory $LibraryDirectory # $EnableVerbose + Set-Location $LibraryDirectory + + $VHDLSourcesIndex = "ieee" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + # ---------------------------------------------------------------------- + # v87\synopsys + # ---------------------------------------------------------------------- + $VHDLLibrary = "ieee" + $VHDLFlavor = "synopsys" + Write-Host " Compiling library '$VHDLLibrary' ($VHDLFlavor)..." -ForegroundColor DarkCyan + + $LibraryDirectory = "$VersionedDirectory\$VHDLFlavor" + New-LibraryDirectory $LibraryDirectory # $EnableVerbose + Set-Location $LibraryDirectory + + $VHDLSourcesIndex = "ieee" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + foreach ($SourceFile in $SourceFiles[$VHDLFlavor] + $SourceFiles["synopsys8793"]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + Get-Content "$VHDLSourceLibraryDirectory\$VHDLFlavor\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + $VHDLSourcesIndex = "vital95" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } +} +# ============================================================================ +# v93 +# ============================================================================ +if ($VHDL93) +{ $VHDLVersion = "93" + $VersionedDirectory = "$VHDLDestinationLibraryDirectory\v$VHDLVersion" + Write-Host "Compiling libraries for VHDL-$VHDLVersion" -ForegroundColor Cyan + + # ---------------------------------------------------------------------- + # v93\std + # ---------------------------------------------------------------------- + $VHDLLibrary = "std" + Write-Host " Compiling library '$VHDLLibrary'..." -ForegroundColor DarkCyan + + $LibraryDirectory = "$VersionedDirectory\$VHDLLibrary" + New-LibraryDirectory $LibraryDirectory # $EnableVerbose + Set-Location $LibraryDirectory + + $VHDLSourcesIndex = "std" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C --bootstrap --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + # ---------------------------------------------------------------------- + # v93\ieee + # ---------------------------------------------------------------------- + $VHDLLibrary = "ieee" + $VHDLFlavor = "ieee" + Write-Host " Compiling library '$VHDLLibrary'..." -ForegroundColor DarkCyan + + $LibraryDirectory = "$VersionedDirectory\$VHDLFlavor" + New-LibraryDirectory $LibraryDirectory # $EnableVerbose + Set-Location $LibraryDirectory + + $VHDLSourcesIndex = "ieee" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex] + $SourceFiles["math"]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + $VHDLSourcesIndex = "vital2000" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + # ---------------------------------------------------------------------- + # v93\synopsys + # ---------------------------------------------------------------------- + $VHDLLibrary = "ieee" + $VHDLFlavor = "synopsys" + Write-Host " Compiling library '$VHDLLibrary' ($VHDLFlavor)..." -ForegroundColor DarkCyan + + $LibraryDirectory = "$VersionedDirectory\$VHDLFlavor" + New-LibraryDirectory $LibraryDirectory # $EnableVerbose + Set-Location $LibraryDirectory + + $VHDLSourcesIndex = "ieee" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex] + $SourceFiles["math"]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + foreach ($SourceFile in $SourceFiles[$VHDLFlavor] + $SourceFiles["synopsys8793"]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLFlavor\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + $VHDLSourcesIndex = "vital2000" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + # ---------------------------------------------------------------------- + # v93\mentor + # ---------------------------------------------------------------------- + $VHDLLibrary = "ieee" + $VHDLFlavor = "mentor" + Write-Host " Compiling library '$VHDLLibrary' ($VHDLFlavor)..." -ForegroundColor DarkCyan + + $LibraryDirectory = "$VersionedDirectory\$VHDLFlavor" + New-LibraryDirectory $LibraryDirectory # $EnableVerbose + Set-Location $LibraryDirectory + + $VHDLSourcesIndex = "ieee" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex] + $SourceFiles["math"]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + foreach ($SourceFile in $SourceFiles[$VHDLFlavor]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLFlavor\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + $VHDLSourcesIndex = "vital2000" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } +} +# ============================================================================== +# v08 +# ============================================================================== +if ($VHDL2008) +{ $VHDLVersion = "08" + $VersionedDirectory = "$VHDLDestinationLibraryDirectory\v$VHDLVersion" + Write-Host "Compiling libraries for VHDL-$VHDLVersion" -ForegroundColor Cyan + + # ---------------------------------------------------------------------- + # v08\std + # ---------------------------------------------------------------------- + $VHDLLibrary = "std" + Write-Host " Compiling library '$VHDLLibrary'..." -ForegroundColor DarkCyan + + $LibraryDirectory = "$VersionedDirectory\$VHDLLibrary" + New-LibraryDirectory $LibraryDirectory # $EnableVerbose + Set-Location $LibraryDirectory + + $VHDLSourcesIndex = "std08" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLLibrary\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C --bootstrap --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + # ---------------------------------------------------------------------- + # v08\ieee + # ---------------------------------------------------------------------- + $VHDLLibrary = "ieee" + $VHDLFlavor = "ieee" + Write-Host " Compiling library '$VHDLLibrary'..." -ForegroundColor DarkCyan + + $LibraryDirectory = "$VersionedDirectory\$VHDLFlavor" + New-LibraryDirectory $LibraryDirectory # $EnableVerbose + Set-Location $LibraryDirectory + + $VHDLSourcesIndex = "ieee2008" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + $VHDLSourcesIndex = "vital2000" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" -frelaxed-rules --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + # ---------------------------------------------------------------------- + # v08\synopsys + # ---------------------------------------------------------------------- + $VHDLLibrary = "ieee" + $VHDLFlavor = "synopsys" + Write-Host " Compiling library '$VHDLLibrary' ($VHDLFlavor)..." -ForegroundColor DarkCyan + + $LibraryDirectory = "$VersionedDirectory\$VHDLFlavor" + New-LibraryDirectory $LibraryDirectory # $EnableVerbose + Set-Location $LibraryDirectory + + $VHDLSourcesIndex = "ieee2008" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + foreach ($SourceFile in $SourceFiles[$VHDLFlavor]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLFlavor\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + + $VHDLSourcesIndex = "vital2000" + foreach ($SourceFile in $SourceFiles[$VHDLSourcesIndex]) + { Write-Host " file: v$VHDLVersion\$SourceFile.v$VHDLVersion" + $EnableVerbose -and (Write-Host " Patching file for VHDL-$VHDLVersion" ) | Out-Null + $EnableDebug -and (Write-Host " Get-Content `"$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl`" -Encoding Ascii ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Format-VHDLSourceFile -Version `"$VHDLVersion`" ``" -ForegroundColor DarkGray ) | Out-Null + $EnableDebug -and (Write-Host " | Out-File `"$SourceFile.v$VHDLVersion`" -Encoding Ascii" -ForegroundColor DarkGray ) | Out-Null + # Patch file + Get-Content "$VHDLSourceLibraryDirectory\$VHDLSourcesIndex\$SourceFile.vhdl" -Encoding Ascii ` + | Format-VHDLSourceFile -Version "$VHDLVersion" ` + | Out-File "$SourceFile.v$VHDLVersion" -Encoding Ascii + + # Analyze file + $InvokeExpr = "$GHDLExecutable -a -C `"-P../std`" -frelaxed-rules --std=$VHDLVersion --work=$VHDLLibrary $SourceFile.v$VHDLVersion 2>&1" + $EnableVerbose -and (Write-Host " Analyzing file '$SourceFile.v$VHDLVersion'" ) | Out-Null + $EnableDebug -and (Write-Host " $InvokeExpr" -ForegroundColor DarkGray ) | Out-Null + $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings " " + if (($LastExitCode -ne 0) -or -not $?) + { $ErrorCount += 1 + if ($HaltOnError) + { Exit-CompileScript -1 } + } + } + +} # $VHDL2008 + + +Write-Host "--------------------------------------------------------------------------------" +Write-Host "Compiling VHDL libraries " -NoNewline +if ($ErrorCount -gt 0) +{ Write-Host "[FAILED]" -ForegroundColor Red } +else +{ Write-Host "[SUCCESSFUL]" -ForegroundColor Green } + +Exit-CompileScript |