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