From bcee2343ead4dd2d737ca8add4d9264f111da0bc Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 16 Mar 2011 15:44:17 +0000 Subject: Mac OS X cmake changes and bundle fixes For cmake users, you should now use "make install" instead of "make". This was already changed for Linux and Windows. Same for Xcode, use the install target. Changes: * CMake install mechanism, resulting bundle was verified to be indentical here. * For cmake, include Info.plist in bundle using builtin mechanism for that. There was some code in packaging.cmake, but it wasn't correct as these properties need to be set on the executable. * For scons, fix app bundle version, was still using removed release/VERSION. * Remove unused blendercreator.app and blenderpublisher.app. * Fix Info.plist being set as a binary file in svn, should be plain text. --- GNUmakefile | 5 +- build_files/cmake/packaging.cmake | 6 - build_files/scons/tools/Blender.py | 3 +- source/creator/CMakeLists.txt | 123 +++++++++++++++------ source/darwin/blender.app/Contents/Info.plist | 8 +- .../darwin/blendercreator.app/Contents/Info.plist | 53 --------- .../Contents/MacOS/blendercreator | 1 - source/darwin/blendercreator.app/Contents/PkgInfo | 1 - .../Contents/Resources/blender creator icon.icns | Bin 189097 -> 0 bytes .../Contents/Resources/blender file icon.icns | Bin 145836 -> 0 bytes .../darwin/blenderplayer.app/Contents/Info.plist | 54 +++++---- .../blenderpublisher.app/Contents/Info.plist | 53 --------- .../Contents/MacOS/blenderpublisher | 1 - .../darwin/blenderpublisher.app/Contents/PkgInfo | 1 - .../Contents/Resources/blender file icon.icns | Bin 1721 -> 0 bytes .../Contents/Resources/blender publisher icon.icns | Bin 1991 -> 0 bytes 16 files changed, 127 insertions(+), 182 deletions(-) delete mode 100644 source/darwin/blendercreator.app/Contents/Info.plist delete mode 100644 source/darwin/blendercreator.app/Contents/MacOS/blendercreator delete mode 100644 source/darwin/blendercreator.app/Contents/PkgInfo delete mode 100644 source/darwin/blendercreator.app/Contents/Resources/blender creator icon.icns delete mode 100644 source/darwin/blendercreator.app/Contents/Resources/blender file icon.icns delete mode 100644 source/darwin/blenderpublisher.app/Contents/Info.plist delete mode 100644 source/darwin/blenderpublisher.app/Contents/MacOS/blenderpublisher delete mode 100644 source/darwin/blenderpublisher.app/Contents/PkgInfo delete mode 100644 source/darwin/blenderpublisher.app/Contents/Resources/blender file icon.icns delete mode 100644 source/darwin/blenderpublisher.app/Contents/Resources/blender publisher icon.icns diff --git a/GNUmakefile b/GNUmakefile index 088947c9ddb..772cec3c471 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -48,14 +48,11 @@ endif # Get the number of cores for threaded build NPROCS:=1 -DEFAULT_TARGET=install ifeq ($(OS), Linux) NPROCS:=$(shell grep -c ^processor /proc/cpuinfo) endif ifeq ($(OS), Darwin) NPROCS:=$(shell sysctl -a | grep "hw.ncpu " | cut -d" " -f3) - # make install not support on mac yet - DEFAULT_TARGET= endif ifeq ($(OS), FreeBSD) NPROCS:=$(shell sysctl -a | grep "hw.ncpu " | cut -d" " -f3 ) @@ -78,7 +75,7 @@ all: @echo @echo Building Blender ... - cd $(BUILD_DIR) ; make -s -j $(NPROCS) ${DEFAULT_TARGET} + cd $(BUILD_DIR) ; make -s -j $(NPROCS) install @echo @echo run blender from "$(BUILD_DIR)/bin/blender" @echo diff --git a/build_files/cmake/packaging.cmake b/build_files/cmake/packaging.cmake index 0304cd372df..b21c13f80b4 100644 --- a/build_files/cmake/packaging.cmake +++ b/build_files/cmake/packaging.cmake @@ -51,12 +51,6 @@ if(APPLE) # Libraries are bundled directly set(CPACK_COMPONENT_LIBRARIES_HIDDEN TRUE) - - # Bundle Properties - set(MACOSX_BUNDLE_BUNDLE_NAME blender) - set(MACOSX_BUNDLE_BUNDLE_VERSION ${BLENDER_VERSION}) - set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${BLENDER_VERSION}) - set(MACOSX_BUNDLE_LONG_VERSION_STRING "Version ${BLENDER_VERSION}-r${BUILD_REV}") endif(APPLE) set(CPACK_PACKAGE_EXECUTABLES "blender") diff --git a/build_files/scons/tools/Blender.py b/build_files/scons/tools/Blender.py index c1b0a10d284..1d276d77466 100644 --- a/build_files/scons/tools/Blender.py +++ b/build_files/scons/tools/Blender.py @@ -488,7 +488,8 @@ def AppIt(target=None, source=None, env=None): if os.path.isdir(cmd): shutil.rmtree(cmd) shutil.copytree(sourcedir, cmd) - cmd = "cat %s | sed s/VERSION/`cat release/VERSION`/ | sed s/DATE/`date +'%%Y-%%b-%%d'`/ > %s"%(sourceinfo,targetinfo) + cmd = "cat %s | sed s/\$\{MACOSX_BUNDLE_SHORT_VERSION_STRING\}/%s/ | "%(sourceinfo,VERSION) + cmd += "sed s/\$\{MACOSX_BUNDLE_LONG_VERSION_STRING\}/%s,\ `date +'%%Y-%%b-%%d'`/ > %s"%(VERSION,targetinfo) commands.getoutput(cmd) cmd = 'cp %s/%s %s/%s.app/Contents/MacOS/%s'%(builddir, binary,installdir, binary, binary) commands.getoutput(cmd) diff --git a/source/creator/CMakeLists.txt b/source/creator/CMakeLists.txt index 561f28a6154..5a5baee7f1d 100644 --- a/source/creator/CMakeLists.txt +++ b/source/creator/CMakeLists.txt @@ -186,7 +186,7 @@ if(MSVC) # ${CMAKE_CFG_INTDIR} should replace \${BUILD_TYPE} when using add_command set(TARGETDIR ${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE}) elseif(APPLE) - set(TARGETDIR ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}) + set(TARGETDIR ${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE}) else() set(TARGETDIR ${EXECUTABLE_OUTPUT_PATH}) endif() @@ -528,56 +528,113 @@ if(WITH_INSTALL) endif() elseif(APPLE) - # TODO, APPLE needs a 'make install' target like win32 and unix - # also update GNUmakefile to run make install if you do this - set(SOURCEDIR ${CMAKE_SOURCE_DIR}/source/darwin/blender.app) set(SOURCEINFO ${SOURCEDIR}/Contents/Info.plist) - set(TARGETINFO ${TARGETDIR}/blender.app/Contents/Info.plist) + set(TARGETDIR_VER ${TARGETDIR}/blender.app/Contents/MacOS/${BLENDER_VERSION}) - add_custom_command( - TARGET blender POST_BUILD MAIN_DEPENDENCY blender - COMMAND cp -R ${CMAKE_SOURCE_DIR}/release/text/* ${TARGETDIR}/ + # setup Info.plist + execute_process(COMMAND date "+%Y-%m-%d" OUTPUT_VARIABLE BLENDER_DATE OUTPUT_STRIP_TRAILING_WHITESPACE) + + set_target_properties(blender PROPERTIES + MACOSX_BUNDLE_INFO_PLIST ${SOURCEINFO} + MACOSX_BUNDLE_SHORT_VERSION_STRING ${BLENDER_VERSION} + MACOSX_BUNDLE_LONG_VERSION_STRING "${BLENDER_VERSION} ${BLENDER_DATE}") + + # important to make a clean install each time else old scripts get loaded. + install( + CODE + "file(REMOVE_RECURSE ${TARGETDIR_VER})" ) + # message after building. add_custom_command( TARGET blender POST_BUILD MAIN_DEPENDENCY blender - COMMAND cp -Rf ${SOURCEINFO} ${TARGETDIR}/blender.app/Contents/ - COMMAND cp -Rf ${SOURCEDIR}/Contents/PkgInfo ${TARGETDIR}/blender.app/Contents/ - COMMAND cp -Rf ${SOURCEDIR}/Contents/Resources ${TARGETDIR}/blender.app/Contents/ - COMMAND cat ${SOURCEINFO} | sed s/VERSION/${BLENDER_VERSION}${BLENDER_VERSION_CHAR}/ | sed s/DATE/`date +'%Y-%b-%d'`/ > ${TARGETINFO} - COMMAND rm -Rf ${TARGETDIR}/blender.app/Contents/MacOS/${BLENDER_VERSION} - COMMAND mkdir ${TARGETDIR}/blender.app/Contents/MacOS/${BLENDER_VERSION} - COMMAND mkdir ${TARGETDIR}/blender.app/Contents/MacOS/${BLENDER_VERSION}/datafiles/ - COMMAND cp ${CMAKE_SOURCE_DIR}/release/bin/.blender/.bfont.ttf ${TARGETDIR}/blender.app/Contents/MacOS/${BLENDER_VERSION}/datafiles/ + COMMAND ${CMAKE_COMMAND} -E echo 'now run: \"make install\" to copy runtime files & scripts to ${TARGETDIR_VER}' + ) + + # handy install macro to exclude files, we use \$ escape for the "to" + # argument when calling so ${BUILD_TYPE} does not get expanded + macro(install_dir from to) + install( + DIRECTORY ${from} + DESTINATION ${to} + PATTERN ".svn" EXCLUDE + PATTERN "*.pyc" EXCLUDE + PATTERN "*.pyo" EXCLUDE + PATTERN "*.orig" EXCLUDE + PATTERN "*.rej" EXCLUDE + PATTERN "__pycache__" EXCLUDE + PATTERN "__MACOSX" EXCLUDE + PATTERN ".DS_Store" EXCLUDE + ) + endmacro() + + # install release and app files + install_dir( + ${CMAKE_SOURCE_DIR}/release/text/ + \${TARGETDIR} ) + install( + FILES ${SOURCEDIR}/Contents/PkgInfo + DESTINATION ${TARGETDIR}/blender.app/Contents/ + ) + + install_dir( + ${SOURCEDIR}/Contents/Resources + \${TARGETDIR}/blender.app/Contents/ + ) + + install( + FILES ${CMAKE_SOURCE_DIR}/release/bin/.blender/.bfont.ttf + DESTINATION ${TARGETDIR_VER}/datafiles + ) + + # localization if(WITH_INTERNATIONAL) - add_custom_command( - TARGET blender POST_BUILD MAIN_DEPENDENCY blender - COMMAND cp ${CMAKE_SOURCE_DIR}/release/bin/.blender/.Blanguages ${TARGETDIR}/blender.app/Contents/MacOS/${BLENDER_VERSION}/datafiles/ - COMMAND cp -Rf ${CMAKE_SOURCE_DIR}/release/bin/.blender/locale ${TARGETDIR}/blender.app/Contents/MacOS/${BLENDER_VERSION}/datafiles/ + install( + FILES ${CMAKE_SOURCE_DIR}/release/bin/.blender/.Blanguages + DESTINATION ${TARGETDIR_VER}/datafiles + ) + + install_dir( + ${CMAKE_SOURCE_DIR}/release/bin/.blender/locale/ + \${TARGETDIR_VER}/datafiles/locale ) endif() + # python if(WITH_PYTHON) + # the python zip is first extract as part of the build process, + # and then later installed as part of make install. this is much + # quicker, and means we can easily exclude files on copy + add_custom_target( + extractpyzip + DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/python) + set(PYTHON_ZIP "python_${CMAKE_OSX_ARCHITECTURES}.zip") + add_custom_command( - TARGET blender POST_BUILD MAIN_DEPENDENCY blender - COMMAND cp -Rf ${CMAKE_SOURCE_DIR}/release/scripts ${TARGETDIR}/blender.app/Contents/MacOS/${BLENDER_VERSION}/ - COMMAND mkdir ${TARGETDIR}/blender.app/Contents/MacOS/${BLENDER_VERSION}/python/ - COMMAND unzip -q ${LIBDIR}/release/${PYTHON_ZIP} -d ${TARGETDIR}/blender.app/Contents/MacOS/${BLENDER_VERSION}/python/ - COMMAND find ${TARGETDIR}/blender.app -name '*.py[co]' -prune -exec rm -rf {} '\;' - COMMAND find ${TARGETDIR}/blender.app -name '__pycache__' -exec rmdir {} '+' + OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/python + COMMAND rm -rf ${CMAKE_CURRENT_BINARY_DIR}/python/ + COMMAND mkdir ${CMAKE_CURRENT_BINARY_DIR}/python/ + COMMAND unzip -q ${LIBDIR}/release/${PYTHON_ZIP} -d ${CMAKE_CURRENT_BINARY_DIR}/python/ + DEPENDS ${LIBDIR}/release/${PYTHON_ZIP}) + + add_dependencies(blender extractpyzip) + + # copy extracted python files + install_dir( + ${CMAKE_CURRENT_BINARY_DIR}/python + \${TARGETDIR_VER} ) - endif() - add_custom_command( - TARGET blender POST_BUILD MAIN_DEPENDENCY blender - COMMAND find ${TARGETDIR}/blender.app -name .DS_Store -prune -exec rm -rf {} "\;" - COMMAND find ${TARGETDIR}/blender.app -name .svn -prune -exec rm -rf {} "\;" - COMMAND find ${TARGETDIR}/blender.app -name __MACOSX -prune -exec rm -rf {} "\;" - ) + # copy scripts + install_dir( + ${CMAKE_SOURCE_DIR}/release/scripts + \${TARGETDIR_VER} + ) + endif() endif() endif() diff --git a/source/darwin/blender.app/Contents/Info.plist b/source/darwin/blender.app/Contents/Info.plist index 0accb3e9940..2f5d235a619 100644 --- a/source/darwin/blender.app/Contents/Info.plist +++ b/source/darwin/blender.app/Contents/Info.plist @@ -20,13 +20,13 @@ Blender CFBundleIdentifier org.blenderfoundation.blender - + CFBundleVersion - VERSION, DATE, Blender Foundation + ${MACOSX_BUNDLE_LONG_VERSION_STRING}, Blender Foundation CFBundleShortVersionString - VERSION + ${MACOSX_BUNDLE_SHORT_VERSION_STRING} CFBundleGetInfoString - VERSION, DATE, Blender Foundation + ${MACOSX_BUNDLE_LONG_VERSION_STRING}, Blender Foundation CFBundleDocumentTypes diff --git a/source/darwin/blendercreator.app/Contents/Info.plist b/source/darwin/blendercreator.app/Contents/Info.plist deleted file mode 100644 index 08709cd26e3..00000000000 --- a/source/darwin/blendercreator.app/Contents/Info.plist +++ /dev/null @@ -1,53 +0,0 @@ - - - - - CFBundleInfoDictionaryVersion - 6.0 - - CFBundleExecutable - blendercreator - - CFBundlePackageType - APPL - CFBundleSignature - ???? - - CFBundleIconFile - blender creator icon.icns - - CFBundleName - BlenderCreator - CFBundleIdentifier - com.nantechnologies.blendercreator - - CFBundleVersion - VERSION, DATE, Copyright NaN Technologies BV - CFBundleShortVersionString - VERSION - CFBundleGetInfoString - VERSION, DATE, Copyright NaN Technologies BV - - CFBundleDocumentTypes - - - CFBundleTypeIconFile - blender file icon.icns - CFBundleTypeName - Blender File - CFBundleTypeOSTypes - - BLND - - CFBundleTypeExtensions - - blend - - CFBundleTypeRole - Editor - LSIsAppleDefaultForType - - - - - diff --git a/source/darwin/blendercreator.app/Contents/MacOS/blendercreator b/source/darwin/blendercreator.app/Contents/MacOS/blendercreator deleted file mode 100644 index 5e05e74a307..00000000000 --- a/source/darwin/blendercreator.app/Contents/MacOS/blendercreator +++ /dev/null @@ -1 +0,0 @@ -placeholder diff --git a/source/darwin/blendercreator.app/Contents/PkgInfo b/source/darwin/blendercreator.app/Contents/PkgInfo deleted file mode 100644 index bd04210fb49..00000000000 --- a/source/darwin/blendercreator.app/Contents/PkgInfo +++ /dev/null @@ -1 +0,0 @@ -APPL???? \ No newline at end of file diff --git a/source/darwin/blendercreator.app/Contents/Resources/blender creator icon.icns b/source/darwin/blendercreator.app/Contents/Resources/blender creator icon.icns deleted file mode 100644 index 5eef94afde9..00000000000 Binary files a/source/darwin/blendercreator.app/Contents/Resources/blender creator icon.icns and /dev/null differ diff --git a/source/darwin/blendercreator.app/Contents/Resources/blender file icon.icns b/source/darwin/blendercreator.app/Contents/Resources/blender file icon.icns deleted file mode 100644 index 9065f1b359c..00000000000 Binary files a/source/darwin/blendercreator.app/Contents/Resources/blender file icon.icns and /dev/null differ diff --git a/source/darwin/blenderplayer.app/Contents/Info.plist b/source/darwin/blenderplayer.app/Contents/Info.plist index 18c4438884a..f99338d6c47 100644 --- a/source/darwin/blenderplayer.app/Contents/Info.plist +++ b/source/darwin/blenderplayer.app/Contents/Info.plist @@ -2,13 +2,35 @@ + CFBundleInfoDictionaryVersion + 6.0 + + CFBundleExecutable + blenderplayer + + CFBundlePackageType + APPL + CFBundleSignature + ???? + + CFBundleIconFile + blender player icon.icns + + CFBundleName + BlenderPlayer + CFBundleIdentifier + org.blenderfoundation.blenderplayer + + CFBundleVersion + ${MACOSX_BUNDLE_LONG_VERSION_STRING}, Blender Foundation + CFBundleShortVersionString + ${MACOSX_BUNDLE_SHORT_VERSION_STRING} + CFBundleGetInfoString + ${MACOSX_BUNDLE_LONG_VERSION_STRING}, Blender Foundation + CFBundleDocumentTypes - CFBundleTypeExtensions - - blend - CFBundleTypeIconFile blender file icon.icns CFBundleTypeName @@ -17,31 +39,15 @@ BLND + CFBundleTypeExtensions + + blend + CFBundleTypeRole Viewer LSIsAppleDefaultForType - CFBundleExecutable - blenderplayer - CFBundleGetInfoString - VERSION, DATE, Blender Foundation - CFBundleIconFile - blender player icon.icns - CFBundleIdentifier - org.blenderfoundation.blenderplayer - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - BlenderPlayer - CFBundlePackageType - APPL - CFBundleShortVersionString - VERSION - CFBundleSignature - ???? - CFBundleVersion - VERSION, DATE, Blender Foundation diff --git a/source/darwin/blenderpublisher.app/Contents/Info.plist b/source/darwin/blenderpublisher.app/Contents/Info.plist deleted file mode 100644 index f22de5a4460..00000000000 --- a/source/darwin/blenderpublisher.app/Contents/Info.plist +++ /dev/null @@ -1,53 +0,0 @@ - - - - - CFBundleInfoDictionaryVersion - 6.0 - - CFBundleExecutable - blenderpublisher - - CFBundlePackageType - APPL - CFBundleSignature - ???? - - CFBundleIconFile - blender publisher icon.icns - - CFBundleName - BlenderPublisher - CFBundleIdentifier - com.nantechnologies.blenderpublisher - - CFBundleVersion - VERSION, DATE, Copyright NaN Technologies BV - CFBundleShortVersionString - VERSION - CFBundleGetInfoString - VERSION, DATE, Copyright NaN Technologies BV - - CFBundleDocumentTypes - - - CFBundleTypeIconFile - blender file icon.icns - CFBundleTypeName - Blender File - CFBundleTypeOSTypes - - BLND - - CFBundleTypeExtensions - - blend - - CFBundleTypeRole - Editor - LSIsAppleDefaultForType - - - - - diff --git a/source/darwin/blenderpublisher.app/Contents/MacOS/blenderpublisher b/source/darwin/blenderpublisher.app/Contents/MacOS/blenderpublisher deleted file mode 100644 index 5e05e74a307..00000000000 --- a/source/darwin/blenderpublisher.app/Contents/MacOS/blenderpublisher +++ /dev/null @@ -1 +0,0 @@ -placeholder diff --git a/source/darwin/blenderpublisher.app/Contents/PkgInfo b/source/darwin/blenderpublisher.app/Contents/PkgInfo deleted file mode 100644 index bd04210fb49..00000000000 --- a/source/darwin/blenderpublisher.app/Contents/PkgInfo +++ /dev/null @@ -1 +0,0 @@ -APPL???? \ No newline at end of file diff --git a/source/darwin/blenderpublisher.app/Contents/Resources/blender file icon.icns b/source/darwin/blenderpublisher.app/Contents/Resources/blender file icon.icns deleted file mode 100644 index a6041899cfb..00000000000 Binary files a/source/darwin/blenderpublisher.app/Contents/Resources/blender file icon.icns and /dev/null differ diff --git a/source/darwin/blenderpublisher.app/Contents/Resources/blender publisher icon.icns b/source/darwin/blenderpublisher.app/Contents/Resources/blender publisher icon.icns deleted file mode 100644 index 90784597129..00000000000 Binary files a/source/darwin/blenderpublisher.app/Contents/Resources/blender publisher icon.icns and /dev/null differ -- cgit v1.2.3