OpenRCT2/openrct2.proj

218 lines
11 KiB
Plaintext
Raw Normal View History

2016-08-22 19:31:52 +02:00
<?xml version="1.0" encoding="utf-8"?>
<!-- Main msbuild project for OpenRCT2 -->
2016-08-23 19:22:06 +02:00
<!-- Inputs
2016-08-23 20:24:07 +02:00
- BUILD_SERVER
2016-08-23 19:22:06 +02:00
- GIT_TAG
- GIT_BRANCH
- GIT_COMMIT_SHA1
- SIGN_PASSWORD
- OPENRCT2_ORG_TOKEN
-->
2016-08-25 20:18:45 +02:00
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003" DefaultTargets="All">
2016-08-22 19:31:52 +02:00
<!-- Import custom build tasks -->
<Import Project="openrct2.targets" />
2016-08-22 19:31:52 +02:00
<!-- Import the C++ project for OpenRCT2 -->
<Import Project="openrct2.vcxproj" />
<PropertyGroup>
2016-08-23 19:13:45 +02:00
<Version>0.0.5</Version>
2016-08-25 23:35:19 +02:00
<BUILD_SERVER Condition="'$(BUILD_SERVER)'==''">$(COMPUTERNAME)</BUILD_SERVER>
2016-08-25 20:18:45 +02:00
<GIT_COMMIT_SHA1_SHORT Condition="'$(GIT_COMMIT_SHA1)'!=''">$(GIT_COMMIT_SHA1.Substring(0, 7))</GIT_COMMIT_SHA1_SHORT>
2016-08-23 20:24:07 +02:00
<!-- Set dynamic OpenRCT2 #defines -->
<OPENRCT2_DEFINES Condition="'$(BUILD_SERVER)'!=''">OPENRCT2_BUILD_SERVER="$(BUILD_SERVER)";$(OPENRCT2_DEFINES)</OPENRCT2_DEFINES>
<OPENRCT2_DEFINES Condition="'$(GIT_BRANCH)'!=''">OPENRCT2_BRANCH="$(GIT_BRANCH)";$(OPENRCT2_DEFINES)</OPENRCT2_DEFINES>
<OPENRCT2_DEFINES Condition="'$(GIT_COMMIT_SHA1)'!=''">OPENRCT2_COMMIT_SHA1="$(GIT_COMMIT_SHA1)";$(OPENRCT2_DEFINES)</OPENRCT2_DEFINES>
<OPENRCT2_DEFINES Condition="'$(GIT_COMMIT_SHA1_SHORT)'!=''">OPENRCT2_COMMIT_SHA1_SHORT="$(GIT_COMMIT_SHA1_SHORT)";$(OPENRCT2_DEFINES)</OPENRCT2_DEFINES>
<RootDir>$(MsBuildThisFileDirectory)</RootDir>
<DistDir>$(RootDir)distribution\</DistDir>
<ArtifactsDir>$(RootDir)artifacts\</ArtifactsDir>
2016-08-22 23:30:47 +02:00
<NsisScript>$(DistDir)windows\install.nsi</NsisScript>
2016-08-22 22:45:36 +02:00
<OutputDll Condition="'$(Platform)'=='Win32'">$(TargetDir)openrct2.dll</OutputDll>
<OutputExe Condition="'$(Platform)'=='Win32'">$(TargetDir)openrct2.exe</OutputExe>
<OutputExe Condition="'$(Platform)'=='x64'">$(TargetPath)</OutputExe>
<g2Output>$(TargetDir)data\g2.dat</g2Output>
<SignCertificate Condition="'$(SignCertificate)'==''">$(DistDir)windows\code-sign-key-openrct2.org.pfx</SignCertificate>
<SignTimestampUrl>http://timestamp.comodoca.com/authenticode</SignTimestampUrl>
2016-08-22 22:45:36 +02:00
2016-08-26 00:07:02 +02:00
<PublishPostfix>-$(Configuration)-$(Platform)-$(GIT_COMMIT_SHA1_SHORT)</PublishPostfix>
<PublishPostfix>$(PublishPostfix.ToLower())</PublishPostfix>
<PublishZip>$(ArtifactsDir)openrct2-portable$(PublishPostfix).zip</PublishZip>
<PublishSymbolsZip Condition="'$(GIT_COMMIT_SHA1_SHORT)'==''">$(ArtifactsDir)openrct2-symbols$(PublishPostfix).zip</PublishSymbolsZip>
<PublishSymbolsZip Condition="'$(GIT_COMMIT_SHA1_SHORT)'!=''">$(ArtifactsDir)openrct2-symbols$(PublishPostfix).zip</PublishSymbolsZip>
<PublishInstallerExe>$(ArtifactsDir)openrct2-installer$(PublishPostfix).exe</PublishInstallerExe>
2016-08-23 19:13:45 +02:00
<UploadFilename>OpenRCT2-$(Version)$(VersionExtension)-windows</UploadFilename>
</PropertyGroup>
<ItemGroup>
<g2Inputs Include="$(RootDir)resources\g2\*" />
2016-08-22 22:45:36 +02:00
<SignItems Include="$(OutputExe)" />
<SignItems Condition="'$(Platform)'=='Win32'" Include="$(OutputDll)" />
</ItemGroup>
<ItemGroup Label="Symbol Items">
<SymbolItems Condition="'$(Platform)'=='Win32'" Include="$(OutputDll)" />
<SymbolItems Include="$(OutputExe)" />
<SymbolItems Include="$(TargetDir)$(TargetName).pdb" />
</ItemGroup>
<ItemGroup Label="Publish Items">
2016-08-25 19:29:23 +02:00
<PublishItems Include="$(OutputExe)" />
<PublishItems Include="$(OutputDll)" Condition="'$(Platform)'=='Win32'" />
2016-08-25 21:17:40 +02:00
<PublishItems Include="$(TargetDir)data" />
<PublishItems Include="$(RootDir)curl-ca-bundle.crt" />
2016-08-22 22:45:36 +02:00
<PublishItems Include="$(DistDir)changelog.txt" />
<PublishItems Include="$(DistDir)known_issues.txt" />
<PublishItems Include="$(DistDir)readme.txt" />
<PublishItems Include="$(RootDir)contributors.md" />
<PublishItems Include="$(RootDir)licence.txt" />
</ItemGroup>
2016-08-23 19:13:45 +02:00
<ItemGroup Label="Upload Artifacts">
<UploadArtifacts Include="$(PublishZip)">
<Name>$(UploadFilename).zip</Name>
<FlavourId>1</FlavourId>
</UploadArtifacts>
<UploadArtifacts Include="$(PublishInstallerExe)">
<Name>$(UploadFilename).exe</Name>
<FlavourId>2</FlavourId>
</UploadArtifacts>
<UploadArtifacts Include="$(PublishSymbolsZip)">
<Name>$(UploadFilename)-symbols.zip</Name>
<FlavourId>5</FlavourId>
</UploadArtifacts>
</ItemGroup>
2016-08-25 21:22:09 +02:00
<Target Name="DownloadLibs">
<Message Text="Checking / downloading libraries..." Importance="high" />
<Exec Command="powershell -ExecutionPolicy Unrestricted -File scripts\ps\install.ps1 -q" StandardOutputImportance="normal" />
</Target>
<Target Name="BeforeClean">
2016-08-26 00:07:02 +02:00
<Delete Condition="'$(Platform)'=='Win32'" Files="$(TargetDir)openrct2.exe" />
<Delete Files="$(TargetDir)curl-ca-bundle.crt" />
<Delete Files="$(g2Output)" />
2016-08-22 22:45:36 +02:00
<Delete Files="$(PublishZip)" />
<Delete Files="$(PublishSymbolsZip)" />
2016-08-22 23:30:47 +02:00
<Delete Files="$(PublishInstallerExe)" />
2016-08-26 00:07:02 +02:00
<RemoveDir Directories="$(TargetDir)data" />
</Target>
2016-08-25 21:22:09 +02:00
<Target Name="BeforeBuild" BeforeTargets="InitializeBuildStatus" DependsOnTargets="DownloadLibs">
2016-08-25 20:18:45 +02:00
<PropertyGroup>
<BuildString Condition="'$(GIT_COMMIT_SHA1_SHORT)'!=''">$(GIT_COMMIT_SHA1_SHORT)</BuildString>
<BuildString Condition="'$(GIT_BRANCH)'!=''">$(BuildString) ($(GIT_BRANCH))</BuildString>
</PropertyGroup>
2016-08-25 21:17:40 +02:00
<ItemGroup>
<CopyItems Condition="'$(Platform)'=='Win32'" Include="$(RootDir)openrct2.exe" />
<CopyItems Include="$(RootDir)curl-ca-bundle.crt" />
<DataItems Include="$(RootDir)data\**\*" />
</ItemGroup>
2016-08-25 20:18:45 +02:00
<Message Condition="'$(BuildString)'!=''" Text="Building $(BuildString)" Importance="high" />
2016-08-25 21:17:40 +02:00
<Copy SourceFiles="@(CopyItems)" DestinationFolder="$(TargetDir)" SkipUnchangedFiles="true" />
<Copy SourceFiles="@(DataItems)" DestinationFolder="$(TargetDir)data\%(RecursiveDir)" SkipUnchangedFiles="true" />
2016-08-25 20:18:45 +02:00
</Target>
<!-- Target to build g2.dat containing OpenRCT2 sprites -->
2016-08-25 21:17:40 +02:00
<Target Name="g2" DependsOnTargets="Build" AfterTargets="Build" Inputs="@(g2Inputs)" Outputs="$(g2Output)">
<Message Text="Building g2.dat..." />
2016-08-22 22:45:36 +02:00
<Exec Command="$(OutputExe) sprite build $(g2Output) $(RootDir)resources\g2"
StandardOutputImportance="low" />
</Target>
2016-08-22 22:45:36 +02:00
<!-- Target to sign OpenRCT2 (exe and dll)
2016-08-23 19:22:06 +02:00
This requires the project parameter SIGN_PASSWORD to be set -->
<Target Name="Sign" DependsOnTargets="Build" Inputs="@(SignItems)" Outputs="%(Identity).bogus">
2016-08-23 19:22:06 +02:00
<Warning Condition="'$(SIGN_PASSWORD)'==''" Text="SIGN_PASSWORD was not set, skipping signing of %(SignItems.Filename)%(SignItems.Extension)." />
<Message Condition="'$(SIGN_PASSWORD)'!=''" Text="Signing %(SignItems.Filename)%(SignItems.Extension)"
Importance="high" />
2016-08-23 19:22:06 +02:00
<Exec Condition="'$(SIGN_PASSWORD)'!=''"
Command="signtool.exe sign /f $(SignCertificate) /p $(SIGN_PASSWORD) /t $(SignTimestampUrl) %(SignItems.Identity)"
StandardOutputImportance="low" />
</Target>
<!-- Target to publish OpenRCT2 as a portable zip -->
2016-08-22 22:45:36 +02:00
<Target Name="PublishPortable" DependsOnTargets="Build;g2;Sign" Inputs="@(PublishItems)" Outputs="$(PublishZip)">
<MakeDir Directories="$(ArtifactsDir)" />
2016-08-26 00:07:02 +02:00
<Message Importance="high" Text="Creating $([System.IO.Path]::GetFileName($(PublishZip)))..." />
2016-08-25 21:17:40 +02:00
<_7z Output="$(PublishZip)" Inputs="@(PublishItems)" />
</Target>
2016-08-22 22:45:36 +02:00
<!-- Target to publish the OpenRCT2 debug symbols -->
<Target Name="PublishSymbols" DependsOnTargets="Build;Sign" Inputs="@(SymbolItems)" Outputs="$(PublishSymbolsZip)">
<MakeDir Directories="$(ArtifactsDir)" />
2016-08-26 00:07:02 +02:00
<Message Importance="high" Text="Creating $([System.IO.Path]::GetFileName($(PublishSymbolsZip)))..." />
2016-08-22 22:45:36 +02:00
<_7z Output="$(PublishSymbolsZip)" Inputs="@(SymbolItems)" />
</Target>
2016-08-22 23:30:47 +02:00
<!-- Target to publish the OpenRCT2 as an NSIS installer -->
<Target Name="PublishInstaller"
DependsOnTargets="Build;Sign;g2"
Inputs="@(PublishItems);$(NsisScript)"
2016-08-26 00:38:48 +02:00
Outputs="$(PublishInstallerExe)"
Condition="'$(NO_NSIS)'!='true'">
2016-08-22 23:30:47 +02:00
<PropertyGroup>
2016-08-23 19:22:06 +02:00
<VersionExtra Condition="'$(GIT_BRANCH)'!=''">-$(GIT_BRANCH)-$(GIT_COMMIT_SHA1_SHORT)</VersionExtra>
<VersionTag Condition="$([System.Text.RegularExpressions.Regex]::IsMatch('$(GIT_TAG)', '^v[0-9]'))">$(GIT_TAG)</VersionTag>
<VersionExtra Condition="'$(GIT_TAG)'!='' AND '$(VersionTag)'==''">-$(GIT_TAG)</VersionExtra>
2016-08-22 23:30:47 +02:00
<PublishInstallerExeName>$([System.IO.Path]::GetFilename($(PublishInstallerExe)))</PublishInstallerExeName>
</PropertyGroup>
2016-08-26 00:07:02 +02:00
<MakeDir Directories="$(ArtifactsDir)" />
2016-08-22 23:30:47 +02:00
<!-- Create the installer -->
<Message Text="Building Windows Installer (NSIS script)" Importance="high" />
<Exec Command="makensis /DOUTFILE=$(PublishInstallerExe) ^
/DAPPV_EXTRA=$(VersionExtra) ^
/DPLATFORM=$(Platform) ^
$(NsisScript)"
2016-08-22 23:30:47 +02:00
StandardOutputImportance="normal" />
<!-- Sign the installer -->
2016-08-23 19:22:06 +02:00
<Warning Condition="'$(SIGN_PASSWORD)'==''" Text="SIGN_PASSWORD was not set, skipping signing of $(PublishInstallerExeName)." />
<Message Condition="'$(SIGN_PASSWORD)'!=''" Text="Signing $(PublishInstallerExeName)"
2016-08-22 23:30:47 +02:00
Importance="high" />
2016-08-23 19:22:06 +02:00
<Exec Condition="'$(SIGN_PASSWORD)'!=''"
Command="signtool.exe sign /f $(SignCertificate) /p $(SIGN_PASSWORD) /t $(SignTimestampUrl) $(PublishInstallerExe)"
2016-08-22 23:30:47 +02:00
StandardOutputImportance="low" />
</Target>
2016-08-22 22:45:36 +02:00
<Target Name="PublishAll"
2016-08-22 23:30:47 +02:00
DependsOnTargets="PublishSymbols;PublishPortable;PublishInstaller" />
2016-08-22 22:45:36 +02:00
2016-08-23 19:13:45 +02:00
<!-- Target to upload the artifacts to OpenRCT2.org -->
<Target Name="UploadArtifacts" DependsOnTargets="PublishAll">
<PropertyGroup>
<UploadLink>https://openrct2.org/altapi/?command=push-build</UploadLink>
<UploadFileNameShort>%(UploadArtifacts.Filename)%(UploadArtifacts.Extension)</UploadFileNameShort>
</PropertyGroup>
<Message Text="Uploading $(UploadFileNameShort)" Importance="high" />
<Error Condition="'$(OPENRCT2_ORG_TOKEN)'==''" Text="OPENRCT2_ORG_TOKEN not set." />
2016-08-23 19:22:06 +02:00
<Error Condition="'$(GIT_COMMIT_SHA1)'==''" Text="GIT_COMMIT_SHA1 not set." />
<Error Condition="'$(GIT_BRANCH)'==''" Text="GIT_BRANCH not set." />
2016-08-23 19:13:45 +02:00
<Exec Command="curl.exe -s -o - ^
2016-08-23 19:22:06 +02:00
--form &quot;key=$(OPENRCT2_ORG_TOKEN)&quot; ^
--form &quot;fileName=%(UploadArtifacts.Name)&quot; ^
--form &quot;version=$(Version)&quot; ^
--form &quot;gitHash=$(GIT_COMMIT_SHA1)&quot; ^
--form &quot;gitBranch=$(GIT_BRANCH)&quot; ^
2016-08-23 19:13:45 +02:00
--form &quot;flavourId=%(UploadArtifacts.FlavourId)&quot; ^
2016-08-23 19:22:06 +02:00
--form &quot;file=@%(UploadArtifacts.Identity)&quot; ^
2016-08-23 19:13:45 +02:00
&quot;$(UploadLink)&quot;"
CustomErrorRegularExpression="&quot;error&quot;:1" />
</Target>
2016-08-25 20:18:45 +02:00
<Target Name="All">
<CallTarget Condition="'$(OPENRCT2_ORG_TOKEN)'==''" Targets="PublishAll" />
<CallTarget Condition="'$(OPENRCT2_ORG_TOKEN)'!=''" Targets="UploadArtifacts" />
</Target>
</Project>