mirror of
https://github.com/Kitware/CMake.git
synced 2025-12-30 18:29:37 -06:00
BUG: Fix issue #7833: Add file extension handling to CPack generated installers for OSXX11 applications. Also modify the X11 test to build such an installer on Mac builds that test CPack and have X11 available. Thanks to Wes Turner for the patch.
This commit is contained in:
Binary file not shown.
BIN
Modules/CPack.OSXScriptLauncher.rsrc.in
Normal file
BIN
Modules/CPack.OSXScriptLauncher.rsrc.in
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 362 B |
@@ -4,6 +4,19 @@
|
||||
<dict>
|
||||
<key>CFBundleDevelopmentRegion</key>
|
||||
<string>English</string>
|
||||
<key>CFBundleDocumentTypes</key>
|
||||
<array>
|
||||
<dict>
|
||||
<key>CFBundleTypeExtensions</key>
|
||||
<array>
|
||||
<string>@CPACK_FILE_ASSOCIATION_EXTENSION@</string>
|
||||
</array>
|
||||
<key>CFBundleTypeName</key>
|
||||
<string>@CPACK_FILE_ASSOCIATION_TYPE@</string>
|
||||
<key>CFBundleTypeRole</key>
|
||||
<string>Editor</string>
|
||||
</dict>
|
||||
</array>
|
||||
<key>CFBundleExecutable</key>
|
||||
<string>@CPACK_PACKAGE_FILE_NAME@</string>
|
||||
<key>CFBundleGetInfoString</key>
|
||||
|
||||
BIN
Modules/CPack.OSXX11.main.scpt.in
Normal file
BIN
Modules/CPack.OSXX11.main.scpt.in
Normal file
Binary file not shown.
@@ -5,6 +5,26 @@
|
||||
CWD="`dirname \"$0\"`"
|
||||
TMP=/tmp/$UID/TemporaryItems
|
||||
|
||||
version=`sw_vers -productVersion`
|
||||
if [ "$?" == "0" ]; then
|
||||
major=${version%%\.*}
|
||||
rest=${version#*\.}
|
||||
minor=${rest%%\.*}
|
||||
build=${rest#*\.}
|
||||
else
|
||||
major=10
|
||||
minor=4
|
||||
build=0
|
||||
fi
|
||||
|
||||
echo $version
|
||||
echo "Major = $major"
|
||||
echo "Minor = $minor"
|
||||
echo "Build = $build"
|
||||
|
||||
|
||||
# if 10.5 or greater, then all the open-x11 stuff need not occur
|
||||
if ((( $major < 10 )) || ((( $major == 10)) && (( $minor < 5 )))); then
|
||||
version=`sw_vers -productVersion`
|
||||
if [ "$?" = "0" ]; then
|
||||
major=${version%%\.*}
|
||||
@@ -42,6 +62,7 @@ else
|
||||
echo \$DISPLAY > "$TMP/display"
|
||||
fi
|
||||
__END_OF_GETDISPLAY_SCRIPT__
|
||||
fi
|
||||
chmod +x "$TMP/getdisplay.sh"
|
||||
rm -f $TMP/display
|
||||
open-x11 $TMP/getdisplay.sh || \
|
||||
|
||||
BIN
Source/CPack/OSXLauncherScript.scpt
Normal file
BIN
Source/CPack/OSXLauncherScript.scpt
Normal file
Binary file not shown.
@@ -89,10 +89,15 @@ int cmCPackOSXX11Generator::CompressFiles(const char* outFileName,
|
||||
std::string contentsDirectory = packageDirFileName + "/Contents";
|
||||
std::string resourcesDirectory = contentsDirectory + "/Resources";
|
||||
std::string appDirectory = contentsDirectory + "/MacOS";
|
||||
std::string scriptDirectory = resourcesDirectory + "/Scripts";
|
||||
std::string resourceFileName = this->GetOption("CPACK_PACKAGE_FILE_NAME");
|
||||
resourceFileName += ".rsrc";
|
||||
|
||||
const char* dir = resourcesDirectory.c_str();
|
||||
const char* appdir = appDirectory.c_str();
|
||||
const char* scrDir = scriptDirectory.c_str();
|
||||
const char* contDir = contentsDirectory.c_str();
|
||||
const char* rsrcFile = resourceFileName.c_str();
|
||||
const char* iconFile = this->GetOption("CPACK_PACKAGE_ICON");
|
||||
if ( iconFile )
|
||||
{
|
||||
@@ -124,6 +129,10 @@ int cmCPackOSXX11Generator::CompressFiles(const char* outFileName,
|
||||
!this->CopyResourcePlistFile("RuntimeScript", dir) ||
|
||||
!this->CopyResourcePlistFile("OSXX11.Info.plist", contDir,
|
||||
"Info.plist" ) ||
|
||||
!this->CopyResourcePlistFile("OSXX11.main.scpt", scrDir,
|
||||
"main.scpt", true ) ||
|
||||
!this->CopyResourcePlistFile("OSXScriptLauncher.rsrc", dir,
|
||||
rsrcFile, true) ||
|
||||
!this->CopyResourcePlistFile("OSXScriptLauncher", appdir,
|
||||
this->GetOption("CPACK_PACKAGE_FILE_NAME"), true)
|
||||
)
|
||||
|
||||
@@ -407,7 +407,13 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel
|
||||
LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/CPackComponents")
|
||||
ENDIF(CTEST_RUN_CPackComponents)
|
||||
|
||||
ADD_TEST(X11 ${CMAKE_CTEST_COMMAND}
|
||||
IF(CTEST_TEST_CPACK)
|
||||
SET(X11_build_target_arg --build-target package)
|
||||
ELSE(CTEST_TEST_CPACK)
|
||||
SET(X11_build_target_arg)
|
||||
ENDIF(CTEST_TEST_CPACK)
|
||||
|
||||
ADD_TEST(X11 ${CMAKE_CTEST_COMMAND}
|
||||
--build-and-test
|
||||
"${CMake_SOURCE_DIR}/Tests/X11"
|
||||
"${CMake_BINARY_DIR}/Tests/X11"
|
||||
@@ -415,6 +421,7 @@ ${CMake_BINARY_DIR}/bin/cmake -DVERSION=CVS -P ${CMake_SOURCE_DIR}/Utilities/Rel
|
||||
--build-project UseX11
|
||||
--build-makeprogram ${CMAKE_TEST_MAKEPROGRAM}
|
||||
--build-two-config
|
||||
${X11_build_target_arg}
|
||||
--test-command UseX11)
|
||||
LIST(APPEND TEST_BUILD_DIRS "${CMake_BINARY_DIR}/Tests/X11")
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ INCLUDE (${CMAKE_ROOT}/Modules/FindX11.cmake)
|
||||
MESSAGE("X11_FOUND: ${X11_FOUND}")
|
||||
|
||||
ADD_EXECUTABLE (UseX11 X11.c)
|
||||
install(TARGETS UseX11 DESTINATION bin)
|
||||
|
||||
# so for universal binaries this test will fail if
|
||||
#
|
||||
@@ -26,10 +27,14 @@ IF(X11_FOUND)
|
||||
IF(APPLE)
|
||||
ADD_EXECUTABLE(HelloWorldX11 HelloWorldX11.cxx)
|
||||
TARGET_LINK_LIBRARIES(HelloWorldX11 ${X11_LIBRARIES})
|
||||
install( TARGETS HelloWorldX11 DESTINATION bin)
|
||||
# build a CPack driven installer package
|
||||
install(TARGETS HelloWorldX11 DESTINATION bin)
|
||||
|
||||
set(CPACK_BINARY_OSXX11 "ON")
|
||||
set(CPACK_BINARY_PACKAGEMAKER "OFF")
|
||||
set(CPACK_PACKAGE_NAME HelloWorldX11Package)
|
||||
set(CPACK_PACKAGE_EXECUTABLES HelloWorldX11 HelloWorldX11)
|
||||
include(CPack)
|
||||
ENDIF(APPLE)
|
||||
ENDIF(X11_FOUND)
|
||||
|
||||
# build a CPack driven installer package
|
||||
include(CPack)
|
||||
|
||||
Reference in New Issue
Block a user