aboutsummaryrefslogtreecommitdiffstats
path: root/dist/windows/targets.psm1
diff options
context:
space:
mode:
Diffstat (limited to 'dist/windows/targets.psm1')
-rw-r--r--dist/windows/targets.psm1416
1 files changed, 0 insertions, 416 deletions
diff --git a/dist/windows/targets.psm1 b/dist/windows/targets.psm1
deleted file mode 100644
index 1264db247..000000000
--- a/dist/windows/targets.psm1
+++ /dev/null
@@ -1,416 +0,0 @@
-# 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
-#
-# PowerShell Module: The module provides build targets for GHDL.
-#
-# Description:
-# ------------------------------------
-# This PowerShell module provides build targets for GHDL.
-#
-# ==============================================================================
-# Copyright (C) 2016-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.
-# ==============================================================================
-
-# TODO:
-# check if:
-# - program are installed / auto find programs / auto find paths
-# - program version
-
-# configure compiler tools
-$Prog_GCC = "gcc.exe"
-$Prog_GNATMake = "gnatmake.exe"
-$Prog_Strip = "strip.exe"
-
-# configure output file
-$GHDL_Mcode_Name = "ghdl.exe"
-
-# configure directory structure
-$CommonSourceDirName = "src"
-$WinMcodeSourceDirName = "dist\windows\mcode"
-# $WinLLVMSourceDirName = "dist\windows\llvm"
-
-# construct file paths
-$VersionFileName_In = "version.in"
-$VersionFileName_Ads = "version.ads"
-
-
-function Invoke-Clean
-{ <#
- .SYNOPSIS
- This CommandLet removes all generated files.
- .PARAMETER BuildDirectory
- The directory where all generated files are stored.
- .PARAMETER Quiet
- Disable outputs to the host console.
- #>
- [CmdletBinding()]
- param(
- [string] $BuildDirectory,
- [switch] $Quiet = $false
- )
-
- $EnableDebug = -not $Quiet -and ( $PSCmdlet.MyInvocation.BoundParameters["Debug"])
- $EnableVerbose = -not $Quiet -and ($EnableDebug -or $PSCmdlet.MyInvocation.BoundParameters["Verbose"])
-
- -not $Quiet -and (Write-Host "Executing build target 'Clean' ..." -ForegroundColor Yellow) | Out-Null
- $EnableVerbose -and (Write-Host " Removing all created files and directories..." ) | Out-Null
- if (Test-Path -Path $BuildDirectory)
- { $EnableDebug -and (Write-Host " rmdir $BuildDirectory" ) | Out-Null
- Remove-Item $BuildDirectory -Force -Recurse -ErrorAction SilentlyContinue
- if ($? -eq $false)
- { Write-Host "[ERROR]: Cannot remove '$BuildDirectory'." -ForegroundColor Red
- return $true
- }
- }
- return $false
-} # Invoke-Clean
-
-function New-BuildDirectory
-{ <#
- .SYNOPSIS
- This CommandLet creates a build directory if not existent, yet.
- .PARAMETER BuildDirectory
- The directory where all generated files are stored.
- .PARAMETER Quiet
- Disable outputs to the host console.
- #>
- [CmdletBinding()]
- param(
- [string] $BuildDirectory,
- [switch] $Quiet = $false
- )
-
- Write-Host "Executing build target 'BuildDirectory' ..." -ForegroundColor Yellow
- if (Test-Path -Path $BuildDirectory -PathType Container)
- { -not $Quiet -and (Write-Host " Directory '$BuildDirectory' already exists." ) | Out-Null }
- else
- { -not $Quiet -and (Write-Host " Creating new directory '$BuildDirectory'." ) | Out-Null
- New-Item -ItemType Directory -Path $BuildDirectory -ErrorAction SilentlyContinue | Out-Null
- if ($? -eq $false)
- { Write-Host "[ERROR]: Cannot create '$BuildDirectory'." -ForegroundColor Red
- return $true
- }
- }
-
- return $false
-} # New-BuildDirectory
-
-function Get-GHDLVersion
-{ <#
- .SYNOPSIS
- Returns the GHDL version string.
- .PARAMETER GHDLRootDir
- The repository root directory.
- #>
- [CmdletBinding()]
- param(
- [string] $GHDLRootDir
- )
- # construct DirectoryPaths
- $ConfigureFilePath = $GHDLRootDir + "\configure"
-
- if (-not (Test-Path -Path $ConfigureFilePath -PathType Leaf))
- { Write-Host "[ERROR]: Version file '$ConfigureFilePath' does not exists." -ForegroundColor Red
- return $true
- }
- $FileContent = Get-Content -Path $ConfigureFilePath
- foreach ($Line in $FileContent)
- { if ($Line -match 'ghdl_version=\"(.+?)\"')
- { return $Matches[2] }
- }
- Write-Host "[ERROR]: RegExp didn't match in '$ConfigureFilePath'." -ForegroundColor Red
- return $true
-} # Get-GHDLVersion
-
-function Invoke-PatchVersionFile
-{ <#
- .SYNOPSIS
- This CommandLet patches the version file to include the git patch state.
- .PARAMETER GHDLRootDir
- The repository root directory.
- .PARAMETER GitBranchName
- The branch's name, where HEAD is located.
- .PARAMETER GitCommitDataString
- The DateTime when HEAD was commited.
- .PARAMETER GitCommitHash
- The Hash of HEAD.
- .PARAMETER Quiet
- Disable outputs to the host console.
- #>
- [CmdletBinding()]
- param(
- [string] $GHDLRootDir,
- [string] $GitBranchName = "unknown",
- [string] $GitCommitDataString = "unknown",
- [string] $GitCommitHash = "........",
- [switch] $Quiet = $false
- )
- # construct DirectoryPaths
- $SourceDirectory = $GHDLRootDir + "\" + $CommonSourceDirName
- $VersionInputFilePath = $SourceDirectory + "\" + $VersionFileName_In
- $VersionFilePath = $SourceDirectory + "\" + $VersionFileName_Ads
-
- Write-Host "Executing build target 'PatchVersionFile' ..." -ForegroundColor Yellow
-
- if (-not (Test-Path -Path $VersionInputFilePath -PathType Leaf))
- { Write-Host "[ERROR]: Version file '$VersionInputFilePath' does not exists." -ForegroundColor Red
- return $true
- }
- -not $Quiet -and (Write-Host " Patching '$VersionInputFilePath'.") | Out-Null
- $FileContent = Get-Content -Path $VersionInputFilePath -Encoding Ascii
- if ($? -eq $false)
- { Write-Host "[ERROR]: While opening '$VersionInputFilePath'." -ForegroundColor Red
- return $true
- }
- $GHDLVersion = Get-GHDLVersion $GHDLRootDir
- $FileContent = $FileContent -Replace "\s@VER@\s", $GHDLVersion
-
- $FileContent = $FileContent -Replace "\s\(tarball\)\s", " (commit: $GitCommitDataString; git branch: $GitBranchName'; hash: $GitCommitHash) "
-
-
- $FileContent | Out-File $VersionFilePath -Encoding Ascii
- if ($? -eq $false)
- { Write-Host "[ERROR]: While writing to '$VersionFilePath'." -ForegroundColor Red
- return $true
- }
-
- return $false
-} # Invoke-PatchVersionFile
-
-
-function Get-CFlags
-{ <#
- .SYNOPSIS
- Returns common ANSI C compiler flags for GCC.
- #>
- return @(
- "-O1", # optimize; level 1
- "-g" # enable debug symbols
- )
-}
-
-function Invoke-CompileCFiles
-{ <#
- .SYNOPSIS
- This CommandLet compiles all C files with GCC.
- .PARAMETER GHDLRootDir
- The repository root directory.
- .PARAMETER BuildDirectory
- The directory where all generated files are stored.
- .PARAMETER Quiet
- Disable outputs to the host console
- #>
- [CmdletBinding()]
- param(
- [string] $GHDLRootDir,
- [string] $BuildDirectory,
- [switch] $Quiet = $false
- )
- # construct DirectoryPaths
- $SourceDirectory = $GHDLRootDir + "\" + $CommonSourceDirName
-
- Set-Location $BuildDirectory
- Write-Host "Executing build target 'CompileCFiles' ..." -ForegroundColor Yellow
-
- # list all files to be compiled; add additional CFlags if needed
- $SourceFiles = @()
- $SourceFiles += New-Object PSObject -Property @{File="grt\grt-cstdio.c"; CFlags=@()}
- $SourceFiles += New-Object PSObject -Property @{File="grt\grt-cvpi.c"; CFlags=@()}
- $SourceFiles += New-Object PSObject -Property @{File="grt\grt-cdynload.c"; CFlags=@()}
- $SourceFiles += New-Object PSObject -Property @{File="grt\config\clock.c"; CFlags=@()}
- $SourceFiles += New-Object PSObject -Property @{File="grt\config\win32.c"; CFlags=@('-DWITH_GNAT_RUN_TIME')}
- $SourceFiles += New-Object PSObject -Property @{File="ortho\mcode\memsegs_c.c"; CFlags=@()}
-
- # compile C files
- foreach ($SourceFile in $SourceFiles)
- { $Parameters = @()
- $Parameters += "-c" # compile only
- $Parameters += Get-CFlags # append common CFlags
- $Parameters += $SourceFile.CFlags
- $Parameters += $SourceDirectory + "\" + $SourceFile.File
-
- # call C compiler
- $InvokeExpr = "$Prog_GCC " + ($Parameters -join " ") + " 2>&1"
-
- Write-Host (" compiling: " + $SourceFile.File)
- Write-Debug " call: $InvokeExpr"
- $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGCCLine -Indent " "
- if ($LastExitCode -ne 0)
- { Write-Host ("[ERROR]: While compiling '{0}'." -f $SourceFile.File) -ForegroundColor Red
- return $true
- }
- }
-
- return $false
-} # Invoke-CompileCFiles
-
-
-function Invoke-CompileGHDLAdaFiles
-{ <#
- .SYNOPSIS
- This CommandLet compiles all Ada files with GNAT.
- .PARAMETER GHDLRootDir
- The repository root directory.
- .PARAMETER BuildDirectory
- The directory where all generated files are stored.
- .PARAMETER Quiet
- Disable outputs to the host console
- #>
- [CmdletBinding()]
- param(
- [string] $GHDLRootDir,
- [string] $BuildDirectory,
- [switch] $Quiet = $false
- )
- # construct DirectoryPaths
- $CommonSourceDirectory = $GHDLRootDir + "\" + $CommonSourceDirName
- $WinMcodeSourceDirectory = $GHDLRootDir + "\" + $WinMcodeSourceDirName
-
- Set-Location $BuildDirectory
- Write-Host "Executing build target 'CompileGHDLAdaFiles' ..." -ForegroundColor Yellow
-
- $Parameters = @()
- $Parameters += Get-CFlags # append common CFlags
- $Parameters += '-gnatn'
-
- # append all source paths
- $Parameters += '-aI' + $WinMcodeSourceDirectory
- $Parameters += '-aI' + $CommonSourceDirectory
- $Parameters += '-aI' + $CommonSourceDirectory + '\ghdldrv'
- $Parameters += '-aI' + $CommonSourceDirectory + '\psl'
- $Parameters += '-aI' + $CommonSourceDirectory + '\grt'
- $Parameters += '-aI' + $CommonSourceDirectory + '\ortho'
- $Parameters += '-aI' + $CommonSourceDirectory + '\ortho\mcode'
- $Parameters += '-aI' + $CommonSourceDirectory + '\vhdl'
- $Parameters += '-aI' + $CommonSourceDirectory + '\vhdl\translate'
-
- # top level
- $Parameters += 'ghdl_jit'
-
- # add output filename
- $Parameters += '-o'
- $Parameters += $GHDL_Mcode_Name
-
- # append linker parameters
- $Parameters += '-largs'
- $Parameters += 'grt-cstdio.o'
- $Parameters += 'clock.o'
- $Parameters += 'grt-cvpi.o'
- $Parameters += 'grt-cdynload.o'
- $Parameters += 'memsegs_c.o'
- $Parameters += 'win32.o'
- $Parameters += '-ldbghelp'
- $Parameters += '-largs'
- # $Parameters += '-Wl,--stack,8404992'
-
- # call Ada compiler (GNAT)
- $InvokeExpr = "$Prog_GNATMake " + ($Parameters -join " ") + " 2>&1"
-
- Write-Host " compiling with GNAT"
- Write-Debug " call: $InvokeExpr"
- $ErrorRecordFound = Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-ColoredGCCLine -Indent " "
- if ($LastExitCode -ne 0)
- { Write-Host "[ERROR]: While compiling '$GHDL_Mcode_Name'." -ForegroundColor Red
- return $true
- }
- return $false
-} # Invoke-CompileGHDLAdaFiles
-
-
-function Invoke-StripGHDLExecutable
-{ <#
- .SYNOPSIS
- This CommandLet strips the result files.
- .PARAMETER BuildDirectory
- The directory where all generated files are stored.
- .PARAMETER Quiet
- Disable outputs to the host console
- #>
- [CmdletBinding()]
- param(
- [string] $BuildDirectory,
- [switch] $Quiet = $false
- )
-
- Set-Location $BuildDirectory
- Write-Host "Executing build target 'StripGHDLExecutable' ..." -ForegroundColor Yellow
-
- # call striping tool (strip)
- Write-Host " stripping '$GHDL_Mcode_Name'"
- Write-Debug " call: $Prog_Strip $GHDL_Mcode_Name"
- & $Prog_Strip $GHDL_Mcode_Name
- if ($LastExitCode -ne 0)
- { Write-Host "[ERROR]: While stripping '$GHDL_Mcode_Name'." -ForegroundColor Red
- return $true
- }
- return $false
-} # Invoke-StripGHDLExecutable
-
-function Test-GHDLVersion
-{ <#
- .SYNOPSIS
- This CommandLet executes ghdl to read the version information
- .PARAMETER BuildDirectory
- The directory where all generated files are stored.
- .PARAMETER Quiet
- Disable outputs to the host console
- #>
- [CmdletBinding()]
- param(
- [string] $BuildDirectory,
- [switch] $Quiet = $false
- )
-
- Set-Location $BuildDirectory
- Write-Host "Executing build target 'GHDLVersion' ..." -ForegroundColor Yellow
-
- if (-not (Test-Path -Path $GHDL_Mcode_Name -PathType Leaf))
- { Write-Host " GHDL executable '$GHDL_Mcode_Name' does not exists." -ForegroundColor Red
- return $true
- }
-
- # call ghdl
- $InvokeExpr = "$GHDL_Mcode_Name --version 2>&1"
-
- Write-Host " executing '$GHDL_Mcode_Name'"
- Write-Host " call: $InvokeExpr"
- Write-Host " ----------------------------------------"
- Invoke-Expression $InvokeExpr | Restore-NativeCommandStream | Write-HostExtended " "
- Write-Host " ----------------------------------------"
- if ($LastExitCode -ne 0)
- { Write-Host "[ERROR]: While executing '$GHDL_Mcode_Name'." -ForegroundColor Red
- return $true
- }
- return $false
-} # Test-GHDLVersion
-
-
-# export functions
-Export-ModuleMember -Function 'Get-GHDLVersion'
-Export-ModuleMember -Function 'Invoke-Clean'
-Export-ModuleMember -Function 'New-BuildDirectory'
-Export-ModuleMember -Function 'Invoke-PatchVersionFile'
-Export-ModuleMember -Function 'Restore-PatchedVersionFile'
-Export-ModuleMember -Function 'Invoke-CompileCFiles'
-Export-ModuleMember -Function 'Invoke-CompileGHDLAdaFiles'
-Export-ModuleMember -Function 'Invoke-StripGHDLExecutable'
-Export-ModuleMember -Function 'Test-GHDLVersion'