rem | |
rem This script will build all the simulators in the current branch | |
rem (presumed to be master) and package the resulting windows binaries | |
rem into a zip file which will be named for the revision, build date and | |
rem git commit id. The resulting zip file will be pushed to the github | |
rem Win32-Development-Binaries repository for public access. | |
rem | |
rem We're using a github repository for this purpose since github no longer | |
rem supports a Download files facility since some folks were using it to | |
rem contain large binary files. The typical set of simh windows binaries | |
rem is under 7MB in size and the plan is to delete and recreate the whole | |
rem Win32-Development-Binaries repository at least every few months. | |
rem | |
rem If this script is invoked with a single parameter "reset", the local | |
rem repository will be wiped out and reset. This should be done AFTER | |
rem the github one is deleted and recreated. | |
rem | |
rem | |
set BIN_REPO=Win32-Development-Binaries | |
if exist "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat" call "%ProgramFiles%\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat" | |
if exist "%ProgramFiles(x86)%\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat" call "%ProgramFiles(x86)%\Microsoft Visual Studio 9.0\VC\bin\vcvars32.bat" | |
cd %~p0 | |
SET GIT_COMMIT_ID= | |
if not exist ..\.git-commit-id goto _NoId | |
for /F %%i in (..\.git-commit-id) do set GIT_COMMIT_ID=%%i | |
for /F "tokens=3 delims=/" %%i in ("%DATE%") do set D_YYYY=%%i | |
for /F "tokens=2 delims=/ " %%i in ("%DATE%") do set D_MM=%%i | |
for /F "tokens=2 delims=/" %%i in ("%DATE%") do set D_DD=%%i | |
for /F "usebackq tokens=3" %%i in (`findstr/C:"#define SIM_MAJOR" ..\sim_rev.h`) do set _SIM_MAJOR=%%i | |
for /F "usebackq tokens=3" %%i in (`findstr/C:"#define SIM_MINOR" ..\sim_rev.h`) do set _SIM_MINOR=%%i | |
for /F "usebackq tokens=3" %%i in (`findstr/C:"#define SIM_PATCH" ..\sim_rev.h`) do set _SIM_PATCH=-%%i | |
for /F "usebackq tokens=3" %%i in (`findstr/C:"#define SIM_VERSION_MODE" ..\sim_rev.h`) do set _SIM_VERSION_MODE=-%%~i | |
if "%_SIM_PATCH%" equ "-0" set _SIM_PATCH= | |
set _ZipName=simh-%_SIM_MAJOR%.%_SIM_MINOR%%_SIM_PATCH%%_SIM_VERSION_MODE%--%D_YYYY%-%D_MM%-%D_DD%-%GIT_COMMIT_ID:~0,8%.zip | |
set _ZipPath=..\..\%BIN_REPO%\ | |
vcbuild Simh.sln "Release|Win32" | |
if exist "%ProgramFiles%\7-Zip\7z.exe" "%ProgramFiles%\7-Zip\7z.exe" a -tzip "%_ZipPath%%_ZipName%" "..\BIN\NT\Win32-Release\*.exe" | |
if exist "%ProgramFiles(x86)%\7-Zip\7z.exe" "%ProgramFiles(x86)%\7-Zip\7z.exe" a -tzip "%_ZipPath%%_ZipName%" "..\BIN\NT\Win32-Release\*.exe" | |
if exist "%PROGRAMW6432%\7-Zip\7z.exe" "%PROGRAMW6432%\7-Zip\7z.exe" a -tzip "%_ZipPath%%_ZipName%" "..\BIN\NT\Win32-Release\*.exe" | |
pushd %_ZipPath% | |
where git.exe >NUL | |
if %ERRORLEVEL% equ 0 goto GitOK | |
if exist "%ProgramFiles%\Git\bin\git.exe" path %USERPROFILE%\bin;%ProgramFiles%\Git\local\bin;%ProgramFiles%\Git\mingw\bin;%ProgramFiles%\Git\bin\;%Path% | |
if exist "%ProgramFiles(x86)%\Git\bin\git.exe" path %USERPROFILE%\bin;%ProgramFiles(x86)%\Git\local\bin;%ProgramFiles(x86)%\Git\mingw\bin;%ProgramFiles(x86)%\Git\bin\;%Path% | |
:GitOK | |
if "%1" neq "reset" goto GitAddNew | |
:GitSetup | |
if exist .git rmdir/s .git | |
git init | |
git add README.md | |
git commit -m "Initializing the Windows Binary repository" | |
git remote add origin git@github.com:simh/%BIN_REPO%.git | |
git branch -m master %BIN_REPO% | |
git push -u origin %BIN_REPO% | |
:GitAddNew | |
git add %_ZipName% | |
git commit -m "Build results on %D_YYYY%-%D_MM%-%D_DD% for Commit Id %GIT_COMMIT_ID%" | |
git push -u origin %BIN_REPO% | |
popd |