1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
# 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 Script: Script to compile the OSVVM library for GHDL on Windows
#
# Authors: Patrick Lehmann
#
# Description:
# ------------------------------------
# This is a PowerShell script (executable) which:
# - creates a subdirectory in the current working directory
# - compiles all OSVVM packages
#
# ==============================================================================
# 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.
# ==============================================================================
# .SYNOPSIS
# This CmdLet compiles the OSVVM library.
#
# .DESCRIPTION
# This CmdLet:
# (1) creates a subdirectory in the current working directory
# (2) compiles all OSVVM packages
#
[CmdletBinding()]
param(
# Compile all libraries and packages.
[switch]$All = $true,
# Clean up directory before analyzing.
[switch]$Clean = $false,
# Skip warning messages. (Show errors only.)
[switch]$SuppressWarnings = $false
)
# ---------------------------------------------
# save working directory
$WorkingDir = Get-Location
# load modules from GHDL's 'vendors' library directory
Import-Module $PSScriptRoot\config.psm1
Import-Module $PSScriptRoot\shared.psm1
# extract data from configuration
$SourceDir = $InstallationDirectory["OSVVM"]
$DestinationDir = $DestinationDirectory["OSVVM"]
if (-not $All)
{ $All = $false }
elseif ($All -eq $true)
{ # nothing to configure
}
$StopCompiling = $false
# define global GHDL Options
$GlobalOptions = ("-a", "-fexplicit", "-frelaxed-rules", "--mb-comments", "--warn-binding", "--no-vital-checks", "--std=08")
# create "osvvm" directory and change to it
Write-Host "Creating vendor directory: '$DestinationDir'" -ForegroundColor Yellow
mkdir $DestinationDir -ErrorAction SilentlyContinue | Out-Null
cd $DestinationDir
# Cleanup
# ==============================================================================
if ($Clean)
{ Write-Host "Cleaning up vendor directory ..." -ForegroundColor Yellow
rm *.cf
}
# compile osvvm library
if (-not $StopCompiling)
{ Write-Host "Compiling library 'osvvm' ..." -ForegroundColor Yellow
$Options = $GlobalOptions
$Files = (
"$SourceDir\NamePkg.vhd",
"$SourceDir\OsvvmGlobalPkg.vhd",
"$SourceDir\TextUtilPkg.vhd",
"$SourceDir\TranscriptPkg.vhd",
"$SourceDir\AlertLogPkg.vhd",
"$SourceDir\MemoryPkg.vhd",
"$SourceDir\MessagePkg.vhd",
"$SourceDir\SortListPkg_int.vhd",
"$SourceDir\RandomBasePkg.vhd",
"$SourceDir\RandomPkg.vhd",
"$SourceDir\CoveragePkg.vhd",
"$SourceDir\OsvvmContext.vhd")
foreach ($File in $Files)
{ Write-Host "Analyzing package '$File'" -ForegroundColor Cyan
$InvokeExpr = "ghdl.exe " + ($Options -join " ") + " --work=simprim " + $File + " 2>&1"
$ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGHDLLine $SuppressWarnings
$StopCompiling = ($LastExitCode -ne 0)
if ($StopCompiling) { break }
}
}
Write-Host "--------------------------------------------------------------------------------"
Write-Host "Compiling OSVVM libraries " -NoNewline
if ($StopCompiling)
{ Write-Host "[FAILED]" -ForegroundColor Red }
else
{ Write-Host "[SUCCESSFUL]" -ForegroundColor Green }
# unload PowerShell modules
Remove-Module shared
Remove-Module config
# restore working directory
cd $WorkingDir
|