-
Notifications
You must be signed in to change notification settings - Fork 49
/
Copy pathmake.bat
427 lines (375 loc) · 17.5 KB
/
make.bat
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
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
@echo off
cls
:: GENERAL NOTES:
:: 1) All executables of a given type are IDENTICAL regardless of which computer assembled them. There is no such thing as automatic profile-guided optimizations for asmFish.
:: 2) Unless you are explicitly adding a non-default build option (i.e. VARIETY = 1), there is no real reason to use this makefile since all executables are assembled and posted to GitHub as commits are pushed.
:: 3) The layout of this batch-file is primarily for the ease-of-use of repository contributers/collaborators. Bulk assembly options (i.e. 1 - All) assume a machine has at least 8 threads available for concurrent assembly. Systems with less than 8 threads may experience moderate to severe lag.
:: 4) To avoid having too many non-functional commits, modifications to this file (and the AppVeyor file) will from now on be silently included with functional patch releases.
CALL:set_version_number
set "debug=2>NUL"
:menu
echo.
echo EXECUTABLES
echo ===========
echo.
echo 1 - All
echo 2 - Windows [ p - popcnt ^| b - bmi2 ]
echo 3 - Linux
echo 4 - Mac
echo 5 - ARM
echo 6 - Base
echo 7 - Matefinder
echo.
echo D - Toggle Debug Mode
echo U - Update fasmg.exe
echo Q - Quit
echo.
choice /c:1234567QpbDU>NUL
:: Debug = OFF [default]
:: OPTIONS (Note: Descending order of errorlevels is intentional -- do not change this!)
if errorlevel 12 goto update
if errorlevel 11 goto debug
if errorlevel 10 goto WinBmi2
if errorlevel 9 goto WinPopcnt
if errorlevel 8 goto done
if errorlevel 7 goto matefinder
if errorlevel 6 goto base
if errorlevel 5 goto arm
if errorlevel 4 goto mac
if errorlevel 3 goto linux
if errorlevel 2 goto windows
if errorlevel 1 goto allBinaries
echo CHOICE missing
goto done
:allBinaries
call:all
goto menu
:windows
ECHO === Building Windows Executables ===
cd WindowsOS_binaries
if exist *bmi2.exe del *bmi2.exe
if exist *bmi1.exe del *bmi1.exe
if exist *popcnt.exe del *popcnt.exe
cd ..
set include=x86\include\
CALL:start_timer
start /min /wait fasmg.exe "x86\fish.asm" "asmFishW_%version_number%_popcnt.exe" -e 1000 -i "VERSION_OS='W'" -i "PEDANTIC = 1" -i "VERSION_POST = 'popcnt'" %debug%
start /min /wait fasmg.exe "x86\fish.asm" "asmFishW_%version_number%_bmi1.exe" -e 1000 -i "VERSION_OS='W'" -i "PEDANTIC = 1" -i "VERSION_POST = 'bmi1'" %debug%
start /min /wait fasmg.exe "x86\fish.asm" "asmFishW_%version_number%_bmi2.exe" -e 1000 -i "VERSION_OS='W'" -i "PEDANTIC = 1" -i "VERSION_POST = 'bmi2'" %debug%
:: NOTE: We use "copy" instead of "move" here since it is convenient to have a copy of the assembled executable in the working directory for bench-taking purposes.
copy asmFishW_%version_number%_popcnt.exe WindowsOS_binaries
copy asmFishW_%version_number%_bmi1.exe WindowsOS_binaries
copy asmFishW_%version_number%_bmi2.exe WindowsOS_binaries
echo.
CALL:stop_timer
echo.
goto menu
:linux
cd LinuxOS_binaries
if exist asm* del asm*
cd ..
set include=x86\include\
CALL:start_timer
ECHO === Building Linux Executables ===
start /min /wait fasmg.exe "x86\fish.asm" "asmFishL_%version_number%_popcnt" -e 1000 -i "VERSION_OS='L'" -i "PEDANTIC = 1" -i "VERSION_POST = 'popcnt'" %debug%
start /min /wait fasmg.exe "x86\fish.asm" "asmFishL_%version_number%_bmi1" -e 1000 -i "VERSION_OS='L'" -i "PEDANTIC = 1" -i "VERSION_POST = 'bmi1'" %debug%
start /min /wait fasmg.exe "x86\fish.asm" "asmFishL_%version_number%_bmi2" -e 1000 -i "VERSION_OS='L'" -i "PEDANTIC = 1" -i "VERSION_POST = 'bmi2'" %debug%
copy asmFishL_%version_number%_popcnt LinuxOS_binaries
copy asmFishL_%version_number%_bmi1 LinuxOS_binaries
copy asmFishL_%version_number%_bmi2 LinuxOS_binaries
echo.
CALL:stop_timer
echo.
goto menu
:mac
cd MacOS_binaries
if exist asm* del asm*
cd ..
set include=x86\include\
CALL:start_timer
ECHO === Building MacOS Executables ===
start /min /wait fasmg.exe "x86\fish.asm" "asmFishX_%version_number%_popcnt" -e 1000 -i "VERSION_OS='X'" -i "PEDANTIC = 1" -i "VERSION_POST = 'popcnt'" %debug%
start /min /wait fasmg.exe "x86\fish.asm" "asmFishX_%version_number%_bmi1" -e 1000 -i "VERSION_OS='X'" -i "PEDANTIC = 1" -i "VERSION_POST = 'bmi1'" %debug%
start /min /wait fasmg.exe "x86\fish.asm" "asmFishX_%version_number%_bmi2" -e 1000 -i "VERSION_OS='X'" -i "PEDANTIC = 1" -i "VERSION_POST = 'bmi2'" %debug%
copy asmFishX_%version_number%_popcnt MacOS_binaries
copy asmFishX_%version_number%_bmi1 MacOS_binaries
copy asmFishX_%version_number%_bmi2 MacOS_binaries
echo.
CALL:stop_timer
echo.
goto menu
:arm
cd LinuxOS_binaries
if exist arm* del arm*
cd ..
set include=arm\include\
CALL:start_timer
ECHO === Building ARM Executables ===
fasmg.exe "arm\fish.arm" "armFishL_%version_number%_v8" -e 1000 -i "VERSION_OS='L'" -i "PEDANTIC = 1" -i "VERSION_POST = 'v8'" %debug%
copy armFishL_%version_number%_v8 LinuxOS_binaries
echo.
CALL:stop_timer
echo.
goto menu
:base
:: Windows
cd WindowsOS_binaries
if exist *base.exe del *base.exe
cd ..
set include=x86\include\
CALL:start_timer
ECHO === Building Windows Base Executables ===
start /min /wait fasmg.exe "x86\fish.asm" "asmFishW_%version_number%_base.exe" -e 1000 -i "VERSION_OS='W'" -i "PEDANTIC = 1" -i "VERSION_POST = 'base'" %debug%
copy asmFishW_%version_number%_base.exe WindowsOS_binaries
start /min /wait fasmg.exe "x86\fish.asm" "mateFishW_%version_number%_base.exe" -e 1000 -i "VERSION_OS='W'" -i "PEDANTIC = 1" -i "VERSION_POST = 'base'" -i "USE_MATEFINDER = 1" %debug%
copy mateFishW_%version_number%_base.exe Matefinder_binaries
echo.
:: Linux
cd LinuxOS_binaries
if exist *base del *base
cd ..
set include=x86\include\
ECHO === Building Linux Base Executables ===
start /min /wait fasmg.exe "x86\fish.asm" "asmFishL_%version_number%_base" -e 1000 -i "VERSION_OS='L'" -i "PEDANTIC = 1" -i "VERSION_POST = 'base'" %debug%
copy asmFishL_%version_number%_base LinuxOS_binaries
start /min /wait fasmg.exe "x86\fish.asm" "mateFishL_%version_number%_base" -e 1000 -i "VERSION_OS='L'" -i "PEDANTIC = 1" -i "VERSION_POST = 'base'" -i "USE_MATEFINDER = 1" %debug%
copy mateFishL_%version_number%_base Matefinder_binaries
echo.
:: MacOS
cd MacOS_binaries
if exist *base del *base
cd ..
set include=x86\include\
ECHO === Building MacOS Base Executables ===
start /min /wait fasmg.exe "x86\fish.asm" "asmFishX_%version_number%_base" -e 1000 -i "VERSION_OS='X'" -i "PEDANTIC = 1" -i "VERSION_POST = 'base'" %debug%
copy asmFishX_%version_number%_base MacOS_binaries
start /min /wait fasmg.exe "x86\fish.asm" "mateFishX_%version_number%_base" -e 1000 -i "VERSION_OS='X'" -i "PEDANTIC = 1" -i "VERSION_POST = 'base'" -i "USE_MATEFINDER = 1" %debug%
copy mateFishX_%version_number%_base Matefinder_binaries
echo.
CALL:stop_timer
echo.
goto menu
:matefinder
:: Windows
cd Matefinder_binaries
if exist mateFishW* del mateFishW*
cd ..
set include=x86\include\
CALL:start_timer
ECHO === Building Windows Matefinder Executables ===
start /min /wait fasmg.exe "x86\fish.asm" "mateFishW_%version_number%_popcnt.exe" -e 1000 -i "VERSION_OS='W'" -i "VERSION_POST = 'popcnt'" -i "USE_MATEFINDER = 1" %debug%
start /min /wait fasmg.exe "x86\fish.asm" "mateFishW_%version_number%_bmi1.exe" -e 1000 -i "VERSION_OS='W'" -i "VERSION_POST = 'bmi1'" -i "USE_MATEFINDER = 1" %debug%
start /min /wait fasmg.exe "x86\fish.asm" "mateFishW_%version_number%_bmi2.exe" -e 1000 -i "VERSION_OS='W'" -i "VERSION_POST = 'bmi2'" -i "USE_MATEFINDER = 1" %debug%
copy mateFishW* Matefinder_binaries
echo.
:: Linux
cd Matefinder_binaries
if exist mateFishL* del mateFishL*
cd ..
set include=x86\include\
ECHO === Building Linux Matefinder Executables ===
start /min /wait fasmg.exe "x86\fish.asm" "mateFishL_%version_number%_popcnt" -e 1000 -i "VERSION_OS='L'" -i "VERSION_POST = 'popcnt'" -i "USE_MATEFINDER = 1" %debug%
start /min /wait fasmg.exe "x86\fish.asm" "mateFishL_%version_number%_bmi1" -e 1000 -i "VERSION_OS='L'" -i "VERSION_POST = 'bmi1'" -i "USE_MATEFINDER = 1" %debug%
start /min /wait fasmg.exe "x86\fish.asm" "mateFishL_%version_number%_bmi2" -e 1000 -i "VERSION_OS='L'" -i "VERSION_POST = 'bmi2'" -i "USE_MATEFINDER = 1" %debug%
set include=arm\include\
start /min /wait fasmg.exe "arm\fish.arm" "mateFishL_%version_number%_v8" -e 1000 -i "VERSION_OS='L'" -i "VERSION_POST = 'v8'" -i "USE_MATEFINDER = 1" %debug%
copy mateFishL_%version_number%_popcnt Matefinder_binaries
copy mateFishL_%version_number%_bmi1 Matefinder_binaries
copy mateFishL_%version_number%_bmi2 Matefinder_binaries
copy mateFishL_%version_number%_v8 Matefinder_binaries
echo.
:: Mac
set include=x86\include\
cd Matefinder_binaries
if exist mateFishX* del mateFishX*
cd ..
ECHO === Building MacOS Matefinder Executables ===
start /min /wait fasmg.exe "x86\fish.asm" "mateFishX_%version_number%_popcnt" -e 1000 -i "VERSION_OS='X'" -i "VERSION_POST = 'popcnt'" -i "USE_MATEFINDER = 1" %debug%
start /min /wait fasmg.exe "x86\fish.asm" "mateFishX_%version_number%_bmi1" -e 1000 -i "VERSION_OS='X'" -i "VERSION_POST = 'bmi1'" -i "USE_MATEFINDER = 1" %debug%
start /min /wait fasmg.exe "x86\fish.asm" "mateFishX_%version_number%_bmi2" -e 1000 -i "VERSION_OS='X'" -i "VERSION_POST = 'bmi2'" -i "USE_MATEFINDER = 1" %debug%
copy mateFishX_* Matefinder_binaries
CALL:stop_timer
echo.
goto menu
:all
CALL:start_timer
ECHO === Building Windows Executables ===
cd WindowsOS_binaries
if exist *bmi2.exe del *bmi2.exe
if exist *bmi1.exe del *bmi1.exe
if exist *popcnt.exe del *popcnt.exe
cd ..
set include=x86\include\
start /min fasmg.exe "x86\fish.asm" "asmFishW_%version_number%_popcnt.exe" -e 1000 -i "VERSION_OS='W'" -i "PEDANTIC = 1" -i "VERSION_POST = 'popcnt'" %debug%
start /min fasmg.exe "x86\fish.asm" "asmFishW_%version_number%_bmi1.exe" -e 1000 -i "VERSION_OS='W'" -i "PEDANTIC = 1" -i "VERSION_POST = 'bmi1'" %debug%
start /min fasmg.exe "x86\fish.asm" "asmFishW_%version_number%_bmi2.exe" -e 1000 -i "VERSION_OS='W'" -i "PEDANTIC = 1" -i "VERSION_POST = 'bmi2'" %debug%
echo.
cd LinuxOS_binaries
if exist asm* del asm*
cd ..
set include=x86\include\
ECHO === Building Linux Executables ===
start /min fasmg.exe "x86\fish.asm" "asmFishL_%version_number%_popcnt" -e 1000 -i "VERSION_OS='L'" -i "PEDANTIC = 1" -i "VERSION_POST = 'popcnt'" %debug%
start /min fasmg.exe "x86\fish.asm" "asmFishL_%version_number%_bmi1" -e 1000 -i "VERSION_OS='L'" -i "PEDANTIC = 1" -i "VERSION_POST = 'bmi1'" %debug%
start /min fasmg.exe "x86\fish.asm" "asmFishL_%version_number%_bmi2" -e 1000 -i "VERSION_OS='L'" -i "PEDANTIC = 1" -i "VERSION_POST = 'bmi2'" %debug%
echo.
cd MacOS_binaries
if exist asm* del asm*
cd ..
set include=x86\include\
ECHO === Building MacOS Executables ===
start /min fasmg.exe "x86\fish.asm" "asmFishX_%version_number%_popcnt" -e 1000 -i "VERSION_OS='X'" -i "PEDANTIC = 1" -i "VERSION_POST = 'popcnt'" %debug%
start /min fasmg.exe "x86\fish.asm" "asmFishX_%version_number%_bmi1" -e 1000 -i "VERSION_OS='X'" -i "PEDANTIC = 1" -i "VERSION_POST = 'bmi1'" %debug%
start /min fasmg.exe "x86\fish.asm" "asmFishX_%version_number%_bmi2" -e 1000 -i "VERSION_OS='X'" -i "PEDANTIC = 1" -i "VERSION_POST = 'bmi2'" %debug%
echo.
REM cd LinuxOS_binaries
REM if exist arm* del arm*
REM cd ..
REM set include=arm\include\
REM ECHO === Building ARM Executables ===
REM start /min fasmg.exe "arm\fish.arm" "armFishL%CP%_%datestamp%_v8" -e 1000 -i "VERSION_OS='L'" -i "PEDANTIC = 1" -i "VERSION_POST = 'v8'" %debug%
REM echo.
:: Windows
cd Matefinder_binaries
if exist *.7z del *.7z
if exist *.zip del *.zip
if exist *.rar del *.rar
if exist mateFishW* del mateFishW*
if exist *base del *base
cd ..
set include=x86\include\
ECHO === Building Windows Matefinder Executables ===
start /min fasmg.exe "x86\fish.asm" "mateFishW_%version_number%_popcnt.exe" -e 1000 -i "VERSION_OS='W'" -i "VERSION_POST = 'popcnt'" -i "USE_MATEFINDER = 1" %debug%
start /min fasmg.exe "x86\fish.asm" "mateFishW_%version_number%_bmi1.exe" -e 1000 -i "VERSION_OS='W'" -i "VERSION_POST = 'bmi1'" -i "USE_MATEFINDER = 1" %debug%
start /min fasmg.exe "x86\fish.asm" "mateFishW_%version_number%_bmi2.exe" -e 1000 -i "VERSION_OS='W'" -i "VERSION_POST = 'bmi2'" -i "USE_MATEFINDER = 1" %debug%
echo.
:: Linux
cd Matefinder_binaries
if exist mateFish* del mateFishL*
cd ..
set include=x86\include\
ECHO === Building Linux Matefinder Executables ===
start /min fasmg.exe "x86\fish.asm" "mateFishL_%version_number%_popcnt" -e 1000 -i "VERSION_OS='L'" -i "VERSION_POST = 'popcnt'" -i "USE_MATEFINDER = 1" %debug%
start /min fasmg.exe "x86\fish.asm" "mateFishL_%version_number%_bmi1" -e 1000 -i "VERSION_OS='L'" -i "VERSION_POST = 'bmi1'" -i "USE_MATEFINDER = 1" %debug%
start /min fasmg.exe "x86\fish.asm" "mateFishL_%version_number%_bmi2" -e 1000 -i "VERSION_OS='L'" -i "VERSION_POST = 'bmi2'" -i "USE_MATEFINDER = 1" %debug%
::set include=arm\include\
::start /min fasmg.exe "arm\fish.arm" "mateFishL%CP%_%datestamp%_v8" -e 1000 -i "VERSION_OS='L'" -i "VERSION_POST = 'v8'" -i "USE_MATEFINDER = 1" %debug%
echo.
:: Mac
set include=x86\include\
cd Matefinder_binaries
if exist mateFishX* del mateFishX*
cd ..
ECHO === Building MacOS Matefinder Executables ===
start /min fasmg.exe "x86\fish.asm" "mateFishX_%version_number%_popcnt" -e 1000 -i "VERSION_OS='X'" -i "VERSION_POST = 'popcnt'" -i "USE_MATEFINDER = 1" %debug%
start /min fasmg.exe "x86\fish.asm" "mateFishX_%version_number%_bmi1" -e 1000 -i "VERSION_OS='X'" -i "VERSION_POST = 'bmi1'" -i "USE_MATEFINDER = 1" %debug%
start /min fasmg.exe "x86\fish.asm" "mateFishX_%version_number%_bmi2" -e 1000 -i "VERSION_OS='X'" -i "VERSION_POST = 'bmi2'" -i "USE_MATEFINDER = 1" %debug%
echo.
:: Windows
cd WindowsOS_binaries
if exist *base.exe del *base.exe
cd ..
set include=x86\include\
ECHO === Building Windows Base Executables ===
start /min fasmg.exe "x86\fish.asm" "asmFishW_%version_number%_base.exe" -e 1000 -i "VERSION_OS='W'" -i "PEDANTIC = 1" -i "VERSION_POST = 'base'" %debug%
echo.
start /min fasmg.exe "x86\fish.asm" "mateFishW_%version_number%_base.exe" -e 1000 -i "VERSION_OS='W'" -i "PEDANTIC = 1" -i "VERSION_POST = 'base'" -i "USE_MATEFINDER = 1" %debug%
:: Linux
cd LinuxOS_binaries
if exist *base del *base
cd ..
set include=x86\include\
ECHO === Building Linux Base Executables ===
start /min fasmg.exe "x86\fish.asm" "asmFishL_%version_number%_base" -e 1000 -i "VERSION_OS='L'" -i "PEDANTIC = 1" -i "VERSION_POST = 'base'" %debug%
start /min fasmg.exe "x86\fish.asm" "mateFishL_%version_number%_base" -e 1000 -i "VERSION_OS='L'" -i "PEDANTIC = 1" -i "VERSION_POST = 'base'" -i "USE_MATEFINDER = 1" %debug%
echo.
:: MacOS
cd MacOS_binaries
if exist *base del *base
cd ..
set include=x86\include\
ECHO === Building MacOS Base Executables ===
start /min fasmg.exe "x86\fish.asm" "asmFishX_%version_number%_base" -e 1000 -i "VERSION_OS='X'" -i "PEDANTIC = 1" -i "VERSION_POST = 'base'" %debug%
start /min fasmg.exe "x86\fish.asm" "mateFishX_%version_number%_base" -e 1000 -i "VERSION_OS='X'" -i "PEDANTIC = 1" -i "VERSION_POST = 'base'" -i "USE_MATEFINDER = 1" %debug%
echo.
:: Windows
cd WindowsOS_binaries
if exist *base.exe del *base.exe
cd ..
set include=x86\include\
ECHO === Building Windows Base Executable ===
start /min fasmg.exe "x86\fish.asm" "asmFishW_%version_number%_base.exe" -e 1000 -i "VERSION_OS='W'" -i "PEDANTIC = 1" -i "VERSION_POST = 'base'" %debug%
echo.
start /min /wait fasmg.exe "x86\fish.asm" "mateFishW_%version_number%_base.exe" -e 1000 -i "VERSION_OS='W'" -i "PEDANTIC = 1" -i "VERSION_POST = 'base'" -i "USE_MATEFINDER = 1" %debug%
timeout 8
:: Move all files to their respective directories
move asmFishW* WindowsOS_binaries
move asmFishL* LinuxOS_binaries
::move armFishL* LinuxOS_binaries
move asmFishX* MacOS_binaries
move mateFish* Matefinder_binaries
echo.
CALL:stop_timer
echo.
goto:eof
:WinPopcnt
ECHO === Building Windows POPCNT Executable ===
cd WindowsOS_binaries
if exist *popcnt.exe del *popcnt.exe
cd ..
set include=x86\include\
fasmg.exe "x86\fish.asm" "asmFishW_%version_number%_popcnt.exe" -e 1000 -i "VERSION_OS='W'" -i "PEDANTIC = 1" -i "VERSION_POST = 'popcnt'" %debug%
copy asmFishW_%version_number%_popcnt.exe WindowsOS_binaries
echo.
goto menu
:: NOTE: BMI1 builds are not as common since only AMD processors benefit from specifically having BMI1 instructions without BMI2 instructions. All BMI-aware Intel Processors should use BMI2 builds for optimal performance.
:WinBmi2
ECHO === Building Windows BMI2 Executable ===
cd WindowsOS_binaries
if exist *bmi2.exe del *bmi2.exe
cd ..
set include=x86\include\
fasmg.exe "x86\fish.asm" "asmFishW_%version_number%_bmi2.exe" -e 1000 -i "VERSION_OS='W'" -i "PEDANTIC = 1" -i "VERSION_POST = 'bmi2'" %debug%
copy asmFishW_%version_number%_bmi2.exe WindowsOS_binaries
echo.
goto menu
:set_version_number
set "version_number=10"
goto:eof
:start_timer
:: Capture start time
set t0=%time: =0%
goto:eof
:stop_timer
:: Capture end time
set t=%time: =0%
:: Make t0 into a scaler in 100ths of a second
:: Note: Do not let SET/A misinterpret 08 and 09 as octal
set /a h=1%t0:~0,2%-100
set /a m=1%t0:~3,2%-100
set /a s=1%t0:~6,2%-100
set /a c=1%t0:~9,2%-100
set /a starttime = %h% * 360000 + %m% * 6000 + 100 * %s% + %c%
:: Convert t into a scaler in 100ths of a second
set /a h=1%t:~0,2%-100
set /a m=1%t:~3,2%-100
set /a s=1%t:~6,2%-100
set /a c=1%t:~9,2%-100
set /a endtime = %h% * 360000 + %m% * 6000 + 100 * %s% + %c%
:: Runtime in 100ths is now just end - start
set /a runtime = %endtime% - %starttime%
echo Build time: %runtime:~0,-2%.%runtime:~-2% seconds
goto:eof
:debug
cls
set "default=2>NUL"
if defined debug (ECHO Debug Mode = ON) else (ECHO Debug Mode = OFF)
if defined debug (SET "debug=") else (SET "debug=%default%")
goto menu
:update
:: Update to latest version of fasmg.exe. Since this makefile is for Windows OS users, we only update fasmg.exe here.
if exist fasmg.exe del fasmg.exe
call cscript /nologo "%~dp0download.vbs" https://flatassembler.net fasmg.zip fasmg.exe fasmg.exe "The latest fasmg assembler"
echo.
goto menu
:END