rem
rem  This script performs several maintenance functions prior to building
rem  simh projects.  Some of these funtions are optional and depend on the
rem  needs of the project being built, and others are generic and are always
rem  performed.
rem
rem  The optional activities are invoked by passing parameters to this 
rem  procedure.  The parameters are:
rem     ROM    To run the BuildROMs program prior to executing a project
rem            build.  This program verifies that the include files containing
rem            ROM images are consistent with the ROM images from which they
rem            are derived.
rem     BUILD  To validate that the required dependent libraries and include
rem            files are available in the directory ..\..\windows-build\
rem            These libraries currently include winpcap and pthreads.
rem
rem  In addition to the optional activities mentioned above, other activities
rem  are also performed.  These include:
rem       - confirming that if the current source is a clone of the simh
rem         git repository, then then git hooks which manage making the
rem         git commit hash available during builds are properly installed
rem         in the repository hooks directory.
rem       - performing the activities which make the git repository commit id
rem         available in an include file during compiles.
rem
rem

:_next_arg
if "%1" == "" goto _done_args
set _arg=
if /I "%1" == "ROM"    set _arg=ROM
if /I "%1" == "BUILD"  set _arg=BUILD
if "%_arg%" == ""      echo *** warning *** unknown parameter %0
if not "%_arg%" == ""  set _X_%_arg%=%_arg%
shift
goto _next_arg
:_done_args

:_do_rom
if "%_X_ROM%" == "" goto _done_rom
pushd ..
SET _BLD=
if exist BIN\NT\Win32-Debug\BuildROMs.exe SET _BLD=BIN\NT\Win32-Debug\BuildROMs.exe
if exist BIN\NT\Win32-Release\BuildROMs.exe SET _BLD=BIN\NT\Win32-Release\BuildROMs.exe
if "%_BLD%" == "" echo ************************************************
if "%_BLD%" == "" echo ************************************************
if "%_BLD%" == "" echo **  Project dependencies not correct.         **
if "%_BLD%" == "" echo **  This project should depend on BuildROMs.  **
if "%_BLD%" == "" echo ************************************************
if "%_BLD%" == "" echo ************************************************
if "%_BLD%" == "" exit 1
%_BLD%
popd
:_done_rom

:_check_build
if "%_X_BUILD%" == "" goto _done_build
if exist ../../windows-build-windows-build move ../../windows-build-windows-build ../../windows-build >NUL
if not exist ../../windows-build/winpcap/Wpdpack/Include/pcap.h goto _notice
if not exist ../../windows-build/pthreads/pthread.h goto _notice
goto _done_build
:_notice
echo ****************************************************
echo ****************************************************
echo **  The required build support is not available.  **
echo ****************************************************
echo ****************************************************
type 0ReadMe_Projects.txt
exit 1
:_done_build

if not exist ..\.git goto _done_hooks
if exist ..\.git\hooks\post-commit goto _done_hooks
echo *****************************************************
echo *****************************************************
echo ** Installing git hooks in newly cloned repository **
echo *****************************************************
echo *****************************************************
copy git-hooks\post* ..\.git\hooks\
:_done_hooks

:_SetId
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
:_NoId
SET OLD_GIT_COMMIT_ID=
if not exist .git-commit-id.h echo.>.git-commit-id.h
for /F "tokens=3" %%i in (.git-commit-id.h) do SET OLD_GIT_COMMIT_ID=%%i
if "%GIT_COMMIT_ID%" equ "%OLD_GIT_COMMIT_ID%" goto _IdGood
echo #define SIM_GIT_COMMIT_ID %GIT_COMMIT_ID% >.git-commit-id.h
:_IdGood
:_done_id