mirror of
https://github.com/vgmstream/vgmstream.git
synced 2024-11-27 16:10:48 +01:00
dfaa7644e6
Added option to not set VGMSTREAM_VERSION on git-less builds so plugins can put their own default
67 lines
2.0 KiB
Batchfile
67 lines
2.0 KiB
Batchfile
@echo off
|
|
setlocal enableextensions enabledelayedexpansion
|
|
|
|
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
|
|
set VERSION_DEFAULT=unknown
|
|
|
|
if not "%VERSION%"=="" set VERSION=!VERSION:^:=_!
|
|
cd /d "%~dp0"
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
|
|
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
|
|
|
|
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
|
|
|
|
REM done
|
|
:exit
|