Skip to content

Instantly share code, notes, and snippets.

@Jj0YzL5nvJ
Last active October 6, 2020 02:17
Show Gist options
  • Save Jj0YzL5nvJ/83c782b5e07efabd562a6fafa87256b9 to your computer and use it in GitHub Desktop.
Save Jj0YzL5nvJ/83c782b5e07efabd562a6fafa87256b9 to your computer and use it in GitHub Desktop.
Personal utility to build and package "Angrylion-RDP-Plus" automatically
@echo off
:: Last modification: 2020/10/05
setlocal enableextensions disabledelayedexpansion
cls
pushd "%~dps0"
set ORIG=%CD%
set mg=ERROR
set ERR=if errorlevel 1 goto err
if not defined ARCH set ARCH=x64
set TARCH=%ARCH%
if not defined CONF set CONF=Release
set VSPF=%ProgramFiles(x86)%
if "%PROCESSOR_ARCHITECTURE%"=="x86" set ARCH=x86& set VSPF=%ProgramFiles%
:x86
cd "%ORIG%"
if "%ARCH%"=="x86" set TARCH=Win32
set VSDEVSCRIPT=Common7\Tools\VsDevCmd.bat
set VS2015=Microsoft Visual Studio 14.0
set VS2017=Microsoft Visual Studio\2017\Community
set VS2019=Microsoft Visual Studio\2019\Community
if exist "%VSPF%\%VS2019%\%VSDEVSCRIPT%" set VSDEVSCRIPT="%VSPF%\%VS2019%\%VSDEVSCRIPT%"
if exist "%VSPF%\%VS2017%\%VSDEVSCRIPT%" set VSDEVSCRIPT="%VSPF%\%VS2017%\%VSDEVSCRIPT%"
if exist "%VSPF%\%VS2015%\%VSDEVSCRIPT%" set VSDEVSCRIPT="%VSPF%\%VS2015%\%VSDEVSCRIPT%"
msbuild -version >nul 2>&1
if errorlevel 1 call %VSDEVSCRIPT%
%ERR%
if defined FIXCMK set PATH=D:\cmake-3.18.3-win64-x64\bin;%VSPF%\%VS2019%\Common7\IDE\Extensions\Microsoft\IntelliCode\CLI;%VSPF%\%VS2019%\VC\Tools\MSVC\14.26.28801\bin\HostX86\x86;%VSPF%\%VS2019%\Common7\IDE\VC\VCPackages;%VSPF%\%VS2019%\Common7\IDE\CommonExtensions\Microsoft\TestWindow;%VSPF%\%VS2019%\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer;%VSPF%\%VS2019%\MSBuild\Current\bin\Roslyn;%VSPF%\%VS2019%\Team Tools\Performance Tools;%VSPF%\Microsoft Visual Studio\Shared\Common\VSPerfCollectionTools\vs2019\;%VSPF%\Microsoft SDKs\Windows\v10.0A\bin\NETFX 4.8 Tools\;%VSPF%\HTML Help Workshop;%VSPF%\%VS2019%\Common7\IDE\CommonExtensions\Microsoft\FSharp\;%VSPF%\Windows Kits\10\bin\10.0.18362.0\x86;%VSPF%\Windows Kits\10\bin\x86;%VSPF%\%VS2019%\MSBuild\Current\Bin;C:\Windows\Microsoft.NET\Framework\v4.0.30319;%VSPF%\%VS2019%\Common7\IDE\;%VSPF%\%VS2019%\Common7\Tools\;%ProgramFiles%\Python38\Scripts\;%ProgramFiles%\Python38\;%VSPF%\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;%VSPF%\Microsoft SQL Server\110\Tools\Binn\;%ProgramFiles%\Microsoft SQL Server\110\Tools\Binn\;%ProgramFiles%\Microsoft SQL Server\110\DTS\Binn\;%ProgramFiles%\Microsoft SQL Server\130\Tools\Binn\;%ProgramFiles%\dotnet\;%ProgramFiles%\Git\cmd;%ProgramFiles%\LLVM\bin;%ProgramFiles%\7-Zip;%VSPF%\%VS2019%\Common7\IDE\CommonExtensions\Microsoft\CMake\Ninja;%VSPF%\%VS2019%\Common7\IDE\VC\Linux\bin\ConnectionManagerExe
7z >nul 2>&1
%ERR%
git --version >nul 2>&1
%ERR%
python -V >nul 2>&1
%ERR%
taskkill /im vctip.exe /f 2>nul
taskkill /im mspdbsrv.exe /f 2>nul
rd /s /q angrylion-rdp-plus
git clone https://github.com/ata4/angrylion-rdp-plus.git
%ERR%
goto cmk
:pak
if not exist "%ORIG%\angrylion-rdp-plus\src\core\version.h" goto err
for /f "tokens=3" %%a in ('type "%ORIG%\angrylion-rdp-plus\src\core\version.h" ^| find "define GIT_TAG"') do set p1=%%~a
for /f "tokens=3" %%a in ('type "%ORIG%\angrylion-rdp-plus\src\core\version.h" ^| find "GIT_COMMIT_HASH"') do set p2=%%~a
for /f "tokens=3" %%a in ('type "%ORIG%\angrylion-rdp-plus\src\core\version.h" ^| find "GIT_COMMIT_DATE"') do set p4=%%~a
for /f "tokens=1,2,3 delims=-" %%a in ('echo %p4%') do set p4=%%a%%b%%c
md "%ORIG%\angrylion-plus_%p1%-%p2%_%p3%_%p4%\Project64_%ARCH%"
md "%ORIG%\angrylion-plus_%p1%-%p2%_%p3%_%p4%\Mupen64Plus_%ARCH%"
copy /y a*.dll "%ORIG%\angrylion-plus_%p1%-%p2%_%p3%_%p4%\Project64_%ARCH%"
%ERR%
copy /y m*.dll "%ORIG%\angrylion-plus_%p1%-%p2%_%p3%_%p4%\Mupen64Plus_%ARCH%"
%ERR%
goto:eof
:cmk
cmake --version >nul 2>&1
if errorlevel 1 goto vs
md angrylion-rdp-plus\build\%ARCH%
cd angrylion-rdp-plus\build\%ARCH%
%ERR%
if not defined TOOLSET set TOOLSET=v141_xp
cmake -T "%TOOLSET%" -A "%TARCH%" ..\..
%ERR%
cmake --build . --config %CONF%
%ERR%
set p3=%ARCH%-shared_%TOOLSET%
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" set p3=x86_64-shared_%TOOLSET%
set p5=%p3%
cd %CONF%
%ERR%
call :pak
:vs
cd "%ORIG%"
msbuild angrylion-rdp-plus\msvc\angrylion-plus.sln /t:Rebuild /p:Configuration=%CONF%;Platform=%ARCH%
%ERR%
set p3=%ARCH%
if "%PROCESSOR_ARCHITECTURE%"=="AMD64" set p3=x86_64
set p6=%p3%
cd angrylion-rdp-plus\msvc\build\%CONF%
%ERR%
call :pak
if "%ARCH%"=="x64" set ARCH=x86& goto x86
cd "%ORIG%\angrylion-plus_%p1%-%p2%_%p5%_%p4%\"
if errorlevel 1 goto ncmk
7z a -t7z "%ORIG%\angrylion-plus_%p1%-%p2%_%p5%_%p4%.7z" *
%ERR%
:ncmk
cd "%ORIG%\angrylion-plus_%p1%-%p2%_%p6%_%p4%\"
%ERR%
7z a -t7z "%ORIG%\angrylion-plus_%p1%-%p2%_%p6%_%p4%.7z" *
%ERR%
set mg=DONE
echo.
:err
echo %mg%!
cd "%ORIG%"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment