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 (${CMAKE_VERSION} VERSION_LESS 3.0))
51 # keep until CMake-3.0 is min requirement
52 cmake_policy(SET CMP0043 OLD)
55 if(NOT EXECUTABLE_OUTPUT_PATH)
59 # this starts out unset
60 list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/build_files/cmake/Modules")
62 # avoid having empty buildtype
63 set(CMAKE_BUILD_TYPE_INIT "Release")
65 # quiet output for Makefiles, 'make -s' helps too
66 # set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
68 # global compile definitions since add_definitions() adds for all.
69 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG _DEBUG)
70 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE NDEBUG)
71 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_MINSIZEREL NDEBUG)
72 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO NDEBUG)
75 #-----------------------------------------------------------------------------
78 # see "cmake --help-policy CMP0003"
79 # So library linking is more sane
80 cmake_policy(SET CMP0003 NEW)
82 # So BUILDINFO and BLENDERPATH strings are automatically quoted
83 cmake_policy(SET CMP0005 NEW)
85 # So syntax problems are errors
86 cmake_policy(SET CMP0010 NEW)
88 # Input directories must have CMakeLists.txt
89 cmake_policy(SET CMP0014 NEW)
91 #-----------------------------------------------------------------------------
93 include(build_files/cmake/macros.cmake)
96 #-----------------------------------------------------------------------------
99 blender_project_hack_pre()
103 blender_project_hack_post()
107 #-----------------------------------------------------------------------------
108 # Redirect output files
110 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" FORCE)
111 set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" FORCE)
112 set(TESTS_OUTPUT_DIR ${EXECUTABLE_OUTPUT_PATH}/tests CACHE INTERNAL "" FORCE)
114 #-----------------------------------------------------------------------------
115 # Set default config options
117 get_blender_version()
120 #-----------------------------------------------------------------------------
121 # Platform Specific Defaults
127 macro(option_defaults_init)
128 foreach(_var ${ARGV})
130 list(APPEND _init_vars "${_var}")
135 # remove from namespace
136 macro(option_defaults_clear)
137 foreach(_var ${_init_vars})
145 # values to initialize WITH_****
146 option_defaults_init(
154 _init_LIBMV_SCHUR_SPECIALIZATION
163 if(UNIX AND NOT APPLE)
164 # some of these libraries are problematic on Linux
165 # disable less important dependencies by default
166 set(_init_BUILDINFO OFF)
167 set(_init_CODEC_FFMPEG OFF)
168 set(_init_CYCLES_OSL OFF)
169 set(_init_IMAGE_OPENEXR OFF)
170 set(_init_IMAGE_REDCODE OFF)
171 set(_init_INPUT_NDOF OFF)
173 set(_init_LIBMV_SCHUR_SPECIALIZATION OFF)
174 set(_init_OPENCOLLADA OFF)
175 set(_init_OPENCOLORIO OFF)
178 set(_init_GAMEENGINE OFF)
182 #-----------------------------------------------------------------------------
185 # First platform spesific non-cached vars
186 if(UNIX AND NOT APPLE)
190 # Blender internal features
191 option(WITH_BLENDER "Build blender (disable to build only the blender player)" ON)
192 mark_as_advanced(WITH_BLENDER)
194 option(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON)
196 option(WITH_PYTHON "Enable Embedded Python API (only disable for development)" ON)
197 option(WITH_PYTHON_SECURITY "Disables execution of scripts within blend files by default" ON)
198 mark_as_advanced(WITH_PYTHON) # dont want people disabling this unless they really know what they are doing.
199 mark_as_advanced(WITH_PYTHON_SECURITY) # some distributions see this as a security issue, rather than have them patch it, make a build option.
200 set(WITH_PYTHON_SECURITY ON CACHE BOOL "ON" FORCE) # temp force on.
202 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)
203 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)
205 option(WITH_PYTHON_FRAMEWORK "Enable building using the Python available in the framework (OSX only)" OFF)
208 option(WITH_BUILDINFO "Include extra build details (only disable for development & faster builds)" ${_init_BUILDINFO})
209 if(${CMAKE_VERSION} VERSION_LESS 2.8.8)
210 # add_library OBJECT arg unsupported
211 set(WITH_BUILDINFO OFF)
214 option(WITH_IK_ITASC "Enable ITASC IK solver (only disable for development & for incompatible C++ compilers)" ON)
215 option(WITH_IK_SOLVER "Enable Legacy IK solver (only disable for development)" ON)
216 option(WITH_FFTW3 "Enable FFTW3 support (Used for smoke and audio effects)" ${_init_FFTW3})
217 option(WITH_BULLET "Enable Bullet (Physics Engine)" ON)
218 option(WITH_SYSTEM_BULLET "Use the systems bullet library (currently unsupported due to missing features in upstream!)" )
219 mark_as_advanced(WITH_SYSTEM_BULLET)
220 option(WITH_GAMEENGINE "Enable Game Engine" ${_init_GAMEENGINE})
221 option(WITH_PLAYER "Build Player" OFF)
222 option(WITH_OPENCOLORIO "Enable OpenColorIO color management" ${_init_OPENCOLORIO})
223 option(WITH_COMPOSITOR "Enable the tile based nodal compositor" ON)
225 # GHOST Windowing Library Options
226 option(WITH_GHOST_DEBUG "Enable debugging output for the GHOST library" OFF)
227 mark_as_advanced(WITH_GHOST_DEBUG)
229 option(WITH_GHOST_SDL "Enable building blender against SDL for windowing rather then the native APIs" OFF)
230 mark_as_advanced(WITH_GHOST_SDL)
233 option(WITH_GHOST_XDND "Enable drag'n'drop support on X11 using XDND protocol" ON)
237 option(WITH_HEADLESS "Build without graphical support (renderfarm, server mode only)" OFF)
238 mark_as_advanced(WITH_HEADLESS)
240 option(WITH_AUDASPACE "Build with blenders audio library (only disable if you know what you're doing!)" ON)
241 mark_as_advanced(WITH_AUDASPACE)
243 option(WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" ON)
246 option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)" ON)
247 option(WITH_X11_XF86VMODE "Enable X11 video mode switching" ON)
250 if(UNIX AND NOT APPLE)
251 option(WITH_SYSTEM_GLEW "Use GLEW OpenGL wrapper library provided by the operating system" ON)
252 option(WITH_SYSTEM_GLES "Use OpenGL ES library provided by the operating system" ON)
254 # not an option for other OS's
255 set(WITH_SYSTEM_GLEW OFF)
256 set(WITH_SYSTEM_GLES OFF)
260 # (unix defaults to System OpenJPEG On)
261 option(WITH_SYSTEM_OPENJPEG "Use the operating systems OpenJPEG library" OFF)
265 option(WITH_MOD_FLUID "Enable Elbeem Modifier (Fluid Simulation)" ON)
266 option(WITH_MOD_SMOKE "Enable Smoke Modifier (Smoke Simulation)" ON)
267 option(WITH_MOD_BOOLEAN "Enable Boolean Modifier" ON)
268 option(WITH_MOD_REMESH "Enable Remesh Modifier" ON)
269 # option(WITH_MOD_CLOTH_ELTOPO "Enable Experimental cloth solver" OFF) # this is now only available in a branch
270 # mark_as_advanced(WITH_MOD_CLOTH_ELTOPO)
271 option(WITH_MOD_OCEANSIM "Enable Ocean Modifier" OFF)
273 # Image format support
274 option(WITH_OPENIMAGEIO "Enable OpenImageIO Support (http://www.openimageio.org)" ON)
275 option(WITH_IMAGE_OPENEXR "Enable OpenEXR Support (http://www.openexr.com)" ${_init_IMAGE_OPENEXR})
276 option(WITH_IMAGE_OPENJPEG "Enable OpenJpeg Support (http://www.openjpeg.org)" ON)
277 option(WITH_IMAGE_TIFF "Enable LibTIFF Support" ON)
278 option(WITH_IMAGE_DDS "Enable DDS Image Support" ON)
279 option(WITH_IMAGE_CINEON "Enable CINEON and DPX Image Support" ON)
280 option(WITH_IMAGE_HDR "Enable HDR Image Support" ON)
281 option(WITH_IMAGE_REDCODE "Enable RedCode Image Support" ${_init_IMAGE_REDCODE})
282 option(WITH_IMAGE_FRAMESERVER "Enable image FrameServer Support for rendering" ON)
284 # Audio/Video format support
285 option(WITH_CODEC_AVI "Enable Blenders own AVI file support (raw/jpeg)" ON)
286 option(WITH_CODEC_FFMPEG "Enable FFMPeg Support (http://ffmpeg.org)" ${_init_CODEC_FFMPEG})
287 option(WITH_CODEC_SNDFILE "Enable libsndfile Support (http://www.mega-nerd.com/libsndfile)" OFF)
290 option(WITH_CODEC_QUICKTIME "Enable Quicktime Support" ON)
294 # Disable opencollada when we don't have precompiled libs
295 option(WITH_OPENCOLLADA "Enable OpenCollada Support (http://www.opencollada.org)" ${_init_OPENCOLLADA})
298 option(WITH_SDL "Enable SDL for sound and joystick support" ${_init_SDL})
299 option(WITH_OPENAL "Enable OpenAL Support (http://www.openal.org)" ON)
300 option(WITH_JACK "Enable Jack Support (http://www.jackaudio.org)" ${_init_JACK})
301 if(UNIX AND NOT APPLE)
302 option(WITH_JACK_DYNLOAD "Enable runtime dynamic Jack libraries loading" OFF)
304 if(UNIX AND NOT APPLE)
305 option(WITH_SDL_DYNLOAD "Enable runtime dynamic SDL libraries loading" OFF)
309 option(WITH_LZO "Enable fast LZO compression (used for pointcache)" ON)
310 option(WITH_LZMA "Enable best LZMA compression, (used for pointcache)" ON)
312 # Camera/motion tracking
313 option(WITH_LIBMV "Enable libmv structure from motion library" ON)
314 option(WITH_LIBMV_SCHUR_SPECIALIZATIONS "Enable fixed-size schur specializations." ${_init_LIBMV_SCHUR_SPECIALIZATION})
315 mark_as_advanced(WITH_LIBMV_SCHUR_SPECIALIZATIONS)
318 option(WITH_FREESTYLE "Enable Freestyle (advanced edges rendering)" ON)
322 option(WITH_INPUT_IME "Enable Input Method Editor (IME) for complex Asian character input" ON)
324 option(WITH_INPUT_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ${_init_INPUT_NDOF})
325 option(WITH_RAYOPTIMIZATION "Enable use of SIMD (SSE) optimizations for the raytracer" ON)
326 option(WITH_OPENNL "Enable use of Open Numerical Library" ON)
327 if(UNIX AND NOT APPLE)
328 option(WITH_INSTALL_PORTABLE "Install redistributeable runtime, otherwise install into CMAKE_INSTALL_PREFIX" ON)
329 option(WITH_STATIC_LIBS "Try to link with static libraries, as much as possible, to make blender more portable across distributions" OFF)
331 option(WITH_BOOST_ICU "Boost uses ICU library (required for linking with static Boost built with libicu)." OFF)
332 mark_as_advanced(WITH_BOOST_ICU)
335 option(WITH_PYTHON_INSTALL "Copy system python into the blender install folder" ON)
336 option(WITH_PYTHON_INSTALL_NUMPY "Copy system numpy into the blender install folder" ON)
337 set(PYTHON_NUMPY_PATH "" CACHE PATH "Path to python site-packages or dist-packages containing 'numpy' module")
338 mark_as_advanced(PYTHON_NUMPY_PATH)
339 option(WITH_CPU_SSE "Enable SIMD instruction if they're detected on the host machine" ON)
340 mark_as_advanced(WITH_CPU_SSE)
342 if(UNIX AND NOT APPLE)
343 option(WITH_PYTHON_INSTALL_REQUESTS "Copy system requests into the blender install folder" ON)
344 set(PYTHON_REQUESTS_PATH "" CACHE PATH "Path to python site-packages or dist-packages containing 'requests' module")
345 mark_as_advanced(PYTHON_REQUESTS_PATH)
349 option(WITH_CYCLES "Enable cycles Render Engine" ON)
350 option(WITH_CYCLES_STANDALONE "Build cycles standalone application" OFF)
351 option(WITH_CYCLES_STANDALONE_GUI "Build cycles standalone with GUI" OFF)
352 option(WITH_CYCLES_OSL "Build Cycles with OSL support" ${_init_CYCLES_OSL})
353 option(WITH_CYCLES_CUDA_BINARIES "Build cycles CUDA binaries" OFF)
354 set(CYCLES_CUDA_BINARIES_ARCH sm_20 sm_21 sm_30 sm_35 sm_50 CACHE STRING "CUDA architectures to build binaries for")
355 mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
356 unset(PLATFORM_DEFAULT)
357 option(WITH_CYCLES_LOGGING "Build cycles with logging support" ON)
358 option(WITH_CYCLES_DEBUG "Build cycles with extra debug capabilities" OFF)
359 mark_as_advanced(WITH_CYCLES_LOGGING)
360 mark_as_advanced(WITH_CYCLES_DEBUG)
363 option(WITH_LLVM "Use LLVM" OFF)
365 option(LLVM_STATIC "Link with LLVM static libraries" ON) # we prefer static llvm build on Apple, dyn build possible though
367 option(LLVM_STATIC "Link with LLVM static libraries" OFF)
369 mark_as_advanced(LLVM_STATIC)
371 # disable for now, but plan to support on all platforms eventually
372 option(WITH_MEM_JEMALLOC "Enable malloc replacement (http://www.canonware.com/jemalloc)" OFF)
373 mark_as_advanced(WITH_MEM_JEMALLOC)
375 # currently only used for BLI_mempool
376 option(WITH_MEM_VALGRIND "Enable extended valgrind support for better reporting" OFF)
377 mark_as_advanced(WITH_MEM_VALGRIND)
380 option(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking (only enable for development)" OFF)
381 mark_as_advanced(WITH_CXX_GUARDEDALLOC)
383 option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF)
384 mark_as_advanced(WITH_ASSERT_ABORT)
386 option(WITH_BOOST "Enable features depending on boost" ON)
389 option(WITH_GTESTS "Enable GTest unit testing" OFF)
393 if(UNIX AND NOT APPLE)
394 option(WITH_DOC_MANPAGE "Create a manual page (Unix manpage)" OFF)
400 option(WITH_GLEW_MX "Support multiple GLEW contexts (experimental)" OFF )
401 option(WITH_GLEW_ES "Switches to experimental copy of GLEW that has support for OpenGL ES. (temporary option for development purposes)" OFF)
402 option(WITH_GL_EGL "Use the EGL OpenGL system library instead of the platform specific OpenGL system library (CGL, glX, or WGL)" OFF)
403 option(WITH_GL_PROFILE_COMPAT "Support using the OpenGL 'compatibility' profile. (deprecated)" ON )
404 option(WITH_GL_PROFILE_CORE "Support using the OpenGL 3.2+ 'core' profile." OFF)
405 option(WITH_GL_PROFILE_ES20 "Support using OpenGL ES 2.0. (thru either EGL or the AGL/WGL/XGL 'es20' profile)" OFF)
411 WITH_GL_PROFILE_COMPAT
416 if(WITH_GL_PROFILE_COMPAT)
423 option(WITH_GL_ANGLE "Link with the ANGLE library, an OpenGL ES 2.0 implementation based on Direct3D, instead of the system OpenGL library." OFF)
424 mark_as_advanced(WITH_GL_ANGLE)
427 if(WITH_GLEW_ES AND WITH_SYSTEM_GLEW)
428 message(WARNING Ignoring WITH_SYSTEM_GLEW and using WITH_GLEW_ES)
429 set(WITH_SYSTEM_GLEW OFF)
433 getDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES)
434 set(CPACK_INSTALL_PREFIX ${CMAKE_GENERIC_PROGRAM_FILES}/${})
438 option_defaults_clear()
444 # By default we want to install to the directory we are compiling our executables
445 # unless specified otherwise, which we currently do not allow
446 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
448 set(CMAKE_INSTALL_PREFIX ${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE} CACHE PATH "default install path" FORCE)
450 set(CMAKE_INSTALL_PREFIX ${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE} CACHE PATH "default install path" FORCE)
452 if(WITH_INSTALL_PORTABLE)
453 set(CMAKE_INSTALL_PREFIX ${EXECUTABLE_OUTPUT_PATH} CACHE PATH "default install path" FORCE)
463 if(${CMAKE_VERSION} VERSION_LESS 3.0) # else breaks setting CMP0043 policy
464 cmake_minimum_required(VERSION 2.8.8)
465 cmake_policy(VERSION 2.8.8)
468 if(NOT CMAKE_OSX_ARCHITECTURES)
469 set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING
470 "Choose the architecture you want to build Blender for: i386, x86_64 or ppc"
474 execute_process(COMMAND uname -r OUTPUT_VARIABLE MAC_SYS) # check for actual system-version
475 if(${MAC_SYS} MATCHES 14)
476 set(OSX_SYSTEM 10.10)
477 # throw an error here, older cmake cannot handle 2 digit subversion!
478 cmake_minimum_required(VERSION 3.0.0)
479 elseif(${MAC_SYS} MATCHES 13)
481 elseif(${MAC_SYS} MATCHES 12)
483 elseif(${MAC_SYS} MATCHES 11)
485 elseif(${MAC_SYS} MATCHES 10)
487 elseif(${MAC_SYS} MATCHES 9)
490 set(OSX_SYSTEM unsupported)
492 message(STATUS "Detected system-version: " ${OSX_SYSTEM})
494 # workaround for incorrect cmake xcode lookup for developer previews - XCODE_VERSION does not take xcode-select path into accout
495 # but would always look into /Applications/Xcode.app while dev versions are named Xcode<version>-DP<preview_number>
496 execute_process(COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_CHECK OUTPUT_STRIP_TRAILING_WHITESPACE)
497 string(REPLACE "/Contents/Developer" "" XCODE_BUNDLE ${XCODE_CHECK}) # truncate to bundlepath in any case
498 message(STATUS "Xcode-bundle : " ${XCODE_BUNDLE})
500 if(${CMAKE_GENERATOR} MATCHES "Xcode")
502 if(${XCODE_VERSION} VERSION_GREATER 4.2) # earlier xcode has no bundled developer dir, no sense in getting xcode path from
503 string(SUBSTRING "${XCODE_CHECK}" 14 6 DP_NAME) # reduce to XCode name without dp extension
504 if(${DP_NAME} MATCHES Xcode5)
509 ##### cmake incompatibility with xcode 4.3 and higher #####
510 if(${XCODE_VERSION} MATCHES '') # cmake fails due looking for xcode in the wrong path, thus will be empty var
511 message(FATAL_ERROR "Xcode 4.3 and higher must be used with cmake 2.8-8 or higher")
513 ### end cmake incompatibility with xcode 4.3 and higher ###
515 if(${XCODE_VERSION} VERSION_EQUAL 4 OR ${XCODE_VERSION} VERSION_GREATER 4 AND ${XCODE_VERSION} VERSION_LESS 4.3)
516 # Xcode 4 defaults to the Apple LLVM Compiler.
517 # Override the default compiler selection because Blender only compiles with gcc up to xcode 4.2
518 set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
519 message(STATUS "Setting compiler to: " ${CMAKE_XCODE_ATTRIBUTE_GCC_VERSION})
521 else() # unix makefile generator does not fill XCODE_VERSION var, so we get it with a command
522 execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERS_BUILD_NR)
523 string(SUBSTRING "${XCODE_VERS_BUILD_NR}" 6 3 XCODE_VERSION) # truncate away build-nr
524 unset(XCODE_VERS_BUILD_NR)
527 message(STATUS "Detected Xcode-version: " ${XCODE_VERSION})
529 if(${XCODE_VERSION} VERSION_LESS 4.3)
530 set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk CACHE PATH "" FORCE) # use guaranteed existing sdk
532 # note: xcode-select path could be ambigous, cause /Applications/Xcode.app/Contents/Developer or /Applications/Xcode.app would be allowed
533 # so i use a selfcomposed bundlepath here
534 set(OSX_SYSROOT_PREFIX ${XCODE_BUNDLE}/Contents/Developer/Platforms/MacOSX.platform)
535 message(STATUS "OSX_SYSROOT_PREFIX: " ${OSX_SYSROOT_PREFIX})
536 set(OSX_DEVELOPER_PREFIX /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk) # use guaranteed existing sdk
537 set(CMAKE_OSX_SYSROOT ${OSX_SYSROOT_PREFIX}/${OSX_DEVELOPER_PREFIX} CACHE PATH "" FORCE)
538 if(${CMAKE_GENERATOR} MATCHES "Xcode")
539 set(CMAKE_XCODE_ATTRIBUTE_SDKROOT macosx${OSX_SYSTEM}) # to silence sdk not found warning, just overrides CMAKE_OSX_SYSROOT
543 if(OSX_SYSTEM MATCHES 10.9)
544 set(CMAKE_FIND_ROOT_PATH ${CMAKE_OSX_SYSROOT}) # make sure syslibs and headers are looked up in sdk ( expecially for 10.9 openGL atm. )
547 if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
548 set(CMAKE_OSX_DEPLOYMENT_TARGET "10.6" CACHE STRING "" FORCE) # 10.6 is our min. target, if you use higher sdk, weak linking happens
551 if(NOT ${CMAKE_GENERATOR} MATCHES "Xcode")
552 # force CMAKE_OSX_DEPLOYMENT_TARGET for makefiles, will not work else ( cmake bug ? )
553 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
554 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
555 add_definitions("-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
558 option(WITH_LIBS10.5 "Use 10.5 libs (needed for 64bit builds)" OFF)
562 #-----------------------------------------------------------------------------
563 # Check for conflicting/unsupported configurations
565 if(NOT WITH_BLENDER AND NOT WITH_PLAYER AND NOT WITH_CYCLES_STANDALONE)
566 message(FATAL_ERROR "At least one of WITH_BLENDER or WITH_PLAYER or WITH_CYCLES_STANDALONE must be enabled, nothing to do!")
569 if(NOT WITH_GAMEENGINE AND WITH_PLAYER)
570 message(FATAL_ERROR "WITH_PLAYER requires WITH_GAMEENGINE")
573 if(NOT WITH_AUDASPACE)
575 message(FATAL_ERROR "WITH_OPENAL requires WITH_AUDASPACE")
578 message(FATAL_ERROR "WITH_JACK requires WITH_AUDASPACE")
581 message(FATAL_ERROR "WITH_GAMEENGINE requires WITH_AUDASPACE")
585 if(NOT WITH_SDL AND WITH_GHOST_SDL)
586 message(FATAL_ERROR "WITH_GHOST_SDL requires WITH_SDL")
589 if(WITH_IMAGE_REDCODE AND ((NOT WITH_IMAGE_OPENJPEG) OR (NOT WITH_CODEC_FFMPEG)))
590 message(FATAL_ERROR "WITH_IMAGE_REDCODE requires WITH_IMAGE_OPENJPEG and WITH_CODEC_FFMPEG")
593 # python module, needs some different options
594 if(WITH_PYTHON_MODULE AND WITH_PLAYER)
595 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PLAYER to be OFF")
598 if(WITH_PYTHON_MODULE AND WITH_PYTHON_INSTALL)
599 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PYTHON_INSTALL to be OFF")
603 # may as well build python module without a UI
604 if(WITH_PYTHON_MODULE)
605 set(WITH_HEADLESS ON)
612 # enable boost for cycles, audaspace or i18n
613 # otherwise if the user disabled
615 # Explicitly disabled. so disable all deps.
619 message(STATUS "'WITH_BOOST' is disabled: forceing 'set(${_setting} ${_val})'")
621 set(${_setting} ${_val})
624 set_and_warn(WITH_CYCLES OFF)
625 set_and_warn(WITH_AUDASPACE OFF)
626 set_and_warn(WITH_INTERNATIONAL OFF)
628 set_and_warn(WITH_OPENAL OFF) # depends on AUDASPACE
629 set_and_warn(WITH_GAMEENGINE OFF) # depends on AUDASPACE
630 elseif(WITH_CYCLES OR WITH_OPENIMAGEIO OR WITH_AUDASPACE OR WITH_INTERNATIONAL)
633 # Enabled but we don't need it
637 # auto enable openimageio for cycles
639 set(WITH_OPENIMAGEIO ON)
642 # auto enable openimageio linking dependencies
644 set(WITH_IMAGE_OPENEXR ON)
645 set(WITH_IMAGE_TIFF ON)
648 # auto enable llvm for cycles_osl
650 set(WITH_LLVM ON CACHE BOOL "" FORCE)
653 # don't store paths to libs for portable distribution
654 if(WITH_INSTALL_PORTABLE)
655 set(CMAKE_SKIP_BUILD_RPATH TRUE)
658 if(WITH_GHOST_SDL OR WITH_HEADLESS)
660 set(WITH_X11_XINPUT OFF)
661 set(WITH_X11_XF86VMODE OFF)
662 set(WITH_GHOST_XDND OFF)
666 TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
668 message(STATUS "SSE and SSE2 optimizations are DISABLED!")
669 set(COMPILER_SSE_FLAG)
670 set(COMPILER_SSE2_FLAG)
673 TEST_STDBOOL_SUPPORT()
675 add_definitions(-DHAVE_STDBOOL_H)
678 #-----------------------------------------------------------------------------
679 # Check for valid directories
680 # ... a partial checkout may cause this.
682 # note: we need to check for a known subdir in both cases.
683 # since uninitialized git submodules will give blank dirs
685 if(WITH_INTERNATIONAL)
686 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/datafiles/locale/languages")
687 message(WARNING "Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
688 "This is a 'git submodule', which are known not to work with bridges to other version "
689 "control systems, disabling 'WITH_INTERNATIONAL'.")
690 set(WITH_INTERNATIONAL OFF)
695 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/scripts/addons/modules")
696 message(WARNING "Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
697 "This is a 'git submodule', which are known not to work with bridges to other version "
698 "control systems: * CONTINUING WITHOUT ADDONS *")
702 #-----------------------------------------------------------------------------
703 # Initialize un-cached vars, avoid unused warning
705 # linux only, not cached
706 set(WITH_BINRELOC OFF)
708 # MAXOSX only, set to avoid uninitialized
714 # these are added to later on.
718 # for gcc -Wno-blah-blah
719 set(CC_REMOVE_STRICT_FLAGS)
721 # libraries to link the binary with passed to target_link_libraries()
722 # known as LLIBS to scons
723 set(PLATFORM_LINKLIBS "")
725 # Added to linker flags in setup_liblinks
726 # - CMAKE_EXE_LINKER_FLAGS
727 # - CMAKE_EXE_LINKER_FLAGS_DEBUG
728 set(PLATFORM_LINKFLAGS "")
729 set(PLATFORM_LINKFLAGS_DEBUG "")
732 # For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
735 # -D PYTHON_VERSION=3.4 \
736 # -D PYTHON_INCLUDE_DIR=/opt/py34/include/python3.4d \
737 # -D PYTHON_LIBRARY=/opt/py34/lib/libpython3.4d.so
741 # -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.4/include/python3.4 \
742 # -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/config \
745 # When changing any of this remember to update the notes in doc/build_systems/cmake.txt
747 #-----------------------------------------------------------------------------
751 find_package(X11 REQUIRED)
753 find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
754 mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
756 list(APPEND PLATFORM_LINKLIBS ${X11_X11_LIB})
760 list(APPEND PLATFORM_LINKLIBS ${X11_Xinput_LIB})
762 set(WITH_X11_XINPUT OFF)
766 if(WITH_X11_XF86VMODE)
767 # XXX, why dont cmake make this available?
768 find_library(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
769 mark_as_advanced(X11_Xxf86vmode_LIB)
770 if(X11_Xxf86vmode_LIB)
771 list(APPEND PLATFORM_LINKLIBS ${X11_Xxf86vmode_LIB})
773 set(WITH_X11_XF86VMODE OFF)
779 if(UNIX AND NOT APPLE)
780 macro(find_package_wrapper)
782 set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES})
783 set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
785 find_package(${ARGV})
787 set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back})
788 unset(_cmake_find_library_suffixes_back)
792 find_package_wrapper(JPEG REQUIRED)
793 find_package_wrapper(PNG REQUIRED)
794 find_package_wrapper(ZLIB REQUIRED)
795 find_package_wrapper(Freetype REQUIRED)
798 # No way to set py34. remove for now.
799 # find_package(PythonLibs)
801 # Use our own instead, since wothout py is such a rare case,
802 # require this package
803 # XXX Linking errors with debian static python :/
804 # find_package_wrapper(PythonLibsUnix REQUIRED)
805 find_package(PythonLibsUnix REQUIRED)
808 if(WITH_IMAGE_OPENEXR)
809 find_package_wrapper(OpenEXR) # our own module
810 if(NOT OPENEXR_FOUND)
811 set(WITH_IMAGE_OPENEXR OFF)
815 if(WITH_IMAGE_OPENJPEG)
816 find_package_wrapper(OpenJPEG)
817 if(NOT OPENJPEG_FOUND)
818 set(WITH_IMAGE_OPENJPEG OFF)
823 # XXX Linking errors with debian static tiff :/
824 # find_package_wrapper(TIFF)
827 set(WITH_IMAGE_TIFF OFF)
833 find_package_wrapper(OpenAL)
842 set(SDL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extern/sdlew/include/SDL2")
844 set(SDL_LIBRARY_TEMP)
846 find_package_wrapper(SDL)
853 # unset(SDLMAIN_LIBRARY CACHE)
861 find_package_wrapper(Jack)
868 if(WITH_CODEC_SNDFILE)
869 find_package_wrapper(SndFile)
870 if(NOT SNDFILE_FOUND)
871 set(WITH_CODEC_SNDFILE OFF)
875 if(WITH_CODEC_FFMPEG)
876 set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
877 set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
879 mark_as_advanced(FFMPEG)
881 # lame, but until we have proper find module for ffmpeg
882 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
883 if(EXISTS "${FFMPEG}/include/ffmpeg/")
884 list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg")
888 mark_as_advanced(FFMPEG_LIBRARIES)
889 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
893 find_package_wrapper(Fftw3)
900 find_package_wrapper(OpenCOLLADA)
901 if(OPENCOLLADA_FOUND)
902 find_package_wrapper(XML2)
903 find_package_wrapper(PCRE)
905 set(WITH_OPENCOLLADA OFF)
909 if(WITH_MEM_JEMALLOC)
910 find_package_wrapper(JeMalloc)
911 if(NOT JEMALLOC_FOUND)
912 set(WITH_MEM_JEMALLOC OFF)
917 find_package_wrapper(Spacenav)
918 if(NOT SPACENAV_FOUND)
919 set(WITH_INPUT_NDOF OFF)
922 # use generic names within blenders buildsystem.
924 set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
925 set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
930 # uses in build instructions to override include and library variables
933 set(Boost_USE_STATIC_LIBS ON)
935 set(Boost_USE_MULTITHREADED ON)
936 set(__boost_packages filesystem regex system thread date_time)
937 if(WITH_INTERNATIONAL)
938 list(APPEND __boost_packages locale)
940 if(WITH_CYCLES_NETWORK)
941 list(APPEND __boost_packages serialization)
943 find_package(Boost 1.48 COMPONENTS ${__boost_packages})
945 # try to find non-multithreaded if -mt not found, this flag
946 # doesn't matter for us, it has nothing to do with thread
947 # safety, but keep it to not disturb build setups
948 set(Boost_USE_MULTITHREADED OFF)
949 find_package(Boost 1.48 COMPONENTS ${__boost_packages})
951 unset(__boost_packages)
952 if(Boost_USE_STATIC_LIBS AND WITH_BOOST_ICU)
953 find_package(IcuLinux)
955 mark_as_advanced(Boost_DIR) # why doesnt boost do this?
958 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
959 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
960 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
961 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
965 find_package_wrapper(OpenImageIO)
966 if(NOT OPENIMAGEIO_PUGIXML_FOUND AND WITH_CYCLES_STANDALONE)
967 find_package_wrapper(PugiXML)
969 set(PUGIXML_INCLUDE_DIR "${OPENIMAGEIO_INCLUDE_DIR/OpenImageIO}")
970 set(PUGIXML_LIBRARIES "")
973 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES})
974 set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
975 set(OPENIMAGEIO_DEFINITIONS "")
978 list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}")
980 if(WITH_IMAGE_OPENEXR)
981 list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}")
984 if(NOT OPENIMAGEIO_FOUND)
985 set(WITH_OPENIMAGEIO OFF)
986 message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
991 find_package_wrapper(OpenColorIO)
993 set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES})
994 set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
995 set(OPENCOLORIO_DEFINITIONS)
997 if(NOT OPENCOLORIO_FOUND)
998 set(WITH_OPENCOLORIO OFF)
999 message(STATUS "OpenColorIO not found")
1003 # XXX Maybe most of this section should go into an llvm module?
1005 # Set llvm version if not specified
1006 if(NOT LLVM_VERSION)
1007 set(LLVM_VERSION "3.0")
1011 find_program(LLVM_CONFIG llvm-config-${LLVM_VERSION} HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
1013 find_program(LLVM_CONFIG llvm-config HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
1016 find_program(LLVM_CONFIG llvm-config-${LLVM_VERSION})
1018 find_program(LLVM_CONFIG llvm-config)
1022 if(NOT DEFINED LLVM_VERSION)
1023 execute_process(COMMAND ${LLVM_CONFIG} --version
1024 OUTPUT_VARIABLE LLVM_VERSION
1025 OUTPUT_STRIP_TRAILING_WHITESPACE)
1026 set(LLVM_VERSION ${LLVM_VERSION} CACHE STRING "Version of LLVM to use")
1028 if(NOT DEFINED LLVM_DIRECTORY)
1029 execute_process(COMMAND ${LLVM_CONFIG} --prefix
1030 OUTPUT_VARIABLE LLVM_DIRECTORY
1031 OUTPUT_STRIP_TRAILING_WHITESPACE)
1032 set(LLVM_DIRECTORY ${LLVM_DIRECTORY} CACHE PATH "Path to the LLVM installation")
1034 if(NOT DEFINED LLVM_LIBPATH)
1035 execute_process(COMMAND ${LLVM_CONFIG} --libdir
1036 OUTPUT_VARIABLE LLVM_LIBPATH
1037 OUTPUT_STRIP_TRAILING_WHITESPACE)
1038 set(LLVM_LIBPATH ${LLVM_LIBPATH} CACHE PATH "Path to the LLVM library path")
1039 mark_as_advanced(LLVM_LIBPATH)
1043 find_library(LLVM_LIBRARY
1044 NAMES LLVMAnalysis # first of a whole bunch of libs to get
1045 PATHS ${LLVM_LIBPATH})
1047 find_library(LLVM_LIBRARY
1048 NAMES LLVM-${LLVM_VERSION}
1049 PATHS ${LLVM_LIBPATH})
1053 if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIBPATH)
1055 # if static LLVM libraries were requested, use llvm-config to generate
1056 # the list of what libraries we need, and substitute that in the right
1057 # way for LLVM_LIBRARY.
1058 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
1059 OUTPUT_VARIABLE LLVM_LIBRARY
1060 OUTPUT_STRIP_TRAILING_WHITESPACE)
1061 string(REPLACE " " ";" LLVM_LIBRARY "${LLVM_LIBRARY}")
1064 message(FATAL_ERROR "LLVM not found.")
1069 if(WITH_LLVM OR WITH_SDL_DYNLOAD)
1070 # Fix for conflict with Mesa llvmpipe
1071 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/source/creator/blender.map")
1075 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1077 message(STATUS "CYCLES_OSL = ${CYCLES_OSL}")
1079 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1080 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1081 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1082 # Note: --whole-archive is needed to force loading of all symbols in liboslexec,
1083 # otherwise LLVM is missing the osl_allocate_closure_component function
1084 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -Wl,--whole-archive ${OSL_LIB_EXEC} -Wl,--no-whole-archive ${OSL_LIB_QUERY})
1085 find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1086 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1088 if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
1091 message(STATUS "OSL not found")
1092 set(WITH_CYCLES_OSL OFF)
1096 # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
1097 list(APPEND PLATFORM_LINKLIBS -lutil -lc -lm)
1099 find_package(Threads REQUIRED)
1100 list(APPEND PLATFORM_LINKLIBS ${CMAKE_THREAD_LIBS_INIT})
1103 list(APPEND PLATFORM_LINKLIBS ${CMAKE_DL_LIBS})
1106 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
1107 if(NOT WITH_PYTHON_MODULE)
1108 # binreloc is linux only
1109 set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include)
1110 set(WITH_BINRELOC ON)
1114 # lfs on glibc, all compilers should use
1115 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1118 if(CMAKE_COMPILER_IS_GNUCC)
1119 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1120 # CLang is the same as GCC for now.
1121 elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
1122 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1124 elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro")
1125 set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
1127 # Intel C++ Compiler
1128 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
1129 # think these next two are broken
1130 find_program(XIAR xiar)
1132 set(CMAKE_AR "${XIAR}")
1134 mark_as_advanced(XIAR)
1136 find_program(XILD xild)
1138 set(CMAKE_LINKER "${XILD}")
1140 mark_as_advanced(XILD)
1142 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
1143 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
1145 # set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
1146 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1147 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
1152 add_definitions(-DWIN32)
1156 # needed for some MSVC installations
1157 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
1158 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
1159 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO")
1161 list(APPEND PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi)
1164 list(APPEND PLATFORM_LINKLIBS imm32)
1168 -D_CRT_NONSTDC_NO_DEPRECATE
1169 -D_CRT_SECURE_NO_DEPRECATE
1170 -D_SCL_SECURE_NO_DEPRECATE
1175 # MSVC11 needs _ALLOW_KEYWORD_MACROS to build
1176 add_definitions(-D_ALLOW_KEYWORD_MACROS)
1179 # We want to support Vista level ABI for x64
1180 add_definitions(-D_WIN32_WINNT=0x600)
1183 # Make cmake find the msvc redistributables
1184 set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
1185 include(InstallRequiredSystemLibraries)
1187 set(CMAKE_CXX_FLAGS "/nologo /J /Gd /EHsc /MP" CACHE STRING "MSVC MT C++ flags " FORCE)
1188 set(CMAKE_C_FLAGS "/nologo /J /Gd /MP" CACHE STRING "MSVC MT C++ flags " FORCE)
1191 set(CMAKE_CXX_FLAGS_DEBUG "/Od /RTC1 /MTd /Zi /MP" CACHE STRING "MSVC MT flags " FORCE)
1193 set(CMAKE_CXX_FLAGS_DEBUG "/Od /RTC1 /MTd /ZI /MP" CACHE STRING "MSVC MT flags " FORCE)
1195 set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /MT /MP" CACHE STRING "MSVC MT flags " FORCE)
1196 set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /MT /MP" CACHE STRING "MSVC MT flags " FORCE)
1197 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi /MP" CACHE STRING "MSVC MT flags " FORCE)
1199 set(CMAKE_C_FLAGS_DEBUG "/Od /RTC1 /MTd /Zi /MP" CACHE STRING "MSVC MT flags " FORCE)
1201 set(CMAKE_C_FLAGS_DEBUG "/Od /RTC1 /MTd /ZI /MP" CACHE STRING "MSVC MT flags " FORCE)
1203 set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT /MP" CACHE STRING "MSVC MT flags " FORCE)
1204 set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /MT /MP" CACHE STRING "MSVC MT flags " FORCE)
1205 set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi /MP" CACHE STRING "MSVC MT flags " FORCE)
1208 set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
1210 # MSVC only, Mingw doesnt need
1212 set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
1214 set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
1217 set(PLATFORM_LINKFLAGS_DEBUG "/IGNORE:4099 /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
1219 if(NOT DEFINED LIBDIR)
1220 # Setup 64bit and 64bit windows systems
1222 message(STATUS "64 bit compiler detected.")
1223 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64_vc12)
1225 message(STATUS "32 bit compiler detected.")
1226 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows_vc12)
1229 message(STATUS using LIBDIR ${LIBDIR})
1232 # Add each of our libraries to our cmake_prefix_path so find_package() could work
1233 file(GLOB children RELATIVE ${LIBDIR} ${LIBDIR}/*)
1234 foreach(child ${children})
1235 if(IS_DIRECTORY ${LIBDIR}/${child})
1236 list(APPEND CMAKE_PREFIX_PATH ${LIBDIR}/${child})
1240 set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
1241 set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz_st.lib)
1242 set(ZLIB_INCLUDE_DIR ${LIBDIR}/zlib/include)
1243 set(ZLIB_LIBRARY ${LIBDIR}/zlib/lib/libz_st.lib)
1244 set(ZLIB_DIR ${LIBDIR}/zlib)
1245 #find_package(zlib) # we want to find before finding things that depend on it like png
1250 set(PNG_PNG_INCLUDE_DIR ${LIBDIR}/png/include)
1251 message(WARNING "Using HARDCODED libpng locations")
1252 set(PNG_LIBRARIES libpng)
1253 set(PNG "${LIBDIR}/png")
1254 set(PNG_INCLUDE_DIRS "${PNG}/include")
1255 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1259 set(JPEG_NAMES ${JPEG_NAMES} libjpeg)
1261 find_package(jpeg REQUIRED)
1263 set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
1264 set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
1266 set(FREETYPE ${LIBDIR}/freetype)
1267 set(FREETYPE_INCLUDE_DIRS
1268 ${LIBDIR}/freetype/include
1269 ${LIBDIR}/freetype/include/freetype2
1271 set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
1272 find_package(freetype REQUIRED)
1275 set(FFTW3 ${LIBDIR}/fftw3)
1276 set(FFTW3_LIBRARIES libfftw)
1277 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1278 set(FFTW3_LIBPATH ${FFTW3}/lib)
1281 if(WITH_OPENCOLLADA)
1282 set(OPENCOLLADA ${LIBDIR}/opencollada)
1284 set(OPENCOLLADA_INCLUDE_DIRS
1285 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1286 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1287 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1288 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1289 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1292 set(OPENCOLLADA_LIBRARIES
1293 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADASaxFrameworkLoader.lib
1294 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAFramework.lib
1295 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADABaseUtils.lib
1296 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter.lib
1297 ${OPENCOLLADA}/lib/opencollada/MathMLSolver.lib
1298 ${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser.lib
1299 ${OPENCOLLADA}/lib/opencollada/xml.lib
1300 ${OPENCOLLADA}/lib/opencollada/buffer.lib
1301 ${OPENCOLLADA}/lib/opencollada/ftoa.lib
1305 list(APPEND OPENCOLLADA_LIBRARIES ${OPENCOLLADA}/lib/opencollada/UTF.lib)
1309 ${OPENCOLLADA}/lib/opencollada/pcre.lib
1313 if(WITH_CODEC_FFMPEG)
1314 set(FFMPEG_INCLUDE_DIRS
1315 ${LIBDIR}/ffmpeg/include
1316 ${LIBDIR}/ffmpeg/include/msvc
1318 find_package(FFMPEG)
1319 if(NOT FFMPEG_FOUND)
1320 message(WARNING "Using HARDCODED ffmpeg locations")
1321 set(FFMPEG_LIBRARY_VERSION 55)
1322 set(FFMPEG_LIBRARY_VERSION_AVU 52)
1323 set(FFMPEG_LIBRARIES
1324 ${LIBDIR}/ffmpeg/lib/avcodec-${FFMPEG_LIBRARY_VERSION}.lib
1325 ${LIBDIR}/ffmpeg/lib/avformat-${FFMPEG_LIBRARY_VERSION}.lib
1326 ${LIBDIR}/ffmpeg/lib/avdevice-${FFMPEG_LIBRARY_VERSION}.lib
1327 ${LIBDIR}/ffmpeg/lib/avutil-${FFMPEG_LIBRARY_VERSION_AVU}.lib
1328 ${LIBDIR}/ffmpeg/lib/swscale-2.lib
1333 if(WITH_IMAGE_OPENEXR)
1334 set(OPENEXR_ROOT_DIR ${LIBDIR}/openexr)
1335 set(OPENEXR_VERSION "2.1")
1336 find_package(OPENEXR REQUIRED)
1337 if(NOT OPENEXR_FOUND)
1338 message(WARNING "Using HARDCODED OpenEXR locations")
1339 set(OPENEXR ${LIBDIR}/openexr)
1340 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1341 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1342 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1343 set(OPENEXR_LIBRARIES
1344 ${OPENEXR_LIBPATH}/Iex-2_1.lib
1345 ${OPENEXR_LIBPATH}/Half.lib
1346 ${OPENEXR_LIBPATH}/IlmImf-2_1.lib
1347 ${OPENEXR_LIBPATH}/Imath-2_1.lib
1348 ${OPENEXR_LIBPATH}/IlmThread-2_1.lib
1350 endif(NOT OPENEXR_FOUND)
1354 # Try to find tiff first then complain and set static and maybe wrong paths
1357 message(WARNING "Using HARDCODED libtiff locations")
1358 set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
1359 set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
1364 set(JACK_INCLUDE_DIRS
1365 ${LIBDIR}/jack/include/jack
1366 ${LIBDIR}/jack/include
1368 set(JACK_LIBRARIES optimized ${LIBDIR}/jack/lib/libjack.lib debug ${LIBDIR}/jack/lib/libjack_d.lib)
1372 set(PYTHON_VERSION 3.4) # CACHE STRING)
1374 string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1375 # Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs
1376 set(PYTHON_LIBRARY ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.lib)
1377 unset(_PYTHON_VERSION_NO_DOTS)
1379 # Shared includes for both vc2008 and vc2010
1380 set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION})
1383 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1384 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1389 set(boost_extra_libs wave)
1390 endif(WITH_CYCLES_OSL)
1391 if(WITH_INTERNATIONAL)
1392 list(APPEND boost_extra_libs locale)
1393 endif(WITH_INTERNATIONAL)
1394 set(Boost_USE_STATIC_RUNTIME ON) # prefix lib
1395 set(Boost_USE_MULTITHREADED ON) # suffix -mt
1396 set(Boost_USE_STATIC_LIBS ON) # suffix -s
1397 find_package(Boost COMPONENTS date_time filesystem thread regex system ${boost_extra_libs})
1399 message(WARNING "USING HARDCODED boost locations")
1400 set(BOOST ${LIBDIR}/boost)
1401 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1403 set(BOOST_LIBPATH ${BOOST}/lib)
1404 set(BOOST_POSTFIX "vc120-mt-s-1_55.lib")
1405 set(BOOST_DEBUG_POSTFIX "vc120-mt-sgd-1_55.lib")
1407 set(BOOST_LIBPATH ${BOOST}/lib)
1408 set(BOOST_POSTFIX "vc90-mt-s-1_49.lib")
1409 set(BOOST_DEBUG_POSTFIX "vc90-mt-sgd-1_49.lib")
1412 optimized libboost_date_time-${BOOST_POSTFIX} optimized libboost_filesystem-${BOOST_POSTFIX}
1413 optimized libboost_regex-${BOOST_POSTFIX}
1414 optimized libboost_system-${BOOST_POSTFIX} optimized libboost_thread-${BOOST_POSTFIX}
1415 debug libboost_date_time-${BOOST_DEBUG_POSTFIX} debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
1416 debug libboost_regex-${BOOST_DEBUG_POSTFIX}
1417 debug libboost_system-${BOOST_DEBUG_POSTFIX} debug libboost_thread-${BOOST_DEBUG_POSTFIX})
1419 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1420 optimized libboost_wave-${BOOST_POSTFIX}
1421 debug libboost_wave-${BOOST_DEBUG_POSTFIX})
1423 if(WITH_INTERNATIONAL)
1424 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1425 optimized libboost_locale-${BOOST_POSTFIX}
1426 debug libboost_locale-${BOOST_DEBUG_POSTFIX})
1428 else() # we found boost using find_package
1429 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
1430 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
1431 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
1433 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1436 if(WITH_OPENIMAGEIO)
1437 find_package(OpenImageIO)
1438 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1439 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1440 set(OIIO_OPTIMIZED optimized OpenImageIO optimized OpenImageIO_Util)
1441 set(OIIO_DEBUG debug OpenImageIO_d debug OpenImageIO_Util_d)
1442 set(OPENIMAGEIO_LIBRARIES ${OIIO_OPTIMIZED} ${OIIO_DEBUG})
1443 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1444 set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0")
1445 set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD")
1446 add_definitions(-DOIIO_STATIC_BUILD)
1450 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1451 file(GLOB LLVM_LIBRARY_OPTIMIZED ${LLVM_DIRECTORY}/lib/*.lib)
1453 if(EXISTS ${LLVM_DIRECTORY}/debug/lib)
1454 foreach(LLVM_OPTIMIZED_LIB ${LLVM_LIBRARY_OPTIMIZED})
1455 get_filename_component(LIBNAME ${LLVM_OPTIMIZED_LIB} ABSOLUTE)
1456 list(APPEND LLVM_LIBS optimized ${LIBNAME})
1457 endforeach(LLVM_OPTIMIZED_LIB)
1459 file(GLOB LLVM_LIBRARY_DEBUG ${LLVM_DIRECTORY}/debug/lib/*.lib)
1461 foreach(LLVM_DEBUG_LIB ${LLVM_LIBRARY_DEBUG})
1462 get_filename_component(LIBNAME ${LLVM_DEBUG_LIB} ABSOLUTE)
1463 list(APPEND LLVM_LIBS debug ${LIBNAME})
1464 endforeach(LLVM_DEBUG_LIB)
1466 set(LLVM_LIBRARY ${LLVM_LIBS})
1468 message(WARNING "LLVM debug libs not present on this system. Using release libs for debug builds.")
1469 set(LLVM_LIBRARY ${LLVM_LIBRARY_OPTIMIZED})
1474 if(WITH_OPENCOLORIO)
1475 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1476 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1477 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1478 set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
1479 set(OPENCOLORIO_DEFINITIONS)
1483 if(WITH_MOD_CLOTH_ELTOPO)
1484 set(LAPACK ${LIBDIR}/lapack)
1485 # set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
1486 set(LAPACK_LIBPATH ${LAPACK}/lib)
1487 set(LAPACK_LIBRARIES
1488 ${LIBDIR}/lapack/lib/libf2c.lib
1489 ${LIBDIR}/lapack/lib/clapack_nowrap.lib
1490 ${LIBDIR}/lapack/lib/BLAS_nowrap.lib
1494 # used in many places so include globally, like OpenGL
1495 blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
1497 elseif(CMAKE_COMPILER_IS_GNUCC)
1498 # keep GCC specific stuff here
1499 include(CheckCSourceCompiles)
1500 # Setup 64bit and 64bit windows systems
1501 CHECK_C_SOURCE_COMPILES("
1505 int main(void) { return 0; }
1510 message(STATUS "Compiling for 64 bit with MinGW-w64.")
1511 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
1513 message(STATUS "Compiling for 32 bit with MinGW-w32.")
1514 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
1516 if(WITH_RAYOPTIMIZATION)
1517 message(WARNING "MinGW-w32 is known to be unstable with 'WITH_RAYOPTIMIZATION' option enabled.")
1521 list(APPEND PLATFORM_LINKLIBS -lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi)
1524 list(APPEND PLATFORM_LINKLIBS -limm32)
1527 set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
1530 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
1531 list(APPEND PLATFORM_LINKLIBS -lpthread)
1533 add_definitions(-DFREE_WINDOWS64 -DMS_WIN64)
1536 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1538 add_definitions(-DFREE_WINDOWS)
1540 set(PNG "${LIBDIR}/png")
1541 set(PNG_INCLUDE_DIRS "${PNG}/include")
1542 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1545 set(JPEG_LIBRARIES jpeg)
1547 set(JPEG_LIBRARIES libjpeg)
1549 set(PNG_LIBRARIES png)
1551 set(ZLIB ${LIBDIR}/zlib)
1552 set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
1553 set(ZLIB_LIBPATH ${ZLIB}/lib)
1554 set(ZLIB_LIBRARIES z)
1556 set(JPEG "${LIBDIR}/jpeg")
1557 set(JPEG_INCLUDE_DIR "${JPEG}/include")
1558 set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
1560 # comes with own pthread library
1561 if(NOT WITH_MINGW64)
1562 set(PTHREADS ${LIBDIR}/pthreads)
1563 #set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
1564 set(PTHREADS_LIBPATH ${PTHREADS}/lib)
1565 set(PTHREADS_LIBRARIES pthreadGC2)
1568 set(FREETYPE ${LIBDIR}/freetype)
1569 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1570 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1571 set(FREETYPE_LIBRARY freetype)
1574 set(FFTW3 ${LIBDIR}/fftw3)
1575 set(FFTW3_LIBRARIES fftw3)
1576 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1577 set(FFTW3_LIBPATH ${FFTW3}/lib)
1580 if(WITH_OPENCOLLADA)
1581 set(OPENCOLLADA ${LIBDIR}/opencollada)
1582 set(OPENCOLLADA_INCLUDE_DIRS
1583 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1584 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1585 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1586 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1587 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1589 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib/opencollada)
1590 set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver buffer ftoa xml)
1591 set(PCRE_LIBRARIES pcre)
1594 if(WITH_CODEC_FFMPEG)
1595 set(FFMPEG ${LIBDIR}/ffmpeg)
1596 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1598 set(FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll)
1600 set(FFMPEG_LIBRARIES avcodec-55 avformat-55 avdevice-55 avutil-52 swscale-2)
1602 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1605 if(WITH_IMAGE_OPENEXR)
1606 set(OPENEXR ${LIBDIR}/openexr)
1607 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1608 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1609 set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex)
1610 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1614 set(TIFF ${LIBDIR}/tiff)
1615 set(TIFF_LIBRARY tiff)
1616 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1617 set(TIFF_LIBPATH ${TIFF}/lib)
1621 set(JACK ${LIBDIR}/jack)
1622 set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include)
1623 set(JACK_LIBRARIES jack)
1624 set(JACK_LIBPATH ${JACK}/lib)
1626 # TODO, gives linking errors, force off
1631 # normally cached but not since we include them with blender
1632 set(PYTHON_VERSION 3.4) # CACHE STRING)
1633 string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1634 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}") # CACHE PATH)
1635 set(PYTHON_LIBRARY "${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}mw.lib") # CACHE FILEPATH)
1636 unset(_PYTHON_VERSION_NO_DOTS)
1639 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1640 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1644 set(BOOST ${LIBDIR}/boost)
1645 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1647 set(BOOST_POSTFIX "mgw47-mt-s-1_49")
1648 set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
1650 set(BOOST_POSTFIX "mgw46-mt-s-1_49")
1651 set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49")
1654 optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX}
1655 boost_regex-${BOOST_POSTFIX}
1656 boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX}
1657 debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
1658 boost_regex-${BOOST_DEBUG_POSTFIX}
1659 boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
1660 if(WITH_INTERNATIONAL)
1661 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1662 optimized boost_locale-${BOOST_POSTFIX}
1663 debug boost_locale-${BOOST_DEBUG_POSTFIX})
1666 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1667 optimized boost_wave-${BOOST_POSTFIX}
1668 debug boost_wave-${BOOST_DEBUG_POSTFIX})
1670 set(BOOST_LIBPATH ${BOOST}/lib)
1671 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
1674 if(WITH_OPENIMAGEIO)
1675 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1676 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1677 set(OPENIMAGEIO_LIBRARIES OpenImageIO)
1678 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1679 set(OPENIMAGEIO_DEFINITIONS "")
1683 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1684 set(LLVM_LIBPATH ${LLVM_DIRECTORY}/lib)
1685 # Explicitly set llvm lib order.
1686 #---- WARNING ON GCC ORDER OF LIBS IS IMPORTANT, DO NOT CHANGE! ---------
1687 set(LLVM_LIBRARY LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMAnalysis LLVMArchive
1688 LLVMAsmParser LLVMAsmPrinter
1689 LLVMBitReader LLVMBitWriter
1690 LLVMDebugInfo LLVMExecutionEngine
1691 LLVMInstCombine LLVMInstrumentation
1692 LLVMInterpreter LLVMJIT
1694 LLVMMCDisassembler LLVMMCJIT
1695 LLVMMCParser LLVMObject
1698 LLVMTableGen LLVMTarget
1699 LLVMTransformUtils LLVMVectorize
1700 LLVMX86AsmParser LLVMX86AsmPrinter
1701 LLVMX86CodeGen LLVMX86Desc
1702 LLVMX86Disassembler LLVMX86Info
1703 LLVMX86Utils LLVMipa
1705 # imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
1706 list(APPEND PLATFORM_LINKLIBS -limagehlp)
1709 if(WITH_OPENCOLORIO)
1710 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1711 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1712 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1713 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1714 set(OPENCOLORIO_DEFINITIONS)
1717 set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
1719 ## DISABLE - causes linking errors
1720 ## for re-distribution, so users dont need mingw installed
1721 # set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
1725 # Things common to both mingw and MSVC should go here
1727 set(WINTAB_INC ${LIBDIR}/wintab/include)
1730 set(OPENAL ${LIBDIR}/openal)
1731 set(OPENALDIR ${LIBDIR}/openal)
1732 set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
1734 set(OPENAL_LIBRARY openal32)
1736 set(OPENAL_LIBRARY wrap_oal)
1738 set(OPENAL_LIBPATH ${OPENAL}/lib)
1741 if(WITH_CODEC_SNDFILE)
1742 set(SNDFILE ${LIBDIR}/sndfile)
1743 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1744 set(SNDFILE_LIBRARIES libsndfile-1)
1745 set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
1749 set(SDL ${LIBDIR}/sdl)
1750 set(SDL_INCLUDE_DIR ${SDL}/include)
1751 set(SDL_LIBRARY SDL2)
1752 set(SDL_LIBPATH ${SDL}/lib)
1755 if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
1756 add_definitions(-D__SSE__ -D__MMX__)
1760 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1762 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1763 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1764 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1765 find_library(OSL_LIB_EXEC_DEBUG NAMES oslexec_d PATHS ${CYCLES_OSL}/lib)
1766 find_library(OSL_LIB_COMP_DEBUG NAMES oslcomp_d PATHS ${CYCLES_OSL}/lib)
1767 find_library(OSL_LIB_QUERY_DEBUG NAMES oslquery_d PATHS ${CYCLES_OSL}/lib)
1768 list(APPEND OSL_LIBRARIES optimized ${OSL_LIB_COMP} optimized ${OSL_LIB_EXEC} optimized ${OSL_LIB_QUERY} debug ${OSL_LIB_EXEC_DEBUG} debug ${OSL_LIB_COMP_DEBUG} debug ${OSL_LIB_QUERY_DEBUG})
1769 find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1770 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1772 if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
1775 message(STATUS "OSL not found")
1776 set(WITH_CYCLES_OSL OFF)
1782 if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5")
1783 set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/7/8/9
1787 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
1789 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1790 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
1792 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
1798 find_package(OpenAL)
1801 set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
1803 set(WITH_OPENAL OFF)
1808 find_library(JACK_FRAMEWORK
1811 set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
1812 if(NOT JACK_FRAMEWORK)
1817 if(WITH_CODEC_SNDFILE)
1818 set(SNDFILE ${LIBDIR}/sndfile)
1819 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1820 set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
1821 set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) # TODO, deprecate
1825 # we use precompiled libraries for py 3.4 and up by default
1826 set(PYTHON_VERSION 3.4)
1827 if(NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK)
1828 # normally cached but not since we include them with blender
1829 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
1830 # set(PYTHON_BINARY "${LIBDIR}/python/bin/python${PYTHON_VERSION}") # not used yet
1831 set(PYTHON_LIBRARY python${PYTHON_VERSION}m)
1832 set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
1833 # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
1835 # module must be compiled against Python framework
1836 set(PYTHON_INCLUDE_DIR "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}m")
1837 set(PYTHON_BINARY "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}")
1838 #set(PYTHON_LIBRARY python${PYTHON_VERSION})
1839 set(PYTHON_LIBPATH "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m")
1840 #set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled
1844 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1845 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1849 set(FFTW3 ${LIBDIR}/fftw3)
1850 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1851 set(FFTW3_LIBRARIES fftw3)
1852 set(FFTW3_LIBPATH ${FFTW3}/lib)
1855 set(PNG_LIBRARIES png)
1856 set(JPEG_LIBRARIES jpeg)
1859 set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
1860 set(ZLIB_LIBRARIES z bz2)
1862 set(FREETYPE ${LIBDIR}/freetype)
1863 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1864 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1865 set(FREETYPE_LIBRARY freetype)
1867 if(WITH_IMAGE_OPENEXR)
1868 set(OPENEXR ${LIBDIR}/openexr)
1869 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1870 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1871 set(OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread)
1872 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1875 if(WITH_CODEC_FFMPEG)
1876 set(FFMPEG ${LIBDIR}/ffmpeg)
1877 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1878 set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
1879 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1882 find_library(SYSTEMSTUBS_LIBRARY
1887 mark_as_advanced(SYSTEMSTUBS_LIBRARY)
1888 if(SYSTEMSTUBS_LIBRARY)
1889 list(APPEND PLATFORM_LINKLIBS stdc++ SystemStubs)
1891 list(APPEND PLATFORM_LINKLIBS stdc++)
1894 set(PLATFORM_CFLAGS "-pipe -funsigned-char")
1895 set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
1896 if(WITH_CODEC_QUICKTIME)
1897 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
1898 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1899 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
1900 # libSDL still needs 32bit carbon quicktime
1904 # XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
1905 # ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
1907 # This thread it *should* work and check the framework - campbell
1908 # http://www.cmake.org/pipermail/cmake/2005-December/007740.html
1909 find_library(3DCONNEXION_CLIENT_FRAMEWORK
1910 NAMES 3DconnexionClient
1912 if(NOT 3DCONNEXION_CLIENT_FRAMEWORK)
1913 set(WITH_INPUT_NDOF OFF)
1917 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework 3DconnexionClient")
1918 set(NDOF_INCLUDE_DIRS /Library/Frameworks/3DconnexionClient.framework/Headers )
1923 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework jackmp")
1926 if(WITH_PYTHON_MODULE OR WITH_PYTHON_FRAMEWORK)
1927 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python")# force cmake to link right framework
1930 if(WITH_OPENCOLLADA)
1931 set(OPENCOLLADA ${LIBDIR}/opencollada)
1933 set(OPENCOLLADA_INCLUDE_DIRS
1934 ${LIBDIR}/opencollada/include/COLLADAStreamWriter
1935 ${LIBDIR}/opencollada/include/COLLADABaseUtils
1936 ${LIBDIR}/opencollada/include/COLLADAFramework
1937 ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
1938 ${LIBDIR}/opencollada/include/GeneratedSaxParser
1941 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
1942 set(OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lxml2 -lbuffer -lftoa")
1943 # Use UTF functions from collada if LLVM is not enabled
1945 set(OPENCOLLADA_LIBRARIES "${OPENCOLLADA_LIBRARIES} -lUTF")
1947 # pcre is bundled with openCollada
1948 #set(PCRE ${LIBDIR}/pcre)
1949 #set(PCRE_LIBPATH ${PCRE}/lib)
1950 set(PCRE_LIBRARIES pcre)
1952 #set(EXPAT ${LIBDIR}/expat)
1953 #set(EXPAT_LIBPATH ${EXPAT}/lib)
1958 set(SDL ${LIBDIR}/sdl)
1959 set(SDL_INCLUDE_DIR ${SDL}/include)
1960 set(SDL_LIBRARY SDL2)
1961 set(SDL_LIBPATH ${SDL}/lib)
1962 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -lazy_framework ForceFeedback")
1965 set(PNG "${LIBDIR}/png")
1966 set(PNG_INCLUDE_DIRS "${PNG}/include")
1967 set(PNG_LIBPATH ${PNG}/lib)
1969 set(JPEG "${LIBDIR}/jpeg")
1970 set(JPEG_INCLUDE_DIR "${JPEG}/include")
1971 set(JPEG_LIBPATH ${JPEG}/lib)
1974 set(TIFF ${LIBDIR}/tiff)
1975 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1976 set(TIFF_LIBRARY tiff)
1977 set(TIFF_LIBPATH ${TIFF}/lib)
1981 # linker needs "-weak_framework 3DconnexionClient"
1985 set(BOOST ${LIBDIR}/boost)
1986 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1987 set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt boost_wave-mt)
1988 if(WITH_INTERNATIONAL)
1989 list(APPEND BOOST_LIBRARIES boost_locale-mt)
1991 if(WITH_CYCLES_NETWORK)
1992 list(APPEND BOOST_LIBRARIES boost_serialization-mt)
1994 set(BOOST_LIBPATH ${BOOST}/lib)
1995 set(BOOST_DEFINITIONS)
1998 if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG)
1999 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale and ffmpeg needs it !
2002 if(WITH_OPENIMAGEIO)
2003 set(OPENIMAGEIO ${LIBDIR}/openimageio)
2004 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
2005 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO}/lib/libOpenImageIO.a ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
2006 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
2007 set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
2010 if(WITH_OPENCOLORIO)
2011 set(OPENCOLORIO ${LIBDIR}/opencolorio)
2012 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
2013 set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
2014 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
2018 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
2019 set(LLVM_VERSION "3.4" CACHE STRING "Version of LLVM to use")
2020 if(EXISTS "${LLVM_DIRECTORY}/bin/llvm-config")
2021 set(LLVM_CONFIG "${LLVM_DIRECTORY}/bin/llvm-config")
2023 set(LLVM_CONFIG llvm-config)
2025 execute_process(COMMAND ${LLVM_CONFIG} --version
2026 OUTPUT_VARIABLE LLVM_VERSION
2027 OUTPUT_STRIP_TRAILING_WHITESPACE)
2028 execute_process(COMMAND ${LLVM_CONFIG} --prefix
2029 OUTPUT_VARIABLE LLVM_DIRECTORY
2030 OUTPUT_STRIP_TRAILING_WHITESPACE)
2031 execute_process(COMMAND ${LLVM_CONFIG} --libdir
2032 OUTPUT_VARIABLE LLVM_LIBPATH
2033 OUTPUT_STRIP_TRAILING_WHITESPACE)
2034 find_library(LLVM_LIBRARY
2035 NAMES LLVMAnalysis # first of a whole bunch of libs to get
2036 PATHS ${LLVM_LIBPATH})
2038 if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIBPATH)
2040 # if static LLVM libraries were requested, use llvm-config to generate
2041 # the list of what libraries we need, and substitute that in the right
2042 # way for LLVM_LIBRARY.
2043 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
2044 OUTPUT_VARIABLE LLVM_LIBRARY
2045 OUTPUT_STRIP_TRAILING_WHITESPACE)
2046 string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
2048 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -lLLVM-3.4")
2051 message(FATAL_ERROR "LLVM not found.")
2056 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
2058 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
2059 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
2060 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
2061 # WARNING! depends on correct order of OSL libs linking
2062 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
2063 find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
2064 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
2066 if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
2069 message(STATUS "OSL not found")
2070 set(WITH_CYCLES_OSL OFF)
2075 execute_process(COMMAND ${CMAKE_C_COMPILER} --version OUTPUT_VARIABLE COMPILER_VENDOR)
2076 string(SUBSTRING "${COMPILER_VENDOR}" 0 5 VENDOR_NAME) # truncate output
2077 if(${VENDOR_NAME} MATCHES "Apple") # Apple does not support OpenMP reliable with gcc and not with clang
2078 set(WITH_OPENMP OFF)
2079 else() # vanilla gcc or clang_omp support OpenMP
2080 message(STATUS "Using special OpenMP enabled compiler !") # letting find_package(OpenMP) module work for gcc
2081 if(CMAKE_C_COMPILER_ID MATCHES "Clang") # clang-omp in darwin libs
2082 set(OPENMP_FOUND ON)
2083 set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "C compiler flags for OpenMP parallization" FORCE)
2084 set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "C++ compiler flags for OpenMP parallization" FORCE)
2085 include_directories(${LIBDIR}/openmp/include)
2086 link_directories(${LIBDIR}/openmp/lib)
2087 # This is a workaround for our helperbinaries ( datatoc, masgfmt, ... ),
2088 # They are linked also to omp lib, so we need it in builddir for runtime exexcution, TODO: remove all unneeded dependencies from these
2089 execute_process(COMMAND ditto -arch ${CMAKE_OSX_ARCHITECTURES} ${LIBDIR}/openmp/lib/libiomp5.dylib ${CMAKE_BINARY_DIR}/Resources/lib/libiomp5.dylib) # for intermediate binaries, in respect to lib ID
2094 set(EXETYPE MACOSX_BUNDLE)
2096 set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
2097 set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
2098 if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386")
2099 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
2100 set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
2101 if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang")
2102 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
2103 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
2106 set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
2107 set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
2110 if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5)
2111 # Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv
2112 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024")
2114 # Get rid of eventually clashes, we export some symbols explicite as local
2115 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Xlinker -unexported_symbols_list -Xlinker ${CMAKE_SOURCE_DIR}/source/creator/osx_locals.map")
2118 #-----------------------------------------------------------------------------
2122 if(NOT EXISTS "${LIBDIR}/")
2123 message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'")
2127 if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
2128 message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
2132 if(NOT WITH_OPENIMAGEIO)
2133 message(FATAL_ERROR "Cycles requires WITH_OPENIMAGEIO, the library may not have been found. Configure OIIO or disable WITH_CYCLES")
2136 message(FATAL_ERROR "Cycles requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES")
2141 message(FATAL_ERROR "Cycles OSL requires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL")
2146 if(WITH_INTERNATIONAL)
2148 message(FATAL_ERROR "Internationalization requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL")
2152 # See TEST_SSE_SUPPORT() for how this is defined.
2154 if(WITH_RAYOPTIMIZATION)
2155 if(SUPPORT_SSE_BUILD)
2156 set(PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}")
2157 add_definitions(-D__SSE__ -D__MMX__)
2159 if(SUPPORT_SSE2_BUILD)
2160 set(PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}")
2161 add_definitions(-D__SSE2__)
2162 if(NOT SUPPORT_SSE_BUILD) # dont double up
2163 add_definitions(-D__MMX__)
2169 # set the endian define
2171 # for some reason this fails on msvc
2172 add_definitions(-D__LITTLE_ENDIAN__)
2174 # OSX-Note: as we do crosscompiling with specific set architecture,
2175 # endianess-detection and autosetting is counterproductive
2176 # so we just set endianess according CMAKE_OSX_ARCHITECTURES
2178 elseif(CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
2179 add_definitions(-D__LITTLE_ENDIAN__)
2180 elseif(CMAKE_OSX_ARCHITECTURES MATCHES ppc OR CMAKE_OSX_ARCHITECTURES MATCHES ppc64)
2181 add_definitions(-D__BIG_ENDIAN__)
2184 include(TestBigEndian)
2185 test_big_endian(_SYSTEM_BIG_ENDIAN)
2186 if(_SYSTEM_BIG_ENDIAN)
2187 add_definitions(-D__BIG_ENDIAN__)
2189 add_definitions(-D__LITTLE_ENDIAN__)
2191 unset(_SYSTEM_BIG_ENDIAN)
2195 if(WITH_IMAGE_OPENJPEG)
2196 if(WITH_SYSTEM_OPENJPEG)
2199 set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg")
2200 add_definitions(-DOPJ_STATIC)
2204 if(WITH_IMAGE_REDCODE)
2205 set(REDCODE ${CMAKE_SOURCE_DIR}/extern)
2206 set(REDCODE_INC ${REDCODE})
2210 #-----------------------------------------------------------------------------
2213 find_package(OpenGL)
2214 blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}")
2217 list(APPEND BLENDER_GL_LIBRARIES "${OPENGL_glu_LIBRARY}")
2218 list(APPEND GL_DEFINITIONS -DWITH_GLU)
2221 if(WITH_SYSTEM_GLES)
2222 find_package_wrapper(OpenGLES)
2225 if(WITH_GL_PROFILE_COMPAT OR WITH_GL_PROFILE_CORE)
2226 list(APPEND BLENDER_GL_LIBRARIES "${OPENGL_gl_LIBRARY}")
2228 elseif(WITH_GL_PROFILE_ES20)
2229 if(WITH_SYSTEM_GLES)
2230 if(NOT OPENGLES_LIBRARY)
2231 message(FATAL_ERROR "Unable to find OpenGL ES libraries. Install them or disable WITH_SYSTEM_GLES.")
2234 list(APPEND BLENDER_GL_LIBRARIES OPENGLES_LIBRARY)
2237 set(OPENGLES_LIBRARY "" CACHE FILEPATH "OpenGL ES 2.0 library file")
2238 mark_as_advanced(OPENGLES_LIBRARY)
2240 list(APPEND BLENDER_GL_LIBRARIES "${OPENGLES_LIBRARY}")
2242 if(NOT OPENGLES_LIBRARY)
2243 message(FATAL_ERROR "To compile WITH_GL_EGL you need to set OPENGLES_LIBRARY to the file path of an OpenGL ES 2.0 library.")
2249 # Setup paths to files needed to install and redistribute Windows Blender with OpenGL ES
2251 set(OPENGLES_DLL "" CACHE FILEPATH "OpenGL ES 2.0 redistributable DLL file")
2252 mark_as_advanced(OPENGLES_DLL)
2254 if(NOT OPENGLES_DLL)
2255 message(FATAL_ERROR "To compile WITH_GL_PROFILE_ES20 you need to set OPENGLES_DLL to the file path of an OpenGL ES 2.0 runtime dynamic link library (DLL).")
2259 list(APPEND GL_DEFINITIONS -DWITH_ANGLE)
2261 set(D3DCOMPILER_DLL "" CACHE FILEPATH "Direct3D Compiler redistributable DLL file (needed by ANGLE)")
2263 get_filename_component(D3DCOMPILER_FILENAME "${D3DCOMPILER_DLL}" NAME)
2264 list(APPEND GL_DEFINITIONS "-DD3DCOMPILER=\"\\\"${D3DCOMPILER_FILENAME}\\\"\"")
2266 mark_as_advanced(D3DCOMPILER_DLL)
2268 if(D3DCOMPILER_DLL STREQUAL "")
2269 message(FATAL_ERROR "To compile WITH_GL_ANGLE you need to set D3DCOMPILER_DLL to the file path of a copy of the DirectX redistributable DLL file: D3DCompiler_46.dll")
2279 list(APPEND GL_DEFINITIONS -DWITH_GL_EGL)
2281 if(WITH_SYSTEM_GLES)
2282 if(NOT OPENGLES_EGL_LIBRARY)
2283 message(FATAL_ERROR "Unable to find OpenGL ES libraries. Install them or disable WITH_SYSTEM_GLES.")
2286 list(APPEND BLENDER_GL_LIBRARIES OPENGLES_EGL_LIBRARY)
2289 set(OPENGLES_EGL_LIBRARY "" CACHE FILEPATH "EGL library file")
2290 mark_as_advanced(OPENGLES_EGL_LIBRARY)
2292 list(APPEND BLENDER_GL_LIBRARIES "${OPENGLES_LIBRARY}" "${OPENGLES_EGL_LIBRARY}")
2294 if(NOT OPENGLES_EGL_LIBRARY)
2295 message(FATAL_ERROR "To compile WITH_GL_EGL you need to set OPENGLES_EGL_LIBRARY to the file path of an EGL library.")
2301 # Setup paths to files needed to install and redistribute Windows Blender with OpenGL ES
2303 set(OPENGLES_EGL_DLL "" CACHE FILEPATH "EGL redistributable DLL file")
2304 mark_as_advanced(OPENGLES_EGL_DLL)
2306 if(NOT OPENGLES_EGL_DLL)
2307 message(FATAL_ERROR "To compile WITH_GL_EGL you need to set OPENGLES_EGL_DLL to the file path of an EGL runtime dynamic link library (DLL).")
2314 if(WITH_GL_PROFILE_COMPAT)
2315 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_COMPAT)
2318 if(WITH_GL_PROFILE_CORE)
2319 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_CORE)
2322 if(WITH_GL_PROFILE_ES20)
2323 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_ES20)
2327 list(APPEND GL_DEFINITIONS -DWITH_EGL)
2330 #-----------------------------------------------------------------------------
2333 find_package(OpenMP)
2335 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
2336 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
2338 set(WITH_OPENMP OFF)
2347 #-----------------------------------------------------------------------------
2351 list(APPEND GL_DEFINITIONS -DWITH_GLEW_MX)
2354 if(WITH_SYSTEM_GLEW)
2357 # Note: There is an assumption here that the system GLEW is not a static library.
2360 message(FATAL_ERROR "GLEW is required to build Blender. Install it or disable WITH_SYSTEM_GLEW.")
2364 set(BLENDER_GLEW_LIBRARIES ${GLEW_MX_LIBRARY})
2366 set(BLENDER_GLEW_LIBRARIES ${GLEW_LIBRARY})
2370 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew-es/include")
2372 list(APPEND GL_DEFINITIONS -DGLEW_STATIC -DWITH_GLEW_ES)
2374 # These definitions remove APIs from glew.h, making GLEW smaller, and catching unguarded API usage
2375 if(NOT WITH_GL_PROFILE_ES20)
2376 # No ES functions are needed
2377 list(APPEND GL_DEFINITIONS -DGLEW_NO_ES)
2378 elseif(NOT (WITH_GL_PROFILE_CORE OR WITH_GL_PROFILE_COMPAT))
2379 # ES is enabled, but the other functions are all disabled
2380 list(APPEND GL_DEFINITIONS -DGLEW_ES_ONLY)
2383 if(WITH_GL_PROFILE_ES20)
2385 list(APPEND GL_DEFINITIONS -DGLEW_USE_LIB_ES20)
2388 # ToDo: This is an experiment to eliminate ES 1 symbols,
2389 # GLEW doesn't really properly provide this level of control
2390 # (for example, without modification it eliminates too many symbols)
2391 # so there are lots of modifications to GLEW to make this work,
2392 # and no attempt to make it work beyond Blender at this point.
2393 list(APPEND GL_DEFINITIONS -DGL_ES_VERSION_1_0=0 -DGL_ES_VERSION_CL_1_1=0 -DGL_ES_VERSION_CM_1_1=0)
2397 list(APPEND GL_DEFINITIONS -DGLEW_INC_EGL)
2400 set(BLENDER_GLEW_LIBRARIES extern_glew_es bf_intern_glew_mx)
2403 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
2405 list(APPEND GL_DEFINITIONS -DGLEW_STATIC)
2407 # This won't affect the non-experimental glew library,
2408 # but is used for conditional compilation elsewhere.
2409 list(APPEND GL_DEFINITIONS -DGLEW_NO_ES)
2411 set(BLENDER_GLEW_LIBRARIES extern_glew)
2418 list(APPEND GL_DEFINITIONS -DGLEW_NO_GLU)
2421 #-----------------------------------------------------------------------------
2424 if(WITH_BULLET AND WITH_SYSTEM_BULLET)
2425 find_package(Bullet)
2426 if(NOT BULLET_FOUND)
2427 set(WITH_BULLET OFF)
2430 set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
2431 # set(BULLET_LIBRARIES "")
2434 #-----------------------------------------------------------------------------
2437 if(WITH_PYTHON_MODULE)
2438 add_definitions(-DPy_ENABLE_SHARED)
2441 #-----------------------------------------------------------------------------
2442 # Extra compile flags
2444 if(CMAKE_COMPILER_IS_GNUCC)
2446 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2447 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_CAST_ALIGN -Wcast-align)
2448 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
2449 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2450 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2451 # system headers sometimes do this, disable for now, was: -Werror=strict-prototypes
2452 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2453 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2454 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2455 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2456 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2457 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2458 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_WRITE_STRINGS -Wwrite-strings)
2459 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_LOGICAL_OP -Wlogical-op)
2460 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNDEF -Wundef)
2461 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2462 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_NULL -Wnonnull) # C only
2463 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2464 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2465 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_TYPE_LIMITS -Wtype-limits)
2467 # gcc 4.2 gives annoying warnings on every file with this
2468 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2469 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNINITIALIZED -Wuninitialized)
2472 # versions before gcc4.6 give many BLI_math warnings
2473 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.6")
2474 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_REDUNDANT_DECLS -Wredundant-decls)
2475 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_REDUNDANT_DECLS -Wredundant-decls)
2478 # disable because it gives warnings for printf() & friends.
2479 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_DOUBLE_PROMOTION -Wdouble-promotion -Wno-error=double-promotion)
2482 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2485 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2486 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2487 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2488 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_LOGICAL_OP -Wlogical-op)
2489 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2490 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2491 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2492 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_TYPE_LIMITS -Wtype-limits)
2494 # gcc 4.2 gives annoying warnings on every file with this
2495 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2496 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNINITIALIZED -Wuninitialized)
2499 # causes too many warnings
2501 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
2502 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_DECLARATIONS -Wmissing-declarations)
2505 # flags to undo strict flags
2506 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
2507 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2510 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2513 elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
2515 if(APPLE AND WITH_OPENMP) # we need the Intel omp lib linked here to not fail all tests due presence of -fopenmp !
2516 set(CMAKE_REQUIRED_FLAGS "-L${LIBDIR}/openmp/lib -liomp5") # these are only used for the checks
2519 # strange, clang complains these are not supported, but then yses them.
2520 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2521 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
2522 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2523 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2524 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2525 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2526 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2527 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2528 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2529 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2531 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2532 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2533 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2534 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2535 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.
2536 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2537 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2539 # gives too many unfixable warnings
2540 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_MACROS -Wunused-macros)
2541 # ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_MACROS -Wunused-macros)
2543 # flags to undo strict flags
2544 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2545 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2547 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_VARIABLE_DECLARATIONS -Wno-missing-variable-declarations)
2548 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INCOMPAT_PTR_DISCARD_QUAL -Wno-incompatible-pointer-types-discards-qualifiers)
2549 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_FUNCTION -Wno-unused-function)
2550 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INT_TO_VOID_POINTER_CAST -Wno-int-to-void-pointer-cast)
2551 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_PROTOTYPES -Wno-missing-prototypes)
2552 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DUPLICATE_ENUM -Wno-duplicate-enum)
2553 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNDEF -Wno-undef)
2554 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_NORETURN -Wno-missing-noreturn)
2556 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_PRIVATE_FIELD -Wno-unused-private-field)
2557 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_CXX11_NARROWING -Wno-c++11-narrowing)
2558 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_NON_VIRTUAL_DTOR -Wno-non-virtual-dtor)
2559 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2560 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_REORDER -Wno-reorder)
2562 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
2564 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2565 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2566 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2568 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2569 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2570 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2572 # disable numbered, false positives
2573 set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556")
2574 set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556")
2575 elseif(CMAKE_C_COMPILER_ID MATCHES "MSVC")
2576 # most msvc warnings are C & C++
2580 "/w34062" # switch statement contains 'default' but no 'case' labels
2582 "/wd4018" # signed/unsigned mismatch
2583 "/wd4065" # switch statement contains 'default' but no 'case' labels
2584 "/wd4127" # conditional expression is constant
2585 "/wd4181" # qualifier applied to reference type; ignored
2586 "/wd4200" # zero-sized array in struct/union
2587 "/wd4244" # conversion from 'type1' to 'type2', possible loss of data
2588 "/wd4267" # conversion from 'size_t' to 'type', possible loss of data
2589 "/wd4305" # truncation from 'type1' to 'type2'
2590 "/wd4800" # forcing value to bool 'true' or 'false'
2592 "/we4013" # 'function' undefined; assuming extern returning int
2593 "/we4431" # missing type specifier - int assumed
2596 string(REPLACE ";" " " _WARNINGS "${_WARNINGS}")
2597 set(C_WARNINGS "${_WARNINGS}")
2598 set(CXX_WARNINGS "${_WARNINGS}")
2602 # ensure python header is found since detection can fail, this could happen
2603 # with _any_ library but since we used a fixed python version this tends to
2604 # be most problematic.
2606 if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/Python.h")
2607 message(FATAL_ERROR "Missing: \"${PYTHON_INCLUDE_DIR}/Python.h\",\n"
2608 "Set the cache entry 'PYTHON_INCLUDE_DIR' to point "
2609 "to a valid python include path. Containing "
2610 "Python.h for python version \"${PYTHON_VERSION}\"")
2614 # pass, we have this in an archive to extract
2615 elseif(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
2616 find_python_package(numpy)
2620 # pass, we have this in lib/python/site-packages
2621 elseif(WITH_PYTHON_INSTALL_REQUESTS)
2622 find_python_package(requests)
2626 # Include warnings first, so its possible to disable them with user defined flags
2627 # eg: -Wno-uninitialized
2628 set(CMAKE_C_FLAGS "${C_WARNINGS} ${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}")
2629 set(CMAKE_CXX_FLAGS "${CXX_WARNINGS} ${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}")
2631 # defined above, platform spesific but shared names
2648 #-------------------------------------------------------------------------------
2651 # better not set includes here but this debugging option is off by default.
2652 if(WITH_CXX_GUARDEDALLOC)
2653 include_directories(${CMAKE_SOURCE_DIR}/intern/guardedalloc)
2654 add_definitions(-DWITH_CXX_GUARDEDALLOC)
2657 if(WITH_ASSERT_ABORT)
2658 add_definitions(-DWITH_ASSERT_ABORT)
2661 # message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
2662 # message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
2664 #-----------------------------------------------------------------------------
2668 include(GTestTesting)
2671 if(WITH_BLENDER OR WITH_PLAYER)
2672 add_subdirectory(intern)
2673 add_subdirectory(extern)
2675 # source after intern and extern to gather all
2676 # internal and external library information first, for test linking
2677 add_subdirectory(source)
2678 elseif(WITH_CYCLES_STANDALONE)
2679 add_subdirectory(intern/cycles)
2680 add_subdirectory(extern/clew)
2681 add_subdirectory(extern/cuew)
2682 if(NOT WITH_SYSTEM_GLEW)
2683 add_subdirectory(extern/glew)
2687 #-----------------------------------------------------------------------------
2688 # Blender Application
2690 add_subdirectory(source/creator)
2694 #-----------------------------------------------------------------------------
2697 add_subdirectory(source/blenderplayer)
2701 #-----------------------------------------------------------------------------
2703 add_subdirectory(tests)
2706 #-----------------------------------------------------------------------------
2707 # CPack for generating packages
2708 include(build_files/cmake/packaging.cmake)
2711 #-----------------------------------------------------------------------------
2712 # Print Final Configuration
2715 set(_config_msg "\n* Blender Configuration *")
2716 macro(info_cfg_option
2718 set(_msg " * ${_setting}")
2719 string(LENGTH "${_msg}" _len)
2720 while("32" GREATER "${_len}")
2721 set(_msg "${_msg} ")
2722 math(EXPR _len "${_len} + 1")
2725 set(_config_msg "${_config_msg}\n${_msg}${${_setting}}")
2730 set(_config_msg "${_config_msg}\n\n ${_text}")
2735 message(STATUS "C Compiler: \"${CMAKE_C_COMPILER_ID}\"")
2736 message(STATUS "C++ Compiler: \"${CMAKE_CXX_COMPILER_ID}\"")
2738 info_cfg_text("Build Options:")
2739 info_cfg_option(WITH_GAMEENGINE)
2740 info_cfg_option(WITH_PLAYER)
2741 info_cfg_option(WITH_BULLET)
2742 info_cfg_option(WITH_IK_SOLVER)
2743 info_cfg_option(WITH_IK_ITASC)
2744 info_cfg_option(WITH_OPENCOLLADA)
2745 info_cfg_option(WITH_FFTW3)
2746 info_cfg_option(WITH_INTERNATIONAL)
2747 info_cfg_option(WITH_INPUT_NDOF)
2748 info_cfg_option(WITH_CYCLES)
2749 info_cfg_option(WITH_FREESTYLE)
2750 info_cfg_option(WITH_OPENCOLORIO)
2752 info_cfg_text("Compiler Options:")
2753 info_cfg_option(WITH_BUILDINFO)
2754 info_cfg_option(WITH_OPENMP)
2755 info_cfg_option(WITH_RAYOPTIMIZATION)
2757 info_cfg_text("System Options:")
2758 info_cfg_option(WITH_INSTALL_PORTABLE)
2759 info_cfg_option(WITH_X11_XF86VMODE)
2760 info_cfg_option(WITH_X11_XINPUT)
2761 info_cfg_option(WITH_MEM_JEMALLOC)
2762 info_cfg_option(WITH_MEM_VALGRIND)
2763 info_cfg_option(WITH_SYSTEM_GLEW)
2764 info_cfg_option(WITH_SYSTEM_OPENJPEG)
2766 info_cfg_text("Image Formats:")
2767 info_cfg_option(WITH_OPENIMAGEIO)
2768 info_cfg_option(WITH_IMAGE_CINEON)
2769 info_cfg_option(WITH_IMAGE_DDS)
2770 info_cfg_option(WITH_IMAGE_HDR)
2771 info_cfg_option(WITH_IMAGE_OPENEXR)
2772 info_cfg_option(WITH_IMAGE_OPENJPEG)
2773 info_cfg_option(WITH_IMAGE_REDCODE)
2774 info_cfg_option(WITH_IMAGE_TIFF)
2776 info_cfg_text("Audio:")
2777 info_cfg_option(WITH_OPENAL)
2778 info_cfg_option(WITH_SDL)
2779 info_cfg_option(WITH_SDL_DYNLOAD)
2780 info_cfg_option(WITH_JACK)
2781 info_cfg_option(WITH_JACK_DYNLOAD)
2782 info_cfg_option(WITH_CODEC_AVI)
2783 info_cfg_option(WITH_CODEC_FFMPEG)
2784 info_cfg_option(WITH_CODEC_SNDFILE)
2786 info_cfg_text("Compression:")
2787 info_cfg_option(WITH_LZMA)
2788 info_cfg_option(WITH_LZO)
2790 info_cfg_text("Python:")
2791 info_cfg_option(WITH_PYTHON_INSTALL)
2792 info_cfg_option(WITH_PYTHON_INSTALL_NUMPY)
2793 info_cfg_option(WITH_PYTHON_MODULE)
2794 info_cfg_option(WITH_PYTHON_SAFETY)
2796 info_cfg_option(WITH_PYTHON_FRAMEWORK)
2799 info_cfg_text("Modifiers:")
2800 info_cfg_option(WITH_MOD_BOOLEAN)
2801 info_cfg_option(WITH_MOD_REMESH)
2802 info_cfg_option(WITH_MOD_FLUID)
2803 info_cfg_option(WITH_MOD_OCEANSIM)
2805 info_cfg_text("OpenGL:")
2806 info_cfg_option(WITH_GLEW_ES)
2807 info_cfg_option(WITH_GLU)
2808 info_cfg_option(WITH_GL_EGL)
2809 info_cfg_option(WITH_GL_PROFILE_COMPAT)
2810 info_cfg_option(WITH_GL_PROFILE_CORE)
2811 info_cfg_option(WITH_GL_PROFILE_ES20)
2813 info_cfg_option(WITH_GL_ANGLE)
2816 info_cfg_text("Other:")
2817 info_cfg_option(WITH_OPENNL)
2820 message(STATUS "HAVE_STDBOOL_H = ${HAVE_STDBOOL_H}")
2824 message("${_config_msg}")