aboutsummaryrefslogtreecommitdiffstats
path: root/dist/windows/compile-ghdl.ps1
diff options
context:
space:
mode:
authorPatrick Lehmann <Patrick.Lehmann@tu-dresden.de>2017-02-17 04:53:59 +0100
committerPatrick Lehmann <Patrick.Lehmann@tu-dresden.de>2017-02-17 04:53:59 +0100
commit330ea6732666779dcadaf8936805acefa4eadc0a (patch)
treec651eef937cc0b70ac6b6bc4b40fd87938fb6eab /dist/windows/compile-ghdl.ps1
parentf0857455d654fd3a3b9de1bbca52c7bd6fcb5033 (diff)
downloadghdl-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-ghdl.ps1')
-rw-r--r--dist/windows/compile-ghdl.ps1246
1 files changed, 246 insertions, 0 deletions
diff --git a/dist/windows/compile-ghdl.ps1 b/dist/windows/compile-ghdl.ps1
new file mode 100644
index 000000000..45e1d7c50
--- /dev/null
+++ b/dist/windows/compile-ghdl.ps1
@@ -0,0 +1,246 @@
+# 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 GHDL for Windows
+#
+# Description:
+# ------------------------------------
+# This is a PowerShell script (executable) which:
+# - sets up a compilation environment
+# - test all dependencies
+# - compiles GHDL with GNAT
+#
+# ==============================================================================
+# 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 - GHDL compile script
+# Use 'compile-ghdl.ps1 -Help' to see the integrated help page
+#
+# .EXAMPLE
+# C:\PS> .\compile-ghdl.ps1 -Clean -Compile
+#
+[CmdletBinding()]
+param(
+ # Display this help"
+ [switch]$Help = $false,
+
+ # Slean up all files and directories
+ [switch]$Clean = $false,
+ [switch]$Clean_GHDL = $false,
+
+ # Compile all targets
+ [switch]$All = $false,
+
+ # Compile main targets
+ [switch]$Compile = $false,
+ # Compile GHDL (simulator)
+ [switch]$Compile_GHDL = $false,
+ # Undocumented
+ [switch]$Test = $false,
+ # Undocumented
+ [switch]$Test_GHDL = $false,
+
+ # Build options
+ # Build a release version
+ [switch]$Release = $false,
+ # Set the back-end
+ [string]$Backend = "mcode",
+
+ # Reduced messages
+ [switch]$Quiet = $false,
+ # Skip warning messages. (Show errors only.)
+ [switch]$SuppressWarnings = $false,
+ # Halt on errors
+ [switch]$HaltOnError = $false,
+ # 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
+Import-Module $PSScriptRoot\targets.psm1 -Verbose:$false -Debug:$false
+
+# Display help if no command was selected
+$Help = $Help -or (-not (
+ $All -or
+ $Clean -or $Clean_GHDL -or
+ $Compile -or $Compile_GHDL -or
+ $Test -or $Test_GHDL
+ ))
+
+if (-not $Hosted)
+{ Write-Host "================================================================================" -ForegroundColor Magenta
+ Write-Host "GHDL for Windows - GHDL compile script" -ForegroundColor Magenta
+ Write-Host "================================================================================" -ForegroundColor Magenta
+}
+
+if ($Help)
+{ Get-Help $MYINVOCATION.InvocationName -Detailed
+ Exit-CompileScript
+}
+
+if ($Clean)
+{ $Clean_GHDL = $true
+}
+if ($All)
+{ $Compile = $true
+}
+if ($Compile)
+{ $Compile_GHDL = $true
+}
+if ($Test)
+{ $Test_GHDL = $true
+}
+
+# configure some variables: paths, executables, directory names, ...
+$BuildDirectoryName = "build"
+
+# Parameter checks
+if ($Backend -ne "mcode")
+{ Write-Host "[ERROR]: Back-end '$Backend' is not supported on Windows." -ForegroundColor Red
+ Exit-CompileScript -1
+}
+
+# construct directories
+$BinaryDestinationDirectory = "$GHDLRootDir\$BuildDirectoryName\$Backend"
+# construct executables
+$GHDLNewExecutable = "$GHDLRootDir\$BuildDirectoryName\$Backend\bin\ghdl.exe"
+
+# grep GHDL version string from Ada source file
+$GHDLVersion = Get-GHDLVersion $GHDLRootDir
+# compute some variables
+$BuildRelease = if ($Release) { "Release" } else { "Development" }
+if (-not $Hosted)
+{ Write-Host " Version: $GHDLVersion"
+ Write-Host " Release: $BuildRelease"
+}
+
+$Git_IsGitRepo = Test-GitRepository
+# gather git information
+if ($Git_IsGitRepo)
+{ $Git_Branch_Name = & git rev-parse --abbrev-ref HEAD
+ $Git_Commit_DateString = & git log -1 --format=%cd --date=short
+ $Git_Commit_ShortHash = & git rev-parse --short HEAD
+
+ if (-not $Hosted)
+ { Write-Host " Git branch: $Git_Branch_Name"
+ Write-Host " Git commit: $Git_Commit_DataString ($Git_Commit_ShortHash)"
+ }
+}
+if (-not $Hosted)
+{ Write-Host "" }
+
+if ($Release)
+{ $BuildDirectory = $BinaryDestinationDirectory }
+else
+{ $BuildDirectory = $BinaryDestinationDirectory }
+
+
+# ==============================================================================
+# Main Target: Clean
+# ==============================================================================
+if ($Clean_GHDL)
+{ $error = Invoke-Clean $BuildDirectory -Quiet:$Quiet -Verbose:$EnableVerbose -Debug:$EnableDebug
+ if ($error -eq $true)
+ { Write-Host " [FAILED]" -ForegroundColor Red
+ Exit-CompileScript -1
+ }
+} # Clean
+
+
+# ==============================================================================
+# Main Target: GHDL
+# ==============================================================================
+if ($Compile_GHDL)
+{ # create a build directory
+ $error = New-BuildDirectory $BuildDirectory
+ if ($error -eq $true)
+ { Write-Host " [FAILED]" -ForegroundColor Red
+ Exit-CompileScript -1
+ }
+
+ # patch the version file if it's no release build
+ if (-not $Release -and $Git_IsGitRepo)
+ { $error = Invoke-PatchVersionFile $GHDLRootDir $Git_Branch_Name $Git_Commit_DateString $Git_Commit_ShortHash
+ if ($error -eq $true)
+ { Write-Host " [FAILED]" -ForegroundColor Red
+ Exit-CompileScript -1
+ }
+ }
+
+ # build C source files
+ $error = Invoke-CompileCFiles $GHDLRootDir $BinaryDestinationDirectory
+ if ($error -eq $true)
+ { Write-Host " [FAILED]" -ForegroundColor Red
+ Exit-CompileScript -1
+ }
+
+ # build Ada source files
+ $error = Invoke-CompileGHDLAdaFiles $GHDLRootDir $BinaryDestinationDirectory
+ if ($error -eq $true)
+ { Write-Host " [FAILED]" -ForegroundColor Red
+ Exit-CompileScript -1
+ }
+
+ # strip result
+ $error = Invoke-StripGHDLExecutable $BinaryDestinationDirectory
+ if ($error -eq $true)
+ { Write-Host " [FAILED]" -ForegroundColor Red
+ Exit-CompileScript -1
+ }
+}
+
+
+# ==============================================================================
+# Main Target: GHDL
+# ==============================================================================
+if ($Test_GHDL)
+{ # running ghdl
+ $error = Test-GHDLVersion $BuildDir
+ if ($error -eq $true)
+ { Write-Host " [FAILED]" -ForegroundColor Red
+ Exit-CompileScript -1
+ }
+} # Test
+
+Exit-CompileScript 0