[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [39457] branches/cycles: Cycles:

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Aug 16 18:15:35 CEST 2011


Revision: 39457
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=39457
Author:   blendix
Date:     2011-08-16 16:15:34 +0000 (Tue, 16 Aug 2011)
Log Message:
-----------
Cycles:
* add some (disabled) test code for using OpenImageIO in imbuf
* link cycles, openimageio and boost into blender instead of a shared library
* some cmakefile changes to simplify the code and follow conventions better
* this may solve running cycles problems on windows XP, or give a different
  and hopefully more useful error message

Modified Paths:
--------------
    branches/cycles/CMakeLists.txt
    branches/cycles/build_files/cmake/macros.cmake
    branches/cycles/intern/cycles/CMakeLists.txt
    branches/cycles/intern/cycles/app/CMakeLists.txt
    branches/cycles/intern/cycles/blender/CMakeLists.txt
    branches/cycles/intern/cycles/blender/addon/engine.py
    branches/cycles/intern/cycles/blender/blender_python.cpp
    branches/cycles/intern/cycles/bvh/CMakeLists.txt
    branches/cycles/intern/cycles/cmake/external_libs.cmake
    branches/cycles/intern/cycles/device/CMakeLists.txt
    branches/cycles/intern/cycles/doc/CMakeLists.txt
    branches/cycles/intern/cycles/kernel/CMakeLists.txt
    branches/cycles/intern/cycles/kernel/osl/CMakeLists.txt
    branches/cycles/intern/cycles/kernel/osl/nodes/CMakeLists.txt
    branches/cycles/intern/cycles/render/CMakeLists.txt
    branches/cycles/intern/cycles/subd/CMakeLists.txt
    branches/cycles/intern/cycles/util/CMakeLists.txt
    branches/cycles/source/blender/editors/screen/area.c
    branches/cycles/source/blender/imbuf/CMakeLists.txt
    branches/cycles/source/blender/imbuf/IMB_imbuf_types.h
    branches/cycles/source/blender/imbuf/intern/IMB_filetype.h
    branches/cycles/source/blender/imbuf/intern/filetype.c
    branches/cycles/source/blender/imbuf/intern/readimage.c
    branches/cycles/source/blender/imbuf/intern/util.c
    branches/cycles/source/blender/imbuf/intern/writeimage.c
    branches/cycles/source/blender/python/intern/CMakeLists.txt
    branches/cycles/source/blender/python/intern/bpy_interface.c
    branches/cycles/source/creator/CMakeLists.txt

Added Paths:
-----------
    branches/cycles/intern/cycles/doc/license/CMakeLists.txt
    branches/cycles/source/blender/imbuf/intern/openimageio.cpp

Removed Paths:
-------------
    branches/cycles/intern/cycles/cmake/platforms.cmake

Modified: branches/cycles/CMakeLists.txt
===================================================================
--- branches/cycles/CMakeLists.txt	2011-08-16 16:03:37 UTC (rev 39456)
+++ branches/cycles/CMakeLists.txt	2011-08-16 16:15:34 UTC (rev 39457)
@@ -190,6 +190,14 @@
 
 # Cycles
 option(WITH_CYCLES			"Enable Cycles Render Engine" ON)
+OPTION(WITH_CYCLES_OSL		"Build with Open Shading Language support" OFF)
+OPTION(WITH_CYCLES_CUDA		"Build with CUDA support" OFF)
+OPTION(WITH_CYCLES_OPENCL	"Build with OpenCL support (not working)" OFF)
+OPTION(WITH_CYCLES_BLENDER	"Build Blender Python extension" ON)
+OPTION(WITH_CYCLES_PARTIO	"Build with Partio point cloud support (unfinished)" OFF)
+OPTION(WITH_CYCLES_NETWORK	"Build with network rendering support (unfinished)" OFF)
+OPTION(WITH_CYCLES_MULTI	"Build with network rendering support (unfinished)" OFF)
+OPTION(WITH_CYCLES_TEST		"Build cycles test application" OFF)
 
 # disable for now, but plan to support on all platforms eventually
 option(WITH_MEM_JEMALLOC   "Enable malloc replacement (http://www.canonware.com/jemalloc)" OFF)
@@ -263,6 +271,16 @@
 
 TEST_SSE_SUPPORT()
 
+# XXX hack
+if(WITH_CYCLES)
+	set(WITH_OPENIMAGEIO ON)
+	set(WITH_BOOST ON)
+endif()
+
+if(WITH_OPENIMAGEIO)
+	set(WITH_BOOST ON)
+endif()
+
 #-----------------------------------------------------------------------------
 # Initialize un-cached vars, avoid unused warning
 
@@ -471,6 +489,44 @@
 		endif()
 	endif()
 
+	if(WITH_BOOST)
+		if(CYCLES_BOOST)
+			set(BOOST ${CYCLES_BOOST} CACHE PATH "Boost Directory")
+			unset(CYCLES_BOOST CACHE)
+		else()
+			set(BOOST "/usr" CACHE PATH "Boost Directory")
+		endif()
+
+	    #set(Boost_ADDITIONAL_VERSIONS "1.46" "1.45" "1.44" 
+		#	"1.43" "1.43.0" "1.42" "1.42.0" 
+		#	"1.41" "1.41.0" "1.40" "1.40.0"
+		#	"1.39" "1.39.0" "1.38" "1.38.0"
+		#	"1.37" "1.37.0" "1.34.1" "1_34_1")
+
+		set(BOOST_ROOT ${BOOST})
+		set(Boost_USE_MULTITHREADED ON)
+		find_package(Boost 1.34 REQUIRED COMPONENTS filesystem regex system thread)
+
+		set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
+		set(BOOST_LIBRARIES ${Boost_LIBRARIES})
+		set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
+		set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
+	endif()
+
+	if(WITH_OPENIMAGEIO)
+		if(CYCLES_OIIO)
+			set(OPENIMAGEIO ${CYCLES_OIIO} CACHE PATH "OpenImageIO Directory")
+			unset(CYCLES_OIIO CACHE)
+		else()
+			set(OPENIMAGEIO "/usr" CACHE PATH "OpenImageIO Directory")
+		endif()
+
+		set(OPENIMAGEIO_INCLUDE_DIR ${OPENIMAGEIO}/include)
+		set(OPENIMAGEIO_LIBRARY OpenImageIO)
+		set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
+		set(OPENIMAGEIO_DEFINITIONS)
+	endif()
+
 	# OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
 	set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread -lstdc++")
 
@@ -759,6 +815,24 @@
 			set(PYTHON_LIBRARIES  "${PYTHON_LIBRARY}")
 		endif()
 
+		if(WITH_BOOST)
+			set(BOOST ${LIBDIR}/boost)
+			set(BOOST_INCLUDE_DIR ${BOOST}/include)
+			set(BOOST_POSTFIX "vc90-mt-s-1_46_1.lib")
+			set(BOOST_LIBRARIES libboost_date_time-${BOOST_POSTFIX} libboost_filesystem-${BOOST_POSTFIX}
+			libboost_regex-${BOOST_POSTFIX} libboost_system-${BOOST_POSTFIX} libboost_thread-${BOOST_POSTFIX})
+			set(BOOST_LIBPATH ${BOOST}/lib)
+			set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
+		endif()
+			
+		if(WITH_OPENIMAGEIO)
+			set(OPENIMAGEIO ${LIBDIR}/openimageio)
+			set(OPENIMAGEIO_INCLUDE_DIR ${OPENIMAGEIO}/include)
+			set(OPENIMAGEIO_LIBRARY OpenImageIO)
+			set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
+			set(OPENIMAGEIO_DEFINITIONS)
+		endif()
+
 		set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
 
 		# MSVC only, Mingw doesnt need
@@ -1064,6 +1138,22 @@
 		# linker needs "-weak_framework 3DconnexionClient"
 	endif()
 
+	if(WITH_BOOST)
+		set(BOOST ${LIBDIR}/boost)
+		set(BOOST_INCLUDE_DIR ${BOOST}/include)
+		set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt)
+		set(BOOST_LIBPATH ${BOOST}/lib)
+		set(BOOST_DEFINITIONS)
+	endif()
+
+	if(WITH_OPENIMAGEIO)
+		set(OPENIMAGEIO ${LIBDIR}/openimageio)
+		set(OPENIMAGEIO_INCLUDE_DIR ${OPENIMAGEIO}/include)
+		set(OPENIMAGEIO_LIBRARY OpenImageIO ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
+		set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
+		set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
+	endif()
+
 	set(EXETYPE MACOSX_BUNDLE)
 
 	set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
@@ -1304,7 +1394,13 @@
 add_subdirectory(intern)
 add_subdirectory(extern)
 
+#-----------------------------------------------------------------------------
+# Cycles
 
+if(WITH_CYCLES)
+	add_subdirectory(intern/cycles)
+endif()
+
 #-----------------------------------------------------------------------------
 # Blender Application
 if(WITH_BLENDER)
@@ -1318,13 +1414,6 @@
 endif()
 
 #-----------------------------------------------------------------------------
-# Cycles
-
-if(WITH_CYCLES)
-	add_subdirectory(intern/cycles)
-endif()
-
-#-----------------------------------------------------------------------------
 # CPack for generating packages
 include(build_files/cmake/packaging.cmake)
 

Modified: branches/cycles/build_files/cmake/macros.cmake
===================================================================
--- branches/cycles/build_files/cmake/macros.cmake	2011-08-16 16:03:37 UTC (rev 39456)
+++ branches/cycles/build_files/cmake/macros.cmake	2011-08-16 16:15:34 UTC (rev 39457)
@@ -164,6 +164,12 @@
 	if(WITH_IMAGE_TIFF)
 		link_directories(${TIFF_LIBPATH})
 	endif()
+	if(WITH_BOOST)
+		link_directories(${BOOST_LIBPATH})
+	endif()
+	if(WITH_OPENIMAGEIO)
+		link_directories(${OPENIMAGEIO_LIBPATH})
+	endif()
 	if(WITH_IMAGE_OPENJPEG AND UNIX AND NOT APPLE)
 		link_directories(${OPENJPEG_LIBPATH})
 	endif()
@@ -270,6 +276,12 @@
 	if(WITH_IMAGE_TIFF)
 		target_link_libraries(${target} ${TIFF_LIBRARY})
 	endif()
+	if(WITH_BOOST)
+		target_link_libraries(${target} ${BOOST_LIBRARIES})
+	endif()
+	if(WITH_OPENIMAGEIO)
+		target_link_libraries(${target} ${OPENIMAGEIO_LIBRARY})
+	endif()
 	if(WITH_IMAGE_OPENEXR)
 		if(WIN32 AND NOT UNIX)
 			file_list_suffix(OPENEXR_LIBRARIES_DEBUG "${OPENEXR_LIBRARIES}" "_d")
@@ -569,3 +581,38 @@
 	endif()
 
 endmacro()
+
+# pair of macros to allow libraries to be specify files to install, but to
+# only install them at the end so the directories don't get cleared with
+# the files in them. used by cycles to install addon.
+macro(delayed_install
+	base
+	files
+	destination)
+
+	foreach(f ${files})
+		set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_FILES ${base}/${f})
+		set_property(GLOBAL APPEND PROPERTY DELAYED_INSTALL_DESTINATIONS ${destination})
+	endforeach()
+endmacro()
+
+# note this is a function instead of a macro so that ${BUILD_TYPE} in targetdir
+# does not get expanded in calling but is preserved
+function(delayed_do_install
+	targetdir)
+
+	get_property(files GLOBAL PROPERTY DELAYED_INSTALL_FILES)
+	get_property(destinations GLOBAL PROPERTY DELAYED_INSTALL_DESTINATIONS)
+
+	if(files)
+		list(LENGTH files n)
+		math(EXPR n "${n}-1")
+
+		foreach(i RANGE ${n})
+			list(GET files ${i} f)
+			list(GET destinations ${i} d)
+			install(FILES ${f} DESTINATION ${targetdir}/${d})
+		endforeach()
+	endif()
+endfunction()
+

