From 52dd402884aaa9de5e522b2068bdd11c16700d64 Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Thu, 24 Nov 2022 16:58:32 -1000 Subject: [PATCH] Visual Studio Projects: Avoid modifying simh.sln while build_vstudio converts When converting to a newer Visual Studio version, a new solution file is created named simh-'vsversion'.sln so that we don't modify any files managed by git. The resulting converted solution file will be automatically used when build_vstudio.bat is subsequently run and that solution can be opened directly by the Visual Studio IDE. --- .gitignore | 1 + Visual Studio Projects/0ReadMe_Projects.txt | 7 +++++-- build_vstudio.bat | 23 ++++++++++++++------- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index d003919f..4f56db47 100644 --- a/.gitignore +++ b/.gitignore @@ -44,6 +44,7 @@ ipch/ Visual Studio Projects/* !Visual Studio Projects/*.vcproj !Visual Studio Projects/*.sln +Visual Studio Projects/*-*.sln !Visual Studio Projects/0ReadMe_Projects.txt diff --git a/Visual Studio Projects/0ReadMe_Projects.txt b/Visual Studio Projects/0ReadMe_Projects.txt index cfed9b00..148bdfc8 100644 --- a/Visual Studio Projects/0ReadMe_Projects.txt +++ b/Visual Studio Projects/0ReadMe_Projects.txt @@ -1,4 +1,4 @@ -This dirctory contains a set of Visual Studio 2008 build projects for the +This directory contains a set of Visual Studio 2008 build projects for the current simh code base. When used (with Visual Studio Express 2008 or or a later Visual Studio version) it populates a directory tree under the BIN directory of the Simh distribution for temporary build files and @@ -79,7 +79,10 @@ conversion process. If you have a version of Visual Studio installed and want to build all the simulators from a command prompt, the file build_vstudio.bat in the root -of the simh source tree will do that without any furthur interaction. +of the simh source tree will do that without any furthur interaction. In +fact, the best way to convert the VS2008 solution and project files is by +using build_vstudio.bat since it will create a new solution file named +Simh-2022.sln that can then be used directly by the Visual Studio IDE. Almost all newer Visual Studio versions after VS2008 will build executables that only run on the system that built it or one running the same OS. diff --git a/build_vstudio.bat b/build_vstudio.bat index 4bd5d817..d36ed0f4 100644 --- a/build_vstudio.bat +++ b/build_vstudio.bat @@ -1,4 +1,4 @@ -@echo off +@echo on :: Rebuild all of SIMH simulators using Visual Studio :: :: If this procedure is not invoked from a Developer command prompt @@ -33,7 +33,7 @@ set _BUILD_CONFIG=Release set _BUILD_PROJECTS= set _REBUILD_PROJECTS= -set _BUILD_PROJECT_DIR=%~dp0\Visual Studio Projects\ +set _BUILD_PROJECT_DIR=%~dp0Visual Studio Projects\ :_CheckArg if "%1" == "" goto _DoneArgs if /i "%1" == "Debug" set _BUILD_CONFIG=Debug& shift & goto _CheckArg @@ -166,11 +166,14 @@ exit /B 0 :GotVC set _BUILD_PARALLEL=8 if %_BUILD_PARALLEL% GTR %NUMBER_OF_PROCESSORS% set _BUILD_PARALLEL=%NUMBER_OF_PROCESSORS% +set _SLN_FILE=%_BUILD_PROJECT_DIR%Simh.sln +if exist "%_BUILD_PROJECT_DIR%Simh-%_VC_VER%.sln" set _SLN_FILE=%_BUILD_PROJECT_DIR%Simh-%_VC_VER%.sln SET _X_SLN_VERSION= -for /F "usebackq tokens=8" %%a in (`findstr /C:"Microsoft Visual Studio Solution File, Format Version" "%_BUILD_PROJECT_DIR%Simh.sln"`) do SET _X_SLN_VERSION=%%a +echo _SLN_FILE=%_SLN_FILE% +for /F "usebackq tokens=8" %%a in (`findstr /C:"Microsoft Visual Studio Solution File, Format Version" "%_SLN_FILE%"`) do SET _X_SLN_VERSION=%%a if not "%_VC_VER%" == "9" goto _DoMSBuild -if "%_BUILD_PROJECTS%" == "" vcbuild /nologo /M%_BUILD_PARALLEL% /useenv /rebuild "%_BUILD_PROJECT_DIR%Simh.sln" "%_BUILD_CONFIG%|Win32" & goto :EOF +if "%_BUILD_PROJECTS%" == "" vcbuild /nologo /M%_BUILD_PARALLEL% /useenv /rebuild "%_SLN_FILE%" "%_BUILD_CONFIG%|Win32" & goto :EOF set _BUILD_PROJECTS=%_BUILD_PROJECTS:~1% :_NextProject @@ -183,19 +186,23 @@ vcbuild /nologo /useenv /rebuild "%_BUILD_PROJECT_DIR%%_BUILD_PROJECT%.vcproj" " goto _NextProject :_DoMSBuild -if "%_X_SLN_VERSION%" == "10.00" echo Converting the VS2008 projects to VS%_VC_VER%, this will take several (3-5) minutes & DevEnv /Upgrade "%_BUILD_PROJECT_DIR%Simh.sln" +if "%_X_SLN_VERSION%" == "10.00" set _NEW_SLN_FILE=%_BUILD_PROJECT_DIR%Simh-%_VC_VER%.sln +if "%_X_SLN_VERSION%" == "10.00" copy /y "%_SLN_FILE%" "%_NEW_SLN_FILE%" >NUL & echo Converting the VS2008 projects to VS%_VC_VER%, this will take several (3-5) minutes & DevEnv /Upgrade "%_NEW_SLN_FILE%" & set _SLN_FILE=%_NEW_SLN_FILE% +set _NEW_SLN_FILE= if not "%_VC_VER%" == "2022" goto _RunBuild if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v150\Platforms\x64\PlatformToolsets\v141_xp" goto _DoXPConvert if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Professional\MSBuild\Microsoft\VC\v150\Platforms\x64\PlatformToolsets\v141_xp" goto _DoXPConvert if exist "%ProgramFiles%\Microsoft Visual Studio\2022\Community\MSBuild\Microsoft\VC\v150\Platforms\x64\PlatformToolsets\v141_xp" goto _DoXPConvert :_DoXPConvert -for /F "usebackq tokens=1" %%a in (`findstr /C:"10.0" "%_BUILD_PROJECT_DIR%BuildROMs.vcxproj"`) do SET _X_PROJS_CONVERTED=%%a +set _X_PROJS_CONVERTED= +for /F "usebackq tokens=1" %%a in (`findstr /C:"10.0" "%_BUILD_PROJECT_DIR%BuildROMs.vcxproj"`) do set _X_PROJS_CONVERTED=%%a if not "%_X_PROJS_CONVERTED%" == "" goto _RunBuild echo Converting the VS2022 projects to generate XP compatible binaries Powershell -NoLogo -File "%~dp0\Visual Studio Projects\ConvertToXPProject.ps1" "%~dp0\Visual Studio Projects\*.vcxproj" set _X_PROJS_CONVERTED= :_RunBuild -if "%_BUILD_PROJECTS%" == "" MSBuild /nologo "%_BUILD_PROJECT_DIR%Simh.sln" /maxCpuCount:%_BUILD_PARALLEL% /Target:Rebuild /Property:Configuration=%_BUILD_CONFIG% /Property:Platform=Win32 /fileLogger "/fileLoggerParameters:LogFile=%_BUILD_PROJECT_DIR%Build-VS%_VC_VER%.log" & goto :EOF +if "%_BUILD_PROJECTS%" == "" MSBuild /nologo "%_SLN_FILE%" /maxCpuCount:%_BUILD_PARALLEL% /Target:Rebuild /Property:Configuration=%_BUILD_CONFIG% /Property:Platform=Win32 /fileLogger "/fileLoggerParameters:LogFile=%_BUILD_PROJECT_DIR%Build-VS%_VC_VER%.log" & goto :EOF set _BUILD_PROJECTS=%_BUILD_PROJECTS:~1% set _REBUILD_PROJECTS=%_REBUILD_PROJECTS:~1% -MSBuild /nologo "%_BUILD_PROJECT_DIR%Simh.sln" /maxCpuCount:%_BUILD_PARALLEL% /Target:%_REBUILD_PROJECTS% /Property:Configuration=%_BUILD_CONFIG% /Property:Platform=Win32 "/fileLoggerParameters:LogFile=%_BUILD_PROJECT_DIR%Build-VS%_VC_VER%.log" & goto :EOF +MSBuild /nologo "%_SLN_FILE%" /maxCpuCount:%_BUILD_PARALLEL% /Target:%_REBUILD_PROJECTS% /Property:Configuration=%_BUILD_CONFIG% /Property:Platform=Win32 "/fileLoggerParameters:LogFile=%_BUILD_PROJECT_DIR%Build-VS%_VC_VER%.log" & goto :EOF +set _SLN_FILE=