Curious:
<- Task RemObjects.EBuild.Elements.ElementsPrepareIslandPlatform finished for Moshine.UI.MapKit, Island.Darwin.iOS, took 0.4443s (0.444s).
D: Target-specific Settings, after prepare
D: - <Debice = True [Target: Island.Darwin.iOS]>
D: - <FinalBinaryName = libMoshine.UI.MapKit.a [Target: Island.Darwin.iOS]>
D: - <FinalOutputFolderOverride-Simulator = ../iOS Simulator [Target: Island.Darwin.iOS]>
D: - <Simulator = True [Target: Island.Darwin.iOS]>
...
<- Task PrepareToffeePlatform finished for Moshine.UI.MapKit, Toffee.iOS, took 0.3825s (0.382s).
D: Target-specific Settings, after prepare
D: - <FinalBinaryName = libMoshine.UI.MapKit.a [Target: Toffee.iOS]>
D: - <FinalOutputFolderOverride-Simulator = ../iOS Simulator [Target: Toffee.iOS]>
Darwin.iOS gets Device and Simulator set, Toffee.iOS does not…
this happens in this method:
method CloneRelevantSettingsFromProjectForRemoteProjectReference(aOtherProject: InstanceType); override;
begin
for each t in EnabledTargets do begin
for each ot in aOtherProject.EnabledTargets do begin
if TargetsMatch(t, ot) then begin
t.Setting["Device"] := "True";
t.Setting["Simulator"] := "True";
if ot.SettingIsTrue["SupportMacCatalyst"] then
t.Setting["Mac"] := "True";
MergeAllArchtectures(t, ot);
end;
end;
end;
end;
wheree TargetsMatch is
method TargetsMatch(t, ot: EBuildTarget): Boolean; private;
begin
result := (t.Mode = ot.Mode) and ((t.SubMode = ot.SubMode) or (t.SDK = ot.SDK));
if (t.Mode = "Island") and (t.SubMode = "Darwin") and (ot.Mode = "Toffee") and (t.Setting["SDK"]:Value = ot.SubMode) and ot.SettingIsTrue["UseLegacyToffeeMode"] then
result := true;
if (ot.Mode = "Island") and (ot.SubMode = "Darwin") and (t.Mode = "Toffee") and (ot.Setting["SDK"]:Value = t.SubMode) and t.SettingIsTrue["UseLegacyToffeeMode"] then
result := true;
end;
I presume for some reason this fails for you for these two projects, but not the other two, but somehow not for me here, which of course makes this hard to debug…
lets compare what these look like before this happens
-> Task RemObjects.EBuild.Elements.ElementsPreparePlatforms started for Moshine.Foundation, Toffee.iOS.
Preparing target 'Toffee.iOS' (platform 'Toffee').
D: Target-specific Settings, before prepare
D: - <Architecture = all [Target: Toffee.iOS]>
D: - <DefaultUses = Foundation;RemObjects.Elements.Linq [Target: Toffee.iOS]>
D: - <Device = True [Target: Toffee.iOS]>
D: - <GenerateBitcode = True [Target: Toffee.iOS]>
D: - <ImpliedConditionalDefines = TOFFEEV1 [Target: Toffee.iOS]>
D: - <Mode = Toffee [Target: Toffee.iOS]>
D: - <ModeNameResolveOverride = ToffeeV1 [Target: Toffee.iOS]>
D: - <SDK = iOS [Target: Toffee.iOS]>
D: - <Simulator = True [Target: Toffee.iOS]>
D: - <SimulatorArchitecture = all [Target: Toffee.iOS]>
D: - <SupportMacCatalyst = False [Target: Toffee.iOS]>
vs
Preparing target 'Toffee.iOS' (platform 'Toffee').
D: Target-specific Settings, before prepare
D: - <DefaultUses = Foundation;RemObjects.Elements.Linq [Target: Toffee.iOS]>
D: - <ImpliedConditionalDefines = TOFFEEV1 [Target: Toffee.iOS]>
D: - <Mode = Toffee [Target: Toffee.iOS]>
D: - <ModeNameResolveOverride = ToffeeV1 [Target: Toffee.iOS]>
D: - <SDK = iOS [Target: Toffee.iOS]>
D: - <SupportMacCatalyst = False [Target: Toffee.iOS]>
vs
-> Task RemObjects.EBuild.Elements.ElementsPreparePlatforms started for EverythingApp, Toffee-iOS.
Preparing target 'Toffee-iOS' (platform 'Toffee').
D: Target-specific Settings, before prepare
D: - <BinaryName = EverythingApp [Target: Toffee-iOS]>
D: - <ImpliedConditionalDefines = TOFFEEV1 [Target: Toffee-iOS]>
D: - <Mode = Toffee [Target: Toffee-iOS]>
D: - <ModeNameResolveOverride = ToffeeV1 [Target: Toffee-iOS]>
D: - <SubMode = iOS [Target: Toffee-iOS]>
this could be it. EverythingApp has a SubMode set bu no SDK, and the references have SDK set, but no submode (which is fine, per se, the two settings are interchangeable, for ToffeeV1). But if thats the case, why don’t both fail? to pirate the Simulator setting? And why doesn’t it fail here for me too?
I checked and Foundation doesn’t have Simulator=true pre-set in the project, either…
adding sue logging to TargetsMatch, here i get
CloneRelevantSettingsFromProject EverythingApp to Moshine.UI.MapKit
TargetsMatch? Moshine.UI.MapKit/Island.Darwin.iOS vs EverythingApp/Toffee-iOS : True
CloneRelevantSettingsFrom Target Toffee-iOS to Island.Darwin.iOS
TargetsMatch? Moshine.UI.MapKit/Toffee.iOS vs EverythingApp/Toffee-iOS : True
CloneRelevantSettingsFrom Target Toffee-iOS to Toffee.iOS
and indeed locally I get
-> Task RemObjects.EBuild.Elements.ElementsPreparePlatforms started for Moshine.UI.MapKit, Toffee.iOS.
Preparing target 'Toffee.iOS' (platform 'Toffee').
D: Target-specific Settings, before prepare
D: - <DefaultUses = Foundation;RemObjects.Elements.Linq [Target: Toffee.iOS]>
D: - <Device = True [Target: Toffee.iOS]>
D: - <ImpliedConditionalDefines = TOFFEEV1 [Target: Toffee.iOS]>
D: - <Mode = Toffee [Target: Toffee.iOS]>
D: - <ModeNameResolveOverride = ToffeeV1 [Target: Toffee.iOS]>
D: - <SDK = iOS [Target: Toffee.iOS]>
D: - <Simulator = True [Target: Toffee.iOS]>
D: - <SupportMacCatalyst = False [Target: Toffee.iOS]>
best I can think right now is to send you a build with this and some more logging in TaregstMatch and see what it says for you?