Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
77 changes: 72 additions & 5 deletions msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets
Original file line number Diff line number Diff line change
Expand Up @@ -302,11 +302,13 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved.
_EmbedMobileProvision;
_CodesignNativeLibraries;
_CodesignFrameworks;
_CodesignAppExtensions;
</_CodesignAppBundleDependsOn>

<_CoreCodesignDependsOn>
_CodesignNativeLibraries;
_CodesignFrameworks;
_CodesignAppExtensions;
_CodesignAppBundle;
_CodesignVerify;
</_CoreCodesignDependsOn>
Expand Down Expand Up @@ -342,6 +344,7 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved.

<Target Name="_CleanAppBundle" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="_GenerateBundleName">
<RemoveDir SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true'" Directories="$(_AppBundlePath)" />
<Delete SessionId="$(BuildSessionId)" Condition="'$(IsMacEnabled)' == 'true' And '$(IsAppExtension)' == 'true'" Files="$(AppBundleDir)\..\codesign.items" />
</Target>

<Target Name="_CleanUploaded" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="_GenerateBundleName">
Expand Down Expand Up @@ -1530,7 +1533,7 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved.
<!-- Note: Always codesign *.dylibs even for Simulator builds. We use $(_CanOutputAppBundle) because dylibs can exist in app extensions as well. -->
<Target Name="_CodesignNativeLibraries" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="_DetectSigningIdentity">
<Codesign
Condition="'$(IsMacEnabled)' == 'true' And '@(_NativeLibrary)' != '' And '$(_CodeSigningKey)' != ''"
Condition="'$(IsMacEnabled)' == 'true' And '@(_NativeLibrary)' != '' And '$(_CodeSigningKey)' != '' And '$(IsAppExtension)' == 'false'"
SessionId="$(BuildSessionId)"
ToolExe="$(CodesignExe)"
ToolPath="$(CodesignPath)"
Expand All @@ -1546,7 +1549,7 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved.

<Target Name="_CodesignFrameworks" Condition="'$(_CanOutputAppBundle)' == 'true'" DependsOnTargets="_DetectSigningIdentity;_CollectFrameworks">
<Codesign
Condition="'$(IsMacEnabled)' == 'true' And '@(_Frameworks)' != '' And '$(_CodeSigningKey)' != ''"
Condition="'$(IsMacEnabled)' == 'true' And '@(_Frameworks)' != '' And '$(_CodeSigningKey)' != '' And '$(IsAppExtension)' == 'false'"
SessionId="$(BuildSessionId)"
ToolExe="$(CodesignExe)"
ToolPath="$(CodesignPath)"
Expand All @@ -1560,10 +1563,74 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved.
</Codesign>
</Target>

<Target Name="_CodesignAppBundle" Condition="'$(_RequireCodeSigning)' == 'true'" DependsOnTargets="$(_CodesignAppBundleDependsOn)">
<Target Name="_ReadAppExtensionCodesignProperties" DependsOnTargets="_CopyAppExtensionsToBundle">
<ReadItemsFromFile File="%(_ResolvedAppExtensionReferences.Identity)\..\codesign.items" Condition="Exists('%(_ResolvedAppExtensionReferences.Identity)\..\codesign.items')">
<Output TaskParameter="Items" ItemName="_AppExtensionCodesignProperties" />
</ReadItemsFromFile>
</Target>

<Target Name="_CodesignAppExtensions" Condition="'$(_RequireCodeSigning)' == 'true' And '$(IsAppExtension)' == 'false' And ('$(OutputType)' == 'Exe' Or '$(IsWatchApp)' == 'true')" DependsOnTargets="_DetectSigningIdentity;_ReadAppExtensionCodesignProperties">
<Codesign
SessionId="$(BuildSessionId)"
Condition="'$(IsMacEnabled)' == 'true' And '@(_AppExtensionCodesignProperties)' != ''"
ToolExe="$(CodesignExe)"
ToolPath="$(CodesignPath)"
CodesignAllocate="%(_AppExtensionCodesignProperties.CodesignAllocate)"
DisableTimestamp="%(_AppExtensionCodesignProperties.DisableTimestamp)"
Keychain="%(_AppExtensionCodesignProperties.Keychain)"
Entitlements="%(_AppExtensionCodesignProperties.Entitlements)"
ResourceRules="%(_AppExtensionCodesignProperties.ResourceRules)"
Resource="$(_AppBundlePath)PlugIns\%(_AppExtensionCodesignProperties.Identity)"
SigningKey="%(_AppExtensionCodesignProperties.SigningKey)"
ExtraArgs="%(_AppExtensionCodesignProperties.ExtraArgs)"
>
</Codesign>

