1759 строки
78 KiB
XML
1759 строки
78 KiB
XML
<!--
|
|
***********************************************************************************************
|
|
Xamarin.iOS.Common.targets
|
|
|
|
WARNING: DO NOT MODIFY this file unless you are knowledgeable about MSBuild and have
|
|
created a backup copy. Incorrect changes to this file will make it
|
|
impossible to load or build your projects from the command-line or the IDE.
|
|
|
|
This file imports the version- and platform-specific targets for the project importing
|
|
this file. This file also defines targets to produce an error if the specified targets
|
|
file does not exist, but the project is built anyway (command-line or IDE build).
|
|
|
|
Copyright (C) 2013-2016 Xamarin. All rights reserved.
|
|
***********************************************************************************************
|
|
-->
|
|
|
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.ArTool" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.Codesign" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.CollectBundleResources" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.ComputeBundleResourceOutputPaths" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.CreateAssetPackManifest" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.CreatePkgInfo" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.Ditto" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.DSymUtil" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.FindItemWithLogicalName" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.GenerateBundleName" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.GetNativeExecutableName" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.GetPropertyListValue" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.Move" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.PackLibraryResources" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.ReadItemsFromFile" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.SmartCopy" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.SpotlightIndexer" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.SymbolStrip" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.UnpackLibraryResources" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.WriteItemsToFile" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.MacDev.Tasks.Zip" AssemblyFile="Xamarin.MacDev.Tasks.dll" />
|
|
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.ACTool" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.Archive" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.CodesignVerify" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.CollectAssetPacks" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.CollectFrameworks" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.CollectITunesArtwork" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.CollectITunesSourceFiles" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.CompileAppManifest" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.CompileEntitlements" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.CompileITunesMetadata" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.CompileSceneKitAssets" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.CreateAssetPack" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.CreateDebugSettings" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.CreateDebugConfiguration" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.DetectBundleIdentifier" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.DetectSdkLocations" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.DetectSigningIdentity" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.EmbedMobileProvision" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.FindWatchAppBundle" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.IBTool" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.MetalLib" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.Metal" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.MTouch" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.OptimizeImage" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.OptimizePropertyList" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.ParseDeviceSpecificBuildInformation" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.ParseExtraMtouchArgs" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.PrepareResourceRules" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.ScnTool" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.TextureAtlas" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.ValidateAppBundleTask" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
<UsingTask TaskName="Xamarin.iOS.Tasks.WriteAssetPackManifest" AssemblyFile="Xamarin.iOS.Tasks.dll" />
|
|
|
|
<UsingTask TaskName="Microsoft.Build.Tasks.Copy" AssemblyFile="Xamarin.iOS.Tasks.dll"/>
|
|
<UsingTask TaskName="Microsoft.Build.Tasks.MakeDir" AssemblyFile="Xamarin.iOS.Tasks.dll"/>
|
|
<UsingTask TaskName="Microsoft.Build.Tasks.RemoveDir" AssemblyFile="Xamarin.iOS.Tasks.dll"/>
|
|
<UsingTask TaskName="Microsoft.Build.Tasks.Delete" AssemblyFile="Xamarin.iOS.Tasks.dll"/>
|
|
<UsingTask TaskName="Microsoft.Build.Tasks.Touch" AssemblyFile="Xamarin.iOS.Tasks.dll"/>
|
|
|
|
<Import Project="$(MSBuildThisFileDirectory)Xamarin.iOS.Common.props"
|
|
Condition="'$(_XamarinCommonPropsHasBeenImported)' != 'true'" />
|
|
|
|
<Import Project="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).Before.targets"
|
|
Condition="Exists('$(MSBuildThisFileDirectory)$(MSBuildThisFileName).Before.targets')"/>
|
|
|
|
<PropertyGroup>
|
|
<!-- Switching to a new property allows us to potentially switch from iPhone to simulator builds
|
|
dynamically based on the user's selection when starting the project. This allows us to
|
|
eventually even (optionally) switch back to AnyCPU platform in the IDE, therefore
|
|
fixing a key pain point in managing solution configurations. -->
|
|
<ComputedPlatform Condition="'$(ComputedPlatform)' == ''">$(Platform)</ComputedPlatform>
|
|
<ComputedPlatform Condition="'$(ComputedPlatform)' == 'AnyCPU'">iPhone</ComputedPlatform>
|
|
|
|
<_CanOutputAppBundle>False</_CanOutputAppBundle>
|
|
<_CanOutputAppBundle Condition="'$(OutputType)' == 'Exe' Or '$(IsAppExtension)' == 'true' Or '$(IsWatchApp)' == 'true'">True</_CanOutputAppBundle>
|
|
|
|
<_CanArchive>False</_CanArchive>
|
|
<_CanArchive Condition="'$(OutputType)' == 'Exe' And '$(ComputedPlatform)' == 'iPhone' And '$(IsAppExtension)' == 'false' And '$(IsWatchApp)' == 'false'">True</_CanArchive>
|
|
|
|
<_CanDeployToDevice>False</_CanDeployToDevice>
|
|
<_CanDeployToDevice Condition="'$(OutputType)' == 'Exe' And '$(ComputedPlatform)' == 'iPhone' And '$(IsAppExtension)' == 'false' And '$(IsWatchApp)' == 'false'">True</_CanDeployToDevice>
|
|
|
|
<_RequireCodeSigning>False</_RequireCodeSigning>
|
|
<_RequireCodeSigning Condition="'$(ComputedPlatform)' == 'iPhone'">True</_RequireCodeSigning>
|
|
|
|
<_RequireProvisioningProfile>False</_RequireProvisioningProfile>
|
|
<_RequireProvisioningProfile Condition="'$(ComputedPlatform)' == 'iPhone' Or '$(CodesignEntitlements)' != ''">True</_RequireProvisioningProfile>
|
|
|
|
<_PreparedResourceRules></_PreparedResourceRules>
|
|
<_AppBundleName>$(AssemblyName)</_AppBundleName>
|
|
|
|
<DeviceSpecificIntermediateOutputPath>$(IntermediateOutputPath)</DeviceSpecificIntermediateOutputPath>
|
|
<DeviceSpecificOutputPath>$(OutputPath)</DeviceSpecificOutputPath>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<ImplicitlyExpandDesignTimeFacades>true</ImplicitlyExpandDesignTimeFacades>
|
|
<CheckForSystemRuntimeDependency>true</CheckForSystemRuntimeDependency>
|
|
|
|
<ResolveReferencesDependsOn>
|
|
_SeparateAppExtensionReferences;
|
|
_SeparateWatchAppReferences;
|
|
$(ResolveReferencesDependsOn);
|
|
ImplicitlyExpandDesignTimeFacades
|
|
</ResolveReferencesDependsOn>
|
|
|
|
<ImplicitlyExpandDesignTimeFacadesDependsOn>
|
|
$(ImplicitlyExpandDesignTimeFacadesDependsOn);
|
|
GetReferenceAssemblyPaths
|
|
</ImplicitlyExpandDesignTimeFacadesDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<ItemDefinitionGroup>
|
|
<!-- MSBuild will honor this default metadata, but xbuild will not, so we still need to use CreateItem -->
|
|
<_BundleResourceWithLogicalName>
|
|
<Optimize />
|
|
</_BundleResourceWithLogicalName>
|
|
</ItemDefinitionGroup>
|
|
|
|
<Target Name="ImplicitlyExpandDesignTimeFacades" Condition="'$(ImplicitlyExpandDesignTimeFacades)' == 'true'" DependsOnTargets="$(ImplicitlyExpandDesignTimeFacadesDependsOn)">
|
|
<PropertyGroup>
|
|
<_HasReferenceToSystemRuntime Condition="'$(DependsOnSystemRuntime)' == 'true' or '%(_ResolvedProjectReferencePaths.TargetPlatformIdentifier)' == 'Portable'
|
|
or '%(ReferenceDependencyPaths.Filename)' == 'System.Runtime'">true</_HasReferenceToSystemRuntime>
|
|
</PropertyGroup>
|
|
|
|
<ItemGroup Condition="'$(_HasReferenceToSystemRuntime)' == 'true'">
|
|
<_DesignTimeFacadeAssemblies Include="%(DesignTimeFacadeDirectories.Identity)*.dll"/>
|
|
<ReferencePath Remove="@(_DesignTimeFacadeAssemblies)"/>
|
|
<ReferencePath Include="%(_DesignTimeFacadeAssemblies.Identity)">
|
|
<WinMDFile>false</WinMDFile>
|
|
<CopyLocal>false</CopyLocal>
|
|
<ResolvedFrom>ImplicitlyExpandDesignTimeFacades</ResolvedFrom>
|
|
</ReferencePath>
|
|
<ReferenceDependencyPath Include="@(ReferencePath)" Condition="'%(ReferencePath.ResolvedFrom)' == 'ImplicitlyExpandDesignTimeFacades'" />
|
|
</ItemGroup>
|
|
|
|
<Message Importance="Low" Text="Including @(ReferencePath)" Condition="'%(ReferencePath.ResolvedFrom)' == 'ImplicitlyExpandDesignTimeFacades'" />
|
|
</Target>
|
|
|
|
<Target Name="_ComputeTargetArchitectures">
|
|
<ParseDeviceSpecificBuildInformation
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(DeviceSpecificBuild)' == 'true' And '$(TargetiOSDevice)' != '' And '$(_CanDeployToDevice)' == 'true'"
|
|
Architectures="$(MtouchArch)"
|
|
IntermediateOutputPath="$(IntermediateOutputPath)"
|
|
OutputPath="$(OutputPath)"
|
|
TargetiOSDevice="$(TargetiOSDevice)"
|
|
>
|
|
<Output TaskParameter="DeviceSpecificIntermediateOutputPath" PropertyName="DeviceSpecificIntermediateOutputPath" />
|
|
<Output TaskParameter="DeviceSpecificOutputPath" PropertyName="DeviceSpecificOutputPath" />
|
|
<Output TaskParameter="TargetArchitectures" PropertyName="TargetArchitectures" />
|
|
<Output TaskParameter="TargetDeviceModel" PropertyName="TargetDeviceModel" />
|
|
<Output TaskParameter="TargetDeviceOSVersion" PropertyName="TargeDeviceOSVersion" />
|
|
</ParseDeviceSpecificBuildInformation>
|
|
|
|
<PropertyGroup>
|
|
<_MtouchSymbolsList>$(DeviceSpecificIntermediateOutputPath)mtouch-symbols.list</_MtouchSymbolsList>
|
|
</PropertyGroup>
|
|
</Target>
|
|
|
|
<!-- Insert our app bundle generation step -->
|
|
<PropertyGroup>
|
|
<BuildDependsOn>
|
|
BuildOnlySettings;
|
|
PrepareForBuild;
|
|
_CollectBundleResources;
|
|
_OptimizePngImages;
|
|
_OptimizePropertyLists;
|
|
_OptimizeLocalizationFiles;
|
|
_PackLibraryResources;
|
|
_UnpackLibraryResources;
|
|
$(BuildDependsOn);
|
|
_GenerateBundleName;
|
|
_CleanUploaded;
|
|
_CreateAppBundle;
|
|
Codesign;
|
|
CreateIpa;
|
|
Archive;
|
|
</BuildDependsOn>
|
|
|
|
<CleanDependsOn>
|
|
$(CleanDependsOn);
|
|
_CleanUploaded;
|
|
_CleanAppBundle;
|
|
_CleanDebugSymbols;
|
|
_CleanITunesArtwork;
|
|
_CleanDeviceSpecificOutput;
|
|
_CleanIntermediateToolOutput;
|
|
</CleanDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<CompileColladaAssetsDependsOn>
|
|
_CollectColladaAssets;
|
|
_CoreCompileColladaAssets
|
|
</CompileColladaAssetsDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<PropertyGroup>
|
|
<_IsContainerApp>false</_IsContainerApp>
|
|
<_IsContainerApp Condition="$(IsAppExtension) == 'false' And '$(IsWatchApp)' == 'false'">true</_IsContainerApp>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_CompileColladaAssets" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="$(CompileColladaAssetsDependsOn)" />
|
|
|
|
<PropertyGroup>
|
|
<OptimizePngImagesDependsOn>
|
|
_CollectPngImages;
|
|
_CoreOptimizePngImages;
|
|
_AfterCoreOptimizePngImages
|
|
</OptimizePngImagesDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_OptimizePngImages" DependsOnTargets="$(OptimizePngImagesDependsOn)" />
|
|
|
|
<PropertyGroup>
|
|
<OptimizePropertyListsDependsOn>
|
|
_CollectPropertyLists;
|
|
_CoreOptimizePropertyLists;
|
|
_AfterCoreOptimizePropertyLists
|
|
</OptimizePropertyListsDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_OptimizePropertyLists" DependsOnTargets="$(OptimizePropertyListsDependsOn)" />
|
|
|
|
<PropertyGroup>
|
|
<OptimizeLocalizationFilesDependsOn>
|
|
_CollectLocalizationFiles;
|
|
_CoreOptimizeLocalizationFiles;
|
|
_AfterCoreOptimizeLocalizationFiles
|
|
</OptimizeLocalizationFilesDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_OptimizeLocalizationFiles" DependsOnTargets="$(OptimizeLocalizationFilesDependsOn)" />
|
|
|
|
<PropertyGroup>
|
|
<CreateAppBundleDependsOn>
|
|
_DetectAppManifest;
|
|
_DetectSigningIdentity;
|
|
_CopyResourcesToBundle;
|
|
_CreateAssetPackManifest;
|
|
_SmeltMetal;
|
|
_ForgeMetal;
|
|
_TemperMetal;
|
|
_PrepareResourceRules;
|
|
_CompileEntitlements;
|
|
_CompileAppManifest;
|
|
_GetNativeExecutableName;
|
|
_CompileToNative;
|
|
_CompileITunesMetadata;
|
|
_CollectITunesArtwork;
|
|
_CopyITunesArtwork;
|
|
_CreateDebugSettings;
|
|
_CreateDebugConfiguration;
|
|
_CreatePkgInfo;
|
|
_CopyAppExtensionsToBundle;
|
|
_CopyWatchAppsToBundle;
|
|
_CopyWatch2AppsToBundle;
|
|
_GenerateDebugSymbols;
|
|
_ValidateAppBundle;
|
|
</CreateAppBundleDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_CreateAppBundle" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="$(CreateAppBundleDependsOn)" />
|
|
|
|
<PropertyGroup>
|
|
<_CodesignAppBundleDependsOn>
|
|
_EmbedMobileProvision;
|
|
_CodesignNativeLibraries;
|
|
_CodesignFrameworks;
|
|
</_CodesignAppBundleDependsOn>
|
|
|
|
<_CoreCodesignDependsOn>
|
|
_CodesignAppBundle;
|
|
_CodesignVerify;
|
|
</_CoreCodesignDependsOn>
|
|
|
|
<CodesignDependsOn>
|
|
BeforeCodeSign;
|
|
CoreCodeSign;
|
|
AfterCodeSign;
|
|
</CodesignDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="BeforeCodesign" />
|
|
<Target Name="CoreCodesign" DependsOnTargets="$(_CoreCodesignDependsOn)" />
|
|
<Target Name="AfterCodesign" />
|
|
|
|
<Target Name="Codesign" Condition="'$(_CanOutputAppBundle)' == 'true' And '$(_RequireCodeSigning)' == 'true'" DependsOnTargets="_CreateAppBundle;$(CodesignDependsOn)" />
|
|
|
|
<PropertyGroup>
|
|
<CreateIpaDependsOn>
|
|
_CoreCreateIpa;
|
|
_PackageOnDemandResources;
|
|
_ZipIpa
|
|
</CreateIpaDependsOn>
|
|
|
|
<ArchiveDependsOn>
|
|
_CoreArchive
|
|
</ArchiveDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="Archive" Condition="'$(_CanArchive)' == 'true'" DependsOnTargets="$(ArchiveDependsOn)" />
|
|
|
|
<Target Name="CreateIpa" Condition="'$(_CanArchive)' == 'true'" DependsOnTargets="$(CreateIpaDependsOn)" />
|
|
|
|
<Target Name="_CleanAppBundle" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="_GenerateBundleName">
|
|
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Directories="$(_AppBundlePath)" />
|
|
</Target>
|
|
|
|
<Target Name="_CleanUploaded" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="_GenerateBundleName">
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Files="$(DeviceSpecificOutputPath).uploaded" />
|
|
</Target>
|
|
|
|
<Target Name="_CleanDebugSymbols" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="_GenerateBundleName">
|
|
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Directories="$(AppBundleDir).dSYM" />
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Files="$(DeviceSpecificOutputPath)*.bcsymbolmap" />
|
|
</Target>
|
|
|
|
<Target Name="_CleanITunesArtwork" Condition="'$(_CanArchive)' == 'true'">
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Files="$(DeviceSpecificOutputPath)iTunesMetadata.plist;$(DeviceSpecificOutputPath)iTunesArtwork@2x;$(DeviceSpecificOutputPath)iTunesArtwork" />
|
|
</Target>
|
|
|
|
<Target Name="_CleanDeviceSpecificOutput" Condition="'$(_CanOutputAppBundle)' == 'true'">
|
|
<RemoveDir SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
Directories="$(IntermediateOutputPath)build-*;
|
|
$(OutputPath)build-*" />
|
|
</Target>
|
|
|
|
<Target Name="_CleanIntermediateToolOutput">
|
|
<RemoveDir SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
Directories="$(DeviceSpecificIntermediateOutputPath)actool;
|
|
$(DeviceSpecificIntermediateOutputPath)assetpacks;
|
|
$(DeviceSpecificIntermediateOutputPath)ibtool;
|
|
$(DeviceSpecificIntermediateOutputPath)ibtool-manifests;
|
|
$(DeviceSpecificIntermediateOutputPath)ipa;
|
|
$(DeviceSpecificIntermediateOutputPath)metal;
|
|
$(DeviceSpecificIntermediateOutputPath)optimized;
|
|
$(DeviceSpecificIntermediateOutputPath)scntool;
|
|
$(DeviceSpecificIntermediateOutputPath)TextureAtlas;
|
|
$(DeviceSpecificIntermediateOutputPath)mtouch-cache;
|
|
$(DeviceSpecificIntermediateOutputPath)" />
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Files="$(DeviceSpecificOutputPath)*.ipa" />
|
|
</Target>
|
|
|
|
<PropertyGroup>
|
|
<_CollectBundleResourcesDependsOn>
|
|
_CompileInterfaceDefinitions;
|
|
_CompileImageAssets;
|
|
_CompileColladaAssets;
|
|
_CompileSceneKitAssets;
|
|
_CompileTextureAtlases;
|
|
</_CollectBundleResourcesDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<!-- TODO: check for duplicate items -->
|
|
<Target Name="_ComputeBundleResourceOutputPaths" DependsOnTargets="_CollectBundleResources;_GenerateBundleName;_DetectSigningIdentity">
|
|
<ComputeBundleResourceOutputPaths
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
BundleIdentifier="$(_BundleIdentifier)"
|
|
BundleResources="@(_BundleResourceWithLogicalName)"
|
|
IntermediateOutputPath="$(DeviceSpecificIntermediateOutputPath)"
|
|
OutputPath="$(DeviceSpecificOutputPath)"
|
|
>
|
|
<Output TaskParameter="BundleResourcesWithOutputPaths" ItemName="_BundleResourceWithOutputPath"/>
|
|
</ComputeBundleResourceOutputPaths>
|
|
</Target>
|
|
|
|
<Target Name="_CopyResourcesToBundle" DependsOnTargets="_ComputeBundleResourceOutputPaths"
|
|
Inputs = "@(_BundleResourceWithOutputPath)"
|
|
Outputs = "@(_BundleResourceWithOutputPath -> '%(OutputPath)')" >
|
|
<SmartCopy
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
SourceFiles = "@(_BundleResourceWithOutputPath)"
|
|
DestinationFiles = "@(_BundleResourceWithOutputPath -> '%(OutputPath)')"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_CreateAssetPackManifest" DependsOnTargets="_CopyResourcesToBundle">
|
|
<CreateAssetPackManifest
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
InitialInstallTags="$(OnDemandResourcesInitialInstallTags)"
|
|
PrefetchOrder="$(OnDemandResourcesPrefetchOrder)"
|
|
OutputPath="$(DeviceSpecificOutputPath)"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_CollectBundleResources" DependsOnTargets="$(_CollectBundleResourcesDependsOn)">
|
|
<CollectBundleResources
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
OptimizePropertyLists="$(OptimizePropertyLists)"
|
|
OptimizePNGs="$(OptimizePNGs)"
|
|
BundleResources="@(Content);@(BundleResource)"
|
|
ProjectDir="$(MSBuildProjectDirectory)"
|
|
ResourcePrefix="$(IPhoneResourcePrefix)"
|
|
>
|
|
|
|
<Output TaskParameter="BundleResourcesWithLogicalNames" ItemName="_BundleResourceWithLogicalName"/>
|
|
</CollectBundleResources>
|
|
</Target>
|
|
|
|
<Target Name="_DetectAppManifest">
|
|
<FindItemWithLogicalName
|
|
SessionId="$(BuildSessionId)"
|
|
ProjectDir="$(MSBuildProjectDirectory)"
|
|
ResourcePrefix="$(IPhoneResourcePrefix)"
|
|
LogicalName="Info.plist"
|
|
Items="@(None)">
|
|
<Output TaskParameter="Item" PropertyName="_AppManifest" />
|
|
</FindItemWithLogicalName>
|
|
<FindItemWithLogicalName Condition="'$(_AppManifest)' == '' And '$(_CanOutputAppBundle)' == 'true'"
|
|
SessionId="$(BuildSessionId)"
|
|
ProjectDir="$(MSBuildProjectDirectory)"
|
|
ResourcePrefix="$(IPhoneResourcePrefix)"
|
|
LogicalName="Info.plist"
|
|
Items="@(BundleResource)">
|
|
<Output TaskParameter="Item" PropertyName="_AppManifest" />
|
|
</FindItemWithLogicalName>
|
|
<FindItemWithLogicalName Condition="'$(_AppManifest)' == '' And '$(_CanOutputAppBundle)' == 'true'"
|
|
SessionId="$(BuildSessionId)"
|
|
ProjectDir="$(MSBuildProjectDirectory)"
|
|
ResourcePrefix="$(IPhoneResourcePrefix)"
|
|
LogicalName="Info.plist"
|
|
Items="@(Content)">
|
|
<Output TaskParameter="Item" PropertyName="_AppManifest" />
|
|
</FindItemWithLogicalName>
|
|
<Error Condition="'$(_AppManifest)' == '' And '$(_CanOutputAppBundle)' == 'true'" Text="Info.plist not found."/>
|
|
</Target>
|
|
|
|
<Target Name="_SmeltMetal" Condition="'$(_CanOutputAppBundle)' == 'true' And '@(Metal)' != ''" DependsOnTargets="_DetectSdkLocations">
|
|
<Error Condition="'$(ComputedPlatform)' == 'iPhoneSimulator'" Text="The iOS Simulator does not support metal. Build for a device instead."/>
|
|
|
|
<Metal
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
IntermediateOutputPath="$(DeviceSpecificIntermediateOutputPath)"
|
|
ProjectDir="$(MSBuildProjectDirectory)"
|
|
ResourcePrefix="$(IPhoneResourcePrefix)"
|
|
SdkDevPath="$(_SdkDevPath)"
|
|
SourceFile="%(Metal.Identity)">
|
|
<Output TaskParameter="OutputFile" ItemName="_SmeltedMetal" />
|
|
</Metal>
|
|
</Target>
|
|
|
|
<Target Name="_ForgeMetal" Condition="'$(_CanOutputAppBundle)' == 'true' And '@(_SmeltedMetal)' != ''" DependsOnTargets="_SmeltMetal"
|
|
Inputs="@(_SmeltedMetal)" Outputs="$(DeviceSpeficicIntermediateOutputPath)metal\default.metal-ar">
|
|
<ArTool
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
Items="@(_SmeltedMetal)"
|
|
Archive="$(DeviceSpecificIntermediateOutputPath)metal\default.metal-ar">
|
|
</ArTool>
|
|
|
|
<CreateItem Include="$(DeviceSpecificIntermediateOutputPath)metal\default.metal-ar">
|
|
<Output TaskParameter="Include" ItemName="_ForgedMetal" />
|
|
</CreateItem>
|
|
</Target>
|
|
|
|
<Target Name="_TemperMetal" Condition="'$(_CanOutputAppBundle)' == 'true' And '@(_ForgedMetal)' != ''" DependsOnTargets="_ForgeMetal"
|
|
Inputs="@(_ForgedMetal)" Outputs="$(_AppBundlePath)default.metallib">
|
|
<MetalLib
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
Items="@(_ForgedMetal)"
|
|
SdkDevPath="$(_SdkDevPath)"
|
|
OutputLibrary="$(_AppBundlePath)default.metallib">
|
|
</MetalLib>
|
|
|
|
<CreateItem Include="$(_AppBundlePath)default.metallib">
|
|
<Output TaskParameter="Include" ItemName="_NativeLibrary" />
|
|
</CreateItem>
|
|
</Target>
|
|
|
|
<Target Name="_PackLibraryResources" Condition="'$(_CanOutputAppBundle)' == 'false'" DependsOnTargets="_CollectBundleResources">
|
|
<PackLibraryResources
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
Prefix="monotouch"
|
|
BundleResourcesWithLogicalNames="@(_BundleResourceWithLogicalName)">
|
|
<Output TaskParameter="EmbeddedResources" ItemName="EmbeddedResource" />
|
|
</PackLibraryResources>
|
|
</Target>
|
|
|
|
<Target Name="_UnpackLibraryResources" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="ResolveReferences;_CollectBundleResources">
|
|
<UnpackLibraryResources
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
Prefix="monotouch"
|
|
NoOverwrite="@(_BundleResourceWithLogicalName)"
|
|
IntermediateOutputPath="$(DeviceSpecificIntermediateOutputPath)"
|
|
ReferencedLibraries="@(ReferencePath);@(ReferenceDependencyPaths)">
|
|
<Output TaskParameter="BundleResourcesWithLogicalNames" ItemName="_BundleResourceWithLogicalName" />
|
|
</UnpackLibraryResources>
|
|
</Target>
|
|
|
|
<Target Name="_DetectSdkLocations" DependsOnTargets="_ComputeTargetArchitectures">
|
|
<DetectSdkLocations
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
SdkVersion="$(MtouchSdkVersion)"
|
|
TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)"
|
|
TargetArchitectures="$(TargetArchitectures)"
|
|
>
|
|
|
|
<Output TaskParameter="SdkVersion" PropertyName="MtouchSdkVersion" />
|
|
<Output TaskParameter="SdkRoot" PropertyName="_SdkRoot" />
|
|
<Output TaskParameter="SdkBinPath" PropertyName="_SdkBinPath" />
|
|
<Output TaskParameter="SdkDevPath" PropertyName="_SdkDevPath" />
|
|
<Output TaskParameter="SdkUsrPath" PropertyName="_SdkUsrPath" />
|
|
<Output TaskParameter="SdkPlatform" PropertyName="_SdkPlatform" />
|
|
<Output TaskParameter="SdkIsSimulator" PropertyName="_SdkIsSimulator" />
|
|
</DetectSdkLocations>
|
|
</Target>
|
|
|
|
<Target Name="_DetectSigningIdentity" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="_DetectAppManifest;_DetectSdkLocations">
|
|
<DetectSigningIdentity
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
AppBundleName="$(_AppBundleName)"
|
|
AppManifest="$(_AppManifest)"
|
|
Keychain="$(CodesignKeychain)"
|
|
RequireCodeSigning="$(_RequireCodeSigning)"
|
|
RequireProvisioningProfile="$(_RequireProvisioningProfile)"
|
|
SdkIsSimulator="$(_SdkIsSimulator)"
|
|
SdkPlatform="$(_SdkPlatform)"
|
|
ProvisioningProfile="$(CodesignProvision)"
|
|
SigningKey="$(CodesignKey)"
|
|
TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)"
|
|
>
|
|
|
|
<Output TaskParameter="DetectedAppId" PropertyName="_AppIdentifier" />
|
|
<Output TaskParameter="DetectedBundleId" PropertyName="_BundleIdentifier" />
|
|
<Output TaskParameter="DetectedBundleVersion" PropertyName="_BundleVersion" />
|
|
<Output TaskParameter="DetectedCodeSigningKey" PropertyName="_CodeSigningKey" />
|
|
<Output TaskParameter="DetectedCodesignAllocate" PropertyName="_CodesignAllocate" />
|
|
<Output TaskParameter="DetectedDistributionType" PropertyName="_DistributionType" />
|
|
<Output TaskParameter="DetectedProvisioningProfile" PropertyName="_ProvisioningProfile" />
|
|
</DetectSigningIdentity>
|
|
</Target>
|
|
|
|
<Target Name="_GenerateBundleName" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="_ComputeTargetArchitectures">
|
|
<PropertyGroup>
|
|
<AppBundleDir>$(DeviceSpecificOutputPath)$(_AppBundleName).app</AppBundleDir>
|
|
<_AppBundlePath>$(AppBundleDir)\</_AppBundlePath>
|
|
</PropertyGroup>
|
|
</Target>
|
|
|
|
<Target Name="GetAppBundleDir" DependsOnTargets="_GenerateBundleName" Returns="$(AppBundleDir)"/>
|
|
|
|
<PropertyGroup>
|
|
<_IsWatchExtension Condition="'$(_IsWatchExtension)' == ''">false</_IsWatchExtension>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_CompileAppManifest"
|
|
DependsOnTargets="_DetectSdkLocations;_DetectAppManifest;_GenerateBundleName;_DetectSigningIdentity;_PrepareResourceRules;_ResolveWatchAppReferences"
|
|
Inputs="$(_AppManifest);@(_PartialAppManifest)"
|
|
Outputs="$(_AppBundlePath)Info.plist" >
|
|
<CompileAppManifest
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
AppBundleName="$(_AppBundleName)"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
AppManifest="$(_AppManifest)"
|
|
Architecture="$(MtouchArch)"
|
|
AssemblyName="$(AssemblyName)"
|
|
BundleIdentifier="$(_BundleIdentifier)"
|
|
DefaultSdkVersion="$(MtouchSdkVersion)"
|
|
IsAppExtension="$(IsAppExtension)"
|
|
IsWatchApp="$(IsWatchApp)"
|
|
IsWatchExtension="$(_IsWatchExtension)"
|
|
PartialAppManifests="@(_PartialAppManifest)"
|
|
ResourceRules="$(_PreparedResourceRules)"
|
|
TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)"
|
|
SdkPlatform="$(_SdkPlatform)"
|
|
SdkIsSimulator="$(_SdkIsSimulator)"
|
|
>
|
|
</CompileAppManifest>
|
|
|
|
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Directories="$(AppBundleDir).dSYM" />
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Files="$(DeviceSpecificOutputPath)*.bcsymbolmap" />
|
|
</Target>
|
|
|
|
<Target Name="_CompileITunesMetadata" Condition="'$(ComputedPlatform)' == 'iPhone' And '$(IsAppExtension)' == 'false' And '$(IsWatchApp)' == 'false'"
|
|
DependsOnTargets="_DetectSdkLocations;_DetectAppManifest;_GenerateBundleName;_CompileAppManifest"
|
|
Inputs="$(_AppManifest);@(ITunesMetadata)"
|
|
Outputs="$(DeviceSPecificOutputPath)iTunesMetadata.plist" >
|
|
<CompileITunesMetadata
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
ITunesMetadata="@(ITunesMetadata)"
|
|
OutputPath="$(DeviceSpecificOutputPath)iTunesMetadata.plist"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_CollectITunesArtwork" Condition="'$(ComputedPlatform)' == 'iPhone' And '$(IsAppExtension)' == 'false' And '$(IsWatchApp)' == 'false'">
|
|
<CollectITunesArtwork
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
ITunesArtwork="@(ITunesArtwork)"
|
|
>
|
|
<Output TaskParameter="ITunesArtworkWithLogicalNames" ItemName="_ITunesArtworkWithLogicalName"/>
|
|
</CollectITunesArtwork>
|
|
</Target>
|
|
|
|
<Target Name="_CopyITunesArtwork" Condition="'$(ComputedPlatform)' == 'iPhone' And '$(IsAppExtension)' == 'false' And '$(IsWatchApp)' == 'false'"
|
|
DependsOnTargets="_CollectITunesArtwork"
|
|
Inputs="@(_ITunesArtworkWithLogicalName)" Outputs="$(DeviceSpecificOutputPath)%(_ITunesArtworkWithLogicalName.LogicalName)">
|
|
<Copy
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
SourceFiles="@(_ITunesArtworkWithLogicalName)"
|
|
DestinationFiles="$(DeviceSpecificOutputPath)%(_ITunesArtworkWithLogicalName.LogicalName)"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_GetNativeExecutableName" DependsOnTargets="_DetectAppManifest;_GenerateBundleName;_CompileAppManifest">
|
|
<GetNativeExecutableName
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
AppManifest="$(_AppBundlePath)Info.plist"
|
|
>
|
|
<Output TaskParameter="ExecutableName" PropertyName="_ExecutableName" />
|
|
</GetNativeExecutableName>
|
|
|
|
<PropertyGroup>
|
|
<_NativeExecutable>$(_AppBundlePath)$(_ExecutableName)</_NativeExecutable>
|
|
</PropertyGroup>
|
|
</Target>
|
|
|
|
<PropertyGroup>
|
|
<_CompileToNativeDependsOn>
|
|
_DetectAppManifest;
|
|
_DetectSdkLocations;
|
|
_GenerateBundleName;
|
|
_DetectSigningIdentity;
|
|
_CompileEntitlements;
|
|
_CompileAppManifest;
|
|
_ResolveAppExtensionReferences;
|
|
_GetNativeExecutableName
|
|
</_CompileToNativeDependsOn>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_CompileToNative" DependsOnTargets="$(_CompileToNativeDependsOn)"
|
|
Inputs="$(TargetDir)$(TargetFileName)"
|
|
Outputs="$(_NativeExecutable)">
|
|
|
|
<ItemGroup>
|
|
<MTouchReferencePath Include="@(ReferenceCopyLocalPaths)" Condition="'%(Extension)' == '.dll'" />
|
|
</ItemGroup>
|
|
|
|
<MTouch
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
ToolExe="$(MtouchExe)"
|
|
ToolPath="$(MtouchPath)"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
AppManifest="$(_AppBundlePath)Info.plist"
|
|
Architectures="$(TargetArchitectures)"
|
|
Entitlements="$(CodesignEntitlements)"
|
|
ExecutableName="$(_ExecutableName)"
|
|
NativeExecutable="$(_NativeExecutable)"
|
|
CompiledEntitlements="$(DeviceSpecificIntermediateOutputPath)Entitlements.xcent"
|
|
Debug="$(MtouchDebug)"
|
|
EnableGenericValueTypeSharing="$(MtouchEnableGenericValueTypeSharing)"
|
|
ExtraArgs="$(MtouchExtraArgs)"
|
|
FastDev="$(MtouchFastDev)"
|
|
HttpClientHandler="$(MtouchHttpClientHandler)"
|
|
TLSProvider="$(MtouchTlsProvider)"
|
|
I18n="$(MtouchI18n)"
|
|
IntermediateOutputPath="$(DeviceSpecificIntermediateOutputPath)mtouch-cache"
|
|
IsAppExtension="$(IsAppExtension)"
|
|
LinkDescriptions="@(LinkDescription)"
|
|
LinkerDumpDependencies="$(MtouchLinkerDumpDependencies)"
|
|
LinkMode="$(MtouchLink)"
|
|
MainAssembly="$(TargetPath)"
|
|
NativeReferences="@(NativeReference)"
|
|
OutputPath="$(DeviceSpecificOutputPath)"
|
|
Profiling="$(MtouchProfiling)"
|
|
ProjectDir="$(MtouchProjectDirectory)"
|
|
References="@(ReferencePath);@(MTouchReferencePath)"
|
|
SdkRoot="$(_SdkDevPath)"
|
|
SdkIsSimulator="$(_SdkIsSimulator)"
|
|
SdkVersion="$(MtouchSdkVersion)"
|
|
SymbolsList="$(_MtouchSymbolsList)"
|
|
TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)"
|
|
TargetFrameworkVersion="$(TargetFrameworkVersion)"
|
|
UseLlvm="$(MtouchUseLlvm)"
|
|
UseFloat32="$(MtouchFloat32)"
|
|
UseThumb="$(MtouchUseThumb)"
|
|
EnableBitcode="$(MtouchEnableBitcode)"
|
|
AppExtensionReferences="@(_ResolvedAppExtensionReferences)"
|
|
Verbosity="$(MtouchVerbosity)"
|
|
>
|
|
<Output TaskParameter="CompiledArchitectures" PropertyName="_CompiledArchitectures" />
|
|
<Output TaskParameter="NativeLibraries" ItemName="_NativeLibrary" />
|
|
</MTouch>
|
|
|
|
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Directories="$(AppBundleDir).dSYM" />
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Files="$(DeviceSpecificOutputPath)*.bcsymbolmap" />
|
|
</Target>
|
|
|
|
<Target Name="_GenerateFrameworkDebugSymbols" Condition="'$(ComputedPlatform)' == 'iPhone' And '$(IsWatchApp)' != 'true'" DependsOnTargets="_CompileToNative;_CollectFrameworks"
|
|
Inputs="%(_Frameworks.Identity)"
|
|
Outputs="$(AppBundleDir)\..\%(_Frameworks.Filename).framework.dSYM\Contents\Info.plist"
|
|
>
|
|
|
|
<!-- run dsymutil on embedded frameworks -->
|
|
<DSymUtil
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
Architectures=""
|
|
DSymDir="$(AppBundleDir)\..\%(_Frameworks.Filename).framework.dSYM"
|
|
Executable="%(_Frameworks.Identity)"
|
|
ToolExe="$(DSymUtilExe)"
|
|
ToolPath="$(DSymUtilPath)">
|
|
</DSymUtil>
|
|
|
|
<!--- strip embedded frameworks -->
|
|
<SymbolStrip
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '$(MtouchDebug)' != 'true'"
|
|
Executable="%(_Frameworks.Identity)"
|
|
IsFramework="true"
|
|
SymbolFile=""
|
|
>
|
|
</SymbolStrip>
|
|
|
|
<!-- _GenerateDebugSymbols will run spotlight to index the dSYMs -->
|
|
</Target>
|
|
|
|
<Target Name="_ParseExtraMtouchArgs">
|
|
<ParseExtraMtouchArgs
|
|
ExtraArgs="$(MTouchExtraArgs)"
|
|
NoSymbolStrip="$(MtouchNoSymbolStrip)"
|
|
NoDSymUtil="$(MtouchNoDSymUtil)"
|
|
>
|
|
<Output TaskParameter="NoSymbolStrip" PropertyName="MtouchNoSymbolStrip"/>
|
|
<Output TaskParameter="NoDSymUtil" PropertyName="MtouchNoDSymUtil"/>
|
|
</ParseExtraMtouchArgs>
|
|
</Target>
|
|
|
|
<Target Name="_GenerateDebugSymbols" Condition="'$(ComputedPlatform)' == 'iPhone' And '$(IsWatchApp)' == 'false'" DependsOnTargets="_CompileToNative;_ParseExtraMtouchArgs;_GenerateFrameworkDebugSymbols"
|
|
Inputs="$(_NativeExecutable)"
|
|
Outputs="$(AppBundleDir).dSYM\Contents\Info.plist">
|
|
<!--- run dsymutil on the main bundle -->
|
|
<DSymUtil
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '$(MtouchNoDSymUtil)' == 'false'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
Architectures="$(_CompiledArchitectures)"
|
|
DSymDir="$(AppBundleDir).dSYM"
|
|
Executable="$(_NativeExecutable)"
|
|
ToolExe="$(DSymUtilExe)"
|
|
ToolPath="$(DSymUtilPath)"
|
|
>
|
|
</DSymUtil>
|
|
|
|
<!--- strip the main executable -->
|
|
<SymbolStrip
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '$(MtouchDebug)' == 'false' And '$(MtouchNoSymbolStrip)' == 'false'"
|
|
Executable="$(_NativeExecutable)"
|
|
IsFramework="false"
|
|
SymbolFile="$(_MtouchSymbolsList)"
|
|
>
|
|
</SymbolStrip>
|
|
|
|
<!-- make sure spotlight indexes everything we've built -->
|
|
<SpotlightIndexer
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '$(MtouchNoDSymUtil)' == 'false'"
|
|
Input="$(AppBundleDir)/../"
|
|
>
|
|
</SpotlightIndexer>
|
|
</Target>
|
|
|
|
<Target Name="_CreateDebugSettings" Condition="'$(MtouchDebug)' == 'true' And '$(IsWatchApp)' == 'false'"
|
|
DependsOnTargets="_CopyResourcesToBundle"
|
|
Outputs="$(_AppBundlePath)Settings.bundle\Root.plist" >
|
|
<CreateDebugSettings
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
DebuggerPort="$(IOSDebuggerPort)"
|
|
>
|
|
</CreateDebugSettings>
|
|
</Target>
|
|
|
|
<Target Name="_CreateDebugConfiguration" Condition="'$(MtouchDebug)' == 'true' And '$(IsWatchApp)' == 'false'"
|
|
DependsOnTargets="_CopyResourcesToBundle"
|
|
Outputs="$(_AppBundlePath)MonoTouchDebugConfiguration.txt" >
|
|
<CreateDebugConfiguration
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
DebugOverWiFi="$(IOSDebugOverWiFi)"
|
|
DebuggerHosts="$(IOSDebuggerHosts)"
|
|
DebuggerPort="$(IOSDebuggerPort)"
|
|
SdkIsSimulator="$(_SdkIsSimulator)"
|
|
>
|
|
</CreateDebugConfiguration>
|
|
</Target>
|
|
|
|
<Target Name="_CollectPngImages" DependsOnTargets="_CollectBundleResources">
|
|
<CreateItem Include="@(_BundleResourceWithLogicalName)" Condition="'%(_BundleResourceWithLogicalName.Extension)' == '.png' And '%(_BundleResourceWithLogicalName.Optimize)' == 'true'">
|
|
<Output TaskParameter="Include" ItemName="_PngImage" />
|
|
</CreateItem>
|
|
</Target>
|
|
|
|
<Target Name="_CoreOptimizePngImages"
|
|
DependsOnTargets="_CollectPngImages;_DetectSdkLocations"
|
|
Inputs="@(_PngImage)"
|
|
Outputs="@(_PngImage -> '$(DeviceSpecificIntermediateOutputPath)optimized\%(LogicalName)')">
|
|
|
|
<OptimizeImage
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
ToolExe="$(PngCrushExe)"
|
|
ToolPath="$(PngCrushPath)"
|
|
SdkDevPath="$(_SdkDevPath)"
|
|
InputImages="@(_PngImage)"
|
|
OutputImages="@(_PngImage -> '$(DeviceSpecificIntermediateOutputPath)optimized\%(LogicalName)')">
|
|
<Output TaskParameter="OutputImages" ItemName="FileWrites" />
|
|
</OptimizeImage>
|
|
</Target>
|
|
|
|
<Target Name="_AfterCoreOptimizePngImages" Condition="'@(_PngImage)' != ''">
|
|
<ItemGroup>
|
|
<_BundleResourceWithLogicalName Remove="@(_PngImage)" />
|
|
</ItemGroup>
|
|
|
|
<CreateItem Include="$(DeviceSpecificIntermediateOutputPath)optimized\%(_PngImage.LogicalName)" AdditionalMetadata="LogicalName=%(_PngImage.LogicalName);Optimize='false';ResourceTags=%(_PngImage.ResourceTags)">
|
|
<Output TaskParameter="Include" ItemName="_BundleResourceWithLogicalName" />
|
|
</CreateItem>
|
|
</Target>
|
|
|
|
<Target Name="_CollectPropertyLists" DependsOnTargets="_CollectBundleResources">
|
|
<CreateItem Include="@(_BundleResourceWithLogicalName)" Condition="'%(_BundleResourceWithLogicalName.Extension)' == '.plist' And '%(_BundleResourceWithLogicalName.Optimize)' == 'true'">
|
|
<Output TaskParameter="Include" ItemName="_PropertyList" />
|
|
</CreateItem>
|
|
<ItemGroup>
|
|
<FileWrites Include="$(DeviceSpecificIntermediateOutputPath)optimized\%(_PropertyList.LogicalName)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="_CoreOptimizePropertyLists"
|
|
DependsOnTargets="_CollectPropertyLists;_DetectSdkLocations"
|
|
Inputs="@(_PropertyList)"
|
|
Outputs="$(DeviceSpecificIntermediateOutputPath)optimized\%(_PropertyList.LogicalName)"
|
|
>
|
|
|
|
<OptimizePropertyList
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
ToolExe="$(PlUtilExe)"
|
|
ToolPath="$(PlUtilPath)"
|
|
Input="%(_PropertyList.Identity)"
|
|
Output="$(DeviceSpecificIntermediateOutputPath)optimized\%(_PropertyList.LogicalName)">
|
|
</OptimizePropertyList>
|
|
</Target>
|
|
|
|
<Target Name="_AfterCoreOptimizePropertyLists" Condition="'@(_PropertyList)' != ''">
|
|
<ItemGroup>
|
|
<_BundleResourceWithLogicalName Remove="@(_PropertyList)" />
|
|
</ItemGroup>
|
|
|
|
<CreateItem Include="$(DeviceSpecificIntermediateOutputPath)optimized\%(_PropertyList.LogicalName)" AdditionalMetadata="LogicalName=%(_PropertyList.LogicalName);Optimize='false'">
|
|
<Output TaskParameter="Include" ItemName="_BundleResourceWithLogicalName" />
|
|
</CreateItem>
|
|
</Target>
|
|
|
|
<Target Name="_CollectLocalizationFiles" DependsOnTargets="_CollectBundleResources">
|
|
<CreateItem Include="@(_BundleResourceWithLogicalName)" Condition="'%(_BundleResourceWithLogicalName.Extension)' == '.strings' And '%(_BundleResourceWithLogicalName.Optimize)' == 'true'">
|
|
<Output TaskParameter="Include" ItemName="_LocalizationFile" />
|
|
</CreateItem>
|
|
<ItemGroup>
|
|
<FileWrites Include="$(DeviceSpecificIntermediateOutputPath)optimized\%(_LocalizationFile.LogicalName)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="_CoreOptimizeLocalizationFiles"
|
|
DependsOnTargets="_CollectLocalizationFiles;_DetectSdkLocations"
|
|
Inputs="@(_LocalizationFile)"
|
|
Outputs="$(DeviceSpecificIntermediateOutputPath)optimized\%(_LocalizationFile.LogicalName)"
|
|
>
|
|
|
|
<OptimizePropertyList
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
ToolExe="$(PlUtilExe)"
|
|
ToolPath="$(PlUtilPath)"
|
|
Input="%(_LocalizationFile.Identity)"
|
|
Output="$(DeviceSpecificIntermediateOutputPath)optimized\%(_LocalizationFile.LogicalName)">
|
|
</OptimizePropertyList>
|
|
</Target>
|
|
|
|
<Target Name="_AfterCoreOptimizeLocalizationFiles" Condition="'@(_LocalizationFile)' != ''">
|
|
<ItemGroup>
|
|
<_BundleResourceWithLogicalName Remove="@(_LocalizationFile)" />
|
|
</ItemGroup>
|
|
|
|
<CreateItem Include="$(DeviceSpecificIntermediateOutputPath)optimized\%(_LocalizationFile.LogicalName)" AdditionalMetadata="LogicalName=%(_LocalizationFile.LogicalName);Optimize='false'">
|
|
<Output TaskParameter="Include" ItemName="_BundleResourceWithLogicalName" />
|
|
</CreateItem>
|
|
</Target>
|
|
|
|
<Target Name="_CollectColladaAssets">
|
|
<CollectBundleResources
|
|
SessionId="$(BuildSessionId)"
|
|
BundleResources="@(Collada)"
|
|
ProjectDir="$(MSBuildProjectDirectory)"
|
|
ResourcePrefix="$(IPhoneResourcePrefix)">
|
|
<Output TaskParameter="BundleResourcesWithLogicalNames" ItemName="_ColladaAssetWithLogicalName" />
|
|
</CollectBundleResources>
|
|
</Target>
|
|
|
|
<Target Name="_CoreCompileColladaAssets"
|
|
DependsOnTargets="_CollectColladaAssets;_DetectSdkLocations"
|
|
Inputs="@(_ColladaAssetWithLogicalName)"
|
|
Outputs="$(DeviceSpecificIntermediateOutputPath)%(_ColladaAssetWithLogicalName.LogicalName)"
|
|
>
|
|
|
|
<ScnTool
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
ToolExe="$(ScnToolExe)"
|
|
ToolPath="$(ScnToolPath)"
|
|
SdkRoot="$(_SdkRoot)"
|
|
SdkDevPath="$(_SdkDevPath)"
|
|
SdkVersion="$(MtouchSdkVersion)"
|
|
IntermediateOutputPath="$(DeviceSpecificIntermediateOutputPath)"
|
|
InputScene="%(_ColladaAssetWithLogicalName.Identity)"
|
|
OutputScene="$(DeviceSpecificIntermediateOutputPath)%(_ColladaAssetWithLogicalName.LogicalName)">
|
|
</ScnTool>
|
|
|
|
<CreateItem Include="$(DeviceSpecificIntermediateOutputPath)%(_ColladaAssetWithLogicalName.LogicalName)" AdditionalMetadata="LogicalName=%(_ColladaAssetWithLogicalName.LogicalName);Optimize='False'">
|
|
<Output TaskParameter="Include" ItemName="_BundleResourceWithLogicalName" />
|
|
</CreateItem>
|
|
</Target>
|
|
|
|
<Target Name="_CompileImageAssets" DependsOnTargets="_DetectAppManifest;_DetectSdkLocations;_BeforeCoreCompileImageAssets;_ReadCompileImageAssets;_CoreCompileImageAssets" />
|
|
<!-- Cache files for incremental build support -->
|
|
<PropertyGroup>
|
|
<_ACTool_PartialAppManifestCache>$(DeviceSpecificIntermediateOutputPath)actool\_PartialAppManifest.items</_ACTool_PartialAppManifestCache>
|
|
<_ACTool_BundleResourceCache>$(DeviceSpecificIntermediateOutputPath)actool\_BundleResourceWithLogicalName.items</_ACTool_BundleResourceCache>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_BeforeCoreCompileImageAssets"
|
|
Inputs="@(ImageAsset);$(_AppManifest)"
|
|
Outputs="$(_ACTool_PartialAppManifestCache);$(_ACTool_BundleResourceCache)">
|
|
|
|
<!-- If any ImageAsset or AppManifest is newer than the generated items list, we delete them so that the _CoreCompileImageAssets
|
|
target runs again and updates those lists for the next run
|
|
-->
|
|
<Delete Files="$(_ACTool_PartialAppManifestCache);$(_ACTool_BundleResourceCache)" />
|
|
<RemoveDir Directories="$(DeviceSpecificIntermediateOutputPath)actool" />
|
|
</Target>
|
|
|
|
<Target Name="_ReadCompileImageAssets"
|
|
DependsOnTargets="_BeforeCoreCompileImageAssets">
|
|
|
|
<!-- If _BeforeCoreCompileImageAssets did not delete the generated items lists from _CoreCompileImageAsset, then we read them
|
|
since that target won't run and we need the output items that are cached in those files, which includes full metadata -->
|
|
<ReadItemsFromFile File="$(_ACTool_PartialAppManifestCache)" Condition="Exists('$(_ACTool_PartialAppManifestCache)')">
|
|
<Output TaskParameter="Items" ItemName="_PartialAppManifest" />
|
|
</ReadItemsFromFile>
|
|
<ReadItemsFromFile File="$(_ACTool_BundleResourceCache)" Condition="Exists('$(_ACTool_BundleResourceCache)')">
|
|
<Output TaskParameter="Items" ItemName="_BundleResourceWithLogicalName" />
|
|
</ReadItemsFromFile>
|
|
</Target>
|
|
|
|
<Target Name="_CoreCompileImageAssets"
|
|
Inputs="@(ImageAsset);$(_AppManifest)"
|
|
Outputs="$(_ACTool_PartialAppManifestCache);$(_ACTool_BundleResourceCache)"
|
|
DependsOnTargets="_DetectAppManifest;_DetectSdkLocations;_BeforeCoreCompileImageAssets">
|
|
|
|
<ACTool
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '@(ImageAsset)' != ''"
|
|
ToolExe="$(ACToolExe)"
|
|
ToolPath="$(ACToolPath)"
|
|
AppManifest="$(_AppManifest)"
|
|
DeviceModel="$(TargetDeviceModel)"
|
|
DeviceOSVersion="$(TargetDeviceOSVersion)"
|
|
ImageAssets="@(ImageAsset)"
|
|
OptimizePNGs="$(OptimizePNGs)"
|
|
OutputPath="$(DeviceSpecificOutputPath)"
|
|
IntermediateOutputPath="$(DeviceSpecificIntermediateOutputPath)"
|
|
IsWatchApp="$(IsWatchApp)"
|
|
ProjectDir="$(MSBuildProjectDirectory)"
|
|
ResourcePrefix="$(IPhoneResourcePrefix)"
|
|
SdkDevPath="$(_SdkDevPath)"
|
|
SdkBinPath="$(_SdkBinPath)"
|
|
SdkUsrPath="$(_SdkUsrPath)"
|
|
SdkPlatform="$(_SdkPlatform)"
|
|
SdkVersion="$(MtouchSdkVersion)">
|
|
<Output TaskParameter="PartialAppManifest" ItemName="_PartialAppManifest" />
|
|
<Output TaskParameter="BundleResources" ItemName="_BundleResourceWithLogicalName" />
|
|
|
|
<!-- Local items to be persisted to items files -->
|
|
<Output TaskParameter="PartialAppManifest" ItemName="_ACTool_PartialAppManifest" />
|
|
<Output TaskParameter="BundleResources" ItemName="_ACTool_BundleResources" />
|
|
</ACTool>
|
|
|
|
<!-- Cache the generated outputs items for incremental build support -->
|
|
<WriteItemsToFile Items="@(_ACTool_PartialAppManifest)" ItemName="_PartialAppManifest" File="$(_ACTool_PartialAppManifestCache)" Overwrite="true" IncludeMetadata="true" />
|
|
<WriteItemsToFile Items="@(_ACTool_BundleResources)" ItemName="_BundleResourceWithLogicalName" File="$(_ACTool_BundleResourceCache)" Overwrite="true" IncludeMetadata="true" />
|
|
<ItemGroup>
|
|
<FileWrites Include="$(_ACTool_PartialAppManifestCache);$(_ACTool_BundleResourceCache)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="_CompileSceneKitAssets" DependsOnTargets="_DetectAppManifest;_DetectSdkLocations;_BeforeCoreCompileSceneKitAssets;_ReadCoreCompileSceneKitAssets;_CoreCompileSceneKitAssets" />
|
|
<!-- Cache file for incremental build support -->
|
|
<PropertyGroup>
|
|
<_SceneKitCache>$(DeviceSpecificIntermediateOutputPath)copySceneKitAssets\_BundleResourceWithLogicalName.items</_SceneKitCache>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_BeforeCoreCompileSceneKitAssets"
|
|
Inputs="@(SceneKitAsset)"
|
|
Outputs="$(_SceneKitCache)">
|
|
|
|
<!-- If any SceneKitAsset is newer than the generated items list, we delete them so that the _CoreCompileSceneKitAssets
|
|
target runs again and updates those lists for the next run
|
|
-->
|
|
<Delete Files="$(_SceneKitCache)" />
|
|
</Target>
|
|
|
|
<Target Name="_ReadCoreCompileSceneKitAssets"
|
|
DependsOnTargets="_BeforeCoreCompileSceneKitAssets">
|
|
|
|
<!-- If _BeforeCoreCompileImageAssets did not delete the generated items lists from _CoreCompileImageAsset, then we read them
|
|
since that target won't run and we need to the output items that are cached in those files which includes full metadata -->
|
|
<ReadItemsFromFile File="$(_SceneKitCache)" Condition="Exists('$(_SceneKitCache)')">
|
|
<Output TaskParameter="Items" ItemName="_BundleResourceWithLogicalName" />
|
|
</ReadItemsFromFile>
|
|
</Target>
|
|
|
|
<Target Name="_CoreCompileSceneKitAssets"
|
|
Inputs="@(SceneKitAsset)"
|
|
Outputs="$(_SceneKitCache)"
|
|
DependsOnTargets="_BeforeCoreCompileSceneKitAssets">
|
|
|
|
<CompileSceneKitAssets
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
ToolExe="$(CopySceneKitAssetsExe)"
|
|
ToolPath="$(CopySceneKitAssetsPath)"
|
|
SceneKitAssets="@(SceneKitAsset)"
|
|
IntermediateOutputPath="$(DeviceSpecificIntermediateOutputPath)"
|
|
ProjectDir="$(MSBuildProjectDirectory)"
|
|
ResourcePrefix="$(IPhoneResourcePrefix)"
|
|
SdkDevPath="$(_SdkDevPath)"
|
|
SdkRoot="$(_SdkRoot)"
|
|
SdkVersion="$(MtouchSdkVersion)">
|
|
<Output TaskParameter="BundleResources" ItemName="_BundleResourceWithLogicalName" />
|
|
|
|
<!-- Local items to be persisted to items files -->
|
|
<Output TaskParameter="BundleResources" ItemName="_SceneKitAssets_BundleResources" />
|
|
</CompileSceneKitAssets>
|
|
|
|
<WriteItemsToFile Items="@(_SceneKitAssets_BundleResources)" ItemName="_BundleResourceWithLogicalName" File="$(_SceneKitCache)" Overwrite="true" IncludeMetadata="true" />
|
|
<ItemGroup>
|
|
<FileWrites Include="$(_SceneKitCache)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="_CompileInterfaceDefinitions" DependsOnTargets="_DetectAppManifest;_DetectSdkLocations;_BeforeCoreCompileInterfaceDefinitions;_ReadCoreCompileInterfaceDefinitions;_CoreCompileInterfaceDefinitions" />
|
|
<!-- Cache file for incremental build support -->
|
|
<PropertyGroup>
|
|
<_IBToolCache>$(DeviceSpecificIntermediateOutputPath)ibtool\_BundleResourceWithLogicalName.items</_IBToolCache>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_BeforeCoreCompileInterfaceDefinitions"
|
|
Inputs="@(InterfaceDefinition)"
|
|
Outputs="$(_IBToolCache)">
|
|
|
|
<!-- If any InterfaceDefinition is newer than the generated items list, we delete them so that the _CoreCompileInterfaceDefinitions
|
|
target runs again and updates those lists for the next run
|
|
-->
|
|
<Delete Files="$(_IBToolCache)" />
|
|
</Target>
|
|
|
|
<Target Name="_ReadCoreCompileInterfaceDefinitions" DependsOnTargets="_BeforeCoreCompileInterfaceDefinitions">
|
|
<!-- If _BeforeCoreCompileInterfaceDefinitions did not delete the generated items lists from _CoreCompileInterfaceDefinitions, then we read them
|
|
since that target won't run and we need to the output items that are cached in those files which includes full metadata -->
|
|
<ReadItemsFromFile File="$(_IBToolCache)" Condition="Exists('$(_IBToolCache)')">
|
|
<Output TaskParameter="Items" ItemName="_BundleResourceWithLogicalName" />
|
|
</ReadItemsFromFile>
|
|
</Target>
|
|
|
|
<Target Name="_CoreCompileInterfaceDefinitions"
|
|
Inputs="@(InterfaceDefinition)"
|
|
Outputs="$(_IBToolCache)"
|
|
DependsOnTargets="_BeforeCoreCompileInterfaceDefinitions">
|
|
|
|
<IBTool
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
ToolExe="$(IBToolExe)"
|
|
ToolPath="$(IBToolPath)"
|
|
AppManifest="$(_AppManifest)"
|
|
InterfaceDefinitions="@(InterfaceDefinition)"
|
|
IntermediateOutputPath="$(DeviceSpecificIntermediateOutputPath)"
|
|
IsWatchApp="$(IsWatchApp)"
|
|
IsWatch2App="$(IsWatch2App)"
|
|
ProjectDir="$(MSBuildProjectDirectory)"
|
|
ResourcePrefix="$(IPhoneResourcePrefix)"
|
|
SdkDevPath="$(_SdkDevPath)"
|
|
SdkBinPath="$(_SdkBinPath)"
|
|
SdkUsrPath="$(_SdkUsrPath)"
|
|
SdkRoot="$(_SdkRoot)"
|
|
SdkPlatform="$(_SdkPlatform)"
|
|
SdkVersion="$(MtouchSdkVersion)">
|
|
<Output TaskParameter="BundleResources" ItemName="_BundleResourceWithLogicalName" />
|
|
|
|
<!-- Local items to be persisted to items files -->
|
|
<Output TaskParameter="BundleResources" ItemName="_IBTool_BundleResources" />
|
|
</IBTool>
|
|
|
|
<!-- Cached the generated outputs items for incremental build support -->
|
|
<WriteItemsToFile Items="@(_IBTool_BundleResources)" ItemName="_BundleResourceWithLogicalName" File="$(_IBToolCache)" Overwrite="true" IncludeMetadata="true" />
|
|
<ItemGroup>
|
|
<FileWrites Include="$(_IBToolCache)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="_CompileTextureAtlases" DependsOnTargets="_DetectAppManifest;_DetectSdkLocations;_BeforeCompileTextureAtlases;_ReadCoreCompileTextureAtlases;_CoreCompileTextureAtlases" />
|
|
<!-- Cache file for incremental build support -->
|
|
<PropertyGroup>
|
|
<_TextureAtlasCache>$(DeviceSpecificIntermediateOutputPath)atlas\_BundleResourceWithLogicalName.items</_TextureAtlasCache>
|
|
</PropertyGroup>
|
|
|
|
<Target Name="_BeforeCompileTextureAtlases"
|
|
Inputs="@(AtlasTexture)"
|
|
Outputs="$(_TextureAtlasCache)">
|
|
|
|
<!-- If any AtlasTexture is newer than the generated items list, we delete them so that the _CoreCompileTextureAtlases
|
|
target runs again and updates those lists for the next run
|
|
-->
|
|
<Delete Files="$(_TextureAtlasCache)" />
|
|
</Target>
|
|
|
|
<Target Name="_ReadCoreCompileTextureAtlases"
|
|
DependsOnTargets="_BeforeCompileTextureAtlases">
|
|
|
|
<!-- If _BeforeCompileTextureAtlases did not delete the generated items lists from _CoreCompileTextureAtlases, then we read them
|
|
since that target won't run and we need to the output items that are cached in those files which includes full metadata -->
|
|
<ReadItemsFromFile File="$(_TextureAtlasCache)" Condition="Exists('$(_TextureAtlasCache)')">
|
|
<Output TaskParameter="Items" ItemName="_BundleResourceWithLogicalName" />
|
|
</ReadItemsFromFile>
|
|
</Target>
|
|
|
|
<Target Name="_CoreCompileTextureAtlases"
|
|
Inputs="@(AtlasTexture)"
|
|
Outputs="$(_TextureAtlasCache)"
|
|
DependsOnTargets="_BeforeCompileTextureAtlases">
|
|
|
|
<TextureAtlas
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
ToolExe="$(TextureAtlasExe)"
|
|
ToolPath="$(TextureAtlasPath)"
|
|
AtlasTextures="@(AtlasTexture)"
|
|
IntermediateOutputPath="$(DeviceSpecificIntermediateOutputPath)"
|
|
ProjectDir="$(MSBuildProjectDirectory)"
|
|
ResourcePrefix="$(IPhoneResourcePrefix)"
|
|
SdkDevPath="$(_SdkDevPath)"
|
|
SdkBinPath="$(_SdkBinPath)"
|
|
SdkUsrPath="$(_SdkUsrPath)">
|
|
<Output TaskParameter="BundleResources" ItemName="_BundleResourceWithLogicalName" />
|
|
|
|
<!-- Local items to be persisted to items files -->
|
|
<Output TaskParameter="BundleResources" ItemName="_TextureAtlas_BundleResources" />
|
|
</TextureAtlas>
|
|
|
|
<!-- Cached the generated outputs items for incremental build support -->
|
|
<WriteItemsToFile Items="@(_TextureAtlas_BundleResources)" ItemName="_BundleResourceWithLogicalName" File="$(_TextureAtlasCache)" Overwrite="true" IncludeMetadata="true" />
|
|
<ItemGroup>
|
|
<FileWrites Include="$(_TextureAtlasCache)" />
|
|
</ItemGroup>
|
|
</Target>
|
|
|
|
<Target Name="_CreatePkgInfo" Condition="'$(IsAppExtension)' == 'false'" DependsOnTargets="_GenerateBundleName" Outputs="$(_AppBundlePath)PkgInfo">
|
|
<CreatePkgInfo SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" OutputPath="$(_AppBundlePath)PkgInfo" />
|
|
</Target>
|
|
|
|
<Target Name="_EmbedMobileProvision" DependsOnTargets="_GenerateBundleName;_DetectSigningIdentity"
|
|
Outputs="$(_AppBundlePath)embedded.mobileprovision">
|
|
<EmbedMobileProvision
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
ProvisioningProfile="$(_ProvisioningProfile)"
|
|
>
|
|
</EmbedMobileProvision>
|
|
</Target>
|
|
|
|
<Target Name="_CompileEntitlements" Condition="'$(_RequireCodeSigning)' == 'true' Or '$(CodesignEntitlements)' != ''" DependsOnTargets="_DetectSdkLocations;_GenerateBundleName;_DetectSigningIdentity"
|
|
Outputs="$(DeviceSpecificIntermediateOutputPath)Entitlements.xcent">
|
|
<CompileEntitlements
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
AppIdentifier="$(_AppIdentifier)"
|
|
BundleIdentifier="$(_BundleIdentifier)"
|
|
Entitlements="$(CodesignEntitlements)"
|
|
CompiledEntitlements="$(DeviceSpecificIntermediateOutputPath)Entitlements.xcent"
|
|
IsAppExtension="$(IsAppExtension)"
|
|
ProvisioningProfile="$(_ProvisioningProfile)"
|
|
SdkIsSimulator="$(_SdkIsSimulator)"
|
|
SdkVersion="$(MtouchSdkVersion)"
|
|
TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)"
|
|
>
|
|
</CompileEntitlements>
|
|
</Target>
|
|
|
|
<Target Name="_PrepareResourceRules" DependsOnTargets="_DetectSdkLocations;_GenerateBundleName">
|
|
<PrepareResourceRules
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '$(CodesignResourceRules)' != '' And '$(ComputedPlatform)' == 'iPhone'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
ResourceRules="$(CodesignResourceRules)"
|
|
SdkVersion="$(MtouchSdkVersion)"
|
|
>
|
|
<Output TaskParameter="PreparedResourceRules" PropertyName="_PreparedResourceRules"/>
|
|
</PrepareResourceRules>
|
|
</Target>
|
|
|
|
<Target Name="_SeparateAppExtensionReferences" BeforeTargets="AssignProjectConfiguration" Condition="'$(IsAppExtension)' == 'false'">
|
|
<CreateItem Include="@(ProjectReference)" PreserveExistingMetadata="true" Condition="'%(Identity)' != '' And '%(ProjectReference.IsAppExtension)' == 'true'">
|
|
<Output ItemName="_AppExtensionReference" TaskParameter="Include" />
|
|
</CreateItem>
|
|
|
|
<ItemGroup>
|
|
<ProjectReference Remove="@(_AppExtensionReference)" />
|
|
</ItemGroup>
|
|
|
|
<!--<Warning Text="_SeparateAppExtensionReferences: @(_AppExtensionReference)"/>-->
|
|
</Target>
|
|
|
|
<Target Name="_AssignAppExtensionConfiguration" Condition="'@(_AppExtensionReference)' != ''">
|
|
<!-- assign configs if building a solution file -->
|
|
<AssignProjectConfiguration
|
|
ProjectReferences = "@(_AppExtensionReference)"
|
|
SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
|
|
Condition="'$(CurrentSolutionConfigurationContents)' != ''">
|
|
|
|
<Output TaskParameter="AssignedProjects" ItemName="_AppExtensionReferenceWithConfiguration"/>
|
|
</AssignProjectConfiguration>
|
|
|
|
<!-- Else, just -->
|
|
<CreateItem Include="@(_AppExtensionReference)"
|
|
Condition="'$(CurrentSolutionConfigurationContents)' == ''">
|
|
<Output TaskParameter="Include" ItemName="_AppExtensionReferenceWithConfiguration"/>
|
|
</CreateItem>
|
|
|
|
<!--<Warning Text="_AssignAppExtensionConfiguration: @(_AppExtensionReferenceWithConfiguration)"/>-->
|
|
</Target>
|
|
|
|
<!-- Split iOS App Extension projects into 2 lists
|
|
_AppExtensionReferenceWithConfigurationExistent: Projects existent on disk
|
|
_AppExtensionReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
|
|
<Target Name="_SplitAppExtensionReferencesByExistent" DependsOnTargets="_AssignAppExtensionConfiguration">
|
|
<CreateItem Include="@(_AppExtensionReferenceWithConfiguration)" Condition="'@(_AppExtensionReferenceWithConfiguration)' != ''">
|
|
<Output TaskParameter="Include" ItemName="_AppExtensionReferenceWithConfigurationExistent"
|
|
Condition="Exists ('%(_AppExtensionReferenceWithConfiguration.Identity)')"/>
|
|
|
|
<Output TaskParameter="Include" ItemName="_AppExtensionReferenceWithConfigurationNonExistent"
|
|
Condition="!Exists ('%(_AppExtensionReferenceWithConfiguration.Identity)')"/>
|
|
</CreateItem>
|
|
|
|
<!--<Warning Text="_SplitAppExtensionReferencesByExistent: @(_AppExtensionReferenceWithConfigurationExistent)"/>-->
|
|
</Target>
|
|
|
|
<Target Name="_ResolveAppExtensionReferences" DependsOnTargets="_SplitAppExtensionReferencesByExistent">
|
|
<!-- If building from a .sln.proj or from IDE, then referenced projects have already
|
|
been built, so just get the target paths -->
|
|
<MSBuild
|
|
Projects="@(_AppExtensionReferenceWithConfigurationExistent)"
|
|
Targets="GetBundleTargetPath"
|
|
Properties="%(_AppExtensionReferenceWithConfigurationExistent.SetConfiguration); %(_AppExtensionReferenceWithConfigurationExistent.SetPlatform)"
|
|
Condition="'@(_AppExtensionReferenceWithConfigurationExistent)' != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
|
|
|
|
<Output TaskParameter="TargetOutputs" ItemName="_ResolvedAppExtensionReferences" Condition="'%(_AppExtensionReferenceWithConfigurationExistent.ReferenceOutputAssembly)' != 'false'"/>
|
|
</MSBuild>
|
|
|
|
<!-- Building a project directly, build the referenced projects also -->
|
|
<MSBuild
|
|
Projects="@(_AppExtensionReferenceWithConfigurationExistent)"
|
|
Properties="%(_AppExtensionReferenceWithConfigurationExistent.SetConfiguration); %(_AppExtensionReferenceWithConfigurationExistent.SetPlatform)"
|
|
Condition="'@(_AppExtensionReferenceWithConfigurationExistent)' != '' and '$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true' ">
|
|
|
|
<Output TaskParameter="TargetOutputs" ItemName="_ResolvedAppExtensionReferences" Condition="'%(_AppExtensionReferenceWithConfigurationExistent.ReferenceOutputAssembly)' != 'false'"/>
|
|
</MSBuild>
|
|
|
|
<Warning Text="Referenced iOS App Extension Project %(_AppExtensionReferenceWithConfigurationNonExistent.Identity) not found, ignoring."
|
|
Condition="'@(_AppExtensionReferenceWithConfigurationNonExistent)' != ''"/>
|
|
</Target>
|
|
|
|
<Target Name="_DetectBundleIdentifier" DependsOnTargets="_DetectAppManifest">
|
|
<DetectBundleIdentifier
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
AppBundleName="$(_AppBundleName)"
|
|
AppManifest="$(_AppManifest)"
|
|
SdkIsSimulator="$(_SdkIsSimulator)"
|
|
>
|
|
|
|
<Output TaskParameter="DetectedBundleId" PropertyName="_BundleIdentifier" />
|
|
</DetectBundleIdentifier>
|
|
</Target>
|
|
|
|
<Target Name="_CopyAppExtensionsToBundle" Condition="'$(IsAppExtension)' == 'false'" DependsOnTargets="_ResolveAppExtensionReferences">
|
|
<MakeDir SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)' And '@(_ResolvedAppExtensionReferences)' != ''" Directories="$(_AppBundlePath)PlugIns" />
|
|
|
|
<Ditto
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '@(_ResolvedAppExtensionReferences)' != '' And '%(_ResolvedAppExtensionReferences.Identity)' != ''"
|
|
ToolExe="$(DittoExe)"
|
|
ToolPath="$(DittoPath)"
|
|
Source="@(_ResolvedAppExtensionReferences)"
|
|
Destination="$(_AppBundlePath)PlugIns\%(_ResolvedAppExtensionReferences.FileName)%(_ResolvedAppExtensionReferences.Extension)"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_ValidateAppBundle" Condition="'$(IsAppExtension)' == 'false' And '$(IsWatchApp)' == 'false'" DependsOnTargets="_DetectSdkLocations">
|
|
<ValidateAppBundleTask
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
SessionId="$(BuildSessionId)"
|
|
AppBundlePath="$(_AppBundlePath)"
|
|
SdkIsSimulator="$(_SdkIsSimulator)"
|
|
TargetFrameworkIdentifier="$(TargetFrameworkIdentifier)"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_SeparateWatchAppReferences" BeforeTargets="AssignProjectConfiguration" Condition="'$(IsAppExtension)' == 'true' Or '$(OutputType)' == 'Exe'">
|
|
<CreateItem Include="@(ProjectReference)" PreserveExistingMetadata="true" Condition="'%(Identity)' != '' And '%(ProjectReference.IsWatchApp)' == 'true'">
|
|
<Output ItemName="_WatchAppReference" TaskParameter="Include" />
|
|
</CreateItem>
|
|
|
|
<ItemGroup>
|
|
<ProjectReference Remove="@(_WatchAppReference)" />
|
|
</ItemGroup>
|
|
|
|
<!--<Warning Text="_SeparateWatchAppReferences: '@(_WatchAppReference)'"/>-->
|
|
</Target>
|
|
|
|
<Target Name="_AssignWatchAppConfiguration" Condition="'@(_WatchAppReference)' != ''">
|
|
<!-- assign configs if building a solution file -->
|
|
<AssignProjectConfiguration
|
|
ProjectReferences = "@(_WatchAppReference)"
|
|
SolutionConfigurationContents = "$(CurrentSolutionConfigurationContents)"
|
|
Condition="'$(CurrentSolutionConfigurationContents)' != ''">
|
|
|
|
<Output TaskParameter="AssignedProjects" ItemName="_WatchAppReferenceWithConfiguration"/>
|
|
</AssignProjectConfiguration>
|
|
|
|
<!-- Else, just -->
|
|
<CreateItem Include="@(_WatchAppReference)"
|
|
Condition="'$(CurrentSolutionConfigurationContents)' == ''">
|
|
<Output TaskParameter="Include" ItemName="_WatchAppReferenceWithConfiguration"/>
|
|
</CreateItem>
|
|
|
|
<!--<Warning Text="_AssignWatchAppConfiguration: '@(_WatchAppReferenceWithConfiguration)'"/>-->
|
|
</Target>
|
|
|
|
<!-- Split iOS Watch App projects into 2 lists
|
|
_WatchAppReferenceWithConfigurationExistent: Projects existent on disk
|
|
_WatchAppReferenceWithConfigurationNonExistent: Projects non-existent on disk -->
|
|
<Target Name="_SplitWatchAppReferencesByExistent" DependsOnTargets="_AssignWatchAppConfiguration">
|
|
<CreateItem Include="@(_WatchAppReferenceWithConfiguration)" Condition="'@(_WatchAppReferenceWithConfiguration)' != ''">
|
|
<Output TaskParameter="Include" ItemName="_WatchAppReferenceWithConfigurationExistent"
|
|
Condition="Exists ('%(_WatchAppReferenceWithConfiguration.Identity)')"/>
|
|
|
|
<Output TaskParameter="Include" ItemName="_WatchAppReferenceWithConfigurationNonExistent"
|
|
Condition="!Exists ('%(_WatchAppReferenceWithConfiguration.Identity)')"/>
|
|
</CreateItem>
|
|
|
|
<!--<Warning Text="_SplitWatchAppReferencesByExistent: '@(_WatchAppReferenceWithConfigurationExistent)'"/>-->
|
|
</Target>
|
|
|
|
<Target Name="_ResolveWatchAppReferences" DependsOnTargets="_SplitWatchAppReferencesByExistent">
|
|
<!-- If building from a .sln.proj or from IDE, then referenced projects have already
|
|
been built, so just get the target paths -->
|
|
<MSBuild
|
|
Projects="@(_WatchAppReferenceWithConfigurationExistent)"
|
|
Targets="GetBundleTargetPath"
|
|
Properties="%(_WatchAppReferenceWithConfigurationExistent.SetConfiguration); %(_WatchAppReferenceWithConfigurationExistent.SetPlatform)"
|
|
Condition="'@(_WatchAppReferenceWithConfigurationExistent)' != '' and ('$(BuildingSolutionFile)' == 'true' or '$(BuildingInsideVisualStudio)' == 'true')">
|
|
|
|
<Output TaskParameter="TargetOutputs" ItemName="_ResolvedWatchAppReferences" />
|
|
</MSBuild>
|
|
|
|
<!-- Building a project directly, build the referenced projects also -->
|
|
<MSBuild
|
|
Projects="@(_WatchAppReferenceWithConfigurationExistent)"
|
|
Properties="%(_WatchAppReferenceWithConfigurationExistent.SetConfiguration); %(_WatchAppReferenceWithConfigurationExistent.SetPlatform)"
|
|
Condition="'@(_WatchAppReferenceWithConfigurationExistent)' != '' and '$(BuildingSolutionFile)' != 'true' and '$(BuildingInsideVisualStudio)' != 'true' ">
|
|
|
|
<Output TaskParameter="TargetOutputs" ItemName="_ResolvedWatchAppReferences" />
|
|
</MSBuild>
|
|
|
|
<Warning Text="Referenced iOS Watch App Project %(_WatchAppReferenceWithConfigurationNonExistent.Identity) not found, ignoring."
|
|
Condition="'@(_WatchAppReferenceWithConfigurationNonExistent)' != ''"/>
|
|
|
|
<PropertyGroup>
|
|
<_IsWatchExtension Condition="'@(_ResolvedWatchAppReferences)' != ''">true</_IsWatchExtension>
|
|
</PropertyGroup>
|
|
</Target>
|
|
|
|
<Target Name="_CopyWatchAppsToBundle" Condition="'$(IsAppExtension)' == 'true'" DependsOnTargets="_ResolveWatchAppReferences">
|
|
<Ditto
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '@(_ResolvedWatchAppReferences)' != '' And '%(_ResolvedWatchAppReferences.Identity)' != ''"
|
|
ToolExe="$(DittoExe)"
|
|
ToolPath="$(DittoPath)"
|
|
Source="@(_ResolvedWatchAppReferences)"
|
|
Destination="$(_AppBundlePath)%(_ResolvedWatchAppReferences.FileName)%(_ResolvedWatchAppReferences.Extension)"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_CopyWatch2AppsToBundle" Condition="'$(OutputType)' == 'Exe'" DependsOnTargets="_ResolveWatchAppReferences">
|
|
<Ditto
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '@(_ResolvedWatchAppReferences)' != '' And '%(_ResolvedWatchAppReferences.Identity)' != ''"
|
|
ToolExe="$(DittoExe)"
|
|
ToolPath="$(DittoPath)"
|
|
Source="@(_ResolvedWatchAppReferences)"
|
|
Destination="$(_AppBundlePath)Watch\%(_ResolvedWatchAppReferences.FileName)%(_ResolvedWatchAppReferences.Extension)"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_CollectFrameworks" Condition="'$(_IsContainerApp)' == 'true'" DependsOnTargets="_CompileToNative">
|
|
<CollectFrameworks
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
AppBundlePath="$(_AppBundlePath)"
|
|
>
|
|
|
|
<Output TaskParameter="Frameworks" ItemName="_Frameworks"/>
|
|
</CollectFrameworks>
|
|
</Target>
|
|
|
|
<Target Name="_CodesignNativeLibraries" Condition="'$(_RequireCodeSigning)' == 'true'" DependsOnTargets="_DetectSigningIdentity;">
|
|
<Codesign
|
|
Condition="'$(MtouchTargetsEnabled)' And '@(_NativeLibrary)' != ''"
|
|
SessionId="$(BuildSessionId)"
|
|
ToolExe="$(CodesignExe)"
|
|
ToolPath="$(CodesignPath)"
|
|
CodesignAllocate="$(_CodesignAllocate)"
|
|
Keychain="$(CodesignKeychain)"
|
|
Resource="%(_NativeLibrary.Identity)"
|
|
SigningKey="$(_CodeSigningKey)"
|
|
ExtraArgs="$(CodesignExtraArgs)"
|
|
>
|
|
</Codesign>
|
|
</Target>
|
|
|
|
<Target Name="_CodesignFrameworks" Condition="'$(_RequireCodeSigning)' == 'true'" DependsOnTargets="_DetectSigningIdentity;_CollectFrameworks">
|
|
<Codesign
|
|
Condition="'$(MtouchTargetsEnabled)' And '@(_Frameworks)' != ''"
|
|
SessionId="$(BuildSessionId)"
|
|
ToolExe="$(CodesignExe)"
|
|
ToolPath="$(CodesignPath)"
|
|
CodesignAllocate="$(_CodesignAllocate)"
|
|
Keychain="$(CodesignKeychain)"
|
|
Resource="%(_Frameworks.Identity)"
|
|
SigningKey="$(_CodeSigningKey)"
|
|
ExtraArgs="$(CodesignExtraArgs)"
|
|
>
|
|
</Codesign>
|
|
</Target>
|
|
|
|
<Target Name="_CodesignAppBundle" Condition="'$(_RequireCodeSigning)' == 'true'" DependsOnTargets="$(_CodesignAppBundleDependsOn)">
|
|
<Codesign
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
ToolExe="$(CodesignExe)"
|
|
ToolPath="$(CodesignPath)"
|
|
CodesignAllocate="$(_CodesignAllocate)"
|
|
Keychain="$(CodesignKeychain)"
|
|
Entitlements="$(DeviceSpecificIntermediateOutputPath)Entitlements.xcent"
|
|
ResourceRules="$(_PreparedResourceRules)"
|
|
Resource="$(AppBundleDir)"
|
|
SigningKey="$(_CodeSigningKey)"
|
|
ExtraArgs="$(CodesignExtraArgs)"
|
|
>
|
|
</Codesign>
|
|
|
|
<Touch
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And Exists ('$(AppBundleDir).dSYM\Contents\Info.plist')"
|
|
Files="$(AppBundleDir).dSYM\Contents\Info.plist"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_CodesignVerify" Condition="'$(_RequireCodeSigning)' == 'true'" DependsOnTargets="_CodesignAppBundle">
|
|
<CodesignVerify
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
ToolExe="$(CodesignExe)"
|
|
ToolPath="$(CodesignPath)"
|
|
CodesignAllocate="$(_CodesignAllocate)"
|
|
Resource="$(AppBundleDir)"
|
|
>
|
|
</CodesignVerify>
|
|
</Target>
|
|
|
|
<Target Name="_CoreCreateIpa" Condition="'$(BuildIpa)' == 'true'" DependsOnTargets="$(Codesign)">
|
|
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Directories="$(DeviceSpecificIntermediateOutputPath)ipa" />
|
|
|
|
<MakeDir SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Directories="$(DeviceSpecificIntermediateOutputPath)ipa\Payload" />
|
|
|
|
<PropertyGroup>
|
|
<_IpaAppBundleDir>$(DeviceSpecificIntermediateOutputPath)ipa\Payload\$(_AppBundleName).app\</_IpaAppBundleDir>
|
|
</PropertyGroup>
|
|
|
|
<!-- Clone the compiled app bundle into the IPA's Payload directory... -->
|
|
<Ditto
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
ToolExe="$(DittoExe)"
|
|
ToolPath="$(DittoPath)"
|
|
Source="$(AppBundleDir)"
|
|
Destination="$(_IpaAppBundleDir)"
|
|
/>
|
|
|
|
<FindWatchAppBundle
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '@(_ResolvedAppExtensionReferences)' != ''"
|
|
AppExtensionReferences="@(_ResolvedAppExtensionReferences)"
|
|
>
|
|
<Output TaskParameter="WatchAppBundle" PropertyName="_WatchAppBundle"/>
|
|
</FindWatchAppBundle>
|
|
|
|
<Copy
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '$(_WatchAppBundle)' != ''"
|
|
SourceFiles="$(_WatchAppBundle)\_WatchKitStub\WK"
|
|
DestinationFolder="$(DeviceSpecificIntermediateOutputPath)ipa\WatchKitSupport"
|
|
/>
|
|
|
|
<CollectITunesSourceFiles
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
OutputPath="$(DeviceSpecificOutputPath)"
|
|
>
|
|
<Output TaskParameter="ITunesSourceFiles" ItemName="_ITunesSourceFile"/>
|
|
</CollectITunesSourceFiles>
|
|
|
|
<Copy
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '@(_ITunesSourceFile)' != ''"
|
|
SourceFiles="@(_ITunesSourceFile)"
|
|
DestinationFolder="$(DeviceSpecificIntermediateOutputPath)ipa"
|
|
/>
|
|
|
|
<ItemGroup>
|
|
<_IpaPackageSource Include="$(DeviceSpecificIntermediateOutputPath)ipa\Payload" />
|
|
<_IpaPackageSource Include="$(DeviceSpecificIntermediateOutputPath)ipa\WatchKitSupport" Condition="Exists ('$(DeviceSpecificIntermediateOutputPath)ipa\WatchKitSupport\WK')" />
|
|
<_IpaPackageSource Include="$(DeviceSpecificIntermediateOutputPath)ipa\iTunesMetadata.plist" Condition="'$(IpaIncludeArtwork)' == 'true' And Exists ('$(DeviceSpecificIntermediateOutputPath)ipa\iTunesMetadata.plist')" />
|
|
<_IpaPackageSource Include="$(DeviceSpecificIntermediateOutputPath)ipa\iTunesArtwork@2x" Condition="'$(IpaIncludeArtwork)' == 'true' And Exists ('$(DeviceSpecificIntermediateOutputPath)ipa\iTunesArtwork@2x')" />
|
|
<_IpaPackageSource Include="$(DeviceSpecificIntermediateOutputPath)ipa\iTunesArtwork" Condition="'$(IpaIncludeArtwork)' == 'true' And Exists ('$(DeviceSpecificIntermediateOutputPath)ipa\iTunesArtwork')" />
|
|
</ItemGroup>
|
|
|
|
<PropertyGroup>
|
|
<_IpaOutputPath>$(DeviceSpecificOutputPath)$(_AppBundleName) $([System.DateTime]::Now.ToString('yyyy-MM-dd HH-mm-ss'))</_IpaOutputPath>
|
|
<_IpaOutputDir>$(_IpaOutputPath)\</_IpaOutputDir>
|
|
<IpaPackageName Condition="'$(IpaPackageName)' != '' And !$(IpaPackageName.EndsWith ('.ipa', StringComparison.OrdinalIgnoreCase))">$(IpaPackageName).ipa</IpaPackageName>
|
|
<IpaPackageName Condition="'$(IpaPackageName)' == ''">$(_AppBundleName).ipa</IpaPackageName>
|
|
|
|
<IpaPackagePath>$(_IpaOutputDir)$(IpaPackageName)</IpaPackagePath>
|
|
</PropertyGroup>
|
|
</Target>
|
|
|
|
<Target Name="_PackageOnDemandResources" Condition="'$(BuildIpa)' == 'true' And ('$(_DistributionType)' == 'AppStore' Or '$(_DistributionType)' == 'AdHoc')" >
|
|
<PropertyGroup>
|
|
<_PayloadDir>$(DeviceSpecificIntermediateOutputPath)ipa\Payload\</_PayloadDir>
|
|
<_IpaAppBundleDir>$(_PayloadDir)$(_AppBundleName).app\</_IpaAppBundleDir>
|
|
|
|
<_IntermediateODRDir Condition="'$(_DistributionType)' == 'AppStore'">$(_PayloadDir)OnDemandResources\</_IntermediateODRDir>
|
|
<_IntermediateODRDir Condition="'$(_DistributionType)' == 'AdHoc' And '$(EmbedOnDemandResources)' == 'true'">$(_IpaAppBundleDir)OnDemandResources\</_IntermediateODRDir>
|
|
<_IntermediateODRDir Condition="'$(_DistributionType)' == 'AdHoc' And '$(EmbedOnDemandResources)' == 'false'">$(DeviceSpecificIntermediateOutputPath)OnDemandResourcesPackage\OnDemandResources\</_IntermediateODRDir>
|
|
|
|
<OnDemandResourcesUrl Condition="'$(_DistributionType)' == 'AdHoc' And '$(EmbedOnDemandResources)' == 'true'">OnDemandResources</OnDemandResourcesUrl>
|
|
|
|
<IsStreamable>false</IsStreamable>
|
|
<IsStreamable Condition="$(EmbedOnDemandResources) == 'false'">true</IsStreamable>
|
|
</PropertyGroup>
|
|
|
|
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Directories="$(_IntermediateODRDir)" />
|
|
<MakeDir SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)' And Exists('$(DeviceSpecificOutputPath)OnDemandResources\')" Directories="$(_IntermediateODRDir)" />
|
|
|
|
<!-- Clone the compiled assetpack bundle... -->
|
|
<Ditto
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And Exists('$(DeviceSpecificOutputPath)OnDemandResources\')"
|
|
ToolExe="$(DittoExe)"
|
|
ToolPath="$(DittoPath)"
|
|
Source="$(DeviceSpecificOutputPath)OnDemandResources\"
|
|
Destination="$(_IntermediateODRDir)"
|
|
/>
|
|
|
|
<!-- Look for the *.assetpack folders in the ODR folder -->
|
|
<CollectAssetPacks
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And Exists('$(_IntermediateODRDir)')"
|
|
OnDemandResourcesPath="$(_IntermediateODRDir)"
|
|
>
|
|
|
|
<Output TaskParameter="AssetPacks" ItemName="_AssetPack"/>
|
|
</CollectAssetPacks>
|
|
|
|
<ItemGroup>
|
|
<_AssetPack>
|
|
<_DirectoryName>$([System.IO.Path]::GetDirectoryName('%(Identity)'))</_DirectoryName>
|
|
</_AssetPack>
|
|
<_AssetPack>
|
|
<DirectoryName>$([System.IO.Path]::GetFileName('%(_AssetPack._DirectoryName)'))</DirectoryName>
|
|
</_AssetPack>
|
|
</ItemGroup>
|
|
|
|
<!-- Sign assetpacks -->
|
|
<Codesign
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '@(_AssetPack)' != '' And '$(_DistributionType)' == 'AppStore'"
|
|
ToolExe="$(CodesignExe)"
|
|
ToolPath="$(CodesignPath)"
|
|
CodesignAllocate="$(_CodesignAllocate)"
|
|
Keychain="$(CodesignKeychain)"
|
|
Entitlements="$(DeviceSpecificIntermediateOutputPath)Entitlements.xcent"
|
|
Resource="%(_AssetPack.Identity)"
|
|
SigningKey="$(_CodeSigningKey)"
|
|
ExtraArgs="$(CodesignExtraArgs)"
|
|
>
|
|
</Codesign>
|
|
|
|
<WriteAssetPackManifest
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '$(_DistributionType)' == 'AdHoc' And Exists('$(_IntermediateODRDir)')"
|
|
TemplatePath="$(_IpaAppBundleDir)AssetPackManifestTemplate.plist"
|
|
OutputFile="$(_IpaAppBundleDir)AssetPackManifest.plist"
|
|
OnDemandResourceUrl="$(OnDemandResourcesUrl)"
|
|
IsStreamable="$(IsStreamable)"
|
|
/>
|
|
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)' And '$(_DistributionType)' == 'AdHoc' And Exists('$(_IntermediateODRDir)')" Files="$(_IpaAppBundleDir)AssetPackManifestTemplate.plist" />
|
|
|
|
<!-- Re-sign app bundle if anything changed inside of it -->
|
|
<Codesign
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '$(_DistributionType)' == 'AdHoc' And Exists('$(_IntermediateODRDir)')"
|
|
ToolExe="$(CodesignExe)"
|
|
ToolPath="$(CodesignPath)"
|
|
CodesignAllocate="$(_CodesignAllocate)"
|
|
Keychain="$(CodesignKeychain)"
|
|
Entitlements="$(DeviceSpecificIntermediateOutputPath)Entitlements.xcent"
|
|
ResourceRules="$(_PreparedResourceRules)"
|
|
Resource="$(_IpaAppBundleDir)"
|
|
SigningKey="$(_CodeSigningKey)"
|
|
ExtraArgs="$(CodesignExtraArgs)"
|
|
/>
|
|
|
|
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)' And '$(EmbedOnDemandResources)' == 'false'" Directories="$(_IpaOutputDir)OnDemandResources\" />
|
|
<MakeDir SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)' And '$(EmbedOnDemandResources)' == 'false'" Directories="$(_IpaOutputDir)OnDemandResources\" />
|
|
|
|
<CreateAssetPack
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '$(EmbedOnDemandResources)' == 'false'"
|
|
ToolExe="$(ZipExe)"
|
|
ToolPath="$(ZipPath)"
|
|
Source="%(_AssetPack.Identity)"
|
|
OutputFile="$(_IpaOutputDir)OnDemandResources\%(_AssetPack.DirectoryName)"
|
|
/>
|
|
|
|
<Copy
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '$(EmbedOnDemandResources)' == 'false'"
|
|
SourceFiles="$(_IpaAppBundleDir)AssetPackManifest.plist"
|
|
DestinationFolder="$(_IpaOutputDir)OnDemandResources\"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_ZipIpa" Condition="'$(BuildIpa)' == 'true'">
|
|
<MakeDir SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Directories="$(_IpaOutputPath)" />
|
|
<Delete SessionId="$(BuildSessionId)" Condition="'$(MtouchTargetsEnabled)'" Files="$(_IpaOutputDir)$(IpaPackageName)" />
|
|
|
|
<Zip
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
ToolExe="$(ZipExe)"
|
|
ToolPath="$(ZipPath)"
|
|
Recursive="true"
|
|
Symlinks="true"
|
|
Sources="@(_IpaPackageSource)"
|
|
OutputFile="$(IpaPackagePath)"
|
|
WorkingDirectory="$(DeviceSpecificIntermediateOutputPath)ipa"
|
|
/>
|
|
</Target>
|
|
|
|
<Target Name="_CoreArchive" Condition="'$(ArchiveOnBuild)' == 'true'" DependsOnTargets="$(Codesign)">
|
|
<CollectITunesSourceFiles
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)' And '@(_ITunesSourceFile)' == ''"
|
|
OutputPath="$(DeviceSpecificOutputPath)"
|
|
>
|
|
<Output TaskParameter="ITunesSourceFiles" PropertyName="_ITunesSourceFile"/>
|
|
</CollectITunesSourceFiles>
|
|
|
|
<Archive
|
|
SessionId="$(BuildSessionId)"
|
|
Condition="'$(MtouchTargetsEnabled)'"
|
|
AppBundleDir="$(AppBundleDir)"
|
|
AppExtensionReferences="@(_ResolvedAppExtensionReferences)"
|
|
ITunesSourceFiles="@(_ITunesSourceFile)"
|
|
OutputPath="$(DeviceSpecificOutputPath)"
|
|
ProjectName="$(MSBuildProjectName)"
|
|
SolutionPath="$(SolutionPath)"
|
|
SigningKey="$(_CodeSigningKey)"
|
|
>
|
|
<Output TaskParameter="ArchiveDir" PropertyName="ArchiveDir"/>
|
|
</Archive>
|
|
</Target>
|
|
|
|
<Import Project="$(MSBuildThisFileDirectory)$(MSBuildThisFileName).After.targets"
|
|
Condition="Exists('$(MSBuildThisFileDirectory)$(MSBuildThisFileName).After.targets')"/>
|
|
|
|
</Project>
|