Modified: branches/cycles/intern/cycles/CMakeLists.txt
===================================================================
--- branches/cycles/intern/cycles/CMakeLists.txt	2011-08-16 16:03:37 UTC (rev 39456)
+++ branches/cycles/intern/cycles/CMakeLists.txt	2011-08-16 16:15:34 UTC (rev 39457)
@@ -1,81 +1,80 @@
 
-SET(CYCLES_VERSION_MAJOR 0)
-SET(CYCLES_VERSION_MINOR 0)
-SET(CYCLES_VERSION ${CYCLES_VERSION_MAJOR}.${CYCLES_VERSION_MINOR})
+set(CYCLES_INSTALL_PATH "scripts/addons/cycles")
 
-# Options
+# External Libraries
 
-OPTION(WITH_CYCLES_OSL "Build with Open Shading Language support" OFF)
-OPTION(WITH_CYCLES_CUDA "Build with CUDA support" OFF)
-OPTION(WITH_CYCLES_OPENCL "Build with OpenCL support (not working)" OFF)
-OPTION(WITH_CYCLES_BLENDER "Build Blender Python extension" ON)
-OPTION(WITH_CYCLES_PARTIO "Build with Partio point cloud support (unfinished)" OFF)
-OPTION(WITH_CYCLES_NETWORK "Build with network rendering support (unfinished)" OFF)
-OPTION(WITH_CYCLES_MULTI "Build with network rendering support (unfinished)" OFF)
-OPTION(WITH_CYCLES_TEST "Build cycles test application" OFF)
+include(cmake/external_libs.cmake)
 
