[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35370] trunk/blender: CMake: Linux/ Unix Only,

Campbell Barton ideasman42 at gmail.com
Sun Mar 6 12:41:31 CET 2011


Revision: 35370
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35370
Author:   campbellbarton
Date:     2011-03-06 11:41:30 +0000 (Sun, 06 Mar 2011)
Log Message:
-----------
CMake: Linux/Unix Only,
use 'install' target rather then copying files with post-build commands.

Main change is that you need to run 'make install', which copies files to ./bin by default
unless WITH_INSTALL_PORTABLE is OFF, where CMAKE_INSTALL_PREFIX is used for a typical unix-system install.

Modified Paths:
--------------
    trunk/blender/CMakeLists.txt
    trunk/blender/source/creator/CMakeLists.txt

Modified: trunk/blender/CMakeLists.txt
===================================================================
--- trunk/blender/CMakeLists.txt	2011-03-06 11:18:57 UTC (rev 35369)
+++ trunk/blender/CMakeLists.txt	2011-03-06 11:41:30 UTC (rev 35370)
@@ -126,6 +126,9 @@
 # Misc
 option(WITH_RAYOPTIMIZATION	"Enable use of SIMD (SSE) optimizations for the raytracer" ON) 
 option(WITH_INSTALL       "Install accompanying scripts and language files needed to run blender" ON)
+if(UNIX AND NOT APPLE)
+	option(WITH_INSTALL_PORTABLE "Install redistributeable runtime, otherwise install into CMAKE_INSTALL_PREFIX" ON)
+endif()
 option(WITH_PYTHON_INSTALL       "Copy system python into the blender install folder" ON)
 
 # Debug

Modified: trunk/blender/source/creator/CMakeLists.txt
===================================================================
--- trunk/blender/source/creator/CMakeLists.txt	2011-03-06 11:18:57 UTC (rev 35369)
+++ trunk/blender/source/creator/CMakeLists.txt	2011-03-06 11:41:30 UTC (rev 35370)
@@ -195,126 +195,130 @@
 	endif()
 
 	if(UNIX AND NOT APPLE)
-		
-		# Local installation, "make install" can be done after this optionally
-		
-		add_custom_command(
-			TARGET blender POST_BUILD MAIN_DEPENDENCY blender
-			COMMAND rm -Rf ${TARGETDIR}/${BLENDER_VERSION}
-			COMMAND mkdir ${TARGETDIR}/${BLENDER_VERSION}/
-			COMMAND cp ${CMAKE_SOURCE_DIR}/release/bin/.blender/.bfont.ttf ${TARGETDIR}/${BLENDER_VERSION}/
-		)
-	
-		if(WITH_INTERNATIONAL)
-			add_custom_command(
-				TARGET blender POST_BUILD MAIN_DEPENDENCY blender
-				COMMAND cp ${CMAKE_SOURCE_DIR}/release/bin/.blender/.Blanguages ${TARGETDIR}/${BLENDER_VERSION}/
-				COMMAND cp -R ${CMAKE_SOURCE_DIR}/release/bin/.blender/locale ${TARGETDIR}/${BLENDER_VERSION}/
-			)
+
+		if(WITH_INSTALL_PORTABLE)
+			set(TARGETDIR_VER ${EXECUTABLE_OUTPUT_PATH}/${CMAKE_CFG_INTDIR}/${BLENDER_VERSION})
+		else()
+			set(TARGETDIR_VER ${CMAKE_INSTALL_PREFIX}/share/blender/${BLENDER_VERSION})
 		endif()
-	
-		if(WITH_PYTHON)
-			add_custom_command(
-				TARGET blender POST_BUILD MAIN_DEPENDENCY blender
-				COMMENT "copying blender scripts..."
-				COMMAND cp -R ${CMAKE_SOURCE_DIR}/release/scripts ${TARGETDIR}/${BLENDER_VERSION}/
-				COMMAND find ${TARGETDIR} -name '*.py[co]' -prune -exec rm -rf {} '\;'
-				COMMAND find ${TARGETDIR} -name '__pycache__' -exec rmdir {} '+'
-			)
-			if(WITH_PYTHON_INSTALL)
-				# Copy the systems python into the install directory
-				# Scons copy in tools/Blender.py
-				add_custom_command(
-					TARGET blender POST_BUILD MAIN_DEPENDENCY blender
-					COMMENT "copying a subset of the systems python..."
 
-					COMMAND mkdir ${TARGETDIR}/${BLENDER_VERSION}/python # PYTHONPATH and PYTHONHOME is set here
-					COMMAND mkdir ${TARGETDIR}/${BLENDER_VERSION}/python/lib/
-					COMMAND cp -R ${PYTHON_LIBPATH}/python${PYTHON_VERSION} ${TARGETDIR}/${BLENDER_VERSION}/python/lib/
+		# important to make a clean  install each time
+		# else old scripts get loaded.
+		install(
+			CODE
+			"file(REMOVE_RECURSE ${TARGETDIR_VER})"
+		)
 
-					COMMAND rm -rf ${TARGETDIR}/${BLENDER_VERSION}/python/lib/python${PYTHON_VERSION}/distutils
-					COMMAND rm -rf ${TARGETDIR}/${BLENDER_VERSION}/python/lib/python${PYTHON_VERSION}/lib2to3
-					COMMAND rm -rf ${TARGETDIR}/${BLENDER_VERSION}/python/lib/python${PYTHON_VERSION}/idlelib
-					COMMAND rm -rf ${TARGETDIR}/${BLENDER_VERSION}/python/lib/python${PYTHON_VERSION}/tkinter
-					COMMAND rm -rf ${TARGETDIR}/${BLENDER_VERSION}/python/lib/python${PYTHON_VERSION}/config
+		# there are a few differences between portable and system install
+		if(WITH_INSTALL_PORTABLE)
+			install(
+				FILES
+				${CMAKE_SOURCE_DIR}/release/freedesktop/blender.desktop
+				${CMAKE_SOURCE_DIR}/release/freedesktop/icons/scalable/blender.svg
+				${CMAKE_SOURCE_DIR}/doc/manpage/blender.1
+				DESTINATION ${TARGETDIR}
+			)
 
-					COMMAND rm -rf ${TARGETDIR}/${BLENDER_VERSION}/python/lib/python${PYTHON_VERSION}/site-packages
-					COMMAND mkdir ${TARGETDIR}/${BLENDER_VERSION}/python/lib/python${PYTHON_VERSION}/site-packages	# python needs it.
+			install(
+				PROGRAMS
+				${CMAKE_SOURCE_DIR}/release/bin/blender-thumbnailer.py
+				DESTINATION ${TARGETDIR}
+			)
 
-					COMMAND rm -f ${TARGETDIR}/${BLENDER_VERSION}/python/lib/python${PYTHON_VERSION}/lib-dynload/_tkinter.so
-					COMMAND find ${TARGETDIR}/${BLENDER_VERSION}/python/lib/python${PYTHON_VERSION} -type d -name 'test' -prune -exec rm -rf {} '\;'
-					COMMAND find ${TARGETDIR}/${BLENDER_VERSION}/python/lib/python${PYTHON_VERSION} -type d -name 'turtledemo' -prune -exec rm -rf {} '\;'
-					COMMAND find ${TARGETDIR}/${BLENDER_VERSION}/python/lib/python${PYTHON_VERSION} -type d -name 'config-*' -prune -exec rm -rf {} '\;'
-					COMMAND find ${TARGETDIR}/${BLENDER_VERSION}/python/lib/python${PYTHON_VERSION} -name '*.py[co]' -exec rm -rf {} '\;'
-					COMMAND find ${TARGETDIR}/${BLENDER_VERSION}/python/lib/python${PYTHON_VERSION} -name '__pycache__' -exec rmdir {} '+'
-					COMMAND find ${TARGETDIR}/${BLENDER_VERSION}/python/lib/python${PYTHON_VERSION} -name '*.so' -exec strip -s {} '\;'
-				)
-			endif()
-		endif()
-	  
-		add_custom_command(
-			TARGET blender POST_BUILD MAIN_DEPENDENCY blender
-			COMMAND find ${TARGETDIR} -name .svn -prune -exec rm -rf {} "\;"
-		)
-	
-	
-		# Above we bundle a portable distribution in ./bin
-		# This is an optional "make install" which installs blender on the system.
-		install(
-			PROGRAMS ${TARGETDIR}/blender
-			DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
-		)
+			install(
+				DIRECTORY ${CMAKE_SOURCE_DIR}/release/text/
+				DESTINATION ${TARGETDIR}
+				PATTERN ".svn" EXCLUDE
+			)
 
-		if(WITH_GAMEENGINE AND WITH_PLAYER)
+		else()
+			# main blender binary
 			install(
-				PROGRAMS ${TARGETDIR}/blenderplayer
+				PROGRAMS ${TARGETDIR}/blender
 				DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
 			)
+
+			# misc files
+			install(
+				FILES ${CMAKE_SOURCE_DIR}/release/freedesktop/blender.desktop
+				DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications
+			)
+			install(
+				FILES ${CMAKE_SOURCE_DIR}/release/freedesktop/icons/scalable/blender.svg
+				DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps
+			)
+			install(
+				PROGRAMS ${CMAKE_SOURCE_DIR}/release/bin/blender-thumbnailer.py
+				DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
+			)
+			install(
+				FILES ${CMAKE_SOURCE_DIR}/doc/manpage/blender.1
+				DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man1
+			)
+			install(
+				DIRECTORY ${CMAKE_SOURCE_DIR}/release/text/
+				DESTINATION ${CMAKE_INSTALL_PREFIX}/share/doc/blender
+				PATTERN ".svn" EXCLUDE
+			)
 		endif()
 
 		install(
-			FILES ${CMAKE_SOURCE_DIR}/release/freedesktop/blender.desktop
-			DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications
+			FILES ${CMAKE_SOURCE_DIR}/release/bin/.blender/.bfont.ttf
+			DESTINATION ${TARGETDIR_VER}/config
 		)
-		install(
-			FILES ${CMAKE_SOURCE_DIR}/release/freedesktop/icons/scalable/blender.svg
-			DESTINATION ${CMAKE_INSTALL_PREFIX}/share/pixmaps
-		)
-		install(
-			PROGRAMS ${CMAKE_SOURCE_DIR}/release/bin/blender-thumbnailer.py
-			DESTINATION ${CMAKE_INSTALL_PREFIX}/bin
-		)
-		install(
-			FILES ${CMAKE_SOURCE_DIR}/doc/manpage/blender.1
-			DESTINATION ${CMAKE_INSTALL_PREFIX}/share/man/man1
-		)
-		install(
-			DIRECTORY ${CMAKE_SOURCE_DIR}/release/text/
-			DESTINATION ${CMAKE_INSTALL_PREFIX}/share/doc/blender
-			PATTERN ".svn" EXCLUDE
-		)
-		install(
-			DIRECTORY ${CMAKE_SOURCE_DIR}/release/scripts/
-			DESTINATION ${CMAKE_INSTALL_PREFIX}/share/blender/${BLENDER_VERSION}/scripts
-			PATTERN ".svn" EXCLUDE
-			PATTERN "*.pyc" EXCLUDE
-			PATTERN "__pycache__" EXCLUDE
-		)
-		install(
-			DIRECTORY ${CMAKE_SOURCE_DIR}/release/datafiles/brushicons/
-			DESTINATION ${CMAKE_INSTALL_PREFIX}/share/blender/${BLENDER_VERSION}/datafiles/brushicons
-			PATTERN ".svn" EXCLUDE
-		)
+
 		if(WITH_INTERNATIONAL)
 			install(
-				DIRECTORY ${CMAKE_SOURCE_DIR}/release/bin/.blender/locale/
-				DESTINATION ${CMAKE_INSTALL_PREFIX}/share/blender/${BLENDER_VERSION}/datafiles/locale
+				FILES ${CMAKE_SOURCE_DIR}/release/bin/.blender/.Blanguages
+				DESTINATION ${TARGETDIR_VER}/config
+			)
+
+			install(
+				DIRECTORY ${CMAKE_SOURCE_DIR}/release/bin/.blender/locale
+				DESTINATION ${TARGETDIR_VER}/datafiles/
 				PATTERN ".svn" EXCLUDE
 			)
 		endif()
-		
-		# end "make install"
-	
+
+			install(
+				DIRECTORY ${CMAKE_SOURCE_DIR}/release/plugins
+				DESTINATION ${TARGETDIR_VER}/
+				PATTERN ".svn" EXCLUDE
+			)
+
+		if(WITH_PYTHON)
+			# install(CODE "message(\"copying blender scripts...\")")
+			install(
+				DIRECTORY ${CMAKE_SOURCE_DIR}/release/scripts
+				DESTINATION ${TARGETDIR_VER}/
+				PATTERN ".svn" EXCLUDE
+				PATTERN "__pycache__" EXCLUDE
+			)
+
+			if(WITH_PYTHON_INSTALL)
+				# Copy the systems python into the install directory
+				# Scons copy in tools/Blender.py
+				# install(CODE "message(\"copying a subset of the systems python...\")")
+				install(
+					DIRECTORY ${PYTHON_LIBPATH}/python${PYTHON_VERSION}
+					DESTINATION ${TARGETDIR_VER}/python/lib/
+					PATTERN ".svn" EXCLUDE
+					PATTERN "__pycache__" EXCLUDE               # ./distutils
+					PATTERN "distutils" EXCLUDE                 # ./distutils
+					PATTERN "lib2to3" EXCLUDE                   # ./lib2to3
+					PATTERN "config" EXCLUDE                    # ./config
+					PATTERN "config-*" EXCLUDE                  # ./config-*
+					PATTERN "site-packages/*" EXCLUDE           # ./site-packages/*
+					PATTERN "tkinter" EXCLUDE                   # ./tkinter
+					PATTERN "lib-dynload/_tkinter.*" EXCLUDE    # ./lib-dynload/_tkinter.co
+					PATTERN "test" EXCLUDE                      # ./test
+					PATTERN "turtledemo" EXCLUDE                # ./turtledemo
+				)
+
+				# # doesnt work, todo
+				# install(CODE "execute_process(COMMAND find ${TARGETDIR}/${BLENDER_VERSION}/python/lib/ -name '*.so' -exec strip -s {} '\;')")
+			endif()
+		endif()
 	elseif(WIN32)
 		# notice 'xcopy /Y /H' on .bfont.ttf, this is needed when building over samba
 		add_custom_command(TARGET blender




More information about the Bf-blender-cvs mailing list