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} + ) + + # copy scripts + install_dir( + ${CMAKE_SOURCE_DIR}/release/scripts + \${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 {} "\;" - ) 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