A hand-maintained version says what somebody remembered to type. Pinning it to the repository means a binary always names the commit it came from, so a log from a test machine settles which changes are in it. stamp-version.ps1 runs as RP_L4's pre-build step and writes the generated RP_L4\rpl4build.h: #define RP412_VERSION "4.12.96" #define RP412_VERSION_LONG "4.12.96 (a1b2c3d)" The hash beside the number names the commit exactly; a trailing '+' means the tree had uncommitted changes to TRACKED files when it was built, which is the state a puzzling bug report usually comes from. Untracked files do not count - one scratch document in the tree would otherwise mark every build dirty and the marker would stop meaning anything. Generated rather than committed, and gitignored, because a hardcoded number cannot work: the commit that records "4.12.96" is itself commit 96, so the file is stale the moment it lands. The header is rewritten only when the stamp changes, so ordinary rebuilds do not drag RPL4.CPP through a recompile. pack-dist.ps1 reads that header instead of asking git again - a commit between building and packing would otherwise have the zip claiming a version the binary inside it does not report - and warns when the build it is packing came from a modified tree. The README banner, the zip name and the shipped CONTROLS.html all take the same number. Numbering stays ordered: 95 commits so far, so 4.12.95 follows 4.12.7 and every future build sorts after it. Only the "4.12" line is set by hand, at the top of the script. Two things the wiring turned up: Windows PowerShell turns a native command's stderr into ErrorRecords, so with $ErrorActionPreference = 'Stop' git's routine "LF will be replaced by CRLF" warning threw straight past the dirty check and stamped a modified tree as clean. Every git call now goes through cmd, which keeps stderr out of PowerShell's error stream entirely. The script ended on "git diff --quiet", which exits 1 to mean "there are changes" - as a pre-build step that failed the build on exactly the tree a developer builds in. It exits 0 explicitly now. Verified: deleting the header and building recreates it; a second build reports "(unchanged)" and leaves the timestamp alone; a build on a modified tree succeeds and stamps 4.12.95 (c1729e4+); and the packed game logs "Red Planet 4.12.95 (c1729e4+)" on its first line while README.txt and CONTROLS.html in the same package both read 4.12.95. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
195 lines
9.1 KiB
XML
195 lines
9.1 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<ItemGroup Label="ProjectConfigurations">
|
|
<ProjectConfiguration Include="Debug|Win32">
|
|
<Configuration>Debug</Configuration>
|
|
<Platform>Win32</Platform>
|
|
</ProjectConfiguration>
|
|
<ProjectConfiguration Include="Release|Win32">
|
|
<Configuration>Release</Configuration>
|
|
<Platform>Win32</Platform>
|
|
</ProjectConfiguration>
|
|
</ItemGroup>
|
|
<PropertyGroup Label="Globals">
|
|
<ProjectGuid>{01B740F7-5D4E-4E42-893F-CE018E5EE785}</ProjectGuid>
|
|
<RootNamespace>RP_L4</RootNamespace>
|
|
<Keyword>Win32Proj</Keyword>
|
|
</PropertyGroup>
|
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
<PropertyGroup Label="Configuration">
|
|
<ConfigurationType>Application</ConfigurationType>
|
|
<PlatformToolset>v143</PlatformToolset>
|
|
<CharacterSet>Unicode</CharacterSet>
|
|
<WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Configuration)'=='Debug'" Label="Configuration">
|
|
<UseDebugLibraries>true</UseDebugLibraries>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Configuration)'=='Release'" Label="Configuration">
|
|
<UseDebugLibraries>false</UseDebugLibraries>
|
|
<WholeProgramOptimization>true</WholeProgramOptimization>
|
|
</PropertyGroup>
|
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
<PropertyGroup>
|
|
<OutDir>$(SolutionDir)$(Configuration)\</OutDir>
|
|
<IntDir>$(Configuration)\</IntDir>
|
|
<TargetName>rpl4opt</TargetName>
|
|
<!-- Legacy DirectX SDK (June 2010) after the Windows SDK so modern headers/libs win;
|
|
only d3dx9 and dxerr actually come from it. -->
|
|
<IncludePath>$(IncludePath);$(DXSDK_DIR)Include;..\extern\steamworks_sdk_164\sdk\public</IncludePath>
|
|
<LibraryPath>$(LibraryPath);$(DXSDK_DIR)Lib\x86;..\extern\steamworks_sdk_164\sdk\redistributable_bin</LibraryPath>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Configuration)'=='Debug'">
|
|
<LinkIncremental>true</LinkIncremental>
|
|
</PropertyGroup>
|
|
<PropertyGroup Condition="'$(Configuration)'=='Release'">
|
|
<LinkIncremental>false</LinkIncremental>
|
|
</PropertyGroup>
|
|
<ItemDefinitionGroup>
|
|
<ClCompile>
|
|
<WarningLevel>Level3</WarningLevel>
|
|
<ConformanceMode>false</ConformanceMode>
|
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
|
<FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
|
|
<!-- The engine's on-disk and on-wire binary formats assume 1-byte packing. -->
|
|
<StructMemberAlignment>1Byte</StructMemberAlignment>
|
|
<!-- RP412_STEAM: Steam transport available; activated at runtime by RP412STEAM=1. -->
|
|
<PreprocessorDefinitions>WIN32;_WINDOWS;_CRT_SECURE_NO_DEPRECATE;WINDOWS_IGNORE_PACKING_MISMATCH;_SILENCE_STDEXT_HASH_DEPRECATION_WARNINGS;RP412_STEAM;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
<DisableSpecificWarnings>4996;4244;4267;4305;4018;4138;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
|
</ClCompile>
|
|
<Link>
|
|
<SubSystem>Windows</SubSystem>
|
|
<TargetMachine>MachineX86</TargetMachine>
|
|
<!-- Same source files are compiled into both Munga_l4.lib and this exe
|
|
(WTPresets.cpp et al.), as in the original projects. -->
|
|
<AdditionalOptions>/FORCE:MULTIPLE %(AdditionalOptions)</AdditionalOptions>
|
|
<AdditionalLibraryDirectories>..\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
<!-- legacy_stdio_definitions satisfies the June-2010 dxerr.lib on modern MSVC. -->
|
|
<AdditionalDependencies>ws2_32.lib;dinput8.lib;dxguid.lib;OpenAL32.lib;libsndfile-1.lib;d3d9.lib;legacy_stdio_definitions.lib;steam_api.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
<RandomizedBaseAddress>false</RandomizedBaseAddress>
|
|
<GenerateDebugInformation>true</GenerateDebugInformation>
|
|
</Link>
|
|
<!-- rpl4build.h is generated, not committed: the patch number is the
|
|
repository's commit count, so a hardcoded one would be stale the
|
|
moment it was committed. The script rewrites the header only when
|
|
the stamp actually changes, so this does not drag RPL4.CPP through
|
|
a recompile on every build. -->
|
|
<PreBuildEvent>
|
|
<Command>powershell -NoProfile -ExecutionPolicy Bypass -File "$(ProjectDir)..\stamp-version.ps1"</Command>
|
|
<Message>Stamping the build version from git</Message>
|
|
</PreBuildEvent>
|
|
</ItemDefinitionGroup>
|
|
<ItemDefinitionGroup Condition="'$(Configuration)'=='Debug'">
|
|
<ClCompile>
|
|
<Optimization>Disabled</Optimization>
|
|
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
|
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
|
<PreprocessorDefinitions>_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
</ClCompile>
|
|
<Link>
|
|
<AdditionalDependencies>d3dx9d.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
</Link>
|
|
</ItemDefinitionGroup>
|
|
<ItemDefinitionGroup Condition="'$(Configuration)'=='Release'">
|
|
<ClCompile>
|
|
<Optimization>Full</Optimization>
|
|
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
|
|
<IntrinsicFunctions>true</IntrinsicFunctions>
|
|
<FunctionLevelLinking>true</FunctionLevelLinking>
|
|
<EnableFiberSafeOptimizations>true</EnableFiberSafeOptimizations>
|
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
<PreprocessorDefinitions>NDEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
</ClCompile>
|
|
<Link>
|
|
<AdditionalDependencies>d3dx9.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
<EnableCOMDATFolding>true</EnableCOMDATFolding>
|
|
<OptimizeReferences>true</OptimizeReferences>
|
|
<LinkTimeCodeGeneration>UseLinkTimeCodeGeneration</LinkTimeCodeGeneration>
|
|
</Link>
|
|
</ItemDefinitionGroup>
|
|
<ItemGroup>
|
|
<ProjectReference Include="..\MUNGA_L4\Munga_L4.vcxproj">
|
|
<Project>{F988B198-A386-40DD-A50E-9A5CE17A92A5}</Project>
|
|
</ProjectReference>
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<ClCompile Include=".\RPL4.CPP" />
|
|
<ClCompile Include=".\RPL4APP.cpp" />
|
|
<ClCompile Include=".\RPL4CONSOLE.cpp" />
|
|
<ClCompile Include=".\RPL4FE.cpp" />
|
|
<ClCompile Include=".\RPL4LOBBY.cpp" />
|
|
<ClCompile Include=".\RPL4ARND.cpp" />
|
|
<ClCompile Include=".\RPL4GAUG.cpp" />
|
|
<ClCompile Include=".\RPL4GRND.cpp" />
|
|
<ClCompile Include=".\RPL4MODE.cpp" />
|
|
<ClCompile Include=".\RPL4MPPR.cpp" />
|
|
<ClCompile Include=".\RPL4MSSN.cpp" />
|
|
<ClCompile Include=".\RPL4PB.cpp" />
|
|
<ClCompile Include=".\RPL4TOOL.cpp" />
|
|
<ClCompile Include=".\RPL4VID.cpp" />
|
|
<ClCompile Include=".\WTPresets.cpp" />
|
|
<ClCompile Include="..\RP\BLOCKER.cpp" />
|
|
<ClCompile Include="..\RP\BOOSTER.cpp" />
|
|
<ClCompile Include="..\RP\CHUTE.cpp" />
|
|
<ClCompile Include="..\RP\CRUSHER.cpp" />
|
|
<ClCompile Include="..\RP\DEMOPACK.cpp" />
|
|
<ClCompile Include="..\RP\RIVET.cpp" />
|
|
<ClCompile Include="..\RP\RPCNSL.cpp" />
|
|
<ClCompile Include="..\RP\RPDIRECT.cpp" />
|
|
<ClCompile Include="..\RP\RPMSSN.cpp" />
|
|
<ClCompile Include="..\RP\RPPLAYER.cpp" />
|
|
<ClCompile Include="..\RP\RPREG.cpp" />
|
|
<ClCompile Include="..\RP\RPTOOL.cpp" />
|
|
<ClCompile Include="..\RP\RUNNER.cpp" />
|
|
<ClCompile Include="..\RP\SCORZONE.cpp" />
|
|
<ClCompile Include="..\RP\THRUSTER.cpp" />
|
|
<ClCompile Include="..\RP\VTV.cpp" />
|
|
<ClCompile Include="..\RP\VTVMPPR.cpp" />
|
|
<ClCompile Include="..\RP\VTVPWR.cpp" />
|
|
<ClCompile Include="..\RP\VTVSUB.cpp" />
|
|
<ClCompile Include="..\RP\WEAPSYS.cpp" />
|
|
</ItemGroup>
|
|
<ItemGroup>
|
|
<ClInclude Include=".\RPL4.h" />
|
|
<ClInclude Include=".\RPL4.HPP" />
|
|
<ClInclude Include=".\RPL4APP.h" />
|
|
<ClInclude Include=".\RPL4CONSOLE.h" />
|
|
<ClInclude Include=".\RPL4FE.h" />
|
|
<ClInclude Include=".\RPL4LOBBY.h" />
|
|
<ClInclude Include=".\RPL4ARND.h" />
|
|
<ClInclude Include=".\RPL4GAUG.h" />
|
|
<ClInclude Include=".\RPL4GRND.h" />
|
|
<ClInclude Include=".\RPL4MODE.h" />
|
|
<ClInclude Include=".\RPL4MPPR.h" />
|
|
<ClInclude Include=".\RPL4MSSN.h" />
|
|
<ClInclude Include=".\RPL4PB.h" />
|
|
<ClInclude Include=".\RPL4VER.h" />
|
|
<ClInclude Include=".\RPL4VID.h" />
|
|
<ClInclude Include=".\WTPresets.h" />
|
|
<ClInclude Include="..\RP\BLOCKER.h" />
|
|
<ClInclude Include="..\RP\BOOSTER.h" />
|
|
<ClInclude Include="..\RP\CHUTE.h" />
|
|
<ClInclude Include="..\RP\CRUSHER.h" />
|
|
<ClInclude Include="..\RP\DEMOPACK.h" />
|
|
<ClInclude Include="..\RP\RIVET.h" />
|
|
<ClInclude Include="..\RP\RP.h" />
|
|
<ClInclude Include="..\RP\RPCNSL.h" />
|
|
<ClInclude Include="..\RP\RPDIRECT.h" />
|
|
<ClInclude Include="..\RP\RPMSSN.h" />
|
|
<ClInclude Include="..\RP\RPPLAYER.h" />
|
|
<ClInclude Include="..\RP\RPREG.h" />
|
|
<ClInclude Include="..\RP\RPTOOL.h" />
|
|
<ClInclude Include="..\RP\RUNNER.h" />
|
|
<ClInclude Include="..\RP\SCORZONE.h" />
|
|
<ClInclude Include="..\RP\THRUSTER.h" />
|
|
<ClInclude Include="..\RP\VTV.h" />
|
|
<ClInclude Include="..\RP\VTVMPPR.h" />
|
|
<ClInclude Include="..\RP\VTVPWR.h" />
|
|
<ClInclude Include="..\RP\VTVSUB.h" />
|
|
<ClInclude Include="..\RP\WEAPSYS.h" />
|
|
</ItemGroup>
|
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
</Project>
|
|
|