From 360fcd73fe2868ba32c65697e21ed1bbab8b649a Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 16 Aug 2011 16:15:34 +0000 Subject: 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 --- build_files/cmake/macros.cmake | 47 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) (limited to 'build_files/cmake') diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index ed200abd419..b991edcd5d4 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -164,6 +164,12 @@ macro(SETUP_LIBDIRS) 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 @@ macro(setup_liblinks 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 @@ macro(blender_project_hack_post) 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() + -- cgit v1.2.3 From c7fce6be2ea6dcc1ecdf52a8f5d1608d45117e8f Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Tue, 16 Aug 2011 18:59:45 +0000 Subject: Cycles: svn merge -r39132:39457 https://svn.blender.org/svnroot/bf-blender/trunk/blender --- build_files/cmake/config/blender_headless.cmake | 24 ++++++++++++++ build_files/cmake/config/blender_lite.cmake | 43 +++++++++++++++++++++++++ build_files/cmake/config/bpy_module.cmake | 34 +++++++++++++++++++ build_files/cmake/macros.cmake | 7 ++++ 4 files changed, 108 insertions(+) create mode 100644 build_files/cmake/config/blender_headless.cmake create mode 100644 build_files/cmake/config/blender_lite.cmake create mode 100644 build_files/cmake/config/bpy_module.cmake (limited to 'build_files/cmake') diff --git a/build_files/cmake/config/blender_headless.cmake b/build_files/cmake/config/blender_headless.cmake new file mode 100644 index 00000000000..bd69eed30dd --- /dev/null +++ b/build_files/cmake/config/blender_headless.cmake @@ -0,0 +1,24 @@ +# headless configuration, useful in for servers or renderfarms +# builds without a windowing system (X11/Windows/Cocoa). +# +# Example usage: +# cmake -C../blender/build_files/cmake/config/blender_headless.cmake ../blender +# + +set(WITH_HEADLESS ON CACHE FORCE BOOL) +set(WITH_GAMEENGINE OFF CACHE FORCE BOOL) + +# disable audio, its possible some devs may want this but for now disable +# so the python module doesnt hold the audio device and loads quickly. +set(WITH_AUDASPACE OFF CACHE FORCE BOOL) +set(WITH_SAMPLERATE OFF CACHE FORCE BOOL) +set(WITH_FFTW3 OFF CACHE FORCE BOOL) +set(WITH_JACK OFF CACHE FORCE BOOL) +set(WITH_SDL OFF CACHE FORCE BOOL) +set(WITH_OPENAL OFF CACHE FORCE BOOL) +set(WITH_CODEC_FFMPEG OFF CACHE FORCE BOOL) +set(WITH_CODEC_SNDFILE OFF CACHE FORCE BOOL) + +# other features which are not especially useful as a python module +set(WITH_X11_XINPUT OFF CACHE FORCE BOOL) +set(WITH_INPUT_NDOF OFF CACHE FORCE BOOL) diff --git a/build_files/cmake/config/blender_lite.cmake b/build_files/cmake/config/blender_lite.cmake new file mode 100644 index 00000000000..d2b791baede --- /dev/null +++ b/build_files/cmake/config/blender_lite.cmake @@ -0,0 +1,43 @@ +# turn everything OFF CACHE FORCE BOOL) except for python which defaults to ON +# and is needed for the UI +# +# Example usage: +# cmake -C../blender/build_files/cmake/config/blender_lite.cmake ../blender +# + +set(WITH_INSTALL_PORTABLE ON CACHE FORCE BOOL) + +set(WITH_BUILDINFO OFF CACHE FORCE BOOL) +set(WITH_BUILTIN_GLEW OFF CACHE FORCE BOOL) +set(WITH_BULLET OFF CACHE FORCE BOOL) +set(WITH_CODEC_FFMPEG OFF CACHE FORCE BOOL) +set(WITH_CODEC_SNDFILE OFF CACHE FORCE BOOL) +set(WITH_FFTW3 OFF CACHE FORCE BOOL) +set(WITH_GAMEENGINE OFF CACHE FORCE BOOL) +set(WITH_IK_ITASC OFF CACHE FORCE BOOL) +set(WITH_IMAGE_CINEON OFF CACHE FORCE BOOL) +set(WITH_IMAGE_DDS OFF CACHE FORCE BOOL) +set(WITH_IMAGE_FRAMESERVER OFF CACHE FORCE BOOL) +set(WITH_IMAGE_HDR OFF CACHE FORCE BOOL) +set(WITH_IMAGE_OPENEXR OFF CACHE FORCE BOOL) +set(WITH_IMAGE_OPENJPEG OFF CACHE FORCE BOOL) +set(WITH_IMAGE_REDCODE OFF CACHE FORCE BOOL) +set(WITH_IMAGE_TIFF OFF CACHE FORCE BOOL) +set(WITH_INPUT_NDOF OFF CACHE FORCE BOOL) +set(WITH_INTERNATIONAL OFF CACHE FORCE BOOL) +set(WITH_JACK OFF CACHE FORCE BOOL) +set(WITH_LZMA OFF CACHE FORCE BOOL) +set(WITH_LZO OFF CACHE FORCE BOOL) +set(WITH_MOD_BOOLEAN OFF CACHE FORCE BOOL) +set(WITH_MOD_DECIMATE OFF CACHE FORCE BOOL) +set(WITH_MOD_FLUID OFF CACHE FORCE BOOL) +set(WITH_MOD_SMOKE OFF CACHE FORCE BOOL) +set(WITH_AUDASPACE OFF CACHE FORCE BOOL) +set(WITH_OPENAL OFF CACHE FORCE BOOL) +set(WITH_OPENCOLLADA OFF CACHE FORCE BOOL) +set(WITH_OPENMP OFF CACHE FORCE BOOL) +set(WITH_PYTHON_INSTALL OFF CACHE FORCE BOOL) +set(WITH_RAYOPTIMIZATION OFF CACHE FORCE BOOL) +set(WITH_SAMPLERATE OFF CACHE FORCE BOOL) +set(WITH_SDL OFF CACHE FORCE BOOL) +set(WITH_X11_XINPUT OFF CACHE FORCE BOOL) diff --git a/build_files/cmake/config/bpy_module.cmake b/build_files/cmake/config/bpy_module.cmake new file mode 100644 index 00000000000..5392705f0dc --- /dev/null +++ b/build_files/cmake/config/bpy_module.cmake @@ -0,0 +1,34 @@ +# defaults for building blender as a python module 'bpy' +# +# Example usage: +# cmake -C../blender/build_files/cmake/config/bpy_module.cmake ../blender +# + +set(WITH_PYTHON_MODULE ON CACHE FORCE BOOL) + +# install into the systems python dir +set(WITH_INSTALL_PORTABLE OFF CACHE FORCE BOOL) + +# no point int copying python into python +set(WITH_PYTHON_INSTALL OFF CACHE FORCE BOOL) + +# dont build the game engine +set(WITH_GAMEENGINE OFF CACHE FORCE BOOL) + +# disable audio, its possible some devs may want this but for now disable +# so the python module doesnt hold the audio device and loads quickly. +set(WITH_AUDASPACE OFF CACHE FORCE BOOL) +set(WITH_SAMPLERATE OFF CACHE FORCE BOOL) +set(WITH_FFTW3 OFF CACHE FORCE BOOL) +set(WITH_JACK OFF CACHE FORCE BOOL) +set(WITH_SDL OFF CACHE FORCE BOOL) +set(WITH_OPENAL OFF CACHE FORCE BOOL) +set(WITH_CODEC_FFMPEG OFF CACHE FORCE BOOL) +set(WITH_CODEC_SNDFILE OFF CACHE FORCE BOOL) + +# other features which are not especially useful as a python module +set(WITH_X11_XINPUT OFF CACHE FORCE BOOL) +set(WITH_INPUT_NDOF OFF CACHE FORCE BOOL) +set(WITH_OPENCOLLADA OFF CACHE FORCE BOOL) +set(WITH_INTERNATIONAL OFF CACHE FORCE BOOL) +set(WITH_BULLET OFF CACHE FORCE BOOL) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index b991edcd5d4..ffc920da473 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -62,6 +62,10 @@ macro(blender_include_dirs foreach(_INC ${ARGV}) get_filename_component(_ABS_INC ${_INC} ABSOLUTE) list(APPEND _ALL_INCS ${_ABS_INC}) + # for checking for invalid includes, disable for regular use + ##if(NOT EXISTS "${_ABS_INC}/") + ## message(FATAL_ERROR "Include not found: ${_ABS_INC}/") + ##endif() endforeach() include_directories(${_ALL_INCS}) unset(_INC) @@ -75,6 +79,9 @@ macro(blender_include_dirs_sys foreach(_INC ${ARGV}) get_filename_component(_ABS_INC ${_INC} ABSOLUTE) list(APPEND _ALL_INCS ${_ABS_INC}) + ##if(NOT EXISTS "${_ABS_INC}/") + ## message(FATAL_ERROR "Include not found: ${_ABS_INC}/") + ##endif() endforeach() include_directories(SYSTEM ${_ALL_INCS}) unset(_INC) -- cgit v1.2.3 From dc557b74409cf31a6406b26bbbe9302590319e86 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 24 Aug 2011 19:21:04 +0000 Subject: Cycles: linux build tweaks to allow static oiio/boost build. Wiki build instructions have been updated to do static linking now: http://wiki.blender.org/index.php/Dev:2.5/Source/Render/Cycles/Building --- build_files/cmake/macros.cmake | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'build_files/cmake') diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 437ad92631f..234d40668ba 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -278,12 +278,13 @@ macro(setup_liblinks 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_BOOST) + set(${boost_libs} ${BOOST_LIBRARIES}) + target_link_libraries(${target} ${boost_libs}) + endif() if(WITH_IMAGE_OPENEXR) if(WIN32 AND NOT UNIX) file_list_suffix(OPENEXR_LIBRARIES_DEBUG "${OPENEXR_LIBRARIES}" "_d") -- cgit v1.2.3 From 88481246f080c788f7fe85d658f91d2fe44ccae0 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Wed, 24 Aug 2011 19:31:14 +0000 Subject: Cycles: small fix for last commit, don't know what's going on here exactly but this solves it for now. --- build_files/cmake/macros.cmake | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'build_files/cmake') diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 234d40668ba..ab63c6f51a7 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -282,8 +282,12 @@ macro(setup_liblinks target_link_libraries(${target} ${OPENIMAGEIO_LIBRARY}) endif() if(WITH_BOOST) - set(${boost_libs} ${BOOST_LIBRARIES}) - target_link_libraries(${target} ${boost_libs}) + if(BOOST_CUSTOM) + set(${boost_libs} ${BOOST_LIBRARIES}) + target_link_libraries(${target} ${boost_libs}) + else() + target_link_libraries(${target} ${BOOST_LIBRARIES}) + endif() endif() if(WITH_IMAGE_OPENEXR) if(WIN32 AND NOT UNIX) -- cgit v1.2.3 From d48e4fc92be346810baa8cac595ab0a735882a87 Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Thu, 25 Aug 2011 12:50:52 +0000 Subject: Cycles: fix linux build issue, link order was wrong. --- build_files/cmake/macros.cmake | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) (limited to 'build_files/cmake') diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index ab63c6f51a7..15198b2f67d 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -282,12 +282,7 @@ macro(setup_liblinks target_link_libraries(${target} ${OPENIMAGEIO_LIBRARY}) endif() if(WITH_BOOST) - if(BOOST_CUSTOM) - set(${boost_libs} ${BOOST_LIBRARIES}) - target_link_libraries(${target} ${boost_libs}) - else() - target_link_libraries(${target} ${BOOST_LIBRARIES}) - endif() + target_link_libraries(${target} ${BOOST_LIBRARIES}) endif() if(WITH_IMAGE_OPENEXR) if(WIN32 AND NOT UNIX) -- cgit v1.2.3 From 08d52fcc8509fdd88af6afecd55e32cae500cef8 Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Sun, 18 Sep 2011 04:55:22 +0000 Subject: added FindOpenImageIO cmake module. --- build_files/cmake/Modules/FindOpenImageIO.cmake | 70 +++++++++++++++++++++++++ build_files/cmake/macros.cmake | 2 +- 2 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 build_files/cmake/Modules/FindOpenImageIO.cmake (limited to 'build_files/cmake') diff --git a/build_files/cmake/Modules/FindOpenImageIO.cmake b/build_files/cmake/Modules/FindOpenImageIO.cmake new file mode 100644 index 00000000000..7512b93e09e --- /dev/null +++ b/build_files/cmake/Modules/FindOpenImageIO.cmake @@ -0,0 +1,70 @@ +# - Find OpenImageIO library +# Find the native OpenImageIO includes and library +# This module defines +# OPENIMAGEIO_INCLUDE_DIRS, where to find openimageio.h, Set when +# OPENIMAGEIO_INCLUDE_DIR is found. +# OPENIMAGEIO_LIBRARIES, libraries to link against to use OpenImageIO. +# OPENIMAGEIO_ROOT_DIR, The base directory to search for OpenImageIO. +# This can also be an environment variable. +# OPENIMAGEIO_FOUND, If false, do not try to use OpenImageIO. +# +# also defined, but not for general use are +# OPENIMAGEIO_LIBRARY, where to find the OpenImageIO library. + +#============================================================================= +# Copyright 2011 Blender Foundation. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +# If OPENIMAGEIO_ROOT_DIR was defined in the environment, use it. +IF(NOT OPENIMAGEIO_ROOT_DIR AND NOT $ENV{OPENIMAGEIO_ROOT_DIR} STREQUAL "") + SET(OPENIMAGEIO_ROOT_DIR $ENV{OPENIMAGEIO_ROOT_DIR}) +ENDIF() + +SET(_openimageio_SEARCH_DIRS + ${OPENIMAGEIO_ROOT_DIR} + /usr/local + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave +) + +FIND_PATH(OPENIMAGEIO_INCLUDE_DIR + NAMES + OpenImageIO/imageio.h + HINTS + ${_openimageio_SEARCH_DIRS} + PATH_SUFFIXES + include +) + +FIND_LIBRARY(OPENIMAGEIO_LIBRARY + NAMES + OpenImageIO + HINTS + ${_openimageio_SEARCH_DIRS} + PATH_SUFFIXES + lib64 lib + ) + +# handle the QUIETLY and REQUIRED arguments and set OPENIMAGEIO_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenImageIO DEFAULT_MSG + OPENIMAGEIO_LIBRARY OPENIMAGEIO_INCLUDE_DIR) + +IF(OPENIMAGEIO_FOUND) + SET(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARY}) + SET(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO_INCLUDE_DIR}) +ENDIF(OPENIMAGEIO_FOUND) + +MARK_AS_ADVANCED( + OPENIMAGEIO_INCLUDE_DIR + OPENIMAGEIO_LIBRARY +) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 236c20cf8d3..9671bffe2bd 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -279,7 +279,7 @@ macro(setup_liblinks target_link_libraries(${target} ${TIFF_LIBRARY}) endif() if(WITH_OPENIMAGEIO) - target_link_libraries(${target} ${OPENIMAGEIO_LIBRARY}) + target_link_libraries(${target} ${OPENIMAGEIO_LIBRARIES}) endif() if(WITH_BOOST) target_link_libraries(${target} ${BOOST_LIBRARIES}) -- cgit v1.2.3