summaryrefslogtreecommitdiff
path: root/src/SMAPI.ModBuildConfig/build/smapi.targets
diff options
context:
space:
mode:
authorJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2019-11-24 13:49:30 -0500
committerJesse Plamondon-Willard <Pathoschild@users.noreply.github.com>2019-11-24 13:49:30 -0500
commita3f21685049cabf2d824c8060dc0b1de47e9449e (patch)
treead9add30e9da2a50e0ea0245f1546b7378f0d282 /src/SMAPI.ModBuildConfig/build/smapi.targets
parent6521df7b131924835eb797251c1e956fae0d6e13 (diff)
parent277bf082675b98b95bf6184fe3c7a45b969c7ac2 (diff)
downloadSMAPI-a3f21685049cabf2d824c8060dc0b1de47e9449e.tar.gz
SMAPI-a3f21685049cabf2d824c8060dc0b1de47e9449e.tar.bz2
SMAPI-a3f21685049cabf2d824c8060dc0b1de47e9449e.zip
Merge branch 'develop' into stable
Diffstat (limited to 'src/SMAPI.ModBuildConfig/build/smapi.targets')
-rw-r--r--src/SMAPI.ModBuildConfig/build/smapi.targets234
1 files changed, 86 insertions, 148 deletions
diff --git a/src/SMAPI.ModBuildConfig/build/smapi.targets b/src/SMAPI.ModBuildConfig/build/smapi.targets
index e6c3fa57..5ca9f032 100644
--- a/src/SMAPI.ModBuildConfig/build/smapi.targets
+++ b/src/SMAPI.ModBuildConfig/build/smapi.targets
@@ -1,175 +1,113 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <!--*********************************************
- ** Import build tasks
- **********************************************-->
- <UsingTask TaskName="DeployModTask" AssemblyFile="StardewModdingAPI.ModBuildConfig.dll" />
+
+ <Import Project="find-game-folder.targets" />
+ <UsingTask TaskName="DeployModTask" AssemblyFile="SMAPI.ModBuildConfig.dll" />
+
<!--*********************************************
- ** Find the basic mod metadata
+ ** Set build options
**********************************************-->
- <!-- import developer's custom settings (if any) -->
- <Import Condition="$(OS) != 'Windows_NT' AND Exists('$(HOME)\stardewvalley.targets')" Project="$(HOME)\stardewvalley.targets" />
- <Import Condition="$(OS) == 'Windows_NT' AND Exists('$(USERPROFILE)\stardewvalley.targets')" Project="$(USERPROFILE)\stardewvalley.targets" />
-
- <!-- set setting defaults -->
<PropertyGroup>
- <!-- map legacy settings -->
- <ModFolderName Condition="'$(ModFolderName)' == '' AND '$(DeployModFolderName)' != ''">$(DeployModFolderName)</ModFolderName>
- <ModZipPath Condition="'$(ModZipPath)' == '' AND '$(DeployModZipTo)' != ''">$(DeployModZipTo)</ModZipPath>
+ <!-- include PDB file by default to enable line numbers in stack traces -->
+ <DebugType>pdbonly</DebugType>
+ <DebugSymbols>true</DebugSymbols>
- <!-- set default settings -->
+ <!-- recognise XNA Framework DLLs in the GAC (only affects mods using new csproj format) -->
+ <AssemblySearchPaths>$(AssemblySearchPaths);{GAC}</AssemblySearchPaths>
+
+ <!-- set default package options -->
<ModFolderName Condition="'$(ModFolderName)' == ''">$(MSBuildProjectName)</ModFolderName>
<ModZipPath Condition="'$(ModZipPath)' == ''">$(TargetDir)</ModZipPath>
- <EnableModDeploy Condition="'$(EnableModDeploy)' == ''">True</EnableModDeploy>
- <EnableModZip Condition="'$(EnableModZip)' == ''">True</EnableModZip>
- <CopyModReferencesToBuildOutput Condition="'$(CopyModReferencesToBuildOutput)' == ''">False</CopyModReferencesToBuildOutput>
+ <EnableModDeploy Condition="'$(EnableModDeploy)' == ''">true</EnableModDeploy>
+ <EnableModZip Condition="'$(EnableModZip)' == ''">true</EnableModZip>
+ <EnableHarmony Condition="'$(EnableModZip)' == ''">false</EnableHarmony>
+ <EnableGameDebugging Condition="$(EnableGameDebugging) == ''">true</EnableGameDebugging>
+ <CopyModReferencesToBuildOutput Condition="'$(CopyModReferencesToBuildOutput)' == '' OR ('$(CopyModReferencesToBuildOutput)' != 'true' AND '$(CopyModReferencesToBuildOutput)' != 'false')">false</CopyModReferencesToBuildOutput>
</PropertyGroup>
- <!-- find platform + game path -->
- <Choose>
- <When Condition="$(OS) == 'Unix' OR $(OS) == 'OSX'">
- <PropertyGroup>
- <!-- Linux -->
- <GamePath Condition="!Exists('$(GamePath)')">$(HOME)/GOG Games/Stardew Valley/game</GamePath>
- <GamePath Condition="!Exists('$(GamePath)')">$(HOME)/.steam/steam/steamapps/common/Stardew Valley</GamePath>
- <GamePath Condition="!Exists('$(GamePath)')">$(HOME)/.local/share/Steam/steamapps/common/Stardew Valley</GamePath>
-
- <!-- Mac (may be 'Unix' or 'OSX') -->
- <GamePath Condition="!Exists('$(GamePath)')">/Applications/Stardew Valley.app/Contents/MacOS</GamePath>
- <GamePath Condition="!Exists('$(GamePath)')">$(HOME)/Library/Application Support/Steam/steamapps/common/Stardew Valley/Contents/MacOS</GamePath>
- </PropertyGroup>
- </When>
- <When Condition="$(OS) == 'Windows_NT'">
- <PropertyGroup>
- <!-- default paths -->
- <GamePath Condition="!Exists('$(GamePath)')">C:\Program Files\GalaxyClient\Games\Stardew Valley</GamePath>
- <GamePath Condition="!Exists('$(GamePath)')">C:\Program Files\GOG Galaxy\Games\Stardew Valley</GamePath>
- <GamePath Condition="!Exists('$(GamePath)')">C:\Program Files\Steam\steamapps\common\Stardew Valley</GamePath>
-
- <GamePath Condition="!Exists('$(GamePath)')">C:\Program Files (x86)\GalaxyClient\Games\Stardew Valley</GamePath>
- <GamePath Condition="!Exists('$(GamePath)')">C:\Program Files (x86)\GOG Galaxy\Games\Stardew Valley</GamePath>
- <GamePath Condition="!Exists('$(GamePath)')">C:\Program Files (x86)\Steam\steamapps\common\Stardew Valley</GamePath>
-
- <!-- registry paths -->
- <GamePath Condition="!Exists('$(GamePath)')">$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\GOG.com\Games\1453375253', 'PATH', null, RegistryView.Registry32))</GamePath>
- <GamePath Condition="!Exists('$(GamePath)')">$([MSBuild]::GetRegistryValueFromView('HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Steam App 413150', 'InstallLocation', null, RegistryView.Registry64, RegistryView.Registry32))</GamePath>
-
- <!-- derive from Steam library path -->
- <_SteamLibraryPath>$([MSBuild]::GetRegistryValueFromView('HKEY_CURRENT_USER\SOFTWARE\Valve\Steam', 'SteamPath', null, RegistryView.Registry32))</_SteamLibraryPath>
- <GamePath Condition="!Exists('$(GamePath)') AND '$(_SteamLibraryPath)' != ''">$(_SteamLibraryPath)\steamapps\common\Stardew Valley</GamePath>
- </PropertyGroup>
- </When>
- </Choose>
+ <PropertyGroup Condition="$(OS) == 'Windows_NT' AND $(EnableGameDebugging) == 'true'">
+ <!-- enable game debugging -->
+ <StartAction>Program</StartAction>
+ <StartProgram>$(GamePath)\StardewModdingAPI.exe</StartProgram>
+ <StartWorkingDirectory>$(GamePath)</StartWorkingDirectory>
+ </PropertyGroup>
<!--*********************************************
- ** Inject the assembly references and debugging configuration
+ ** Add assembly references
**********************************************-->
- <Choose>
- <When Condition="$(OS) == 'Windows_NT'">
- <!-- references -->
- <ItemGroup>
- <Reference Include="Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
- <Private>false</Private>
- <Private Condition="$(CopyModReferencesToBuildOutput)">true</Private>
- </Reference>
- <Reference Include="Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
- <Private>false</Private>
- <Private Condition="$(CopyModReferencesToBuildOutput)">true</Private>
- </Reference>
- <Reference Include="Microsoft.Xna.Framework.Graphics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
- <Private>false</Private>
- <Private Condition="$(CopyModReferencesToBuildOutput)">true</Private>
- </Reference>
- <Reference Include="Microsoft.Xna.Framework.Xact, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
- <Private>false</Private>
- <Private Condition="$(CopyModReferencesToBuildOutput)">true</Private>
- </Reference>
- <Reference Include="Netcode">
- <HintPath>$(GamePath)\Netcode.dll</HintPath>
- <Private>False</Private>
- <Private Condition="$(CopyModReferencesToBuildOutput)">true</Private>
- </Reference>
- <Reference Include="Stardew Valley">
- <HintPath>$(GamePath)\Stardew Valley.exe</HintPath>
- <Private>false</Private>
- <Private Condition="$(CopyModReferencesToBuildOutput)">true</Private>
- </Reference>
- <Reference Include="StardewModdingAPI">
- <HintPath>$(GamePath)\StardewModdingAPI.exe</HintPath>
- <Private>false</Private>
- <Private Condition="$(CopyModReferencesToBuildOutput)">true</Private>
- </Reference>
- <Reference Include="StardewModdingAPI.Toolkit.CoreInterfaces">
- <HintPath>$(GamePath)\smapi-internal\StardewModdingAPI.Toolkit.CoreInterfaces.dll</HintPath>
- <HintPath Condition="!Exists('$(GamePath)\smapi-internal')">$(GamePath)\StardewModdingAPI.Toolkit.CoreInterfaces.dll</HintPath>
- <Private>false</Private>
- <Private Condition="$(CopyModReferencesToBuildOutput)">true</Private>
- </Reference>
- <Reference Include="xTile, Version=2.0.4.0, Culture=neutral, processorArchitecture=x86">
- <HintPath>$(GamePath)\xTile.dll</HintPath>
- <Private>false</Private>
- <SpecificVersion>False</SpecificVersion>
- <Private Condition="$(CopyModReferencesToBuildOutput)">true</Private>
- </Reference>
- </ItemGroup>
-
- <!-- launch game for debugging -->
- <PropertyGroup>
- <StartAction>Program</StartAction>
- <StartProgram>$(GamePath)\StardewModdingAPI.exe</StartProgram>
- <StartWorkingDirectory>$(GamePath)</StartWorkingDirectory>
- </PropertyGroup>
- </When>
- <Otherwise>
- <!-- references -->
- <ItemGroup>
- <Reference Include="MonoGame.Framework">
- <HintPath>$(GamePath)\MonoGame.Framework.dll</HintPath>
- <Private>false</Private>
- <SpecificVersion>False</SpecificVersion>
- <Private Condition="$(CopyModReferencesToBuildOutput)">true</Private>
- </Reference>
- <Reference Include="StardewValley">
- <HintPath>$(GamePath)\StardewValley.exe</HintPath>
- <Private>false</Private>
- <Private Condition="$(CopyModReferencesToBuildOutput)">true</Private>
- </Reference>
- <Reference Include="StardewModdingAPI">
- <HintPath>$(GamePath)\StardewModdingAPI.exe</HintPath>
- <Private>false</Private>
- <Private Condition="$(CopyModReferencesToBuildOutput)">true</Private>
- </Reference>
- <Reference Include="StardewModdingAPI.Toolkit.CoreInterfaces">
- <HintPath>$(GamePath)\smapi-internal\StardewModdingAPI.Toolkit.CoreInterfaces.dll</HintPath>
- <HintPath Condition="!Exists('$(GamePath)\smapi-internal')">$(GamePath)\StardewModdingAPI.Toolkit.CoreInterfaces.dll</HintPath>
- <Private>false</Private>
- <Private Condition="$(CopyModReferencesToBuildOutput)">true</Private>
- </Reference>
- <Reference Include="xTile">
- <HintPath>$(GamePath)\xTile.dll</HintPath>
- <Private>false</Private>
- <Private Condition="$(CopyModReferencesToBuildOutput)">true</Private>
- </Reference>
- </ItemGroup>
- </Otherwise>
- </Choose>
+ <!-- common -->
+ <ItemGroup>
+ <Reference Include="$(GameExecutableName)">
+ <HintPath>$(GamePath)\$(GameExecutableName).exe</HintPath>
+ <Private>$(CopyModReferencesToBuildOutput)</Private>
+ </Reference>
+ <Reference Include="StardewValley.GameData">
+ <HintPath>$(GamePath)\StardewValley.GameData.dll</HintPath>
+ <Private>$(CopyModReferencesToBuildOutput)</Private>
+ </Reference>
+ <Reference Include="StardewModdingAPI">
+ <HintPath>$(GamePath)\StardewModdingAPI.exe</HintPath>
+ <Private>$(CopyModReferencesToBuildOutput)</Private>
+ </Reference>
+ <Reference Include="SMAPI.Toolkit.CoreInterfaces">
+ <HintPath>$(GamePath)\smapi-internal\SMAPI.Toolkit.CoreInterfaces.dll</HintPath>
+ <Private>$(CopyModReferencesToBuildOutput)</Private>
+ </Reference>
+ <Reference Include="xTile">
+ <HintPath>$(GamePath)\xTile.dll</HintPath>
+ <Private>$(CopyModReferencesToBuildOutput)</Private>
+ </Reference>
+ <Reference Include="0Harmony" Condition="'$(EnableHarmony)' == 'true'">
+ <HintPath>$(GamePath)\smapi-internal\0Harmony.dll</HintPath>
+ <Private>$(CopyModReferencesToBuildOutput)</Private>
+ </Reference>
+ </ItemGroup>
+
+ <!-- Windows -->
+ <ItemGroup Condition="$(OS) == 'Windows_NT'">
+ <Reference Include="Microsoft.Xna.Framework, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+ <Private>$(CopyModReferencesToBuildOutput)</Private>
+ </Reference>
+ <Reference Include="Microsoft.Xna.Framework.Game, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+ <Private>$(CopyModReferencesToBuildOutput)</Private>
+ </Reference>
+ <Reference Include="Microsoft.Xna.Framework.Graphics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+ <Private>$(CopyModReferencesToBuildOutput)</Private>
+ </Reference>
+ <Reference Include="Microsoft.Xna.Framework.Xact, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553, processorArchitecture=x86">
+ <Private>$(CopyModReferencesToBuildOutput)</Private>
+ </Reference>
+ <Reference Include="Netcode">
+ <HintPath>$(GamePath)\Netcode.dll</HintPath>
+ <Private>$(CopyModReferencesToBuildOutput)</Private>
+ </Reference>
+ </ItemGroup>
+
+ <!-- Linux/Mac -->
+ <ItemGroup Condition="$(OS) != 'Windows_NT'">
+ <Reference Include="MonoGame.Framework">
+ <HintPath>$(GamePath)\MonoGame.Framework.dll</HintPath>
+ <Private>$(CopyModReferencesToBuildOutput)</Private>
+ </Reference>
+ </ItemGroup>
<!--*********************************************
- ** Deploy mod files & create release zip after build
+ ** Show friendly error for invalid OS or game path
**********************************************-->
- <!-- if game path or OS is invalid, show one user-friendly error instead of a slew of reference errors -->
<Target Name="BeforeBuild">
<Error Condition="'$(OS)' != 'OSX' AND '$(OS)' != 'Unix' AND '$(OS)' != 'Windows_NT'" Text="The mod build package doesn't recognise OS type '$(OS)'." />
- <Error Condition="!Exists('$(GamePath)')" Text="The mod build package can't find your game folder. You can specify where to find it; see https://smapi.io/buildmsg/game-path." />
- <Error Condition="'$(OS)' == 'Windows_NT' AND !Exists('$(GamePath)\Stardew Valley.exe')" Text="The mod build package found a game folder at $(GamePath), but it doesn't contain the Stardew Valley.exe file. If this folder is invalid, delete it and the package will autodetect another game install path." />
- <Error Condition="'$(OS)' != 'Windows_NT' AND !Exists('$(GamePath)\StardewValley.exe')" Text="The mod build package found a game folder at $(GamePath), but it doesn't contain the StardewValley.exe file. If this folder is invalid, delete it and the package will autodetect another game install path." />
+ <Error Condition="!Exists('$(GamePath)')" Text="The mod build package can't find your game folder. You can specify where to find it; see https://smapi.io/package/custom-game-path." />
+ <Error Condition="!Exists('$(GamePath)\$(GameExecutableName).exe')" Text="The mod build package found a game folder at $(GamePath), but it doesn't contain the $(GameExecutableName) file. If this folder is invalid, delete it and the package will autodetect another game install path." />
<Error Condition="!Exists('$(GamePath)\StardewModdingAPI.exe')" Text="The mod build package found a game folder at $(GamePath), but it doesn't contain SMAPI. You need to install SMAPI before building the mod." />
</Target>
- <!-- deploy mod files & create release zip -->
+
+ <!--*********************************************
+ ** Deploy mod files & create release zip
+ **********************************************-->
<Target Name="AfterBuild">
<DeployModTask
ModFolderName="$(ModFolderName)"