forked from libyal/libevtx
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathautogen.ps1
58 lines (44 loc) · 3.09 KB
/
autogen.ps1
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
# Script to generate the necessary files for a msvscpp build
#
# Version: 20240306
$WinFlex = "./win-flex-bison/bin/Release/win_flex.exe"
$WinBison = "./win-flex-bison/bin/Release/win_bison.exe"
$Library = Get-Content -Path configure.ac | select -skip 3 -first 1 | % { $_ -Replace " \[", "" } | % { $_ -Replace "\],", "" }
$Version = Get-Content -Path configure.ac | select -skip 4 -first 1 | % { $_ -Replace " \[", "" } | % { $_ -Replace "\],", "" }
$Prefix = ${Library}.Substring(3)
Get-Content -Path "include\${Library}.h.in" | Out-File -Encoding ascii "include\${Library}.h"
Get-Content -Path "include\${Library}\definitions.h.in" | % { $_ -Replace "@VERSION@", "${Version}" } | Out-File -Encoding ascii "include\${Library}\definitions.h"
Get-Content -Path "include\${Library}\features.h.in" | % { $_ -Replace "@[A-Z0-9_]*@", "0" } | Out-File -Encoding ascii "include\${Library}\features.h"
Get-Content -Path "include\${Library}\types.h.in" | % { $_ -Replace "@[A-Z0-9_]*@", "0" } | Out-File -Encoding ascii "include\${Library}\types.h"
Get-Content -Path "common\types.h.in" | % { $_ -Replace "@PACKAGE@", "${Library}" } | Out-File -Encoding ascii "common\types.h"
Get-Content -Path "${Library}\${Library}_definitions.h.in" | % { $_ -Replace "@VERSION@", "${Version}" } | Out-File -Encoding ascii "${Library}\${Library}_definitions.h"
Get-Content -Path "${Library}\${Library}.rc.in" | % { $_ -Replace "@VERSION@", "${Version}" } | Out-File -Encoding ascii "${Library}\${Library}.rc"
If (Test-Path "setup.cfg.in") {
Get-Content -Path "setup.cfg.in" | % { $_ -Replace "@VERSION@", "${Version}" } | Out-File -Encoding ascii "setup.cfg"
}
If (Test-Path "${Prefix}.net") {
Get-Content -Path "${Prefix}.net\${Prefix}.net.rc.in" | % { $_ -Replace "@VERSION@", "${Version}" } | Out-File -Encoding ascii "${Prefix}.net\${Prefix}.net.rc"
}
$NamePrefix = ""
ForEach (${Library} in Get-ChildItem -Directory -Path "lib*") {
ForEach (${DirectoryElement} in Get-ChildItem -Path "${Library}\*.l") {
$OutputFile = ${DirectoryElement} -Replace ".l$", ".c"
$NamePrefix = Split-Path -path ${DirectoryElement} -leaf
$NamePrefix = ${NamePrefix} -Replace ".l$", "_"
Write-Host "Running: ${WinFlex} -Cf ${DirectoryElement}"
# PowerShell will raise NativeCommandError if win_flex writes to stdout or stderr
# therefore 2>&1 is added and the output is stored in a variable.
$Output = Invoke-Expression -Command "& '${WinFlex}' -Cf ${DirectoryElement} 2>&1"
Write-Host ${Output}
# Moving manually since `win_flex -o filename' does not provide the expected behavior.
Move-Item "lex.yy.c" ${OutputFile} -force
}
ForEach (${DirectoryElement} in Get-ChildItem -Path "${Library}\*.y") {
$OutputFile = ${DirectoryElement} -Replace ".y$", ".c"
Write-Host "Running: ${WinBison} -d -v -l -p ${NamePrefix} -o ${OutputFile} ${DirectoryElement}"
# PowerShell will raise NativeCommandError if win_bison writes to stdout or stderr
# therefore 2>&1 is added and the output is stored in a variable.
$Output = Invoke-Expression -Command "& '${WinBison}' -d -v -l -p ${NamePrefix} -o ${OutputFile} ${DirectoryElement} 2>&1"
Write-Host ${Output}
}
}