-# Flags
+# Build Flags
 
-SET(CYCLES_CUDA_ARCH sm_10 sm_11 sm_12 sm_13 sm_20 sm_21 CACHE STRING "CUDA architectures to build for")
-SET(CYCLES_CUDA_MAXREG 24 CACHE STRING "CUDA maximum number of register to use")
+set(GCC_WARNING_FLAGS "-Wall -Wextra -Wno-unused-parameter -Wno-long-long")
+set(GCC_OPTIM_FLAGS "-ffast-math -fPIC -msse -msse2 -msse3 -mtune=native")
 
-# Paths
+if(APPLE)
+	set(CMAKE_CXX_FLAGS "${GCC_WARNING_FLAGS} ${GCC_OPTIM_FLAGS}")
+	set(RTTI_DISABLE_FLAGS "-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID")
+endif(APPLE)
 
-IF(UNIX AND NOT APPLE)
-	SET(CYCLES_OIIO "" CACHE PATH "Path to OpenImageIO installation")
-	SET(CYCLES_BOOST "/usr" CACHE PATH "Path to Boost installation")
-ENDIF()
+if(WIN32)
+	set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /Ox /Ot /arch:SSE2 -D_CRT_SECURE_NO_WARNINGS /EHsc /fp:fast")
+	set(RTTI_DISABLE_FLAGS "/GR- -DBOOST_NO_RTTI -DBOOST_NO_TYPEID")
+endif(WIN32)
 
