vgmstream/version-make.bat

67 lines
2.0 KiB
Batchfile
Raw Normal View History

2013-06-14 03:05:02 +02:00
@echo off
setlocal enableextensions enabledelayedexpansion
2013-06-14 03:05:02 +02:00
REM creates or updates version_auto.h
set VERSION_EMPTY=%1
set VERSION_FILE=%2
set VERSION_NAME=%3
if "%~1" == "" set VERSION_EMPTY=false
if "%~2" == "" set VERSION_FILE=version_auto.h
if "%~3" == "" set VERSION_NAME=VGMSTREAM_VERSION
2021-08-07 17:06:45 +02:00
set VERSION_DEFAULT=unknown
2015-08-31 03:43:50 +02:00
if not "%VERSION%"=="" set VERSION=!VERSION:^:=_!
2021-08-07 17:06:45 +02:00
cd /d "%~dp0"
2013-06-14 03:05:02 +02:00
REM try get version from Git (dynamic), including lightweight tags
:get_version_git
for /f %%v in ('git describe --tags --always') do set VERSION=%%v
if not "%VERSION%"=="" set VERSION=!VERSION:^:=_!
if "%VERSION%"=="" goto :get_version_h
if %VERSION%==%VERSION_DEFAULT% goto :get_version_h
set LINE=#define %VERSION_NAME% "%VERSION%" /* autogenerated */
goto :got_version
2013-06-14 03:05:02 +02:00
REM try to get version from version.h (static)
:get_version_h
echo Git version not found, can't autogenerate version (using default)
REM option to output empty line instead of default version, so plugins can detect git-less builds
if "%VERSION_EMPTY%"=="true" (
set LINE=/* ignored */
) else (
set LINE=#define %VERSION_NAME% "%VERSION_DEFAULT%" /* autogenerated */
if exist "version.h" (
for /F "tokens=*" %%v in (version.h) do (
set TOKEN=%%v
REM set COMP=#define %VERSION_NAME% #todo
if /i "!TOKEN:~0,25!"=="#define VGMSTREAM_VERSION" set LINE=%%v /* default */
)
)
)
goto :got_version
2013-06-14 03:05:02 +02:00
REM avoid overwritting if contents are the same, as some systems rebuild on timestamp
:got_version
set LINE_ORIGINAL=none
if exist %VERSION_FILE% set /p LINE_ORIGINAL=<%VERSION_FILE%
if not "%LINE%"=="%LINE_ORIGINAL%" (
REM no spaces!
echo %LINE%>%VERSION_FILE%
)
goto :exit
2013-06-14 03:05:02 +02:00
REM * alt full file comp test
REM echo %LINE% > %VERSION_FILE%_temp
REM echo n | comp %VERSION_FILE%_temp %VERSION_FILE% > NUL 2> NUL
REM if not errorlevel 1 goto :got_version_done
REM copy /y %VERSION_FILE%_temp %VERSION_FILE% > NUL 2> NUL
REM :got_version_done
REM del %VERSION_FILE%_temp
REM :exit
2013-06-14 03:05:02 +02:00
REM done
2013-06-14 03:05:02 +02:00
:exit