<Touch
SessionId="$(BuildSessionId)"
Condition="'$(IsMacEnabled)' == 'true' And '$(_RequireCodeSigning)' == 'true' And Exists ('$(AppBundleDir)\..\%(_AppExtensionCodesignProperties.Identity).dSYM\Contents\Info.plist')"
Files="$(AppBundleDir)\..\%(_AppExtensionCodesignProperties.Identity).dSYM\Contents\Info.plist"
/>
</Target>

<Target Name="_PrepareCodesignAppBundle" Condition="'$(_RequireCodeSigning)' == 'true' And '$(IsAppExtension)' == 'true'">
<!-- For App Extensions, we delay running codesign until it has been copied into the main app bundle... -->

<PropertyGroup>
<_AppBundleFileName>$([System.IO.Path]::GetFileName('$(AppBundleDir)'))</_AppBundleFileName>

<_EntitlementsFullPath>$([System.IO.Path]::GetFullPath('$(DeviceSpecificIntermediateOutputPath)Entitlements.xcent'))</_EntitlementsFullPath>

<_ResourceRulesFullPath></_ResourceRulesFullPath>
<_ResourceRulesFullPath Condition="'$(_PreparedResourceRules)' != ''">$([System.IO.Path]::GetFullPath('$(_PreparedResourceRules)'))</_ResourceRulesFullPath>
</PropertyGroup>

<ItemGroup>
<_AppExtensionCodesignProperties Include="$(_AppBundleFileName)">
<CodesignAllocate>$(_CodesignAllocate)</CodesignAllocate>
<DisableTimestamp>$(_SdkIsSimulator)</DisableTimestamp>
<Entitlements>$(_EntitlementsFullPath)</Entitlements>
<ResourceRules>$(_ResourceRulesFullPath)</ResourceRules>
<Keychain>$(CodesignKeychain)</Keychain>
<SigningKey>$(_CodeSigningKey)</SigningKey>
<ExtraArgs>$(CodesignExtraArgs)</ExtraArgs>
</_AppExtensionCodesignProperties>
</ItemGroup>

<WriteItemsToFile
Condition="'$(IsMacEnabled)' == 'true'"
Items="@(_AppExtensionCodesignProperties)"
ItemName="_AppExtensionCodesignProperties"
File="$(AppBundleDir)\..\codesign.items"
IncludeMetadata="true"
Overwrite="true"
/>
</Target>

<Target Name="_CodesignAppBundle" Condition="'$(_RequireCodeSigning)' == 'true'" DependsOnTargets="$(_CodesignAppBundleDependsOn);_PrepareCodesignAppBundle">
<Codesign
SessionId="$(BuildSessionId)"
Condition="'$(IsMacEnabled)' == 'true' And '$(IsAppExtension)' == 'false'"
ToolExe="$(CodesignExe)"
ToolPath="$(CodesignPath)"
CodesignAllocate="$(_CodesignAllocate)"
Expand All @@ -1579,12 +1646,12 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved.

<Touch
SessionId="$(BuildSessionId)"
Condition="'$(IsMacEnabled)' == 'true' And '$(_RequireCodeSigning)' == 'true' And Exists ('$(AppBundleDir).dSYM\Contents\Info.plist')"
Condition="'$(IsMacEnabled)' == 'true' And '$(_RequireCodeSigning)' == 'true' And '$(IsAppExtension)' == 'false' And Exists ('$(AppBundleDir).dSYM\Contents\Info.plist')"
Files="$(AppBundleDir).dSYM\Contents\Info.plist"
/>
</Target>

<Target Name="_CodesignVerify" Condition="'$(_RequireCodeSigning)' == 'true'" DependsOnTargets="_CodesignAppBundle">
<Target Name="_CodesignVerify" Condition="'$(_RequireCodeSigning)' == 'true' And '$(IsAppExtension)' == 'false'" DependsOnTargets="_CodesignAppBundle">
<CodesignVerify
SessionId="$(BuildSessionId)"
Condition="'$(IsMacEnabled)' == 'true'"
Expand Down