-SET(CYCLES_OSL "" CACHE PATH "Path to OpenShadingLanguage installation")
-SET(CYCLES_CUDA "/usr/local/cuda" CACHE PATH "Path to CUDA installation")
-SET(CYCLES_OPENCL "" CACHE PATH "Path to OpenCL installation")
-SET(CYCLES_PARTIO "" CACHE PATH "Path to Partio installation")
-SET(CYCLES_GLEW "" CACHE PATH "Path to GLEW installation")
+if(UNIX AND NOT APPLE)
+	set(CMAKE_CXX_FLAGS "${GCC_WARNING_FLAGS} ${GCC_OPTIM_FLAGS}")
+	set(RTTI_DISABLE_FLAGS "-fno-rtti -DBOOST_NO_RTTI -DBOOST_NO_TYPEID")
+endif(UNIX AND NOT APPLE)
 
-# Install, todo: deduplicate install path code
+# Definitions and Includes
 
-if(MSVC_IDE)
-	set(TARGETDIR ${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE})
-elseif(APPLE)
-	set(TARGETDIR ${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE})
-else()
-	set(TARGETDIR ${EXECUTABLE_OUTPUT_PATH})
+add_definitions(${BOOST_DEFINITIONS} ${OPENIMAGEIO_DEFINITIONS})
+
+add_definitions(-DCCL_NAMESPACE_BEGIN=namespace\ ccl\ {)
+add_definitions(-DCCL_NAMESPACE_END=})
+
+if(WITH_CYCLES_NETWORK)

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list