[cmake-commits] andy committed cmCPackOSXX11Generator.cxx 1.1 1.2 cmCPackOSXX11Generator.h 1.2 1.3

cmake-commits at cmake.org cmake-commits at cmake.org
Tue Feb 13 14:12:58 EST 2007


Update of /cvsroot/CMake/CMake/Source/CPack
In directory public:/mounts/ram/cvs-serv28662

Modified Files:
	cmCPackOSXX11Generator.cxx cmCPackOSXX11Generator.h 
Log Message:
ENH: More work on the packaging. Add Applicaitons, add icons, etc


Index: cmCPackOSXX11Generator.cxx
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CPack/cmCPackOSXX11Generator.cxx,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- cmCPackOSXX11Generator.cxx	10 Jan 2007 20:30:26 -0000	1.1
+++ cmCPackOSXX11Generator.cxx	13 Feb 2007 19:12:56 -0000	1.2
@@ -75,7 +75,16 @@
       }
     }
 
+  // Disk image directories
+  std::string diskImageDirectory = toplevel;
+  std::string diskImageBackgroundImageDir
+    = diskImageDirectory + "/.background";
+
+
+  // App bundle directories
   std::string packageDirFileName = toplevel;
+  packageDirFileName += "/";
+  packageDirFileName += this->GetOption("CPACK_PACKAGE_FILE_NAME");
   packageDirFileName += ".app";
   std::string contentsDirectory = packageDirFileName + "/Contents";
   std::string resourcesDirectory = contentsDirectory + "/Resources";
@@ -84,7 +93,33 @@
   const char* dir = resourcesDirectory.c_str();
   const char* appdir = appDirectory.c_str();
   const char* contDir = contentsDirectory.c_str();
+  const char* iconFile = this->GetOption("CPACK_PACKAGE_ICON");
+  if ( iconFile )
+    {
+    std::string iconFileName = cmsys::SystemTools::GetFilenameName(
+      iconFile);
+    if ( !cmSystemTools::FileExists(iconFile) )
+      {
+      cmCPackLogger(cmCPackLog::LOG_ERROR, "Cannot find icon file: "
+        << iconFile << ". Please check CPACK_PACKAGE_ICON setting."
+        << std::endl);
+      return 0;
+      }
+    std::string destFileName = resourcesDirectory + "/" + iconFileName;
+    this->ConfigureFile(iconFile, destFileName.c_str(), true);
+    this->SetOptionIfNotSet("CPACK_APPLE_GUI_ICON", iconFileName.c_str());
+    }
+
+  std::string applicationsLinkName = diskImageDirectory + "/Applications";
+  cmSystemTools::CreateSymlink("/Applications", applicationsLinkName.c_str());
+
   if (
+    !this->CopyResourcePlistFile("VolumeIcon.icns", diskImageDirectory.c_str(),
+      ".VolumeIcon.icns", true ) ||
+    !this->CopyResourcePlistFile("DS_Store", diskImageDirectory.c_str(),
+      ".DS_Store", true ) ||
+    !this->CopyResourcePlistFile("background.png",
+      diskImageBackgroundImageDir.c_str(), "background.png", true ) ||
     !this->CopyResourcePlistFile("RuntimeScript", dir) ||
     !this->CopyResourcePlistFile("OSXX11.Info.plist", contDir,
       "Info.plist" ) ||
@@ -102,9 +137,11 @@
   tmpFile += "/hdiutilOutput.log";
   cmOStringStream dmgCmd;
   dmgCmd << "\"" << this->GetOption("CPACK_INSTALLER_PROGRAM_DISK_IMAGE")
-    << "\" create -ov -format UDZO -srcfolder \"" << packageDirFileName
+    << "\" create -ov -format UDZO -srcfolder \"" << diskImageDirectory.c_str() 
     << "\" \"" << outFileName << "\"";
   int retVal = 1;
+  cmCPackLogger(cmCPackLog::LOG_VERBOSE,
+    "Compress disk image using command: " << dmgCmd.str().c_str() << std::endl);
   bool res = cmSystemTools::RunSingleCommand(dmgCmd.str().c_str(), &output,
     &retVal, 0, this->GeneratorVerbose, 0);
   if ( !res || retVal )
@@ -218,3 +255,11 @@
   return true;
 }
 
+//----------------------------------------------------------------------
+const char* cmCPackOSXX11Generator::GetInstallPrefix()
+{
+  this->InstallPrefix = "/";
+  this->InstallPrefix += this->GetOption("CPACK_PACKAGE_FILE_NAME");
+  this->InstallPrefix += ".app/Contents/Resources";
+  return this->InstallPrefix.c_str();
+}

Index: cmCPackOSXX11Generator.h
===================================================================
RCS file: /cvsroot/CMake/CMake/Source/CPack/cmCPackOSXX11Generator.h,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -d -r1.2 -r1.3
--- cmCPackOSXX11Generator.h	2 Feb 2007 19:40:26 -0000	1.2
+++ cmCPackOSXX11Generator.h	13 Feb 2007 19:12:56 -0000	1.3
@@ -40,12 +40,13 @@
   virtual int InitializeInternal();
   int CompressFiles(const char* outFileName, const char* toplevel,
     const std::vector<std::string>& files);
+  virtual const char* GetInstallPrefix();
   virtual const char* GetOutputExtension() { return ".dmg"; }
-  virtual const char* GetInstallPrefix() { return ".app/Contents/Resources"; }
 
   //bool CopyCreateResourceFile(const char* name, const char* dir);
   bool CopyResourcePlistFile(const char* name, const char* dir,
     const char* outputFileName = 0, bool copyOnly = false);
+  std::string InstallPrefix;
 };
 
 #endif



More information about the Cmake-commits mailing list