1bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant@echo off
2bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
3f5256e16dfc425c1d466f6308d4026d529ce9e0bHoward Hinnantsetlocal enableextensions enabledelayedexpansion
4bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
5b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnantfor /f %%v in ('git --git-dir="%~dp0..\.git" describe --tags --match "v*"') do set version=%%v
6b64f8b07c104c6cc986570ac8ee0ed16a9f23976Howard Hinnant
7bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantif not "%version%"=="" goto :gotversion
8bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
9bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantif exist "%~dp0..\version.mk" goto :getversion
10bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
11bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantecho Git cannot be found, nor can version.mk. Generating unknown version.
12bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
13bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantset version=unknown
14bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
15bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantgoto :gotversion
16bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
17bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant:getversion
18bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
19bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantfor /f "delims== tokens=2" %%v in (%~dps0..\version.mk) do set version=%%v
20bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
21bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantset version=!version:^"=!
22bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantset version=!version: =!
23bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
24bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant:gotversion
25bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
26bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantset version_out=#define %2 "%version%"
27bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantset version_mk=%2 = "%version%"
28bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
29bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantecho %version_out%> "%1_temp"
30f8f852138f86e4588916021e1afedfcab25298c0Howard Hinnant
31bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantif %version%==unknown goto :skipgenerate
32bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
33bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantecho # static version string; update manually every release.> "%~dp0..\version.mk"
34bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantecho %version_mk%>> "%~dp0..\version.mk"
35bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
36f8f852138f86e4588916021e1afedfcab25298c0Howard Hinnant:skipgenerate
37bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
38bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantecho n | comp "%1_temp" "%1" > NUL 2> NUL
39bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
40bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantif not errorlevel 1 goto exit
41bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
42bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantcopy /y "%1_temp" "%1"
43bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
44bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant:exit
45bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant
46bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnantdel "%1_temp"
47bc8d3f97eb5c958007f2713238472e0c1c8fe02Howard Hinnant