1 # ***** BEGIN GPL LICENSE BLOCK *****
3 # This program is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License
5 # as published by the Free Software Foundation; either version 2
6 # of the License, or (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software Foundation,
15 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 # The Original Code is Copyright (C) 2006, Blender Foundation
18 # All rights reserved.
20 # The Original Code is: all of this file.
22 # Contributor(s): Jacques Beaurain.
24 # ***** END GPL LICENSE BLOCK *****
26 #-----------------------------------------------------------------------------
27 # We don't allow in-source builds. This causes no end of troubles because
28 # all out-of-source builds will use the CMakeCache.txt file there and even
29 # build the libs and objects in it.
31 if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
32 if(NOT DEFINED WITH_IN_SOURCE_BUILD)
34 "CMake generation for blender is not allowed within the source directory!"
35 "\n Remove the CMakeCache.txt file and try again from another folder, e.g.:"
37 "\n rm CMakeCache.txt"
43 "\n Alternately define WITH_IN_SOURCE_BUILD to force this option (not recommended!)"
48 cmake_minimum_required(VERSION 2.8)
50 if(NOT EXECUTABLE_OUTPUT_PATH)
54 # this starts out unset
55 list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/build_files/cmake/Modules")
57 # avoid having empty buildtype
58 set(CMAKE_BUILD_TYPE_INIT "Release")
60 # quiet output for Makefiles, 'make -s' helps too
61 # set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
63 # global compile definitions since add_definitions() adds for all.
64 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG _DEBUG)
65 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE NDEBUG)
66 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_MINSIZEREL NDEBUG)
67 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO NDEBUG)
70 #-----------------------------------------------------------------------------
73 # see "cmake --help-policy CMP0003"
74 # So library linking is more sane
75 cmake_policy(SET CMP0003 NEW)
77 # So BUILDINFO and BLENDERPATH strings are automatically quoted
78 cmake_policy(SET CMP0005 NEW)
80 # So syntax problems are errors
81 cmake_policy(SET CMP0010 NEW)
83 # Input directories must have CMakeLists.txt
84 cmake_policy(SET CMP0014 NEW)
86 #-----------------------------------------------------------------------------
88 include(build_files/cmake/macros.cmake)
91 #-----------------------------------------------------------------------------
94 blender_project_hack_pre()
98 blender_project_hack_post()
102 #-----------------------------------------------------------------------------
103 # Redirect output files
105 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" FORCE)
106 set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" FORCE)
108 #-----------------------------------------------------------------------------
109 # Set default config options
111 get_blender_version()
114 # Blender internal features
115 option(WITH_BLENDER "Build blender (disable to build only the blender player)" ON)
116 mark_as_advanced(WITH_BLENDER)
118 option(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON)
120 option(WITH_PYTHON "Enable Embedded Python API (only disable for development)" ON)
121 option(WITH_PYTHON_SECURITY "Disables execution of scripts within blend files by default (recommend to leave off)" OFF)
122 mark_as_advanced(WITH_PYTHON) # dont want people disabling this unless they really know what they are doing.
123 mark_as_advanced(WITH_PYTHON_SECURITY) # some distributions see this as a security issue, rather than have them patch it, make a build option.
125 option(WITH_PYTHON_SAFETY "Enable internal API error checking to track invalid data to prevent crash on access (at the expense of some effeciency, only enable for development)." OFF)
126 option(WITH_PYTHON_MODULE "Enable building as a python module which runs without a user interface, like running regular blender in background mode (experimental, only enable for development)" OFF)
127 option(WITH_BUILDINFO "Include extra build details (only disable for development & faster builds)" ON)
128 option(WITH_IK_ITASC "Enable ITASC IK solver (only disable for development & for incompatible C++ compilers)" ON)
129 option(WITH_IK_SOLVER "Enable Legacy IK solver (only disable for development)" ON)
130 option(WITH_FFTW3 "Enable FFTW3 support (Used for smoke and audio effects)" ON)
131 option(WITH_BULLET "Enable Bullet (Physics Engine)" ON)
132 option(WITH_GAMEENGINE "Enable Game Engine" ON)
133 option(WITH_PLAYER "Build Player" OFF)
134 option(WITH_OPENCOLORIO "Enable OpenColorIO color management" ON)
135 option(WITH_COMPOSITOR "Enable the tile based nodal compositor" ON)
136 option(WITH_COMPOSITOR_LEGACY "Enable legacy compositor" OFF)
138 # GHOST Windowing Library Options
139 option(WITH_GHOST_DEBUG "Enable debugging output for the GHOST library" OFF)
140 mark_as_advanced(WITH_GHOST_DEBUG)
142 option(WITH_GHOST_SDL "Enable building blender against SDL for windowing rather then the native APIs" OFF)
143 mark_as_advanced(WITH_GHOST_SDL)
146 option(WITH_HEADLESS "Build without graphical support (renderfarm, server mode only)" OFF)
147 mark_as_advanced(WITH_HEADLESS)
149 option(WITH_AUDASPACE "Build with blenders audio library (only disable if you know what you're doing!)" ON)
150 mark_as_advanced(WITH_AUDASPACE)
153 # (unix defaults to OpenMP On)
154 if((UNIX AND NOT APPLE) OR (MINGW))
155 set(PLATFORM_DEFAULT ON)
157 set(PLATFORM_DEFAULT OFF)
159 option(WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" ${PLATFORM_DEFAULT})
160 unset(PLATFORM_DEFAULT)
163 if(UNIX AND NOT APPLE)
164 option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)" ON)
165 option(WITH_X11_XF86VMODE "Enable X11 video mode switching" ON)
166 option(WITH_SYSTEM_GLEW "Use GLEW OpenGL wrapper library provided by the operating system" ON)
168 # freebsd doesn't seems to support XDND
169 if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
170 option(WITH_GHOST_XDND "Enable drag'n'drop support on Linux using XDND protocol" ON)
173 # not an option for other OS's
174 set(WITH_SYSTEM_GLEW OFF)
178 # (unix defaults to System OpenJPEG On)
179 if(UNIX AND NOT APPLE)
180 set(PLATFORM_DEFAULT ON)
182 set(PLATFORM_DEFAULT OFF)
184 option(WITH_SYSTEM_OPENJPEG "Use the operating systems OpenJPEG library" ${PLATFORM_DEFAULT})
185 unset(PLATFORM_DEFAULT)
189 option(WITH_MOD_FLUID "Enable Elbeem Modifier (Fluid Simulation)" ON)
190 option(WITH_MOD_SMOKE "Enable Smoke Modifier (Smoke Simulation)" ON)
191 option(WITH_MOD_BOOLEAN "Enable Boolean Modifier" ON)
192 option(WITH_MOD_REMESH "Enable Remesh Modifier" ON)
193 # option(WITH_MOD_CLOTH_ELTOPO "Enable Experimental cloth solver" OFF) # this is now only available in a branch
194 # mark_as_advanced(WITH_MOD_CLOTH_ELTOPO)
195 option(WITH_MOD_OCEANSIM "Enable Ocean Modifier" OFF)
197 # Image format support
198 option(WITH_IMAGE_OPENEXR "Enable OpenEXR Support (http://www.openexr.com)" ON)
199 option(WITH_IMAGE_OPENJPEG "Enable OpenJpeg Support (http://www.openjpeg.org)" ON)
200 option(WITH_IMAGE_TIFF "Enable LibTIFF Support" ON)
201 option(WITH_IMAGE_DDS "Enable DDS Image Support" ON)
202 option(WITH_IMAGE_CINEON "Enable CINEON and DPX Image Support" ON)
203 option(WITH_IMAGE_HDR "Enable HDR Image Support" ON)
204 option(WITH_IMAGE_REDCODE "Enable RedCode Image Support" OFF)
205 option(WITH_IMAGE_FRAMESERVER "Enable image FrameServer Support for rendering" ON)
207 # Audio/Video format support
208 option(WITH_CODEC_AVI "Enable Blenders own AVI file support (raw/jpeg)" ON)
209 option(WITH_CODEC_FFMPEG "Enable FFMPeg Support (http://ffmpeg.org)" OFF)
211 option(WITH_CODEC_SNDFILE "Enable libsndfile Support (http://www.mega-nerd.com/libsndfile)" OFF)
212 if(APPLE OR (WIN32 AND NOT UNIX))
213 option(WITH_CODEC_QUICKTIME "Enable Quicktime Support" OFF)
217 # disable opencollada on non-apple unix because opencollada has no package for debian
218 option(WITH_OPENCOLLADA "Enable OpenCollada Support (http://www.opencollada.org)" OFF)
221 option(WITH_SDL "Enable SDL for sound and joystick support" ON)
222 option(WITH_OPENAL "Enable OpenAL Support (http://www.openal.org)" ON)
223 option(WITH_JACK "Enable Jack Support (http://www.jackaudio.org)" OFF)
226 option(WITH_LZO "Enable fast LZO compression (used for pointcache)" ON)
227 option(WITH_LZMA "Enable best LZMA compression, (used for pointcache)" ON)
229 # Camera/motion tracking
230 option(WITH_LIBMV "Enable libmv structure from motion library" ON)
233 option(WITH_INPUT_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ON)
234 option(WITH_RAYOPTIMIZATION "Enable use of SIMD (SSE) optimizations for the raytracer" ON)
235 if(UNIX AND NOT APPLE)
236 option(WITH_INSTALL_PORTABLE "Install redistributeable runtime, otherwise install into CMAKE_INSTALL_PREFIX" ON)
237 option(WITH_STATIC_LIBS "Try to link with static libraries, as much as possible, to make blender more portable across distributions" OFF)
239 option(WITH_PYTHON_INSTALL "Copy system python into the blender install folder" ON)
240 option(WITH_PYTHON_INSTALL_NUMPY "Copy system numpy into the blender install folder" ON)
241 set(PYTHON_NUMPY_PATH "" CACHE PATH "Python to python site-packages or dist-packages containing 'numpy' module")
242 mark_as_advanced(PYTHON_NUMPY_PATH)
245 option(WITH_CYCLES "Enable cycles Render Engine" ON)
246 option(WITH_CYCLES_TEST "Build cycles test application" OFF)
247 option(WITH_CYCLES_OSL "Build Cycles with OSL support" OFF)
248 option(WITH_CYCLES_CUDA_BINARIES "Build cycles CUDA binaries" OFF)
249 set(CYCLES_CUDA_BINARIES_ARCH sm_13 sm_20 sm_21 sm_30 CACHE STRING "CUDA architectures to build binaries for")
250 mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
251 unset(PLATFORM_DEFAULT)
254 option(WITH_LLVM "Use LLVM" OFF)
256 # disable for now, but plan to support on all platforms eventually
257 option(WITH_MEM_JEMALLOC "Enable malloc replacement (http://www.canonware.com/jemalloc)" OFF)
258 mark_as_advanced(WITH_MEM_JEMALLOC)
261 option(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking (only enable for development)" OFF)
262 mark_as_advanced(WITH_CXX_GUARDEDALLOC)
264 option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF)
265 mark_as_advanced(WITH_ASSERT_ABORT)
269 cmake_minimum_required(VERSION 2.8.8)
270 cmake_policy(VERSION 2.8.8)
272 if(NOT CMAKE_OSX_ARCHITECTURES)
273 set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING
274 "Choose the architecture you want to build Blender for: i386, x86_64 or ppc"
278 execute_process(COMMAND uname -r OUTPUT_VARIABLE MAC_SYS) # check for actual system-version
279 if (${MAC_SYS} MATCHES 12)
281 elseif (${MAC_SYS} MATCHES 11)
283 elseif(${MAC_SYS} MATCHES 10)
285 elseif(${MAC_SYS} MATCHES 9)
288 set(OSX_SYSTEM unsupported)
290 message(STATUS "Detected system-version: " ${OSX_SYSTEM})
292 if(${CMAKE_GENERATOR} MATCHES "Xcode")
294 ##### cmake incompatibility with xcode 4.3 and higher #####
295 if(${XCODE_VERSION} MATCHES '') # cmake fails due looking for xcode in the wrong path, thus will be empty var
296 message(FATAL_ERROR "Xcode 4.3 and higher must be used with cmake 2.8-8 or higher")
298 ### end cmake incompatibility with xcode 4.3 and higher ###
300 if(${XCODE_VERSION} VERSION_EQUAL 4 OR ${XCODE_VERSION} VERSION_GREATER 4 AND ${XCODE_VERSION} VERSION_LESS 4.3)
301 # Xcode 4 defaults to the Apple LLVM Compiler.
302 # Override the default compiler selection because Blender only compiles with gcc up to xcode 4.2
303 set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
304 message(STATUS "Setting compiler to: " ${CMAKE_XCODE_ATTRIBUTE_GCC_VERSION})
306 else() # unix makefile generator does not fill XCODE_VERSION var, so we get it with a command
307 execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERS_BUILD_NR)
308 string(SUBSTRING "${XCODE_VERS_BUILD_NR}" 6 3 XCODE_VERSION) # truncate away build-nr
309 unset(XCODE_VERS_BUILD_NR)
312 message(STATUS "Detected Xcode-version: " ${XCODE_VERSION})
314 if(${XCODE_VERSION} VERSION_LESS 4.3)
315 set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk CACHE PATH "" FORCE) # use guaranteed existing sdk
317 # note: i don't use xcode-select path on purpose, cause also /Applications/Xcode.app would be allowed
318 # absolute pathes are more foolproof here !
319 set(OSX_SYSROOT_PREFIX /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform)
320 set(OSX_DEVELOPER_PREFIX /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk) # use guaranteed existing sdk
321 set(CMAKE_OSX_SYSROOT ${OSX_SYSROOT_PREFIX}/${OSX_DEVELOPER_PREFIX} CACHE PATH "" FORCE)
324 if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
325 set(CMAKE_OSX_DEPLOYMENT_TARGET "10.5" CACHE STRING "" FORCE) # 10.5 is our min. target, if you use higher sdk, weak linking happens
328 if(NOT ${CMAKE_GENERATOR} MATCHES "Xcode")
329 # force CMAKE_OSX_DEPLOYMENT_TARGET for makefiles, will not work else ( cmake bug ? )
330 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
331 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
332 add_definitions ("-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
335 option(WITH_COCOA "Use Cocoa framework instead of deprecated Carbon" ON)
336 option(USE_QTKIT "Use QtKit instead of Carbon quicktime (needed for having partial quicktime for 64bit)" OFF)
337 option(WITH_LIBS10.5 "Use 10.5 libs (needed for 64bit builds)" OFF)
338 if(CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
339 set(USE_QTKIT ON CACHE BOOL "ON" FORCE) # no Quicktime in 64bit
344 #-----------------------------------------------------------------------------
345 # Check for conflicting/unsupported configurations
347 if(NOT WITH_BLENDER AND NOT WITH_PLAYER AND NOT WITH_CYCLES_TEST)
348 message(FATAL_ERROR "At least one of WITH_BLENDER or WITH_PLAYER must be enabled, nothing to do!")
351 if(NOT WITH_GAMEENGINE AND WITH_PLAYER)
352 message(FATAL_ERROR "WITH_PLAYER requires WITH_GAMEENGINE")
355 if(NOT WITH_AUDASPACE)
357 message(FATAL_ERROR "WITH_OPENAL requires WITH_AUDASPACE")
360 message(FATAL_ERROR "WITH_JACK requires WITH_AUDASPACE")
363 message(FATAL_ERROR "WITH_GAMEENGINE requires WITH_AUDASPACE")
367 if(NOT WITH_SDL AND WITH_GHOST_SDL)
368 message(FATAL_ERROR "WITH_GHOST_SDL requires WITH_SDL")
371 if(WITH_IMAGE_REDCODE AND ((NOT WITH_IMAGE_OPENJPEG) OR (NOT WITH_CODEC_FFMPEG)))
372 message(FATAL_ERROR "WITH_IMAGE_REDCODE requires WITH_IMAGE_OPENJPEG and WITH_CODEC_FFMPEG")
375 # python module, needs some different options
376 if(WITH_PYTHON_MODULE AND WITH_PLAYER)
377 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PLAYER to be OFF")
380 if(WITH_PYTHON_MODULE AND WITH_PYTHON_INSTALL)
381 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PYTHON_INSTALL to be OFF")
385 # may as well build python module without a UI
386 if(WITH_PYTHON_MODULE)
387 set(WITH_HEADLESS ON)
390 # auto enable openimageio for cycles
392 set(WITH_OPENIMAGEIO ON)
395 # auto enable boost for cycles, booleans, audaspace or i18n
396 if(WITH_CYCLES OR WITH_MOD_BOOLEAN OR WITH_AUDASPACE OR WITH_INTERNATIONAL)
400 # auto enable llvm for cycles_osl
402 set(WITH_LLVM ON CACHE BOOL "ON" FORCE)
405 # don't store paths to libs for portable distribution
406 if(WITH_INSTALL_PORTABLE)
407 set(CMAKE_SKIP_BUILD_RPATH TRUE)
410 if(WITH_GHOST_SDL OR WITH_HEADLESS)
411 set(WITH_GHOST_XDND OFF)
412 set(WITH_X11_XF86VMODE OFF)
413 set(WITH_X11_XINPUT OFF)
417 if(WITH_CODEC_QUICKTIME)
418 message(FATAL_ERROR "MINGW requires WITH_CODEC_QUICKTIME to be OFF "
419 "because it is currently unsupported, remove this "
420 "line if youre a developer who wants to add support.")
424 TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
427 #-----------------------------------------------------------------------------
428 # Check for valid directories
429 # ... svn extern paths can be missing because of svn-git.
431 if(WITH_INTERNATIONAL)
432 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/datafiles/locale")
433 message(WARNING "Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
434 "This is an 'svn external', which are known not to work with bridges to other version "
435 "control systems, disabling 'WITH_INTERNATIONAL'.")
436 set(WITH_INTERNATIONAL OFF)
441 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/scripts/addons")
442 message(WARNING "Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
443 "This is an 'svn external', which are known not to work with bridges to other version "
444 "control systems: * CONTINUING WITHOUT ADDONS *")
448 #-----------------------------------------------------------------------------
449 # Initialize un-cached vars, avoid unused warning
451 # linux only, not cached
452 set(WITH_BINRELOC OFF)
454 # MAXOSX only, set to avoid uninitialized
460 # these are added to later on.
464 # for gcc -Wno-blah-blah
465 set(CC_REMOVE_STRICT_FLAGS)
467 # libraries to link the binary with passed to target_link_libraries()
468 # known as LLIBS to scons
469 set(PLATFORM_LINKLIBS "")
471 # Added to linker flags in setup_liblinks
472 # - CMAKE_EXE_LINKER_FLAGS
473 # - CMAKE_EXE_LINKER_FLAGS_DEBUG
474 set(PLATFORM_LINKFLAGS "")
475 set(PLATFORM_LINKFLAGS_DEBUG "")
478 # disabled for now, not supported
479 # option(WITH_WEBPLUGIN "Enable Web Plugin (Unix only)" OFF)
481 # For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
484 # -D PYTHON_VERSION=3.3 \
485 # -D PYTHON_INCLUDE_DIR=/opt/py33/include/python3.3d \
486 # -D PYTHON_LIBRARY=/opt/py33/lib/libpython3.3d.so
490 # -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.3/include/python3.3 \
491 # -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/config \
494 # When changing any of this remember to update the notes in doc/build_systems/cmake.txt
496 #-----------------------------------------------------------------------------
499 if(UNIX AND NOT APPLE)
500 macro(find_package_wrapper)
501 STRING(TOUPPER ${ARGV0} _NAME_UPPER)
502 if(${WITH_STATIC_LIBS})
503 set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES})
504 set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
506 find_package(${ARGV})
507 if(${WITH_STATIC_LIBS})
508 set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back})
509 unset(_cmake_find_library_suffixes_back)
513 find_package_wrapper(JPEG REQUIRED)
514 find_package_wrapper(PNG REQUIRED)
515 find_package_wrapper(ZLIB REQUIRED)
516 find_package_wrapper(Freetype REQUIRED)
519 # No way to set py33. remove for now.
520 # find_package(PythonLibs)
522 # Use our own instead, since wothout py is such a rare case,
523 # require this package
524 # XXX Linking errors with debian static python :/
525 # find_package_wrapper(PythonLibsUnix REQUIRED)
526 find_package(PythonLibsUnix REQUIRED)
529 if(WITH_IMAGE_OPENEXR)
530 find_package_wrapper(OpenEXR) # our own module
531 if(NOT OPENEXR_FOUND)
532 set(WITH_IMAGE_OPENEXR OFF)
536 if(WITH_IMAGE_OPENJPEG)
537 find_package_wrapper(OpenJPEG)
538 if(NOT OPENJPEG_FOUND)
539 set(WITH_IMAGE_OPENJPEG OFF)
544 # XXX Linking errors with debian static tiff :/
545 # find_package_wrapper(TIFF)
548 set(WITH_IMAGE_TIFF OFF)
554 find_package_wrapper(OpenAL)
561 find_package_wrapper(SDL)
568 # unset(SDLMAIN_LIBRARY CACHE)
575 find_package_wrapper(Jack)
582 if(WITH_CODEC_SNDFILE)
583 find_package_wrapper(SndFile)
584 if(NOT SNDFILE_FOUND)
585 set(WITH_CODEC_SNDFILE OFF)
589 if(WITH_CODEC_FFMPEG)
590 set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
591 set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
593 mark_as_advanced(FFMPEG)
595 # lame, but until we have proper find module for ffmpeg
596 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
597 if(EXISTS "${FFMPEG}/include/ffmpeg/")
598 list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg")
602 mark_as_advanced(FFMPEG_LIBRARIES)
603 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
604 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
608 find_package_wrapper(Fftw3)
615 find_package_wrapper(OpenCOLLADA)
616 if(OPENCOLLADA_FOUND)
617 find_package_wrapper(XML2)
618 find_package_wrapper(PCRE)
620 set(WITH_OPENCOLLADA OFF)
624 if(WITH_MEM_JEMALLOC)
625 find_package_wrapper(JeMalloc)
626 if(NOT JEMALLOC_FOUND)
627 set(WITH_MEM_JEMALLOC OFF)
632 find_package_wrapper(Spacenav)
633 if(NOT SPACENAV_FOUND)
634 set(WITH_INPUT_NDOF OFF)
637 # use generic names within blenders buildsystem.
639 set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
640 set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
645 # uses in build instructions to override include and library variables
647 # XXX No more lib dir, is this multithread stuff still needed?
648 if(${WITH_STATIC_LIBS})
649 set(Boost_USE_STATIC_LIBS ON)
652 set(Boost_USE_MULTITHREADED OFF)
654 set(Boost_USE_MULTITHREADED ON)
656 set(__boost_packages filesystem regex system thread date_time)
657 if (WITH_INTERNATIONAL)
658 list(APPEND __boost_packages locale)
660 find_package(Boost 1.34 COMPONENTS ${__boost_packages})
661 if(Boost_USE_STATIC_LIBS AND Boost_USE_ICU)
662 find_package(IcuLinux)
664 mark_as_advanced(Boost_DIR) # why doesnt boost do this?
667 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
668 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
669 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
670 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
674 find_package_wrapper(OpenImageIO)
676 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES})
677 set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
678 set(OPENIMAGEIO_DEFINITIONS)
681 list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}")
683 if(WITH_IMAGE_OPENEXR)
684 list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}")
687 if(NOT OPENIMAGEIO_FOUND)
688 set(WITH_OPENIMAGEIO OFF)
689 message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
694 find_package_wrapper(OpenColorIO)
696 set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES})
697 set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
698 set(OPENCOLORIO_DEFINITIONS)
700 if(NOT OPENCOLORIO_FOUND)
701 set(WITH_OPENCOLORIO OFF)
702 message(STATUS "OpenColorIO not found")
706 # XXX Maybe most of this section should go into an llvm module?
708 # Set llvm version if not specified
710 set(LLVM_VERSION "3.0")
714 FIND_PROGRAM(LLVM_CONFIG llvm-config-${LLVM_VERSION} HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
716 FIND_PROGRAM(LLVM_CONFIG llvm-config HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
719 FIND_PROGRAM(LLVM_CONFIG llvm-config-${LLVM_VERSION})
721 FIND_PROGRAM(LLVM_CONFIG llvm-config)
724 execute_process(COMMAND ${LLVM_CONFIG} --version
725 OUTPUT_VARIABLE LLVM_VERSION
726 OUTPUT_STRIP_TRAILING_WHITESPACE)
727 execute_process(COMMAND ${LLVM_CONFIG} --prefix
728 OUTPUT_VARIABLE LLVM_DIRECTORY
729 OUTPUT_STRIP_TRAILING_WHITESPACE)
730 execute_process(COMMAND ${LLVM_CONFIG} --libdir
731 OUTPUT_VARIABLE LLVM_LIB_DIR
732 OUTPUT_STRIP_TRAILING_WHITESPACE)
733 find_library(LLVM_LIBRARY
734 NAMES LLVMAnalysis # first of a whole bunch of libs to get
735 PATHS ${LLVM_LIB_DIR})
736 message(STATUS "LLVM version = ${LLVM_VERSION}")
737 message(STATUS "LLVM dir = ${LLVM_DIRECTORY}")
738 message(STATUS "LLVM lib dir = ${LLVM_LIB_DIR}")
739 set(LLVM_VERSION ${LLVM_VERSION} CACHE STRING "Version of LLVM to use")
740 set(LLVM_DIRECTORY ${LLVM_DIRECTORY} CACHE PATH "Path to the LLVM installation")
742 if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIB_DIR)
744 # if static LLVM libraries were requested, use llvm-config to generate
745 # the list of what libraries we need, and substitute that in the right
746 # way for LLVM_LIBRARY.
747 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
748 OUTPUT_VARIABLE LLVM_LIBRARY
749 OUTPUT_STRIP_TRAILING_WHITESPACE)
750 string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
753 message(FATAL_ERROR "LLVM not found.")
756 # Fix for conflict with Mesa llvmpipe
757 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/source/creator/blender.map")
761 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
763 message(STATUS "CYCLES_OSL = ${CYCLES_OSL}")
765 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
766 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
767 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
768 # Note: --whole-archive is needed to force loading of all symbols in liboslexec,
769 # otherwise LLVM is missing the osl_allocate_closure_component function
770 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -Wl,--whole-archive ${OSL_LIB_EXEC} -Wl,--no-whole-archive ${OSL_LIB_QUERY})
771 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
772 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
774 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
776 message(STATUS "OSL includes = ${OSL_INCLUDES}")
777 message(STATUS "OSL library = ${OSL_LIBRARIES}")
778 message(STATUS "OSL compiler = ${OSL_COMPILER}")
780 message(STATUS "OSL not found")
784 # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
785 set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread -lstdc++")
787 if((NOT WITH_HEADLESS) AND (NOT WITH_GHOST_SDL))
788 find_package(X11 REQUIRED)
789 find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
790 mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
792 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_X11_LIB}")
795 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xinput_LIB}")
798 if(WITH_X11_XF86VMODE)
799 # XXX, why dont cmake make this available?
800 FIND_LIBRARY(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
801 mark_as_advanced(X11_Xxf86vmode_LIB)
802 if(X11_Xxf86vmode_LIB)
803 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xxf86vmode_LIB}")
805 set(WITH_X11_XF86VMODE OFF)
810 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
811 if(NOT WITH_PYTHON_MODULE)
812 # BSD's dont use libdl.so
813 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -ldl")
814 # binreloc is linux only
815 set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include)
816 set(WITH_BINRELOC ON)
820 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -pthread")
822 # lfs on glibc, all compilers should use
823 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
826 if(CMAKE_COMPILER_IS_GNUCC)
827 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
828 # CLang is the same as GCC for now.
829 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
830 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
832 elseif(CMAKE_CXX_COMPILER_ID MATCHES "SunPro")
833 set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
836 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
837 # think these next two are broken
838 find_program(XIAR xiar)
840 set(CMAKE_AR "${XIAR}")
842 mark_as_advanced(XIAR)
844 find_program(XILD xild)
846 set(CMAKE_LINKER "${XILD}")
848 mark_as_advanced(XILD)
850 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
851 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
853 # set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
854 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
855 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
860 # this file is included anyway when building under Windows with cl.exe
861 # include(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)
863 if(CMAKE_COMPILER_IS_GNUCC)
864 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
865 INCLUDE (CheckCSourceCompiles)
866 # Setup 64bit and 64bit windows systems
867 CHECK_C_SOURCE_COMPILES("
876 message("Compiling for 64 bit with MinGW-w64.")
877 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
880 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
882 # Setup 64bit and 64bit windows systems
884 message("64 bit compiler detected.")
885 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64)
889 add_definitions(-DWIN32)
891 set(JPEG "${LIBDIR}/jpeg")
892 set(JPEG_INCLUDE_DIR "${JPEG}/include")
893 set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
895 set(WINTAB_INC ${LIBDIR}/wintab/include)
898 set(OPENAL ${LIBDIR}/openal)
899 set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
900 set(OPENAL_LIBRARY wrap_oal)
901 set(OPENAL_LIBPATH ${OPENAL}/lib)
904 if(WITH_CODEC_SNDFILE)
905 set(SNDFILE ${LIBDIR}/sndfile)
906 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
907 set(SNDFILE_LIBRARIES libsndfile-1)
908 set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
912 set(SDL ${LIBDIR}/sdl)
913 set(SDL_INCLUDE_DIR ${SDL}/include)
915 set(SDL_LIBPATH ${SDL}/lib)
918 if(WITH_CODEC_QUICKTIME)
919 set(QUICKTIME ${LIBDIR}/QTDevWin)
920 set(QUICKTIME_INCLUDE_DIRS ${QUICKTIME}/CIncludes)
921 set(QUICKTIME_LIBRARIES qtmlClient)
922 set(QUICKTIME_LIBPATH ${QUICKTIME}/Libraries)
925 if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
926 add_definitions(-D__SSE__ -D__MMX__)
930 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
932 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
933 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
934 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
935 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
936 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
937 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
939 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
942 message(STATUS "OSL not found")
947 set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi)
949 add_definitions(/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_CONSOLE /D_LIB)
951 set(CMAKE_CXX_FLAGS "/nologo /J /Gd /EHsc" CACHE STRING "MSVC MT C++ flags " FORCE)
952 set(CMAKE_C_FLAGS "/nologo /J /Gd" CACHE STRING "MSVC MT C++ flags " FORCE)
955 set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
957 set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
959 set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE)
960 set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE)
961 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE)
963 set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
965 set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
967 set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE)
968 set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE)
969 set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE)
971 # most msvc warnings are C & C++
972 set(_WARNINGS "/W3 /wd4018 /wd4244 /wd4305 /wd4800 /wd4181 /wd4065 /wd4267 /we4013 /wd4200")
973 set(C_WARNINGS "${_WARNINGS}")
974 set(CXX_WARNINGS "${_WARNINGS}")
977 if(WITH_MOD_CLOTH_ELTOPO)
978 set(LAPACK ${LIBDIR}/lapack)
979 # set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
980 set(LAPACK_LIBPATH ${LAPACK}/lib)
982 ${LIBDIR}/lapack/lib/libf2c.lib
983 ${LIBDIR}/lapack/lib/clapack_nowrap.lib
984 ${LIBDIR}/lapack/lib/BLAS_nowrap.lib
988 set(PNG_LIBRARIES libpng)
989 set(JPEG_LIBRARIES libjpeg)
991 set(PNG "${LIBDIR}/png")
992 set(PNG_INCLUDE_DIR "${PNG}/include")
993 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
995 set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
997 set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz.lib)
999 set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/zlib.lib)
1002 set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
1003 set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
1005 set(FREETYPE ${LIBDIR}/freetype)
1006 set(FREETYPE_INCLUDE_DIRS
1007 ${LIBDIR}/freetype/include
1008 ${LIBDIR}/freetype/include/freetype2
1010 set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
1013 set(FFTW3 ${LIBDIR}/fftw3)
1014 set(FFTW3_LIBRARIES libfftw)
1015 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1016 set(FFTW3_LIBPATH ${FFTW3}/lib)
1019 if(WITH_OPENCOLLADA)
1020 set(OPENCOLLADA ${LIBDIR}/opencollada)
1022 set(OPENCOLLADA_INCLUDE_DIRS
1023 ${LIBDIR}/opencollada/include/COLLADAStreamWriter/include
1024 ${LIBDIR}/opencollada/include/COLLADABaseUtils/include
1025 ${LIBDIR}/opencollada/include/COLLADAFramework/include
1026 ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader/include
1027 ${LIBDIR}/opencollada/include/GeneratedSaxParser/include
1029 set_lib_path(OPENCOLLADA_LIBPATH "opencollada")
1031 set(OPENCOLLADA_LIBRARIES
1032 ${OPENCOLLADA_LIBPATH}/lib/OpenCOLLADASaxFrameworkLoader.lib
1033 ${OPENCOLLADA_LIBPATH}/lib/OpenCOLLADAFramework.lib
1034 ${OPENCOLLADA_LIBPATH}/lib/OpenCOLLADABaseUtils.lib
1035 ${OPENCOLLADA_LIBPATH}/lib/OpenCOLLADAStreamWriter.lib
1036 ${OPENCOLLADA_LIBPATH}/lib/MathMLSolver.lib
1037 ${OPENCOLLADA_LIBPATH}/lib/GeneratedSaxParser.lib
1038 ${OPENCOLLADA_LIBPATH}/lib/xml2.lib
1039 ${OPENCOLLADA_LIBPATH}/lib/buffer.lib
1040 ${OPENCOLLADA_LIBPATH}/lib/ftoa.lib
1041 ${OPENCOLLADA_LIBPATH}/lib/UTF.lib
1044 ${OPENCOLLADA_LIBPATH}/lib/pcre.lib
1047 unset(OPENCOLLADA_LIBPATH)
1051 if(WITH_CODEC_FFMPEG)
1052 set(FFMPEG_INCLUDE_DIRS
1053 ${LIBDIR}/ffmpeg/include
1054 ${LIBDIR}/ffmpeg/include/msvc
1056 set(FFMPEG_LIBRARIES
1057 ${LIBDIR}/ffmpeg/lib/avcodec-53.lib
1058 ${LIBDIR}/ffmpeg/lib/avformat-53.lib
1059 ${LIBDIR}/ffmpeg/lib/avdevice-53.lib
1060 ${LIBDIR}/ffmpeg/lib/avutil-51.lib
1061 ${LIBDIR}/ffmpeg/lib/swscale-2.lib
1065 if(WITH_IMAGE_OPENEXR)
1066 set_lib_path(OPENEXR "openexr")
1067 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1068 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1069 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1070 set(OPENEXR_LIBRARIES
1071 ${OPENEXR_LIBPATH}/Iex.lib
1072 ${OPENEXR_LIBPATH}/Half.lib
1073 ${OPENEXR_LIBPATH}/IlmImf.lib
1074 ${OPENEXR_LIBPATH}/Imath.lib
1075 ${OPENEXR_LIBPATH}/IlmThread.lib
1080 set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
1081 set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
1085 set(JACK_INCLUDE_DIRS
1086 ${LIBDIR}/jack/include/jack
1087 ${LIBDIR}/jack/include
1089 set(JACK_LIBRARIES ${LIBDIR}/jack/lib/libjack.lib)
1093 # normally cached but not since we include them with blender
1095 set(PYTHON_VERSION 3.2) # CACHE STRING)
1097 set(PYTHON_VERSION 3.3) # CACHE STRING)
1100 set_lib_path(PYTHON "python")
1101 STRING(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1102 set(PYTHON_LIBRARY ${PYTHON}/lib/python${_PYTHON_VERSION_NO_DOTS}.lib) #CACHE FILEPATH
1103 unset(_PYTHON_VERSION_NO_DOTS)
1105 #Shared includes for both vc2008 and vc2010
1106 set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION})
1109 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1110 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1114 set(BOOST ${LIBDIR}/boost)
1115 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1117 set(BOOST_LIBPATH ${BOOST}/vc2010/lib)
1118 set(BOOST_POSTFIX "vc100-mt-s-1_49.lib")
1119 set(BOOST_DEBUG_POSTFIX "vc100-mt-sgd-1_49.lib")
1121 set(BOOST_LIBPATH ${BOOST}/lib)
1122 set(BOOST_POSTFIX "vc90-mt-s-1_49.lib")
1123 set(BOOST_DEBUG_POSTFIX "vc90-mt-sgd-1_49.lib")
1126 optimized libboost_date_time-${BOOST_POSTFIX} optimized libboost_filesystem-${BOOST_POSTFIX}
1127 optimized libboost_regex-${BOOST_POSTFIX}
1128 optimized libboost_system-${BOOST_POSTFIX} optimized libboost_thread-${BOOST_POSTFIX}
1129 debug libboost_date_time-${BOOST_DEBUG_POSTFIX} debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
1130 debug libboost_regex-${BOOST_DEBUG_POSTFIX}
1131 debug libboost_system-${BOOST_DEBUG_POSTFIX} debug libboost_thread-${BOOST_DEBUG_POSTFIX})
1132 if(WITH_INTERNATIONAL)
1133 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1134 optimized libboost_locale-${BOOST_POSTFIX}
1135 debug libboost_locale-${BOOST_DEBUG_POSTFIX})
1136 endif(WITH_INTERNATIONAL)
1137 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1140 if(WITH_OPENIMAGEIO)
1141 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1142 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1143 set(OPENIMAGEIO_LIBRARIES optimized OpenImageIO debug OpenImageIO_d)
1144 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1145 set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0")
1149 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1150 file(GLOB LLVM_LIBRARY ${LLVM_DIRECTORY}/lib/*.lib)
1151 set(LLVM_STATIC YES)
1154 if(WITH_OPENCOLORIO)
1155 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1156 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1157 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1158 set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
1159 set(OPENCOLORIO_DEFINITIONS)
1163 set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
1165 # MSVC only, Mingw doesnt need
1167 set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
1169 set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
1172 set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
1174 # used in many places so include globally, like OpenGL
1175 blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
1177 elseif(CMAKE_COMPILER_IS_GNUCC)
1178 # keep GCC specific stuff here
1179 set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi")
1180 set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
1183 #We need to take care though not to have these on debug builds because they may play funky with gdb
1184 if(CMAKE_BUILD_TYPE MATCHES "Release")
1185 set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmmx -ftree-vectorize")
1187 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
1188 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread")
1190 add_definitions(-DFREE_WINDOWS64 -DMS_WIN64)
1191 #Turn off OpenMP since it causes crashes on render for subsurfed/multiresolution meshes
1192 set(WITH_OPENMP OFF)
1195 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1197 add_definitions(-DFREE_WINDOWS)
1199 set(PNG "${LIBDIR}/png")
1200 set(PNG_INCLUDE_DIR "${PNG}/include")
1201 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1204 set(JPEG_LIBRARIES jpeg)
1206 set(JPEG_LIBRARIES libjpeg)
1208 set(PNG_LIBRARIES png)
1210 set(ZLIB ${LIBDIR}/zlib)
1211 set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
1212 set(ZLIB_LIBPATH ${ZLIB}/lib)
1213 set(ZLIB_LIBRARIES z)
1215 #comes with own pthread library
1216 if(NOT WITH_MINGW64)
1217 set(PTHREADS ${LIBDIR}/pthreads)
1218 #set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
1219 set(PTHREADS_LIBPATH ${PTHREADS}/lib)
1220 set(PTHREADS_LIBRARIES pthreadGC2)
1223 set(FREETYPE ${LIBDIR}/freetype)
1224 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1225 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1226 set(FREETYPE_LIBRARY freetype)
1229 set(FFTW3 ${LIBDIR}/fftw3)
1230 set(FFTW3_LIBRARIES fftw3)
1231 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1232 set(FFTW3_LIBPATH ${FFTW3}/lib)
1235 if(WITH_OPENCOLLADA)
1236 set(OPENCOLLADA ${LIBDIR}/opencollada)
1237 set(OPENCOLLADA_INCLUDE_DIRS
1238 ${LIBDIR}/opencollada/include/COLLADAStreamWriter/include
1239 ${LIBDIR}/opencollada/include/COLLADABaseUtils/include
1240 ${LIBDIR}/opencollada/include/COLLADAFramework/include
1241 ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader/include
1242 ${LIBDIR}/opencollada/include/GeneratedSaxParser/include
1244 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib ${OPENCOLLADA}/lib)
1246 set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre buffer ftoa xml)
1248 set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver expat pcre buffer ftoa)
1250 set(PCRE_LIBRARIES pcre)
1253 if(WITH_CODEC_FFMPEG)
1254 set(FFMPEG ${LIBDIR}/ffmpeg)
1255 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1257 set(FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll)
1259 set(FFMPEG_LIBRARIES avcodec-53 avformat-53 avdevice-53 avutil-51 swscale-2)
1261 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1264 if(WITH_IMAGE_OPENEXR)
1265 set(OPENEXR ${LIBDIR}/openexr)
1266 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1267 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1268 set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex)
1269 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1273 set(TIFF ${LIBDIR}/tiff)
1274 set(TIFF_LIBRARY tiff)
1275 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1276 set(TIFF_LIBPATH ${TIFF}/lib)
1280 set(JACK ${LIBDIR}/jack)
1281 set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include)
1282 set(JACK_LIBRARIES jack)
1283 set(JACK_LIBPATH ${JACK}/lib)
1285 # TODO, gives linking errors, force off
1290 # normally cached but not since we include them with blender
1291 set(PYTHON_VERSION 3.3) # CACHE STRING)
1292 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}") # CACHE PATH)
1293 set(PYTHON_LIBRARY "${LIBDIR}/python/lib/python33mw.lib") # CACHE FILEPATH)
1296 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1297 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1301 set(BOOST ${LIBDIR}/boost)
1302 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1304 set(BOOST_POSTFIX "mgw47-mt-s-1_49")
1305 set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
1307 set(BOOST_POSTFIX "mgw46-mt-s-1_49")
1308 set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49")
1311 optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX}
1312 boost_regex-${BOOST_POSTFIX}
1313 boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX}
1314 debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
1315 boost_regex-${BOOST_DEBUG_POSTFIX}
1316 boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
1317 if(WITH_INTERNATIONAL)
1318 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1319 optimized boost_locale-${BOOST_POSTFIX}
1320 debug boost_locale-${BOOST_DEBUG_POSTFIX})
1322 set(BOOST_LIBPATH ${BOOST}/lib)
1323 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
1326 if(WITH_OPENIMAGEIO)
1327 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1328 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1329 set(OPENIMAGEIO_LIBRARIES OpenImageIO)
1330 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1331 set(OPENIMAGEIO_DEFINITIONS)
1335 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1336 set(LLVM_LIB_DIR ${LLVM_DIRECTORY}/lib)
1337 #Explicitly set llvm lib order.
1338 #---- WARNING ON GCC ORDER OF LIBS IS IMPORTANT, DO NOT CHANGE! ---------
1339 set(LLVM_LIBRARY LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMAnalysis LLVMArchive
1340 LLVMAsmParser LLVMAsmPrinter
1341 LLVMBitReader LLVMBitWriter
1342 LLVMDebugInfo LLVMExecutionEngine
1343 LLVMInstCombine LLVMInstrumentation
1344 LLVMInterpreter LLVMJIT
1346 LLVMMCDisassembler LLVMMCJIT
1347 LLVMMCParser LLVMObject
1350 LLVMTableGen LLVMTarget
1351 LLVMTransformUtils LLVMVectorize
1352 LLVMX86AsmParser LLVMX86AsmPrinter
1353 LLVMX86CodeGen LLVMX86Desc
1354 LLVMX86Disassembler LLVMX86Info
1355 LLVMX86Utils LLVMipa
1357 #imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
1358 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -limagehlp")
1359 set(LLVM_STATIC YES)
1362 if(WITH_OPENCOLORIO)
1363 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1364 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1365 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1366 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1367 set(OPENCOLORIO_DEFINITIONS)
1370 set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
1372 ## DISABLE - causes linking errors
1373 ## for re-distribution, so users dont need mingw installed
1374 # set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
1380 if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5")
1381 set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/10.7
1385 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
1387 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1388 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
1390 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
1396 find_package(OpenAL)
1399 set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
1401 set(WITH_OPENAL OFF)
1406 find_library(JACK_FRAMEWORK
1409 set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
1410 if(NOT JACK_FRAMEWORK)
1415 if(WITH_CODEC_SNDFILE)
1416 set(SNDFILE ${LIBDIR}/sndfile)
1417 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1418 set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
1419 set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) # TODO, deprecate
1423 if(NOT WITH_PYTHON_MODULE)
1424 # we use precompiled libraries for py 3.3 and up by default
1426 # normally cached but not since we include them with blender
1427 set(PYTHON_VERSION 3.3)
1428 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
1429 # set(PYTHON_BINARY "${LIBDIR}/python/bin/python${PYTHON_VERSION}") # not used yet
1430 set(PYTHON_LIBRARY python${PYTHON_VERSION}m)
1431 set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
1432 # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
1434 # module must be compiled against Python framework
1436 # normally cached but not since we include them with blender
1437 set(PYTHON_VERSION 3.2)
1438 set(PYTHON_INCLUDE_DIR "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}m")
1439 set(PYTHON_BINARY "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}")
1440 #set(PYTHON_LIBRARY python${PYTHON_VERSION})
1441 set(PYTHON_LIBPATH "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config-3.2m")
1442 #set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled
1446 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1447 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1451 set(FFTW3 ${LIBDIR}/fftw3)
1452 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1453 set(FFTW3_LIBRARIES fftw3)
1454 set(FFTW3_LIBPATH ${FFTW3}/lib)
1457 set(PNG_LIBRARIES png)
1458 set(JPEG_LIBRARIES jpeg)
1461 set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
1462 set(ZLIB_LIBRARIES z bz2)
1464 set(FREETYPE ${LIBDIR}/freetype)
1465 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1466 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1467 set(FREETYPE_LIBRARY freetype)
1469 if(WITH_IMAGE_OPENEXR)
1470 set(OPENEXR ${LIBDIR}/openexr)
1471 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1472 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1473 set(OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread)
1474 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1477 if(WITH_CODEC_FFMPEG)
1478 set(FFMPEG ${LIBDIR}/ffmpeg)
1479 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1480 set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
1481 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1482 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
1485 find_library(SYSTEMSTUBS_LIBRARY
1490 mark_as_advanced(SYSTEMSTUBS_LIBRARY)
1491 if(SYSTEMSTUBS_LIBRARY)
1492 set(PLATFORM_LINKLIBS stdc++ SystemStubs)
1494 set(PLATFORM_LINKLIBS stdc++)
1498 set(PLATFORM_CFLAGS "-pipe -funsigned-char -DGHOST_COCOA")
1499 set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
1501 set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT")
1502 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
1503 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1504 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
1505 #libSDL still needs 32bit carbon quicktime
1507 elseif(WITH_CODEC_QUICKTIME)
1508 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
1511 # XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
1512 # ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
1514 # This thread it *should* work and check the framework - campbell
1515 # http://www.cmake.org/pipermail/cmake/2005-December/007740.html
1516 find_library(3DCONNEXION_CLIENT_FRAMEWORK
1517 NAMES 3DconnexionClient
1519 if(NOT 3DCONNEXION_CLIENT_FRAMEWORK)
1520 set(WITH_INPUT_NDOF OFF)
1524 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework 3DconnexionClient")
1525 set(NDOF_INCLUDE_DIRS /Library/Frameworks/3DconnexionClient.framework )
1530 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -weak_framework jackmp")
1534 set(PLATFORM_CFLAGS "-pipe -funsigned-char")
1535 set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime")
1536 set(WITH_INPUT_NDOF OFF) # unsupported
1539 if(WITH_PYTHON_MODULE)
1540 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/python")# force cmake to link right framework
1543 if(WITH_OPENCOLLADA)
1544 set(OPENCOLLADA ${LIBDIR}/opencollada)
1546 set(OPENCOLLADA_INCLUDE_DIRS
1547 ${LIBDIR}/opencollada/include/COLLADAStreamWriter
1548 ${LIBDIR}/opencollada/include/COLLADABaseUtils
1549 ${LIBDIR}/opencollada/include/COLLADAFramework
1550 ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
1551 ${LIBDIR}/opencollada/include/GeneratedSaxParser
1554 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
1555 set(OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lUTF -lxml2 -lbuffer -lftoa")
1556 #pcre is bundled with openCollada
1557 #set(PCRE ${LIBDIR}/pcre)
1558 #set(PCRE_LIBPATH ${PCRE}/lib)
1559 set(PCRE_LIBRARIES pcre)
1561 #set(EXPAT ${LIBDIR}/expat)
1562 #set(EXPAT_LIBPATH ${EXPAT}/lib)
1567 set(SDL ${LIBDIR}/sdl)
1568 set(SDL_INCLUDE_DIR ${SDL}/include)
1569 set(SDL_LIBRARY SDL)
1570 set(SDL_LIBPATH ${SDL}/lib)
1573 set(PNG "${LIBDIR}/png")
1574 set(PNG_INCLUDE_DIR "${PNG}/include")
1575 set(PNG_LIBPATH ${PNG}/lib)
1577 set(JPEG "${LIBDIR}/jpeg")
1578 set(JPEG_INCLUDE_DIR "${JPEG}/include")
1579 set(JPEG_LIBPATH ${JPEG}/lib)
1582 set(TIFF ${LIBDIR}/tiff)
1583 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1584 set(TIFF_LIBRARY tiff)
1585 set(TIFF_LIBPATH ${TIFF}/lib)
1588 if (WITH_INPUT_NDOF)
1589 # linker needs "-weak_framework 3DconnexionClient"
1593 set(BOOST ${LIBDIR}/boost)
1594 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1595 set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt boost_wave-mt)
1596 if (WITH_INTERNATIONAL)
1597 list(APPEND BOOST_LIBRARIES boost_locale-mt)
1598 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale needs it !
1600 set(BOOST_LIBPATH ${BOOST}/lib)
1601 set(BOOST_DEFINITIONS)
1604 if(WITH_OPENIMAGEIO)
1605 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1606 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1607 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO}/lib/libOpenImageIO.a ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
1608 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
1609 set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
1612 if(WITH_OPENCOLORIO)
1613 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1614 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1615 set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
1616 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1617 set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD")
1621 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1622 set(LLVM_VERSION "3.1" CACHE STRING "Version of LLVM to use")
1623 set(LLVM_STATIC YES)
1624 if(EXISTS "${LLVM_DIRECTORY}/bin/llvm-config")
1625 set(LLVM_CONFIG "${LLVM_DIRECTORY}/bin/llvm-config")
1627 set(LLVM_CONFIG llvm-config)
1629 execute_process(COMMAND ${LLVM_CONFIG} --version
1630 OUTPUT_VARIABLE LLVM_VERSION
1631 OUTPUT_STRIP_TRAILING_WHITESPACE)
1632 execute_process(COMMAND ${LLVM_CONFIG} --prefix
1633 OUTPUT_VARIABLE LLVM_DIRECTORY
1634 OUTPUT_STRIP_TRAILING_WHITESPACE)
1635 execute_process(COMMAND ${LLVM_CONFIG} --libdir
1636 OUTPUT_VARIABLE LLVM_LIB_DIR
1637 OUTPUT_STRIP_TRAILING_WHITESPACE)
1638 find_library(LLVM_LIBRARY
1639 NAMES LLVMAnalysis # first of a whole bunch of libs to get
1640 PATHS ${LLVM_LIB_DIR})
1642 if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIB_DIR)
1644 # if static LLVM libraries were requested, use llvm-config to generate
1645 # the list of what libraries we need, and substitute that in the right
1646 # way for LLVM_LIBRARY.
1647 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
1648 OUTPUT_VARIABLE LLVM_LIBRARY
1649 OUTPUT_STRIP_TRAILING_WHITESPACE)
1650 string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
1653 message(FATAL_ERROR "LLVM not found.")
1658 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1660 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1661 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1662 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1663 # WARNING! depends on correct order of OSL libs linking
1664 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
1665 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1666 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1668 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
1671 message(STATUS "OSL not found")
1675 set(EXETYPE MACOSX_BUNDLE)
1677 set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
1678 set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
1679 if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386")
1680 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
1681 set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
1682 if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
1683 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
1684 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
1687 set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
1688 set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
1692 #-----------------------------------------------------------------------------
1696 if(NOT EXISTS "${LIBDIR}/")
1697 message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'")
1701 if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
1702 message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
1706 if(NOT WITH_OPENIMAGEIO)
1707 message(FATAL_ERROR "Cycles reqires WITH_OPENIMAGEIO, the library may not have been found. Configure OIIO or disable WITH_CYCLES")
1710 message(FATAL_ERROR "Cycles reqires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES")
1715 message(FATAL_ERROR "Cycles OSL reqires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL")
1720 if(WITH_INTERNATIONAL)
1722 message(FATAL_ERROR "Internationalization reqires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL")
1726 # See TEST_SSE_SUPPORT() for how this is defined.
1728 if(WITH_RAYOPTIMIZATION)
1729 if(SUPPORT_SSE_BUILD)
1730 set(PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}")
1731 add_definitions(-D__SSE__ -D__MMX__)
1733 if(SUPPORT_SSE2_BUILD)
1734 set(PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}")
1735 add_definitions(-D__SSE2__)
1736 if(NOT SUPPORT_SSE_BUILD) # dont double up
1737 add_definitions(-D__MMX__)
1743 # set the endian define
1745 # for some reason this fails on msvc
1746 add_definitions(-D__LITTLE_ENDIAN__)
1748 # OSX-Note: as we do crosscompiling with specific set architecture,
1749 # endianess-detection and autosetting is counterproductive
1750 # so we just set endianess according CMAKE_OSX_ARCHITECTURES
1752 elseif(CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
1753 add_definitions(-D__LITTLE_ENDIAN__)
1754 elseif(CMAKE_OSX_ARCHITECTURES MATCHES ppc OR CMAKE_OSX_ARCHITECTURES MATCHES ppc64)
1755 add_definitions(-D__BIG_ENDIAN__)
1758 include(TestBigEndian)
1759 test_big_endian(_SYSTEM_BIG_ENDIAN)
1760 if(_SYSTEM_BIG_ENDIAN)
1761 add_definitions(-D__BIG_ENDIAN__)
1763 add_definitions(-D__LITTLE_ENDIAN__)
1765 unset(_SYSTEM_BIG_ENDIAN)
1769 if(WITH_IMAGE_OPENJPEG)
1770 if(WITH_SYSTEM_OPENJPEG)
1773 set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg")
1774 add_definitions(-DOPJ_STATIC)
1778 if(WITH_IMAGE_REDCODE)
1779 set(REDCODE ${CMAKE_SOURCE_DIR}/extern)
1780 set(REDCODE_INC ${REDCODE})
1783 #-----------------------------------------------------------------------------
1787 set(GECKO_DIR "${CMAKE_SOURCE_DIR}/../gecko-sdk/" CACHE PATH "Gecko SDK path")
1788 set(WEBPLUGIN_SANDBOX_MODE "apparmor" CACHE STRING "WEB Plugin sandbox mode, can be apparmor, privsep, none")
1794 #-----------------------------------------------------------------------------
1796 find_package(OpenGL)
1797 blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}")
1798 # unset(OPENGL_LIBRARIES CACHE) # not compat with older cmake
1799 # unset(OPENGL_xmesa_INCLUDE_DIR CACHE) # not compat with older cmake
1801 #-----------------------------------------------------------------------------
1804 find_package(OpenMP)
1806 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
1807 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
1809 if(APPLE AND ${CMAKE_GENERATOR} MATCHES "Xcode")
1810 set(CMAKE_XCODE_ATTRIBUTE_ENABLE_OPENMP_SUPPORT "YES")
1813 set(WITH_OPENMP OFF)
1822 #-----------------------------------------------------------------------------
1825 if(WITH_SYSTEM_GLEW)
1829 message(FATAL_ERROR "GLEW is required to build blender, install it or disable WITH_SYSTEM_GLEW")
1837 # set(GLEW_LIBRARY "") # unused
1838 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
1841 #-----------------------------------------------------------------------------
1844 if(WITH_PYTHON_MODULE)
1845 add_definitions(-DPy_ENABLE_SHARED)
1848 #-----------------------------------------------------------------------------
1849 # Extra compile flags
1851 if(CMAKE_COMPILER_IS_GNUCC)
1853 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
1854 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_CAST_ALIGN -Wcast-align)
1855 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
1856 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
1857 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
1858 # system headers sometimes do this, disable for now, was: -Werror=strict-prototypes
1859 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
1860 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
1861 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
1862 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
1863 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
1864 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
1865 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_WRITE_STRINGS -Wwrite-strings)
1866 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_LOGICAL_OP -Wlogical-op)
1867 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNDEF -Wundef)
1868 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
1869 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_NULL -Wnonnull) # C only
1870 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
1871 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
1873 # gcc 4.2 gives annoying warnings on every file with this
1874 if (NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
1875 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNINITIALIZED -Wuninitialized)
1878 # disable because it gives warnings for printf() & friends.
1879 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_DOUBLE_PROMOTION -Wdouble-promotion -Wno-error=double-promotion)
1882 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
1885 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
1886 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
1887 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
1888 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_LOGICAL_OP -Wlogical-op)
1889 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
1890 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
1891 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
1893 # gcc 4.2 gives annoying warnings on every file with this
1894 if (NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
1895 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNINITIALIZED -Wuninitialized)
1898 # causes too many warnings
1900 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
1901 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_DECLARATIONS -Wmissing-declarations)
1904 # flags to undo strict flags
1905 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
1906 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
1909 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
1912 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
1914 # strange, clang complains these are not supported, but then yses them.
1915 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
1916 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
1917 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
1918 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
1919 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
1920 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
1921 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_MACROS -Wunused-macros)
1923 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
1924 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
1925 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
1926 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
1927 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_OVERLOADED_VIRTUAL -Wno-overloaded-virtual) # we get a lot of these, if its a problem a dev needs to look into it.
1928 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
1929 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_MACROS -Wunused-macros)
1931 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
1933 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
1934 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
1935 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
1937 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
1938 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
1939 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
1941 # disable numbered, false positives
1942 set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556")
1943 set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556")
1947 # MSVC2010 fails to links C++ libs right
1949 if(WITH_OPENCOLLADA)
1950 message(WARNING "MSVC 2010 does not support OpenCollada, disabling WITH_OPENCOLLADA. To enable support use Use MSVC 2008")
1954 # ensure python header is found since detection can fail, this could happen
1955 # with _any_ library but since we used a fixed python version this tends to
1956 # be most problematic.
1958 if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/Python.h")
1959 message(FATAL_ERROR "Missing: \"${PYTHON_INCLUDE_DIR}/Python.h\",\n"
1960 "Set the cache entry 'PYTHON_INCLUDE_DIR' to point "
1961 "to a valid python include path. Containing "
1962 "Python.h for python version \"${PYTHON_VERSION}\"")
1965 if(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
1967 # -- disabled until we make numpy bundled with blender - campbell
1968 if((NOT ${PYTHON_NUMPY_PATH} STREQUAL "") AND (NOT ${PYTHON_NUMPY_PATH} MATCHES NOTFOUND))
1969 # if(NOT EXISTS "${PYTHON_NUMPY_PATH}/numpy")
1970 # message(WARNING "PYTHON_NUMPY_PATH is invalid, numpy not found in '${PYTHON_NUMPY_PATH}' "
1971 # "WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
1972 # set(WITH_PYTHON_INSTALL_NUMPY OFF)
1974 # not set, so initialize
1976 string(REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}")
1977 list(GET _PY_VER_SPLIT 0 _PY_VER_MAJOR)
1980 unset(PYTHON_NUMPY_PATH CACHE)
1981 find_path(PYTHON_NUMPY_PATH
1985 "${PYTHON_LIBPATH}/python${PYTHON_VERSION}/"
1986 "${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/"
1993 if(NOT EXISTS "${PYTHON_NUMPY_PATH}")
1994 message(WARNING "'numpy' path could not be found in:\n"
1995 "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/numpy', "
1996 "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/numpy', "
1997 "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/numpy', "
1998 "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/numpy', "
1999 "WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
2000 set(WITH_PYTHON_INSTALL_NUMPY OFF)
2002 message(STATUS "numpy found at '${PYTHON_NUMPY_PATH}'")
2005 unset(_PY_VER_SPLIT)
2006 unset(_PY_VER_MAJOR)
2011 # Include warnings first, so its possible to disable them with user defined flags
2012 # eg: -Wno-uninitialized
2013 set(CMAKE_C_FLAGS "${C_WARNINGS} ${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}")
2014 set(CMAKE_CXX_FLAGS "${CXX_WARNINGS} ${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}")
2016 #-------------------------------------------------------------------------------
2019 # better not set includes here but this debugging option is off by default.
2020 if(WITH_CXX_GUARDEDALLOC)
2021 include_directories(${CMAKE_SOURCE_DIR}/intern/guardedalloc)
2022 add_definitions(-DWITH_CXX_GUARDEDALLOC)
2025 if(WITH_ASSERT_ABORT)
2026 add_definitions(-DWITH_ASSERT_ABORT)
2029 # message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
2030 # message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
2032 #-----------------------------------------------------------------------------
2035 add_subdirectory(source)
2036 add_subdirectory(intern)
2037 add_subdirectory(extern)
2040 #-----------------------------------------------------------------------------
2041 # Blender Application
2043 add_subdirectory(source/creator)
2047 #-----------------------------------------------------------------------------
2050 add_subdirectory(source/blenderplayer)
2053 #-----------------------------------------------------------------------------
2054 # CPack for generating packages
2055 include(build_files/cmake/packaging.cmake)
2058 #-----------------------------------------------------------------------------
2059 # Print Final Configuration
2062 set(_config_msg "\n* Blender Configuration *")
2063 macro(info_cfg_option
2065 set(_msg " * ${_setting}")
2066 string(LENGTH "${_msg}" _len)
2067 while("32" GREATER "${_len}")
2068 set(_msg "${_msg} ")
2069 math(EXPR _len "${_len} + 1")
2072 set(_config_msg "${_config_msg}\n${_msg}${${_setting}}")
2077 set(_config_msg "${_config_msg}\n\n ${_text}")
2082 info_cfg_text("Build Options:")
2083 info_cfg_option(WITH_GAMEENGINE)
2084 info_cfg_option(WITH_PLAYER)
2085 info_cfg_option(WITH_BULLET)
2086 info_cfg_option(WITH_IK_SOLVER)
2087 info_cfg_option(WITH_IK_ITASC)
2088 info_cfg_option(WITH_OPENCOLLADA)
2089 info_cfg_option(WITH_FFTW3)
2090 info_cfg_option(WITH_INTERNATIONAL)
2091 info_cfg_option(WITH_INPUT_NDOF)
2092 info_cfg_option(WITH_CYCLES)
2093 info_cfg_option(WITH_OPENCOLORIO)
2095 info_cfg_text("Compiler Options:")
2096 info_cfg_option(WITH_BUILDINFO)
2097 info_cfg_option(WITH_OPENMP)
2098 info_cfg_option(WITH_RAYOPTIMIZATION)
2100 info_cfg_text("System Options:")
2101 info_cfg_option(WITH_INSTALL_PORTABLE)
2102 info_cfg_option(WITH_X11_XF86VMODE)
2103 info_cfg_option(WITH_X11_XINPUT)
2104 info_cfg_option(WITH_MEM_JEMALLOC)
2105 info_cfg_option(WITH_SYSTEM_GLEW)
2106 info_cfg_option(WITH_SYSTEM_OPENJPEG)
2108 info_cfg_text("Image Formats:")
2109 info_cfg_option(WITH_IMAGE_CINEON)
2110 info_cfg_option(WITH_IMAGE_DDS)
2111 info_cfg_option(WITH_IMAGE_HDR)
2112 info_cfg_option(WITH_IMAGE_OPENEXR)
2113 info_cfg_option(WITH_IMAGE_OPENJPEG)
2114 info_cfg_option(WITH_IMAGE_REDCODE)
2115 info_cfg_option(WITH_IMAGE_TIFF)
2117 info_cfg_text("Audio:")
2118 info_cfg_option(WITH_OPENAL)
2119 info_cfg_option(WITH_SDL)
2120 info_cfg_option(WITH_JACK)
2121 info_cfg_option(WITH_CODEC_AVI)
2122 info_cfg_option(WITH_CODEC_FFMPEG)
2123 info_cfg_option(WITH_CODEC_SNDFILE)
2125 info_cfg_text("Compression:")
2126 info_cfg_option(WITH_LZMA)
2127 info_cfg_option(WITH_LZO)
2129 info_cfg_text("Python:")
2130 info_cfg_option(WITH_PYTHON_INSTALL)
2131 info_cfg_option(WITH_PYTHON_INSTALL_NUMPY)
2132 info_cfg_option(WITH_PYTHON_MODULE)
2133 info_cfg_option(WITH_PYTHON_SAFETY)
2135 info_cfg_text("Modifiers:")
2136 info_cfg_option(WITH_MOD_BOOLEAN)
2137 info_cfg_option(WITH_MOD_REMESH)
2138 info_cfg_option(WITH_MOD_FLUID)
2139 info_cfg_option(WITH_MOD_OCEANSIM)
2143 message("${_config_msg}")