Browse Source

ENH: Improve Mac OSX bundle support

Andy Cedilnik 21 years ago
parent
commit
1dbcfd2a98

+ 9 - 9
Modules/MacOSXBundleInfo.plist.in

@@ -5,32 +5,32 @@
 	<key>CFBundleDevelopmentRegion</key>
 	<string>English</string>
 	<key>CFBundleExecutable</key>
-	<string>${APPLE_GUI_EXECUTABLE}</string>
+	<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
 	<key>CFBundleGetInfoString</key>
-	<string>${APPLE_GUI_INFO_STRING}</string>
+	<string>${MACOSX_BUNDLE_INFO_STRING}</string>
 	<key>CFBundleIconFile</key>
-	<string>${APPLE_GUI_ICON}</string>
+	<string>${MACOSX_BUNDLE_ICON_FILE}</string>
 	<key>CFBundleIdentifier</key>
-	<string>${APPLE_GUI_IDENTIFIER}</string>
+	<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
 	<key>CFBundleInfoDictionaryVersion</key>
 	<string>6.0</string>
 	<key>CFBundleLongVersionString</key>
-	<string>${APPLE_GUI_LONG_VERSION_STRING}</string>
+	<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
 	<key>CFBundleName</key>
-	<string>${APPLE_GUI_BUNDLE_NAME}</string>
+	<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>${APPLE_GUI_SHORT_VERSION_STRING}</string>
+	<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleVersion</key>
-	<string>${APPLE_GUI_BUNDLE_VERSION}</string>
+	<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
 	<key>CSResourcesFileMapped</key>
 	<true/>
 	<key>LSRequiresCarbon</key>
 	<true/>
 	<key>NSHumanReadableCopyright</key>
-	<string>${APPLE_GUI_COPYRIGHT}</string>
+	<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
 </dict>
 </plist>

+ 2 - 0
Source/cmAddExecutableCommand.cxx

@@ -83,6 +83,8 @@ bool cmAddExecutableCommand::InitialPass(std::vector<std::string> const& args)
 
     func.m_Arguments.push_back(cmListFileArgument(f1, true));
     func.m_Arguments.push_back(cmListFileArgument(f2, true));
+    func.m_Arguments.push_back(cmListFileArgument("IMMEDIATE", true));
+    m_Makefile->AddDefinition("MACOSX_BUNDLE_EXECUTABLE_NAME", exename.c_str());
     m_Makefile->ExecuteCommand(func);
 #endif
     }

+ 16 - 4
Source/cmAddExecutableCommand.h

@@ -61,13 +61,25 @@ public:
   virtual const char* GetFullDocumentation()
     {
     return
-      "  ADD_EXECUTABLE(exename [WIN32] source1\n"
+      "  ADD_EXECUTABLE(exename [WIN32] [MACBUNDLE] source1\n"
       "                 source2 ... sourceN)\n"
       "This command adds an executable target to the current directory.  "
       "The executable will be built from the list of source files "
-      "specified.  The second argument to this command can be WIN32 "
-      "which indicates that the executable (when compiled on windows) "
-      "is a windows app (using WinMain) not a console app (using main).";
+      "specified.\n"
+      "After specifying the executable name, WIN32 and/or MACBUNDLE can "
+      "be specified. WIN32 indicates that the executable (when compiled on "
+      "windows) is a windows app (using WinMain) not a console app (using main). "
+      "MACBUNDLE indicates that when build on Mac OSX, executable should be in "
+      "the bundle form. The MACBUNDLE also allows several variables to be specified:\n"
+      "  MACOSX_BUNDLE_INFO_STRING\n"
+      "  MACOSX_BUNDLE_ICON_FILE\n"
+      "  MACOSX_BUNDLE_GUI_IDENTIFIER\n"
+      "  MACOSX_BUNDLE_LONG_VERSION_STRING\n"
+      "  MACOSX_BUNDLE_BUNDLE_NAME\n"
+      "  MACOSX_BUNDLE_SHORT_VERSION_STRING\n"
+      "  MACOSX_BUNDLE_BUNDLE_VERSION\n"
+      "  MACOSX_BUNDLE_COPYRIGHT\n"
+      ;
     }
   
   cmTypeMacro(cmAddExecutableCommand, cmCommand);