build.ps1.template

Fri, 19 Dec 2025 23:02:38 +0100

author
Olaf Wintermann <olaf.wintermann@gmail.com>
date
Fri, 19 Dec 2025 23:02:38 +0100
changeset 9
eef1439666f7
permissions
-rw-r--r--

add powershell build script template

9
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
1 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
2 # Utility functions
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
3 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
4
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
5 function Is-Platform {
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
6 param([string]$Name)
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
7 return $PLATFORM -contains $Name
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
8 }
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
9
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
10 function Not-IsPlatform {
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
11 param([string]$Name)
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
12 return -not ($PLATFORM -contains $Name)
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
13 }
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
14
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
15 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
16 # Platform (fixed)
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
17 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
18
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
19 Write-Host "detect platform... windows"
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
20
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
21 $PLATFORM = @('windows')
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
22 $PLATFORM_NAME = 'windows'
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
23
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
24 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
25 # Result directories
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
26 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
27
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
28 New-Item -ItemType Directory -Force -Path result | Out-Null
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
29 $result_dir = (Resolve-Path result).Path
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
30
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
31 $configure_log = "configure.log"
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
32 $compile_log = "compile.log"
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
33 $check_log = "check.log"
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
34
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
35 $result_file = Join-Path $result_dir "result.json"
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
36
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
37 "[" | Out-File -FilePath $result_file -Encoding utf8
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
38
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
39 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
40 # Source directory
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
41 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
42
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
43 Set-Location src
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
44
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
45 {{ $nbuild := len .Build }}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
46 {{ range $i, $build := .Build}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
47
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
48 # Build isplatform="{{ .IsPlatform }}" not="{{ .NotPlatform }}"
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
49 while ($true) {
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
50
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
51 $log_dir = Join-Path $result_dir "build{{$i}}"
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
52 New-Item -ItemType Directory -Force -Path $log_dir | Out-Null
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
53 if (-not $?) {
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
54 Write-Error "failed to create log dir $log_dir"
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
55 exit 1
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
56 }
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
57
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
58 {{- if .IsPlatform}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
59 if (Not-IsPlatform "{{ $build.IsPlatform }}") {
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
60 break
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
61 }
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
62 {{- end}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
63
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
64 {{- range $build.NotList}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
65 if (Is-Platform "{{.}}") {
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
66 break
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
67 }
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
68 {{- end}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
69
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
70 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
71 # configure
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
72 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
73
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
74 $configure = $null
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
75 {{- if $build.Configure}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
76 @"
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
77 {{ $build.Configure }}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
78 "@ | Out-File uwbuild-configure.ps1 -Encoding utf8
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
79
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
80 .\uwbuild-configure.ps1 *> (Join-Path $log_dir $configure_log)
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
81
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
82 $configure = $LASTEXITCODE
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
83 {{- end}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
84
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
85 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
86 # compile
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
87 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
88
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
89 $compile = $null
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
90 {{- if $build.Compile}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
91 @"
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
92 {{ $build.Compile }}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
93 "@ | Out-File uwbuild-compile.ps1 -Encoding utf8
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
94
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
95 .\uwbuild-compile.ps1 *> (Join-Path $log_dir $compile_log)
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
96
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
97 $compile = $LASTEXITCODE
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
98 {{- end}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
99
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
100 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
101 # check
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
102 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
103
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
104 $check = $null
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
105 {{- if $build.Check}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
106 @"
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
107 {{ $build.Check }}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
108 "@ | Out-File uwbuild-check.ps1 -Encoding utf8
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
109
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
110 .\uwbuild-check.ps1 *> (Join-Path $log_dir $check_log)
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
111
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
112 $check = $LASTEXITCODE
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
113 {{- end}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
114
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
115 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
116 # write result
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
117 # -------------------------
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
118
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
119 Add-Content $result_file "{ `"build`": `"{{$i}}`","
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
120
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
121 {{- if $build.Name}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
122 Add-Content $result_file " `"name`": `"{{$build.Name}}`","
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
123 {{- end}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
124
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
125 if ($null -ne $configure) {
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
126 Add-Content $result_file " `"configure`": `"$configure`","
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
127 }
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
128 if ($null -ne $compile) {
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
129 Add-Content $result_file " `"compile`": `"$compile`","
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
130 }
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
131 if ($null -ne $check) {
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
132 Add-Content $result_file " `"check`": `"$check`""
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
133 }
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
134
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
135 {{- if eq $i (sub $nbuild 1)}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
136 Add-Content $result_file "}"
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
137 {{ else }}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
138 Add-Content $result_file "},"
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
139 {{- end}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
140
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
141 break
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
142 }
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
143
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
144 # End Build
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
145 {{ end}}
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
146
eef1439666f7 add powershell build script template
Olaf Wintermann <olaf.wintermann@gmail.com>
parents:
diff changeset
147 "]" | Add-Content $result_file

mercurial