summaryrefslogtreecommitdiff
path: root/exports/generate_lib.ps1
blob: ac452ca7d5016b5d22bc37b83ff80b916fd1111e (plain)
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
<#
.SYNOPSIS
    Generate .lib import library file for specified .dll file.
.NOTES
    Requires dumpbin & lib, may need to execute through VS developer shell.
#>

param (
    [string]$DllPath
)

# Compatible with both Windows PowerShell and PowerShell Core

$ErrorActionPreference = "Stop"

$dll = Get-Item $DllPath
$def = Join-Path $dll.Directory "$( $dll.BaseName ).def"
$lib = Join-Path $dll.Directory "$( $dll.BaseName ).lib"
$machine = (dumpbin /nologo /headers $dll.FullName |
        Select-String -AllMatches 'machine \((.+)\)').Matches[0].Groups[1].Value

"LIBRARY $( $dll.BaseName )`nEXPORTS`n" + (
(dumpbin /nologo /exports $dll.FullName |
        Select-String -AllMatches '\d+\s+\d+\s+[0-9A-Z]+\s+(\S+)').Matches |
        % { $_.Groups[1].Value } |
        where { $_[0] -ne '_' } |  # Skip _cgo_dummy_export
Out-String) |
        Set-Content $def

lib /machine:$machine /def:"$def" /out:"$lib"