mirror of
https://github.com/simh/simh.git
synced 2026-01-26 04:01:38 +00:00
Visual Studio Projects: Migration to normalized windows-build support
- All projects use identical include directories, library definitions and library directories. - Remove attempts to add XP support to projects that were converted to .vcxproj for post VC2008 versions of Visual Studio. - Require that git be available when building within a git repository working directory.
This commit is contained in:
@@ -12,8 +12,8 @@ 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 and
|
||||
rem optionally SDL and LIBPCRE.
|
||||
rem These libraries currently include winpcap, pthreads, SDL
|
||||
rem and LIBPCRE.
|
||||
rem LIBSDL To validate that the required dependent SDL libraries and include
|
||||
rem files are available in the directory ..\..\windows-build\
|
||||
rem LIBPCRE To validate that the required dependent PCRE libraries and include
|
||||
@@ -22,81 +22,21 @@ 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 git repository, then assuring that git hooks which manage making
|
||||
rem the git commit hash available during builds are properly installed
|
||||
rem in the repository hooks directory. When the githooks are installed
|
||||
rem the current commit id is generated if git.exe is available in the
|
||||
rem current path.
|
||||
rem current path. If it isn't, then report that fact and suggest how
|
||||
rem to make sure that it is.
|
||||
rem - performing the activities which make the git repository commit id
|
||||
rem available in an include file during compiles.
|
||||
rem - Converting Visual Studio Projects to a form which will produce
|
||||
rem binaries which run on Windows XP if the current build environment
|
||||
rem supports it and the correct components are installed.
|
||||
rem This activity is triggered by the first argument being the name
|
||||
rem of a the current Visual Studio project file. This argument MUST
|
||||
rem only be provided on a single project which invokes this procedure
|
||||
rem AND that project should be one which all other projects in a
|
||||
rem solution are dependent on.
|
||||
rem
|
||||
rem
|
||||
|
||||
if "%~x1" == ".vcproj" goto _done_xp_check
|
||||
if not "%~x1" == ".vcxproj" goto _done_project
|
||||
if exist PlatformToolset.fix goto _project_cleanup
|
||||
findstr PlatformToolset %1 >NUL
|
||||
if ERRORLEVEL 1 goto _next_arg
|
||||
findstr PlatformToolset %1 | findstr _xp >NUL
|
||||
if not ERRORLEVEL 1 goto _done_xp_check
|
||||
echo warning: The %~n1.exe binary can't run on windows XP.
|
||||
set _XP_Support_Available=
|
||||
for /r "%PROGRAMDATA%" %%z in (packages\XPSupport\Win_XPSupport.msi) do if exist "%%z" set _XP_Support_Available=1
|
||||
if "" == "%_XP_Support_Available%" goto _done_xp_check
|
||||
if exist PlatformToolset.fix exit /b 1
|
||||
echo. >>PlatformToolset.fix
|
||||
if ERRORLEVEL 1 exit /B 1
|
||||
echo warning: Adding Windows XP suppport to all project files at %TIME%
|
||||
|
||||
rem Everything implicitly requires BUILD to also be set to have
|
||||
rem any meaning, it always gets set.
|
||||
set _X_BUILD=BUILD
|
||||
call :FindVCVersion _VC_VER
|
||||
echo Set objFSO = CreateObject("Scripting.FileSystemObject") >>%1.fix.vbs
|
||||
echo Set objFile = objFSO.OpenTextFile(Wscript.Arguments(0), 1) >>%1.fix.vbs
|
||||
echo. >>%1.fix.vbs
|
||||
echo strText = objFile.ReadAll >>%1.fix.vbs
|
||||
echo objFile.Close >>%1.fix.vbs
|
||||
echo strText = Replace(strText, "</PlatformToolset>", "_xp</PlatformToolset>") >>%1.fix.vbs
|
||||
echo. >>%1.fix.vbs
|
||||
if %_VC_VER% GEQ 14 echo strText = Replace(strText, _>>%1.fix.vbs
|
||||
if %_VC_VER% GEQ 14 echo "__CLEANUP_C</PreprocessorDefinitions>", _>>%1.fix.vbs
|
||||
if %_VC_VER% GEQ 14 echo "__CLEANUP_C;_USING_V110_SDK71_</PreprocessorDefinitions>") _>>%1.fix.vbs
|
||||
if %_VC_VER% GEQ 14 echo. >>%1.fix.vbs
|
||||
echo Set objFile = objFSO.OpenTextFile(Wscript.Arguments(0), 2) >>%1.fix.vbs
|
||||
echo objFile.Write strText >>%1.fix.vbs
|
||||
echo objFile.Close >>%1.fix.vbs
|
||||
|
||||
call :_Fix_PlatformToolset %1 %1
|
||||
for %%f in (*.vcxproj) do call :_Fix_PlatformToolset %1 %%f
|
||||
call :_GitHooks
|
||||
del %1.fix.vbs
|
||||
rem wait a bit here to allow a parallel build of the to complete additional projects
|
||||
echo Error: Reload the changed projects and start the build again
|
||||
exit /B 1
|
||||
:_Fix_PlatformToolset
|
||||
findstr PlatformToolset %2 >NUL
|
||||
if ERRORLEVEL 1 exit /B 0
|
||||
findstr PlatformToolset %2 | findstr _xp >NUL
|
||||
if not ERRORLEVEL 1 exit /B 0
|
||||
echo Adding XP support to project %2
|
||||
cscript %1.fix.vbs %2 > NUL 2>&1
|
||||
exit /B 0
|
||||
:_done_xp_check
|
||||
shift
|
||||
goto _done_project
|
||||
:_project_cleanup
|
||||
shift
|
||||
del PlatformToolset.fix
|
||||
:_done_project
|
||||
if exist PlatformToolset.fix echo error: Reload any changed projects and rebuild again,
|
||||
if exist PlatformToolset.fix exit /b 1
|
||||
|
||||
|
||||
:_next_arg
|
||||
if "%1" == "" goto _done_args
|
||||
@@ -115,11 +55,6 @@ if not "%_arg%" == "" set _X_%_arg%=%_arg%
|
||||
shift
|
||||
goto _next_arg
|
||||
:_done_args
|
||||
rem some arguments implicitly require BUILD to also be set to have
|
||||
rem any meaning. These are LIBSDL, LIBPCRE and FINDFONT
|
||||
if not "%_X_FINDFONT%" == "" set _X_BUILD=BUILD
|
||||
if not "%_X_LIBSDL%" == "" set _X_BUILD=BUILD
|
||||
if not "%_X_LIBPCRE%" == "" set _X_BUILD=BUILD
|
||||
|
||||
|
||||
:_do_rom
|
||||
@@ -130,10 +65,11 @@ if exist BIN\NT\Win32-Debug\BuildROMs.exe SET _BLD=BIN\NT\Win32-Debug\BuildROMs.
|
||||
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 ** Project dependencies are not correct. **
|
||||
if "%_BLD%" == "" echo ** This project should depend on BuildROMs. **
|
||||
if "%_BLD%" == "" echo ************************************************
|
||||
if "%_BLD%" == "" echo ************************************************
|
||||
if "%_BLD%" == "" echo error: Review the Output Tab for more details.
|
||||
if "%_BLD%" == "" exit 1
|
||||
%_BLD%
|
||||
if not errorlevel 1 goto _done_rom
|
||||
@@ -157,26 +93,25 @@ ren ..\..\windows-build-windows-build windows-build
|
||||
if errorlevel 1 goto _notice3
|
||||
if exist ../../windows-build-windows-build goto _notice3
|
||||
:_check_files
|
||||
if not exist ../../windows-build/winpcap/Wpdpack/Include/pcap.h goto _notice1
|
||||
if not exist ../../windows-build/pthreads/pthread.h goto _notice1
|
||||
findstr "/c:_MSC_VER >= 1900" ..\..\windows-build\pthreads\pthread.h >NUL
|
||||
if ERRORLEVEL 1 goto _notice2
|
||||
if "%_X_LIBSDL%" == "" goto _done_libsdl
|
||||
if not exist ../../windows-build/libSDL/SDL2-2.0.5/include/SDL.h goto _notice2
|
||||
if not exist "..\..\windows-build\libpng-1.6.18\projects\vstudio\Release Library\*" goto _notice2
|
||||
if not exist "../../windows-build/libSDL/Microsoft DirectX SDK (June 2010)/Lib/x86/dxguid.lib" goto _notice2
|
||||
findstr "/c:LIBSDL_FTOL2_SSE" ..\..\windows-build\Windows-Build_Versions.txt >NUL
|
||||
if ERRORLEVEL 1 goto _notice2
|
||||
findstr "/c:LIBSDL_ALLMUL" ..\..\windows-build\Windows-Build_Versions.txt >NUL
|
||||
if ERRORLEVEL 1 goto _notice2
|
||||
findstr "/c:LIBSDL_ALLSHR" ..\..\windows-build\Windows-Build_Versions.txt >NUL
|
||||
if ERRORLEVEL 1 goto _notice2
|
||||
call :FindVCVersion _VC_VER
|
||||
if not exist ../../windows-build goto _notice1
|
||||
if not exist ../../windows-build/lib goto _notice2
|
||||
if not exist ../../windows-build/lib/VisualCVersionSupport.txt goto _find_vc_support
|
||||
|
||||
set _X_VC_VER=
|
||||
for /F "usebackq tokens=2*" %%i in (`findstr /C:"_VC_VER=%_VC_VER% " ..\..\windows-build\lib\VisualCVersionSupport.txt`) do SET _X_VC_VER=%%i %%j
|
||||
if "%_X_VC_VER%" neq "" echo Library support for %_X_VC_VER% is available
|
||||
if "%_X_VC_VER%" neq "" goto _done_libsdl
|
||||
:_find_vc_support
|
||||
set _X_VC_VER_DIR=
|
||||
for /d %%i in ("../../windows-build/lib/*") do call :CheckDirectoryVCSupport _X_VC_VER_DIR %%i "../../windows-build/lib/"
|
||||
if "%_X_VC_VER_DIR%" equ "" goto _notice4
|
||||
:_make_vc_support_active
|
||||
for /F "usebackq tokens=2*" %%i in (`findstr /C:"_VC_VER=%_VC_VER% " "%_X_VC_VER_DIR%\VisualCVersionSupport.txt"`) do SET _X_VC_VER=%%i %%j
|
||||
echo Enabling Library support for %_X_VC_VER%
|
||||
call "%_X_VC_VER_DIR%\Install-Library-Support.cmd"
|
||||
:_done_libsdl
|
||||
if "%_X_LIBPCRE%" == "" goto _done_libpcre
|
||||
if not exist ../../windows-build/PCRE/include/pcreposix.h goto _notice2
|
||||
:_done_libpcre
|
||||
if "%_X_FINDFONT%" == "" goto _done_findfont
|
||||
if not exist ../../windows-build/libSDL/SDL2_ttf-2.0.12/SDL_ttf.h goto _notice2
|
||||
if "%_X_FontName%" == "" goto _done_findfont
|
||||
echo. >%_X_FontIncludeName%.temp
|
||||
set FONTFILE=%windir%\Fonts\%_X_FontName%
|
||||
@@ -238,6 +173,26 @@ echo *****************************************************
|
||||
echo *****************************************************
|
||||
set _exit_reason=Can't rename ../../windows-build-windows-build to ../../windows-build
|
||||
goto _ProjectInfo
|
||||
:_notice4
|
||||
echo *********************************
|
||||
echo *********************************
|
||||
echo ** Visual Studio Version: %_VC_VER% **
|
||||
echo ** Visual Studio Version: %_VC_VER% **
|
||||
echo ** Visual Studio Version: %_VC_VER% **
|
||||
echo ** Visual Studio Version: %_VC_VER% **
|
||||
echo *****************************************************
|
||||
echo *****************************************************
|
||||
echo ** Windows Build support for your Microsoft **
|
||||
echo ** Visual Studio version is not available yet. **
|
||||
echo ** Please create a new issue at: **
|
||||
echo ** https://github.com/simh/simh/issues describing **
|
||||
echo ** what you've done and support should be added **
|
||||
echo ** soon. Otherwise, you can install an earlier **
|
||||
echo ** version of Microsoft Visual Studio and use **
|
||||
echo ** that. **
|
||||
echo *****************************************************
|
||||
echo *****************************************************
|
||||
goto _ProjectInfo
|
||||
:_ProjectInfo
|
||||
type 0ReadMe_Projects.txt
|
||||
echo error: %_exit_reason%
|
||||
@@ -247,6 +202,32 @@ exit 1
|
||||
|
||||
:_GitHooks
|
||||
if not exist ..\.git goto _done_hooks
|
||||
call :FindGit _GIT_GIT
|
||||
if "%_GIT_GIT%" neq "" goto _check_hooks
|
||||
echo ** ERROR ** ERROR ** ERROR ** ERROR ** ERROR ** ERROR **
|
||||
echo ** ERROR ** ERROR ** ERROR ** ERROR ** ERROR ** ERROR **
|
||||
echo ** **
|
||||
echo ** Your local simh code is in a git repository, **
|
||||
echo ** however, the git program executable can not be **
|
||||
echo ** readily found on your system. **
|
||||
echo ** **
|
||||
echo ** You should download and install git from: **
|
||||
echo ** **
|
||||
echo ** https://git-scm.com/download/win **
|
||||
echo ** **
|
||||
echo ** while installing git for windows, be sure to **
|
||||
echo ** select the option to "Use Git from the Windows **
|
||||
echo ** Command Prompt" **
|
||||
echo ** **
|
||||
echo ** You should logout and login again after initally **
|
||||
echo "" installing git to be sure that the installation **
|
||||
echo ** location is properly visible in your search path.**
|
||||
echo ** **
|
||||
echo ** ERROR ** ERROR ** ERROR ** ERROR ** ERROR ** ERROR **
|
||||
echo ** ERROR ** ERROR ** ERROR ** ERROR ** ERROR ** ERROR **
|
||||
echo error: Review the Output Tab for more details.
|
||||
exit 1
|
||||
:_check_hooks
|
||||
if not exist ..\.git\hooks\post-commit goto _initial_hooks
|
||||
fc /b ..\.git\hooks\post-commit git-hooks\post-commit >nul
|
||||
if %ERRORLEVEL% equ 0 goto _done_hooks
|
||||
@@ -264,22 +245,9 @@ echo *****************************************************
|
||||
echo *****************************************************
|
||||
:_install_hooks
|
||||
copy /y git-hooks\post* ..\.git\hooks\
|
||||
call :WhereInPath git.exe > NUL 2>&1
|
||||
if %ERRORLEVEL% equ 0 goto _do_hooks
|
||||
echo ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING **
|
||||
echo ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING **
|
||||
echo ** **
|
||||
echo ** Git Commit id invalid. You must perform a **
|
||||
echo ** git checkout on the current branch to solve **
|
||||
echo ** this problem. **
|
||||
echo ** **
|
||||
echo ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING **
|
||||
echo ** WARNING ** WARNING ** WARNING ** WARNING ** WARNING **
|
||||
echo error: Review the Output Tab for more details.
|
||||
exit 1
|
||||
:_do_hooks
|
||||
pushd ..
|
||||
git log -1 --pretty="SIM_GIT_COMMIT_ID %%H%%nSIM_GIT_COMMIT_TIME %%aI" >.git-commit-id
|
||||
"%_GIT_GIT%" log -1 --pretty="SIM_GIT_COMMIT_ID %%H%%nSIM_GIT_COMMIT_TIME %%aI" >.git-commit-id
|
||||
popd
|
||||
:_done_hooks
|
||||
|
||||
@@ -317,9 +285,24 @@ if "%~$PATH:1" EQU "" exit /B 1
|
||||
set %2=%~$PATH:1
|
||||
exit /B 0
|
||||
|
||||
:FindGit
|
||||
set _GIT_TMP=%1
|
||||
call :WhichInPath git.exe _GIT_TMP_
|
||||
if "%_GIT_TMP_%" neq "" goto GitFound
|
||||
call :WhichInPath cl.exe _VC_CL_
|
||||
for /f "tokens=1-4 delims=\" %%a in ("%_VC_CL_%") do set _GIT_BASE_="%%a\%%b\%%c\%%d\"
|
||||
for /r %_GIT_BASE_% %%a in (git.exe) do if exist "%%a" set _GIT_TMP_=%%a
|
||||
:GitFound
|
||||
set %_GIT_TMP%=%_GIT_TMP_%
|
||||
set _VC_CL_=
|
||||
set _GIT_BASE_=
|
||||
set _GIT_TMP_=
|
||||
set _GIT_TMP=
|
||||
exit /B 0
|
||||
|
||||
:FindVCVersion
|
||||
call :WhichInPath cl.exe _VC_CL_
|
||||
for /f "tokens=2-8 delims=\" %%a in ("%_VC_CL_%") do call :VCCheck _VC_VER_NUM_ "%%a" "%%b" "%%c" "%%d" "%%e" "%%f" "%%g"
|
||||
for /f "tokens=3-9 delims=\" %%a in ("%_VC_CL_%") do call :VCCheck _VC_VER_NUM_ "%%a" "%%b" "%%c" "%%d" "%%e" "%%f" "%%g"
|
||||
for /f "delims=." %%a in ("%_VC_VER_NUM_%") do set %1=%%a
|
||||
set _VC_CL=
|
||||
exit /B 0
|
||||
@@ -331,8 +314,38 @@ shift
|
||||
set _VC_TMP_=%~1
|
||||
if "%_VC_TMP_%" equ "" goto _VCCheck_Done
|
||||
if "%_VC_TMP_:~0,24%" EQU "Microsoft Visual Studio " set %_VC_TMP%=%_VC_TMP_:Microsoft Visual Studio =%
|
||||
call :IsNumeric _VC_NUM_ %_VC_TMP_%
|
||||
if "%_VC_NUM_%" neq "" set %_VC_TMP%=%~1
|
||||
if "%_VC_NUM_%" neq "" goto _VCCheck_Done
|
||||
goto _VCCheck_Next
|
||||
:_VCCheck_Done
|
||||
set _VC_TMP_=
|
||||
set _VC_TMP=
|
||||
set _VC_NUM_=
|
||||
exit /B 0
|
||||
|
||||
:CheckDirectoryVCSupport
|
||||
set _VC_Check_Path=%~3%~2/
|
||||
set _VC_Check_Path=%_VC_Check_Path:/=\%
|
||||
if not exist "%_VC_Check_Path%VisualCVersionSupport.txt" exit /B 1
|
||||
for /F "usebackq tokens=2*" %%k in (`findstr /C:"_VC_VER=%_VC_VER% " "%_VC_Check_Path%VisualCVersionSupport.txt"`) do set %1=%_VC_Check_Path%
|
||||
exit /B 0
|
||||
|
||||
:IsNumeric
|
||||
set _Numeric_TMP_=%~1
|
||||
set _Numeric_Test_=%2
|
||||
set _Numeric_Test_=%_Numeric_Test_:~0,1%
|
||||
set %_Numeric_TMP_%=
|
||||
if "%_Numeric_Test_%"=="0" set %_Numeric_TMP_%=1
|
||||
if "%_Numeric_Test_%"=="1" set %_Numeric_TMP_%=1
|
||||
if "%_Numeric_Test_%"=="2" set %_Numeric_TMP_%=1
|
||||
if "%_Numeric_Test_%"=="3" set %_Numeric_TMP_%=1
|
||||
if "%_Numeric_Test_%"=="4" set %_Numeric_TMP_%=1
|
||||
if "%_Numeric_Test_%"=="5" set %_Numeric_TMP_%=1
|
||||
if "%_Numeric_Test_%"=="6" set %_Numeric_TMP_%=1
|
||||
if "%_Numeric_Test_%"=="7" set %_Numeric_TMP_%=1
|
||||
if "%_Numeric_Test_%"=="8" set %_Numeric_TMP_%=1
|
||||
if "%_Numeric_Test_%"=="9" set %_Numeric_TMP_%=1
|
||||
set _Numeric_TMP_=
|
||||
set _Numeric_Test_=
|
||||
exit /B 0
|
||||
|
||||
Reference in New Issue
Block a user