From 310f742df490c9cc18589d318ef3928c8daae69f Mon Sep 17 00:00:00 2001
From: Bartosz Kosiorek <bartosz.kosiorek@tomtom.com>
Date: Thu, 12 Nov 2015 08:44:07 +0100
Subject: [PATCH] Fix iOS Framework directory structure (#15833)

---
 Source/cmOSXBundleGenerator.cxx | 127 +++++++++++++++++++++-------------------
 1 file changed, 67 insertions(+), 60 deletions(-)

diff --git a/Source/cmOSXBundleGenerator.cxx b/Source/cmOSXBundleGenerator.cxx
index 3c4aa00..38ff0de 100644
--- a/Source/cmOSXBundleGenerator.cxx
+++ b/Source/cmOSXBundleGenerator.cxx
@@ -85,80 +85,87 @@ void cmOSXBundleGenerator::CreateFramework(
 
   std::string frameworkVersion = this->GT->GetFrameworkVersion();
 
-  // Configure the Info.plist file into the Resources directory.
-  this->MacContentFolders->insert("Resources");
+  // Configure the Info.plist file
   std::string plist = newoutpath;
-  plist += "/Resources/Info.plist";
+  if(!this->Makefile->PlatformIsAppleIos())
+    {
+    // Configure the Info.plist file into the Resources directory.
+    this->MacContentFolders->insert("Resources");
+    plist += "/Resources";
+    }
+  plist += "/Info.plist";
   std::string name = cmSystemTools::GetFilenameName(targetName);
   this->LocalGenerator->GenerateFrameworkInfoPList(this->GT,
                                                    name,
                                                    plist.c_str());
 
-  // TODO: Use the cmMakefileTargetGenerator::ExtraFiles vector to
-  // drive rules to create these files at build time.
-  std::string oldName;
-  std::string newName;
-
-
-  // Make foo.framework/Versions
-  std::string versions = contentdir;
-  versions += "Versions";
-  cmSystemTools::MakeDirectory(versions.c_str());
-
-  // Make foo.framework/Versions/version
-  cmSystemTools::MakeDirectory(newoutpath.c_str());
-
-  // Current -> version
-  oldName = frameworkVersion;
-  newName = versions;
-  newName += "/Current";
-  cmSystemTools::RemoveFile(newName);
-  cmSystemTools::CreateSymlink(oldName, newName);
-  this->Makefile->AddCMakeOutputFile(newName);
-
-  // foo -> Versions/Current/foo
-  oldName = "Versions/Current/";
-  oldName += name;
-  newName = contentdir;
-  newName += name;
-  cmSystemTools::RemoveFile(newName);
-  cmSystemTools::CreateSymlink(oldName, newName);
-  this->Makefile->AddCMakeOutputFile(newName);
-
-  // Resources -> Versions/Current/Resources
-  if(this->MacContentFolders->find("Resources") !=
-     this->MacContentFolders->end())
-    {
-    oldName = "Versions/Current/Resources";
-    newName = contentdir;
-    newName += "Resources";
-    cmSystemTools::RemoveFile(newName);
-    cmSystemTools::CreateSymlink(oldName, newName);
-    this->Makefile->AddCMakeOutputFile(newName);
-    }
-
-  // Headers -> Versions/Current/Headers
-  if(this->MacContentFolders->find("Headers") !=
-     this->MacContentFolders->end())
+  if(!this->Makefile->PlatformIsAppleIos())
     {
-    oldName = "Versions/Current/Headers";
-    newName = contentdir;
-    newName += "Headers";
+    // TODO: Use the cmMakefileTargetGenerator::ExtraFiles vector to
+    // drive rules to create these files at build time.
+    std::string oldName;
+    std::string newName;
+    
+    // Make foo.framework/Versions
+    std::string versions = contentdir;
+    versions += "Versions";
+    cmSystemTools::MakeDirectory(versions.c_str());
+    
+    // Make foo.framework/Versions/version
+    cmSystemTools::MakeDirectory(newoutpath.c_str());
+    
+    // Current -> version
+    oldName = frameworkVersion;
+    newName = versions;
+    newName += "/Current";
     cmSystemTools::RemoveFile(newName);
     cmSystemTools::CreateSymlink(oldName, newName);
     this->Makefile->AddCMakeOutputFile(newName);
-    }
-
-  // PrivateHeaders -> Versions/Current/PrivateHeaders
-  if(this->MacContentFolders->find("PrivateHeaders") !=
-     this->MacContentFolders->end())
-    {
-    oldName = "Versions/Current/PrivateHeaders";
+    
+    // foo -> Versions/Current/foo
+    oldName = "Versions/Current/";
+    oldName += name;
     newName = contentdir;
-    newName += "PrivateHeaders";
+    newName += name;
     cmSystemTools::RemoveFile(newName);
     cmSystemTools::CreateSymlink(oldName, newName);
     this->Makefile->AddCMakeOutputFile(newName);
+    
+    // Resources -> Versions/Current/Resources
+    if(this->MacContentFolders->find("Resources") !=
+       this->MacContentFolders->end())
+      {
+      oldName = "Versions/Current/Resources";
+      newName = contentdir;
+      newName += "Resources";
+      cmSystemTools::RemoveFile(newName);
+      cmSystemTools::CreateSymlink(oldName, newName);
+      this->Makefile->AddCMakeOutputFile(newName);
+      }
+    
+    // Headers -> Versions/Current/Headers
+    if(this->MacContentFolders->find("Headers") !=
+       this->MacContentFolders->end())
+      {
+      oldName = "Versions/Current/Headers";
+      newName = contentdir;
+      newName += "Headers";
+      cmSystemTools::RemoveFile(newName);
+      cmSystemTools::CreateSymlink(oldName, newName);
+      this->Makefile->AddCMakeOutputFile(newName);
+      }
+    
+    // PrivateHeaders -> Versions/Current/PrivateHeaders
+    if(this->MacContentFolders->find("PrivateHeaders") !=
+       this->MacContentFolders->end())
+      {
+      oldName = "Versions/Current/PrivateHeaders";
+      newName = contentdir;
+      newName += "PrivateHeaders";
+      cmSystemTools::RemoveFile(newName);
+      cmSystemTools::CreateSymlink(oldName, newName);
+      this->Makefile->AddCMakeOutputFile(newName);
+      }
     }
 }
 
-- 
2.4.9 (Apple Git-60)

