1 # ***** BEGIN GPL LICENSE BLOCK *****
3 # This program is free software; you can redistribute it and/or
4 # modify it under the terms of the GNU General Public License
5 # as published by the Free Software Foundation; either version 2
6 # of the License, or (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software Foundation,
15 # Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 # The Original Code is Copyright (C) 2006, Blender Foundation
18 # All rights reserved.
20 # The Original Code is: all of this file.
22 # Contributor(s): Jacques Beaurain.
24 # ***** END GPL LICENSE BLOCK *****
26 #-----------------------------------------------------------------------------
27 # We don't allow in-source builds. This causes no end of troubles because
28 # all out-of-source builds will use the CMakeCache.txt file there and even
29 # build the libs and objects in it.
31 if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
32 if(NOT DEFINED WITH_IN_SOURCE_BUILD)
34 "CMake generation for blender is not allowed within the source directory!"
35 "\n Remove the CMakeCache.txt file and try again from another folder, e.g.:"
37 "\n rm CMakeCache.txt"
43 "\n Alternately define WITH_IN_SOURCE_BUILD to force this option (not recommended!)"
48 cmake_minimum_required(VERSION 2.8)
50 if(NOT EXECUTABLE_OUTPUT_PATH)
56 # this starts out unset
57 list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/build_files/cmake/Modules")
59 # avoid having empty buildtype
60 set(CMAKE_BUILD_TYPE_INIT "Release")
62 # quiet output for Makefiles, 'make -s' helps too
63 # set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
65 # global compile definitions since add_definitions() adds for all.
67 if(NOT (${CMAKE_VERSION} VERSION_LESS 3.0))
68 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS
69 $<$<CONFIG:Debug>:DEBUG;_DEBUG>
70 $<$<CONFIG:Release>:NDEBUG>
71 $<$<CONFIG:MinSizeRel>:NDEBUG>
72 $<$<CONFIG:RelWithDebInfo>:NDEBUG>
75 # keep until CMake-3.0 is min requirement
76 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG _DEBUG)
77 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE NDEBUG)
78 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_MINSIZEREL NDEBUG)
79 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO NDEBUG)
82 #-----------------------------------------------------------------------------
85 # see "cmake --help-policy CMP0003"
86 # So library linking is more sane
87 cmake_policy(SET CMP0003 NEW)
89 # So BUILDINFO and BLENDERPATH strings are automatically quoted
90 cmake_policy(SET CMP0005 NEW)
92 # So syntax problems are errors
93 cmake_policy(SET CMP0010 NEW)
95 # Input directories must have CMakeLists.txt
96 cmake_policy(SET CMP0014 NEW)
98 #-----------------------------------------------------------------------------
100 include(build_files/cmake/macros.cmake)
103 #-----------------------------------------------------------------------------
104 # Initialize project.
106 blender_project_hack_pre()
110 blender_project_hack_post()
114 #-----------------------------------------------------------------------------
115 # Redirect output files
117 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" FORCE)
118 set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" FORCE)
119 set(TESTS_OUTPUT_DIR ${EXECUTABLE_OUTPUT_PATH}/tests CACHE INTERNAL "" FORCE)
121 #-----------------------------------------------------------------------------
122 # Set default config options
124 get_blender_version()
127 #-----------------------------------------------------------------------------
128 # Platform Specific Defaults
134 macro(option_defaults_init)
135 foreach(_var ${ARGV})
137 list(APPEND _init_vars "${_var}")
142 # remove from namespace
143 macro(option_defaults_clear)
144 foreach(_var ${_init_vars})
152 # values to initialize WITH_****
153 option_defaults_init(
170 if (UNIX AND NOT APPLE)
171 # some of these libraries are problematic on Linux
172 # disable less important dependencies by default
173 set(_init_CODEC_FFMPEG OFF)
174 set(_init_CYCLES_OSL OFF)
175 set(_init_IMAGE_OPENEXR OFF)
176 set(_init_IMAGE_REDCODE OFF)
177 set(_init_INPUT_NDOF OFF)
179 set(_init_OPENCOLLADA OFF)
180 set(_init_OPENCOLORIO OFF)
183 set(_init_OPENSUBDIV OFF)
188 set(_init_OPENSUBDIV OFF)
192 #-----------------------------------------------------------------------------
195 # First platform spesific non-cached vars
196 if(UNIX AND NOT APPLE)
200 # Blender internal features
201 option(WITH_BLENDER "Build blender (disable to build only the blender player)" ON)
202 mark_as_advanced(WITH_BLENDER)
204 option(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON)
206 option(WITH_PYTHON "Enable Embedded Python API (only disable for development)" ON)
207 option(WITH_PYTHON_SECURITY "Disables execution of scripts within blend files by default" ON)
208 mark_as_advanced(WITH_PYTHON) # dont want people disabling this unless they really know what they are doing.
209 mark_as_advanced(WITH_PYTHON_SECURITY) # some distributions see this as a security issue, rather than have them patch it, make a build option.
211 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)
212 mark_as_advanced(WITH_PYTHON_SAFETY)
213 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), installs to PYTHON_SITE_PACKAGES (or CMAKE_INSTALL_PREFIX if WITH_INSTALL_PORTABLE is enabled)." OFF)
215 option(WITH_PYTHON_FRAMEWORK "Enable building using the Python available in the framework (OSX only)" OFF)
218 option(WITH_BUILDINFO "Include extra build details (only disable for development & faster builds)" ${_init_BUILDINFO})
219 if(${CMAKE_VERSION} VERSION_LESS 2.8.8)
220 # add_library OBJECT arg unsupported
221 set(WITH_BUILDINFO OFF)
224 option(WITH_IK_ITASC "Enable ITASC IK solver (only disable for development & for incompatible C++ compilers)" ON)
225 option(WITH_IK_SOLVER "Enable Legacy IK solver (only disable for development)" ON)
226 option(WITH_FFTW3 "Enable FFTW3 support (Used for smoke and audio effects)" ${_init_FFTW3})
227 option(WITH_BULLET "Enable Bullet (Physics Engine)" ON)
228 option(WITH_SYSTEM_BULLET "Use the systems bullet library (currently unsupported due to missing features in upstream!)" )
229 mark_as_advanced(WITH_SYSTEM_BULLET)
230 option(WITH_GAMEENGINE "Enable Game Engine" ${_init_GAMEENGINE})
231 option(WITH_PLAYER "Build Player" OFF)
232 option(WITH_OPENCOLORIO "Enable OpenColorIO color management" ${_init_OPENCOLORIO})
235 option(WITH_COMPOSITOR "Enable the tile based nodal compositor" ON)
236 option(WITH_COMPOSITOR_WERROR "Treat warnings as errors in compositor code" OFF)
237 mark_as_advanced(WITH_COMPOSITOR_WERROR)
239 option(WITH_OPENSUBDIV "Enable OpenSubdiv for surface subdivision" _init_OPENSUBDIV)
240 option(WITH_SUBSURF_WERROR "Treat warnings as errors in subsurf code" OFF)
241 mark_as_advanced(WITH_COMPOSITOR_WERROR)
243 option(WITH_OPENVDB "Enable features relying on OpenVDB" OFF)
244 option(WITH_OPENVDB_BLOSC "Enable blosc compression for OpenVDB, only enable if OpenVDB was built with blosc support" OFF)
246 # GHOST Windowing Library Options
247 option(WITH_GHOST_DEBUG "Enable debugging output for the GHOST library" OFF)
248 mark_as_advanced(WITH_GHOST_DEBUG)
250 option(WITH_GHOST_SDL "Enable building Blender against SDL for windowing rather than the native APIs" OFF)
251 mark_as_advanced(WITH_GHOST_SDL)
254 option(WITH_GHOST_XDND "Enable drag'n'drop support on X11 using XDND protocol" ON)
258 option(WITH_HEADLESS "Build without graphical support (renderfarm, server mode only)" OFF)
259 mark_as_advanced(WITH_HEADLESS)
261 option(WITH_AUDASPACE "Build with blenders audio library (only disable if you know what you're doing!)" ON)
262 option(WITH_SYSTEM_AUDASPACE "Build with external audaspace library installed on the system (only enable if you know what you're doing!)" OFF)
263 mark_as_advanced(WITH_AUDASPACE)
264 mark_as_advanced(WITH_SYSTEM_AUDASPACE)
266 if(NOT WITH_AUDASPACE)
267 set(WITH_SYSTEM_AUDASPACE OFF)
270 option(WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" ON)
271 if(UNIX AND NOT APPLE)
272 option(WITH_OPENMP_STATIC "Link OpenMP statically (only used by the release environment)" OFF)
273 mark_as_advanced(WITH_OPENMP_STATIC)
277 option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)" ON)
278 option(WITH_X11_XF86VMODE "Enable X11 video mode switching" ON)
281 if(UNIX AND NOT APPLE)
282 option(WITH_SYSTEM_GLEW "Use GLEW OpenGL wrapper library provided by the operating system" ON)
283 option(WITH_SYSTEM_GLES "Use OpenGL ES library provided by the operating system" ON)
285 # not an option for other OS's
286 set(WITH_SYSTEM_GLEW OFF)
287 set(WITH_SYSTEM_GLES OFF)
291 # (unix defaults to System OpenJPEG On)
292 option(WITH_SYSTEM_OPENJPEG "Use the operating systems OpenJPEG library" OFF)
294 if(UNIX AND NOT APPLE)
295 option(WITH_SYSTEM_EIGEN3 "Use the systems Eigen3 library" OFF)
300 option(WITH_MOD_FLUID "Enable Elbeem Modifier (Fluid Simulation)" ON)
301 option(WITH_MOD_SMOKE "Enable Smoke Modifier (Smoke Simulation)" ON)
302 option(WITH_MOD_BOOLEAN "Enable Boolean Modifier" ON)
303 option(WITH_MOD_REMESH "Enable Remesh Modifier" ON)
304 # option(WITH_MOD_CLOTH_ELTOPO "Enable Experimental cloth solver" OFF) # this is now only available in a branch
305 # mark_as_advanced(WITH_MOD_CLOTH_ELTOPO)
306 option(WITH_MOD_OCEANSIM "Enable Ocean Modifier" OFF)
308 # Image format support
309 option(WITH_OPENIMAGEIO "Enable OpenImageIO Support (http://www.openimageio.org)" ON)
310 option(WITH_IMAGE_OPENEXR "Enable OpenEXR Support (http://www.openexr.com)" ${_init_IMAGE_OPENEXR})
311 option(WITH_IMAGE_OPENJPEG "Enable OpenJpeg Support (http://www.openjpeg.org)" ON)
312 option(WITH_IMAGE_TIFF "Enable LibTIFF Support" ON)
313 option(WITH_IMAGE_DDS "Enable DDS Image Support" ON)
314 option(WITH_IMAGE_CINEON "Enable CINEON and DPX Image Support" ON)
315 option(WITH_IMAGE_HDR "Enable HDR Image Support" ON)
316 option(WITH_IMAGE_REDCODE "Enable RedCode Image Support" ${_init_IMAGE_REDCODE})
317 option(WITH_IMAGE_FRAMESERVER "Enable image FrameServer Support for rendering" ON)
319 # Audio/Video format support
320 option(WITH_CODEC_AVI "Enable Blenders own AVI file support (raw/jpeg)" ON)
321 option(WITH_CODEC_FFMPEG "Enable FFMPeg Support (http://ffmpeg.org)" ${_init_CODEC_FFMPEG})
322 option(WITH_CODEC_SNDFILE "Enable libsndfile Support (http://www.mega-nerd.com/libsndfile)" OFF)
325 option(WITH_CODEC_QUICKTIME "Enable Quicktime Support" ON)
329 # Disable opencollada when we don't have precompiled libs
330 option(WITH_OPENCOLLADA "Enable OpenCollada Support (http://www.opencollada.org)" ${_init_OPENCOLLADA})
333 option(WITH_SDL "Enable SDL for sound and joystick support" ${_init_SDL})
334 option(WITH_OPENAL "Enable OpenAL Support (http://www.openal.org)" ON)
335 option(WITH_JACK "Enable Jack Support (http://www.jackaudio.org)" ${_init_JACK})
336 if(UNIX AND NOT APPLE)
337 option(WITH_JACK_DYNLOAD "Enable runtime dynamic Jack libraries loading" OFF)
339 if(UNIX AND NOT APPLE)
340 option(WITH_SDL_DYNLOAD "Enable runtime dynamic SDL libraries loading" OFF)
344 option(WITH_LZO "Enable fast LZO compression (used for pointcache)" ON)
345 option(WITH_LZMA "Enable best LZMA compression, (used for pointcache)" ON)
346 if(UNIX AND NOT APPLE)
347 option(WITH_SYSTEM_LZO "Use the system LZO library" OFF)
350 # Camera/motion tracking
351 option(WITH_LIBMV "Enable Libmv structure from motion library" ON)
352 option(WITH_LIBMV_SCHUR_SPECIALIZATIONS "Enable fixed-size schur specializations." OFF)
353 option(WITH_LIBMV_WERROR "Treat warnings as errors in Libmv (and Blender's motion tracking) code")
354 mark_as_advanced(WITH_LIBMV_SCHUR_SPECIALIZATIONS)
355 mark_as_advanced(WITH_LIBMV_WERROR)
358 option(WITH_FREESTYLE "Enable Freestyle (advanced edges rendering)" ON)
362 option(WITH_INPUT_IME "Enable Input Method Editor (IME) for complex Asian character input" ON)
364 option(WITH_INPUT_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ${_init_INPUT_NDOF})
365 option(WITH_RAYOPTIMIZATION "Enable use of SIMD (SSE) optimizations for the raytracer" ON)
366 if(UNIX AND NOT APPLE)
367 option(WITH_INSTALL_PORTABLE "Install redistributeable runtime, otherwise install into CMAKE_INSTALL_PREFIX" ON)
368 option(WITH_STATIC_LIBS "Try to link with static libraries, as much as possible, to make blender more portable across distributions" OFF)
370 option(WITH_BOOST_ICU "Boost uses ICU library (required for linking with static Boost built with libicu)." OFF)
371 mark_as_advanced(WITH_BOOST_ICU)
374 option(WITH_PYTHON_INSTALL "Copy system python into the blender install folder" ON)
375 option(WITH_PYTHON_INSTALL_NUMPY "Copy system numpy into the blender install folder" ON)
376 set(PYTHON_NUMPY_PATH "" CACHE PATH "Path to python site-packages or dist-packages containing 'numpy' module")
377 mark_as_advanced(PYTHON_NUMPY_PATH)
378 option(WITH_CPU_SSE "Enable SIMD instruction if they're detected on the host machine" ON)
379 mark_as_advanced(WITH_CPU_SSE)
381 if(UNIX AND NOT APPLE)
382 option(WITH_PYTHON_INSTALL_REQUESTS "Copy system requests into the blender install folder" ON)
383 set(PYTHON_REQUESTS_PATH "" CACHE PATH "Path to python site-packages or dist-packages containing 'requests' module")
384 mark_as_advanced(PYTHON_REQUESTS_PATH)
388 option(WITH_CYCLES "Enable Cycles Render Engine" ON)
389 option(WITH_CYCLES_STANDALONE "Build Cycles standalone application" OFF)
390 option(WITH_CYCLES_STANDALONE_GUI "Build Cycles standalone with GUI" OFF)
391 option(WITH_CYCLES_OSL "Build Cycles with OSL support" ${_init_CYCLES_OSL})
392 option(WITH_CYCLES_CUDA_BINARIES "Build Cycles CUDA binaries" OFF)
393 set(CYCLES_CUDA_BINARIES_ARCH sm_20 sm_21 sm_30 sm_35 sm_50 sm_52 CACHE STRING "CUDA architectures to build binaries for")
394 mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
395 unset(PLATFORM_DEFAULT)
396 option(WITH_CYCLES_LOGGING "Build Cycles with logging support" ON)
397 option(WITH_CYCLES_DEBUG "Build Cycles with extra debug capabilities" OFF)
398 option(WITH_CYCLES_WERROR "Treat warnings as errors in Cycles code" OFF)
399 mark_as_advanced(WITH_CYCLES_LOGGING)
400 mark_as_advanced(WITH_CYCLES_DEBUG)
401 mark_as_advanced(WITH_CYCLES_WERROR)
403 option(WITH_CUDA_DYNLOAD "Dynamically load CUDA libraries at runtime" ON)
404 mark_as_advanced(WITH_CUDA_DYNLOAD)
407 option(WITH_LLVM "Use LLVM" OFF)
409 option(LLVM_STATIC "Link with LLVM static libraries" ON) # we prefer static llvm build on Apple, dyn build possible though
411 option(LLVM_STATIC "Link with LLVM static libraries" OFF)
413 mark_as_advanced(LLVM_STATIC)
415 # disable for now, but plan to support on all platforms eventually
416 option(WITH_MEM_JEMALLOC "Enable malloc replacement (http://www.canonware.com/jemalloc)" ON)
417 mark_as_advanced(WITH_MEM_JEMALLOC)
419 # currently only used for BLI_mempool
420 option(WITH_MEM_VALGRIND "Enable extended valgrind support for better reporting" OFF)
421 mark_as_advanced(WITH_MEM_VALGRIND)
424 option(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking (only enable for development)" OFF)
425 mark_as_advanced(WITH_CXX_GUARDEDALLOC)
427 option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF)
428 mark_as_advanced(WITH_ASSERT_ABORT)
430 option(WITH_BOOST "Enable features depending on boost" ON)
433 option(WITH_GTESTS "Enable GTest unit testing" OFF)
437 if(UNIX AND NOT APPLE)
438 option(WITH_DOC_MANPAGE "Create a manual page (Unix manpage)" OFF)
444 option(WITH_GLEW_MX "Support multiple GLEW contexts (experimental)" OFF )
445 option(WITH_GLEW_ES "Switches to experimental copy of GLEW that has support for OpenGL ES. (temporary option for development purposes)" OFF)
446 option(WITH_GL_EGL "Use the EGL OpenGL system library instead of the platform specific OpenGL system library (CGL, glX, or WGL)" OFF)
447 option(WITH_GL_PROFILE_COMPAT "Support using the OpenGL 'compatibility' profile. (deprecated)" ON )
448 option(WITH_GL_PROFILE_CORE "Support using the OpenGL 3.2+ 'core' profile." OFF)
449 option(WITH_GL_PROFILE_ES20 "Support using OpenGL ES 2.0. (thru either EGL or the AGL/WGL/XGL 'es20' profile)" OFF)
455 WITH_GL_PROFILE_COMPAT
460 if(WITH_GL_PROFILE_COMPAT)
467 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)
468 mark_as_advanced(WITH_GL_ANGLE)
471 if(WITH_GLEW_ES AND WITH_SYSTEM_GLEW)
472 message(WARNING Ignoring WITH_SYSTEM_GLEW and using WITH_GLEW_ES)
473 set(WITH_SYSTEM_GLEW OFF)
477 getDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES)
478 set(CPACK_INSTALL_PREFIX ${CMAKE_GENERIC_PROGRAM_FILES}/${})
481 # Experimental support of C++11
482 option(WITH_CPP11 "Build with C++11 standard enabled, for development use only!" OFF)
483 mark_as_advanced(WITH_CPP11)
486 option(WITH_LEGACY_DEPSGRAPH "Build Blender with legacy dependency graph" ON)
487 mark_as_advanced(WITH_LEGACY_DEPSGRAPH)
490 option_defaults_clear()
496 # By default we want to install to the directory we are compiling our executables
497 # unless specified otherwise, which we currently do not allow
498 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
500 set(CMAKE_INSTALL_PREFIX ${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE} CACHE PATH "default install path" FORCE)
502 set(CMAKE_INSTALL_PREFIX ${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE} CACHE PATH "default install path" FORCE)
504 if(WITH_INSTALL_PORTABLE)
505 set(CMAKE_INSTALL_PREFIX ${EXECUTABLE_OUTPUT_PATH} CACHE PATH "default install path" FORCE)
515 if(${CMAKE_VERSION} VERSION_LESS 3.0) # else breaks setting CMP0043 policy
516 cmake_minimum_required(VERSION 2.8.8)
517 cmake_policy(VERSION 2.8.8)
520 if(NOT CMAKE_OSX_ARCHITECTURES)
521 set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING
522 "Choose the architecture you want to build Blender for: i386, x86_64 or ppc"
526 execute_process(COMMAND uname -r OUTPUT_VARIABLE MAC_SYS) # check for actual system-version
527 if(${MAC_SYS} MATCHES 15)
528 set(OSX_SYSTEM 10.11)
529 # throw an error here, older cmake cannot handle 2 digit subversion!
530 cmake_minimum_required(VERSION 3.0.0)
531 elseif(${MAC_SYS} MATCHES 14)
532 set(OSX_SYSTEM 10.10)
533 # throw an error here, older cmake cannot handle 2 digit subversion!
534 cmake_minimum_required(VERSION 3.0.0)
535 elseif(${MAC_SYS} MATCHES 13)
537 elseif(${MAC_SYS} MATCHES 12)
539 elseif(${MAC_SYS} MATCHES 11)
541 elseif(${MAC_SYS} MATCHES 10)
543 elseif(${MAC_SYS} MATCHES 9)
546 set(OSX_SYSTEM unsupported)
549 # workaround for incorrect cmake xcode lookup for developer previews - XCODE_VERSION does not take xcode-select path into accout
550 # but would always look into /Applications/Xcode.app while dev versions are named Xcode<version>-DP<preview_number>
551 execute_process(COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_CHECK OUTPUT_STRIP_TRAILING_WHITESPACE)
552 string(REPLACE "/Contents/Developer" "" XCODE_BUNDLE ${XCODE_CHECK}) # truncate to bundlepath in any case
554 if(${CMAKE_GENERATOR} MATCHES "Xcode")
556 if(${XCODE_VERSION} VERSION_GREATER 4.2) # earlier xcode has no bundled developer dir, no sense in getting xcode path from
557 string(SUBSTRING "${XCODE_CHECK}" 14 6 DP_NAME) # reduce to XCode name without dp extension
558 if(${DP_NAME} MATCHES Xcode5)
563 ##### cmake incompatibility with xcode 4.3 and higher #####
564 if(${XCODE_VERSION} MATCHES '') # cmake fails due looking for xcode in the wrong path, thus will be empty var
565 message(FATAL_ERROR "Xcode 4.3 and higher must be used with cmake 2.8-8 or higher")
567 ### end cmake incompatibility with xcode 4.3 and higher ###
569 if(${XCODE_VERSION} VERSION_EQUAL 4 OR ${XCODE_VERSION} VERSION_GREATER 4 AND ${XCODE_VERSION} VERSION_LESS 4.3)
570 # Xcode 4 defaults to the Apple LLVM Compiler.
571 # Override the default compiler selection because Blender only compiles with gcc up to xcode 4.2
572 set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
573 message(STATUS "Setting compiler to: " ${CMAKE_XCODE_ATTRIBUTE_GCC_VERSION})
575 else() # unix makefile generator does not fill XCODE_VERSION var, so we get it with a command
576 execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERS_BUILD_NR)
577 string(SUBSTRING "${XCODE_VERS_BUILD_NR}" 6 3 XCODE_VERSION) # truncate away build-nr
578 unset(XCODE_VERS_BUILD_NR)
581 message(STATUS "Detected OS X ${OSX_SYSTEM} and Xcode ${XCODE_VERSION} at ${XCODE_BUNDLE}")
583 if(${XCODE_VERSION} VERSION_LESS 4.3)
584 set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk CACHE PATH "" FORCE) # use guaranteed existing sdk
586 # note: xcode-select path could be ambigous, cause /Applications/Xcode.app/Contents/Developer or /Applications/Xcode.app would be allowed
587 # so i use a selfcomposed bundlepath here
588 set(OSX_SYSROOT_PREFIX ${XCODE_BUNDLE}/Contents/Developer/Platforms/MacOSX.platform)
589 message(STATUS "OSX_SYSROOT_PREFIX: " ${OSX_SYSROOT_PREFIX})
590 set(OSX_DEVELOPER_PREFIX /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk) # use guaranteed existing sdk
591 set(CMAKE_OSX_SYSROOT ${OSX_SYSROOT_PREFIX}/${OSX_DEVELOPER_PREFIX} CACHE PATH "" FORCE)
592 if(${CMAKE_GENERATOR} MATCHES "Xcode")
593 set(CMAKE_XCODE_ATTRIBUTE_SDKROOT macosx${OSX_SYSTEM}) # to silence sdk not found warning, just overrides CMAKE_OSX_SYSROOT
597 if(OSX_SYSTEM MATCHES 10.9)
598 set(CMAKE_FIND_ROOT_PATH ${CMAKE_OSX_SYSROOT}) # make sure syslibs and headers are looked up in sdk ( expecially for 10.9 openGL atm. )
601 if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
602 set(CMAKE_OSX_DEPLOYMENT_TARGET "10.6" CACHE STRING "" FORCE) # 10.6 is our min. target, if you use higher sdk, weak linking happens
605 if(NOT ${CMAKE_GENERATOR} MATCHES "Xcode")
606 # force CMAKE_OSX_DEPLOYMENT_TARGET for makefiles, will not work else ( cmake bug ? )
607 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
608 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
609 add_definitions("-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
612 option(WITH_LIBS10.5 "Use 10.5 libs (needed for 64bit builds)" OFF)
616 #-----------------------------------------------------------------------------
617 # Check for conflicting/unsupported configurations
619 if(NOT WITH_BLENDER AND NOT WITH_PLAYER AND NOT WITH_CYCLES_STANDALONE)
620 message(FATAL_ERROR "At least one of WITH_BLENDER or WITH_PLAYER or WITH_CYCLES_STANDALONE must be enabled, nothing to do!")
623 if(NOT WITH_GAMEENGINE AND WITH_PLAYER)
624 message(FATAL_ERROR "WITH_PLAYER requires WITH_GAMEENGINE")
627 if(NOT WITH_AUDASPACE)
629 message(FATAL_ERROR "WITH_OPENAL requires WITH_AUDASPACE")
632 message(FATAL_ERROR "WITH_JACK requires WITH_AUDASPACE")
635 message(FATAL_ERROR "WITH_GAMEENGINE requires WITH_AUDASPACE")
639 if(NOT WITH_SDL AND WITH_GHOST_SDL)
640 message(FATAL_ERROR "WITH_GHOST_SDL requires WITH_SDL")
643 if(WITH_IMAGE_REDCODE AND ((NOT WITH_IMAGE_OPENJPEG) OR (NOT WITH_CODEC_FFMPEG)))
644 message(FATAL_ERROR "WITH_IMAGE_REDCODE requires WITH_IMAGE_OPENJPEG and WITH_CODEC_FFMPEG")
647 # python module, needs some different options
648 if(WITH_PYTHON_MODULE AND WITH_PLAYER)
649 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PLAYER to be OFF")
652 if(WITH_PYTHON_MODULE AND WITH_PYTHON_INSTALL)
653 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PYTHON_INSTALL to be OFF")
657 # may as well build python module without a UI
658 if(WITH_PYTHON_MODULE)
659 set(WITH_HEADLESS ON)
666 # enable boost for cycles, audaspace or i18n
667 # otherwise if the user disabled
669 # Explicitly disabled. so disable all deps.
673 message(STATUS "'WITH_BOOST' is disabled: forceing 'set(${_setting} ${_val})'")
675 set(${_setting} ${_val})
678 set_and_warn(WITH_CYCLES OFF)
679 set_and_warn(WITH_AUDASPACE OFF)
680 set_and_warn(WITH_INTERNATIONAL OFF)
681 set_and_warn(WITH_OPENVDB OFF)
682 set_and_warn(WITH_OPENCOLORIO OFF)
683 set_and_warn(WITH_MOD_BOOLEAN OFF)
685 set_and_warn(WITH_OPENAL OFF) # depends on AUDASPACE
686 set_and_warn(WITH_GAMEENGINE OFF) # depends on AUDASPACE
687 set_and_warn(WITH_PLAYER OFF) # depends on GAMEENGINE
688 elseif(WITH_CYCLES OR WITH_OPENIMAGEIO OR WITH_AUDASPACE OR WITH_INTERNATIONAL OR WITH_OPENVDB OR WITH_OPENCOLORIO OR WITH_MOD_BOOLEAN)
691 # Enabled but we don't need it
695 # auto enable openimageio for cycles
697 set(WITH_OPENIMAGEIO ON)
699 # auto enable llvm for cycles_osl
701 set(WITH_LLVM ON CACHE BOOL "" FORCE)
704 set(WITH_CYCLES_OSL OFF)
707 # auto enable openimageio linking dependencies
709 set(WITH_IMAGE_OPENEXR ON)
710 set(WITH_IMAGE_TIFF ON)
713 # don't store paths to libs for portable distribution
714 if(WITH_INSTALL_PORTABLE)
715 set(CMAKE_SKIP_BUILD_RPATH TRUE)
718 if(WITH_GHOST_SDL OR WITH_HEADLESS)
720 set(WITH_X11_XINPUT OFF)
721 set(WITH_X11_XF86VMODE OFF)
722 set(WITH_GHOST_XDND OFF)
723 set(WITH_INPUT_IME OFF)
727 TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
729 message(STATUS "SSE and SSE2 optimizations are DISABLED!")
730 set(COMPILER_SSE_FLAG)
731 set(COMPILER_SSE2_FLAG)
734 TEST_SHARED_PTR_SUPPORT()
735 TEST_UNORDERED_MAP_SUPPORT()
738 if(WITH_SYSTEM_AUDASPACE)
739 set(AUDASPACE_DEFINITIONS
741 -DWITH_SYSTEM_AUDASPACE
742 "-DAUD_DEVICE_H=<AUD_Device.h>"
743 "-DAUD_SPECIAL_H=<AUD_Special.h>"
744 "-DAUD_SOUND_H=<AUD_Sound.h>"
745 "-DAUD_HANDLE_H=<AUD_Handle.h>"
746 "-DAUD_SEQUENCE_H=<AUD_Sequence.h>"
747 "-DAUD_TYPES_H=<AUD_Types.h>"
748 "-DAUD_PYTHON_H=<python/PyAPI.h>"
751 set(AUDASPACE_C_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/intern/audaspace/intern")
752 set(AUDASPACE_PY_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/intern/audaspace/intern")
753 set(AUDASPACE_DEFINITIONS
755 "-DAUD_DEVICE_H=<AUD_C-API.h>"
756 "-DAUD_SPECIAL_H=<AUD_C-API.h>"
757 "-DAUD_SOUND_H=<AUD_C-API.h>"
758 "-DAUD_HANDLE_H=<AUD_C-API.h>"
759 "-DAUD_SEQUENCE_H=<AUD_C-API.h>"
760 "-DAUD_TYPES_H=<AUD_Space.h>"
765 #-----------------------------------------------------------------------------
766 # Check for valid directories
767 # ... a partial checkout may cause this.
769 # note: we need to check for a known subdir in both cases.
770 # since uninitialized git submodules will give blank dirs
772 if(WITH_INTERNATIONAL)
773 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/datafiles/locale/languages")
774 message(WARNING "Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
775 "This is a 'git submodule', which are known not to work with bridges to other version "
776 "control systems, disabling 'WITH_INTERNATIONAL'.")
777 set(WITH_INTERNATIONAL OFF)
782 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/scripts/addons/modules")
783 message(WARNING "Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
784 "This is a 'git submodule', which are known not to work with bridges to other version "
785 "control systems: * CONTINUING WITHOUT ADDONS *")
789 #-----------------------------------------------------------------------------
790 # Initialize un-cached vars, avoid unused warning
792 # linux only, not cached
793 set(WITH_BINRELOC OFF)
795 # MAXOSX only, set to avoid uninitialized
801 # these are added to later on.
805 # for gcc -Wno-blah-blah
806 set(CC_REMOVE_STRICT_FLAGS)
808 # libraries to link the binary with passed to target_link_libraries()
809 # known as LLIBS to scons
810 set(PLATFORM_LINKLIBS "")
812 # Added to linker flags in setup_liblinks
813 # - CMAKE_EXE_LINKER_FLAGS
814 # - CMAKE_EXE_LINKER_FLAGS_DEBUG
815 set(PLATFORM_LINKFLAGS "")
816 set(PLATFORM_LINKFLAGS_DEBUG "")
819 # For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
822 # -D PYTHON_VERSION=3.5 \
823 # -D PYTHON_INCLUDE_DIR=/opt/py35/include/python3.5d \
824 # -D PYTHON_LIBRARY=/opt/py35/lib/libpython3.5d.so
828 # -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.5/include/python3.5 \
829 # -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/config \
832 # When changing any of this remember to update the notes in doc/build_systems/cmake.txt
834 #-----------------------------------------------------------------------------
838 find_package(X11 REQUIRED)
840 find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
841 mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
843 list(APPEND PLATFORM_LINKLIBS ${X11_X11_LIB})
847 list(APPEND PLATFORM_LINKLIBS ${X11_Xinput_LIB})
849 set(WITH_X11_XINPUT OFF)
853 if(WITH_X11_XF86VMODE)
854 # XXX, why dont cmake make this available?
855 find_library(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
856 mark_as_advanced(X11_Xxf86vmode_LIB)
857 if(X11_Xxf86vmode_LIB)
858 list(APPEND PLATFORM_LINKLIBS ${X11_Xxf86vmode_LIB})
860 set(WITH_X11_XF86VMODE OFF)
867 # ----------------------------------------------------------------------------
868 # Main Platform Checks
874 if(UNIX AND NOT APPLE)
875 macro(find_package_wrapper)
877 find_package_static(${ARGV})
879 find_package(${ARGV})
883 find_package_wrapper(JPEG REQUIRED)
884 find_package_wrapper(PNG REQUIRED)
885 find_package_wrapper(ZLIB REQUIRED)
886 find_package_wrapper(Freetype REQUIRED)
888 if(WITH_LZO AND WITH_SYSTEM_LZO)
889 find_package_wrapper(LZO)
891 message(FATAL_ERROR "Failed finding system LZO version!")
895 if(WITH_SYSTEM_EIGEN3)
896 find_package_wrapper(Eigen3)
898 message(FATAL_ERROR "Failed finding system Eigen3 version!")
901 # else values are set below for all platforms
904 # No way to set py35, remove for now.
905 # find_package(PythonLibs)
907 # Use our own instead, since without py is such a rare case,
908 # require this package
909 # XXX Linking errors with debian static python :/
910 # find_package_wrapper(PythonLibsUnix REQUIRED)
911 find_package(PythonLibsUnix REQUIRED)
914 if(WITH_IMAGE_OPENEXR)
915 find_package_wrapper(OpenEXR) # our own module
916 if(NOT OPENEXR_FOUND)
917 set(WITH_IMAGE_OPENEXR OFF)
921 if(WITH_IMAGE_OPENJPEG)
922 find_package_wrapper(OpenJPEG)
923 if(NOT OPENJPEG_FOUND)
924 set(WITH_IMAGE_OPENJPEG OFF)
929 # XXX Linking errors with debian static tiff :/
930 # find_package_wrapper(TIFF)
933 set(WITH_IMAGE_TIFF OFF)
938 if(WITH_SYSTEM_AUDASPACE)
939 find_package_wrapper(Audaspace)
940 if(NOT AUDASPACE_FOUND OR NOT AUDASPACE_C_FOUND)
941 message(FATAL_ERROR "Audaspace external library not found!")
946 find_package_wrapper(OpenAL)
954 set(SDL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extern/sdlew/include/SDL2")
957 find_package_wrapper(SDL2)
959 # Use same names for both versions of SDL until we move to 2.x.
960 set(SDL_INCLUDE_DIR "${SDL2_INCLUDE_DIR}")
961 set(SDL_LIBRARY "${SDL2_LIBRARY}")
962 set(SDL_FOUND "${SDL2_FOUND}")
964 find_package_wrapper(SDL)
970 # unset(SDLMAIN_LIBRARY CACHE)
978 find_package_wrapper(Jack)
985 if(WITH_CODEC_SNDFILE)
986 find_package_wrapper(SndFile)
987 if(NOT SNDFILE_FOUND)
988 set(WITH_CODEC_SNDFILE OFF)
992 if(WITH_CODEC_FFMPEG)
993 set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
994 set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
996 mark_as_advanced(FFMPEG)
998 # lame, but until we have proper find module for ffmpeg
999 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1000 if(EXISTS "${FFMPEG}/include/ffmpeg/")
1001 list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg")
1005 mark_as_advanced(FFMPEG_LIBRARIES)
1006 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1010 find_package_wrapper(Fftw3)
1016 if(WITH_OPENCOLLADA)
1017 find_package_wrapper(OpenCOLLADA)
1018 if(OPENCOLLADA_FOUND)
1019 find_package_wrapper(XML2)
1020 find_package_wrapper(PCRE)
1022 set(WITH_OPENCOLLADA OFF)
1026 if(WITH_MEM_JEMALLOC)
1027 find_package_wrapper(JeMalloc)
1028 if(NOT JEMALLOC_FOUND)
1029 set(WITH_MEM_JEMALLOC OFF)
1034 find_package_wrapper(Spacenav)
1035 if(NOT SPACENAV_FOUND)
1036 set(WITH_INPUT_NDOF OFF)
1039 # use generic names within blenders buildsystem.
1041 set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
1042 set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
1047 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1049 set(OSL_ROOT ${CYCLES_OSL})
1051 find_package_wrapper(OpenShadingLanguage)
1053 if(${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6")
1054 # Note: --whole-archive is needed to force loading of all symbols in liboslexec,
1055 # otherwise LLVM is missing the osl_allocate_closure_component function
1056 set(OSL_LIBRARIES ${OSL_OSLCOMP_LIBRARY} -Wl,--whole-archive ${OSL_OSLEXEC_LIBRARY} -Wl,--no-whole-archive ${OSL_OSLQUERY_LIBRARY})
1059 message(STATUS "OSL not found, disabling it from Cycles")
1060 set(WITH_CYCLES_OSL OFF)
1065 find_package_wrapper(OpenVDB)
1066 find_package_wrapper(TBB)
1067 if(NOT OPENVDB_FOUND OR NOT TBB_FOUND)
1068 set(WITH_OPENVDB OFF)
1069 set(WITH_OPENVDB_BLOSC OFF)
1070 message(STATUS "OpenVDB not found, disabling it")
1075 # uses in build instructions to override include and library variables
1076 if(NOT BOOST_CUSTOM)
1077 if(WITH_STATIC_LIBS)
1078 set(Boost_USE_STATIC_LIBS ON)
1080 set(Boost_USE_MULTITHREADED ON)
1081 set(__boost_packages filesystem regex system thread date_time)
1083 if(NOT (${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6"))
1084 list(APPEND __boost_packages wave)
1088 if(WITH_INTERNATIONAL)
1089 list(APPEND __boost_packages locale)
1091 if(WITH_CYCLES_NETWORK)
1092 list(APPEND __boost_packages serialization)
1095 list(APPEND __boost_packages iostreams)
1097 find_package(Boost 1.48 COMPONENTS ${__boost_packages})
1099 # try to find non-multithreaded if -mt not found, this flag
1100 # doesn't matter for us, it has nothing to do with thread
1101 # safety, but keep it to not disturb build setups
1102 set(Boost_USE_MULTITHREADED OFF)
1103 find_package(Boost 1.48 COMPONENTS ${__boost_packages})
1105 unset(__boost_packages)
1106 if(Boost_USE_STATIC_LIBS AND WITH_BOOST_ICU)
1107 find_package(IcuLinux)
1109 mark_as_advanced(Boost_DIR) # why doesnt boost do this?
1112 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
1113 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
1114 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
1115 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1118 if(WITH_OPENIMAGEIO)
1119 find_package_wrapper(OpenImageIO)
1120 if(NOT OPENIMAGEIO_PUGIXML_FOUND AND WITH_CYCLES_STANDALONE)
1121 find_package_wrapper(PugiXML)
1123 set(PUGIXML_INCLUDE_DIR "${OPENIMAGEIO_INCLUDE_DIR/OpenImageIO}")
1124 set(PUGIXML_LIBRARIES "")
1127 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES})
1128 set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
1129 set(OPENIMAGEIO_DEFINITIONS "")
1132 list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}")
1134 if(WITH_IMAGE_OPENEXR)
1135 list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}")
1138 if(NOT OPENIMAGEIO_FOUND)
1139 set(WITH_OPENIMAGEIO OFF)
1140 message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
1144 if(WITH_OPENCOLORIO)
1145 find_package_wrapper(OpenColorIO)
1147 set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES})
1148 set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
1149 set(OPENCOLORIO_DEFINITIONS)
1151 if(NOT OPENCOLORIO_FOUND)
1152 set(WITH_OPENCOLORIO OFF)
1153 message(STATUS "OpenColorIO not found")
1158 find_package_wrapper(LLVM)
1162 message(STATUS "LLVM not found")
1166 if(WITH_LLVM OR WITH_SDL_DYNLOAD)
1167 # Fix for conflict with Mesa llvmpipe
1168 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script='${CMAKE_SOURCE_DIR}/source/creator/blender.map'")
1172 find_package_wrapper(OpenSubdiv)
1174 set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBRARIES})
1175 set(OPENSUBDIV_LIBPATH) # TODO, remove and reference the absolute path everywhere
1177 if(NOT OPENSUBDIV_FOUND)
1178 set(WITH_OPENSUBDIV OFF)
1179 message(STATUS "OpenSubdiv not found")
1183 # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
1184 list(APPEND PLATFORM_LINKLIBS -lutil -lc -lm)
1186 find_package(Threads REQUIRED)
1187 list(APPEND PLATFORM_LINKLIBS ${CMAKE_THREAD_LIBS_INIT})
1188 # used by other platforms
1189 set(PTHREADS_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
1192 list(APPEND PLATFORM_LINKLIBS ${CMAKE_DL_LIBS})
1195 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
1196 if(NOT WITH_PYTHON_MODULE)
1197 # binreloc is linux only
1198 set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include)
1199 set(WITH_BINRELOC ON)
1203 # lfs on glibc, all compilers should use
1204 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1207 if(CMAKE_COMPILER_IS_GNUCC)
1208 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1210 # use ld.gold linker if available, could make optional
1212 COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version
1213 ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
1214 if("${LD_VERSION}" MATCHES "GNU gold")
1215 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=gold")
1216 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold")
1218 message(STATUS "GNU gold linker isn't available, using the default system linker.")
1222 # CLang is the same as GCC for now.
1223 elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
1224 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1226 elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro")
1227 set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
1229 # Intel C++ Compiler
1230 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
1231 # think these next two are broken
1232 find_program(XIAR xiar)
1234 set(CMAKE_AR "${XIAR}")
1236 mark_as_advanced(XIAR)
1238 find_program(XILD xild)
1240 set(CMAKE_LINKER "${XILD}")
1242 mark_as_advanced(XILD)
1244 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
1245 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
1247 # set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
1248 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1249 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
1254 add_definitions(-DWIN32)
1258 # needed for some MSVC installations
1259 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
1260 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
1261 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO")
1263 list(APPEND PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi Dbghelp)
1266 list(APPEND PLATFORM_LINKLIBS imm32)
1270 -D_CRT_NONSTDC_NO_DEPRECATE
1271 -D_CRT_SECURE_NO_DEPRECATE
1272 -D_SCL_SECURE_NO_DEPRECATE
1277 # MSVC11 needs _ALLOW_KEYWORD_MACROS to build
1278 add_definitions(-D_ALLOW_KEYWORD_MACROS)
1281 # We want to support Vista level ABI for x64
1282 add_definitions(-D_WIN32_WINNT=0x600)
1285 # Make cmake find the msvc redistributables
1286 set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
1287 include(InstallRequiredSystemLibraries)
1289 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /nologo /J /Gd /MP /EHsc")
1290 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /nologo /J /Gd /MP")
1292 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
1293 set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
1294 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
1295 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
1296 set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MT")
1297 set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} /MT")
1298 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT")
1299 set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /MT")
1301 set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
1303 # MSVC only, Mingw doesnt need
1305 set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
1307 set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
1310 set(PLATFORM_LINKFLAGS_DEBUG "/IGNORE:4099 /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
1312 if(NOT DEFINED LIBDIR)
1314 # Setup 64bit and 64bit windows systems
1316 message(STATUS "64 bit compiler detected.")
1317 set(LIBDIR_BASE "win64")
1319 message(STATUS "32 bit compiler detected.")
1320 set(LIBDIR_BASE "windows")
1323 if(MSVC_VERSION EQUAL 1900)
1324 message(STATUS "Visual Studio 2015 detected.")
1325 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc14)
1327 message(STATUS "Visual Studio 2013 detected.")
1328 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc12)
1331 message(STATUS using LIBDIR ${LIBDIR})
1334 # Add each of our libraries to our cmake_prefix_path so find_package() could work
1335 file(GLOB children RELATIVE ${LIBDIR} ${LIBDIR}/*)
1336 foreach(child ${children})
1337 if(IS_DIRECTORY ${LIBDIR}/${child})
1338 list(APPEND CMAKE_PREFIX_PATH ${LIBDIR}/${child})
1342 set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
1343 set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz_st.lib)
1344 set(ZLIB_INCLUDE_DIR ${LIBDIR}/zlib/include)
1345 set(ZLIB_LIBRARY ${LIBDIR}/zlib/lib/libz_st.lib)
1346 set(ZLIB_DIR ${LIBDIR}/zlib)
1347 #find_package(zlib) # we want to find before finding things that depend on it like png
1352 message(WARNING "Using HARDCODED libpng locations")
1353 set(PNG_PNG_INCLUDE_DIR ${LIBDIR}/png/include)
1354 set(PNG_LIBRARIES libpng)
1355 set(PNG "${LIBDIR}/png")
1356 set(PNG_INCLUDE_DIRS "${PNG}/include")
1357 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1360 set(JPEG_NAMES ${JPEG_NAMES} libjpeg)
1361 find_package(jpeg REQUIRED)
1363 set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
1364 set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
1366 set(FREETYPE ${LIBDIR}/freetype)
1367 set(FREETYPE_INCLUDE_DIRS
1368 ${LIBDIR}/freetype/include
1369 ${LIBDIR}/freetype/include/freetype2
1371 set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
1372 find_package(freetype REQUIRED)
1375 set(FFTW3 ${LIBDIR}/fftw3)
1376 set(FFTW3_LIBRARIES libfftw)
1377 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1378 set(FFTW3_LIBPATH ${FFTW3}/lib)
1381 if(WITH_OPENCOLLADA)
1382 set(OPENCOLLADA ${LIBDIR}/opencollada)
1384 set(OPENCOLLADA_INCLUDE_DIRS
1385 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1386 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1387 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1388 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1389 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1392 set(OPENCOLLADA_LIBRARIES
1393 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADASaxFrameworkLoader.lib
1394 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAFramework.lib
1395 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADABaseUtils.lib
1396 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter.lib
1397 ${OPENCOLLADA}/lib/opencollada/MathMLSolver.lib
1398 ${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser.lib
1399 ${OPENCOLLADA}/lib/opencollada/xml.lib
1400 ${OPENCOLLADA}/lib/opencollada/buffer.lib
1401 ${OPENCOLLADA}/lib/opencollada/ftoa.lib
1405 list(APPEND OPENCOLLADA_LIBRARIES ${OPENCOLLADA}/lib/opencollada/UTF.lib)
1409 ${OPENCOLLADA}/lib/opencollada/pcre.lib
1413 if(WITH_CODEC_FFMPEG)
1414 set(FFMPEG_INCLUDE_DIRS
1415 ${LIBDIR}/ffmpeg/include
1416 ${LIBDIR}/ffmpeg/include/msvc
1418 find_package(FFMPEG)
1419 if(NOT FFMPEG_FOUND)
1420 message(WARNING "Using HARDCODED ffmpeg locations")
1421 set(FFMPEG_LIBRARY_VERSION 55)
1422 set(FFMPEG_LIBRARY_VERSION_AVU 52)
1423 set(FFMPEG_LIBRARIES
1424 ${LIBDIR}/ffmpeg/lib/avcodec-${FFMPEG_LIBRARY_VERSION}.lib
1425 ${LIBDIR}/ffmpeg/lib/avformat-${FFMPEG_LIBRARY_VERSION}.lib
1426 ${LIBDIR}/ffmpeg/lib/avdevice-${FFMPEG_LIBRARY_VERSION}.lib
1427 ${LIBDIR}/ffmpeg/lib/avutil-${FFMPEG_LIBRARY_VERSION_AVU}.lib
1428 ${LIBDIR}/ffmpeg/lib/swscale-2.lib
1433 if(WITH_IMAGE_OPENEXR)
1434 set(OPENEXR_ROOT_DIR ${LIBDIR}/openexr)
1435 set(OPENEXR_VERSION "2.1")
1436 find_package(OPENEXR REQUIRED)
1437 if(NOT OPENEXR_FOUND)
1438 message(WARNING "Using HARDCODED OpenEXR locations")
1439 set(OPENEXR ${LIBDIR}/openexr)
1440 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1441 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1442 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1443 set(OPENEXR_LIBRARIES
1444 ${OPENEXR_LIBPATH}/Iex-2_2.lib
1445 ${OPENEXR_LIBPATH}/Half.lib
1446 ${OPENEXR_LIBPATH}/IlmImf-2_2.lib
1447 ${OPENEXR_LIBPATH}/Imath-2_2.lib
1448 ${OPENEXR_LIBPATH}/IlmThread-2_2.lib
1454 # Try to find tiff first then complain and set static and maybe wrong paths
1457 message(WARNING "Using HARDCODED libtiff locations")
1458 set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
1459 set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
1464 set(JACK_INCLUDE_DIRS
1465 ${LIBDIR}/jack/include/jack
1466 ${LIBDIR}/jack/include
1468 set(JACK_LIBRARIES optimized ${LIBDIR}/jack/lib/libjack.lib debug ${LIBDIR}/jack/lib/libjack_d.lib)
1472 set(PYTHON_VERSION 3.5) # CACHE STRING)
1474 string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1475 # Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs
1476 set(PYTHON_LIBRARY ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.lib)
1477 unset(_PYTHON_VERSION_NO_DOTS)
1479 # Shared includes for both vc2008 and vc2010
1480 set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION})
1483 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1484 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1489 set(boost_extra_libs wave)
1491 if(WITH_INTERNATIONAL)
1492 list(APPEND boost_extra_libs locale)
1494 set(Boost_USE_STATIC_RUNTIME ON) # prefix lib
1495 set(Boost_USE_MULTITHREADED ON) # suffix -mt
1496 set(Boost_USE_STATIC_LIBS ON) # suffix -s
1497 find_package(Boost COMPONENTS date_time filesystem thread regex system ${boost_extra_libs})
1499 message(WARNING "USING HARDCODED boost locations")
1500 set(BOOST ${LIBDIR}/boost)
1501 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1503 set(BOOST_LIBPATH ${BOOST}/lib)
1504 set(BOOST_POSTFIX "vc120-mt-s-1_60.lib")
1505 set(BOOST_DEBUG_POSTFIX "vc120-mt-sgd-1_60.lib")
1507 set(BOOST_LIBPATH ${BOOST}/lib)
1508 set(BOOST_POSTFIX "vc140-mt-s-1_60.lib")
1509 set(BOOST_DEBUG_POSTFIX "vc140-mt-sgd-1_60.lib")
1512 optimized libboost_date_time-${BOOST_POSTFIX} optimized libboost_filesystem-${BOOST_POSTFIX}
1513 optimized libboost_regex-${BOOST_POSTFIX}
1514 optimized libboost_system-${BOOST_POSTFIX} optimized libboost_thread-${BOOST_POSTFIX}
1515 debug libboost_date_time-${BOOST_DEBUG_POSTFIX} debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
1516 debug libboost_regex-${BOOST_DEBUG_POSTFIX}
1517 debug libboost_system-${BOOST_DEBUG_POSTFIX} debug libboost_thread-${BOOST_DEBUG_POSTFIX})
1519 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1520 optimized libboost_wave-${BOOST_POSTFIX}
1521 debug libboost_wave-${BOOST_DEBUG_POSTFIX})
1523 if(WITH_INTERNATIONAL)
1524 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1525 optimized libboost_locale-${BOOST_POSTFIX}
1526 debug libboost_locale-${BOOST_DEBUG_POSTFIX})
1528 else() # we found boost using find_package
1529 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
1530 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
1531 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
1533 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1536 if(WITH_OPENIMAGEIO)
1537 find_package(OpenImageIO)
1538 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1539 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1540 set(OIIO_OPTIMIZED optimized OpenImageIO optimized OpenImageIO_Util)
1541 set(OIIO_DEBUG debug OpenImageIO_d debug OpenImageIO_Util_d)
1542 set(OPENIMAGEIO_LIBRARIES ${OIIO_OPTIMIZED} ${OIIO_DEBUG})
1543 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1544 set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0")
1545 set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD")
1546 set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe")
1547 add_definitions(-DOIIO_STATIC_BUILD)
1551 set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1552 file(GLOB LLVM_LIBRARY_OPTIMIZED ${LLVM_ROOT_DIR}/lib/*.lib)
1554 if(EXISTS ${LLVM_ROOT_DIR}/debug/lib)
1555 foreach(LLVM_OPTIMIZED_LIB ${LLVM_LIBRARY_OPTIMIZED})
1556 get_filename_component(LIBNAME ${LLVM_OPTIMIZED_LIB} ABSOLUTE)
1557 list(APPEND LLVM_LIBS optimized ${LIBNAME})
1558 endforeach(LLVM_OPTIMIZED_LIB)
1560 file(GLOB LLVM_LIBRARY_DEBUG ${LLVM_ROOT_DIR}/debug/lib/*.lib)
1562 foreach(LLVM_DEBUG_LIB ${LLVM_LIBRARY_DEBUG})
1563 get_filename_component(LIBNAME ${LLVM_DEBUG_LIB} ABSOLUTE)
1564 list(APPEND LLVM_LIBS debug ${LIBNAME})
1565 endforeach(LLVM_DEBUG_LIB)
1567 set(LLVM_LIBRARY ${LLVM_LIBS})
1569 message(WARNING "LLVM debug libs not present on this system. Using release libs for debug builds.")
1570 set(LLVM_LIBRARY ${LLVM_LIBRARY_OPTIMIZED})
1575 if(WITH_OPENCOLORIO)
1576 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1577 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1578 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1579 set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
1580 set(OPENCOLORIO_DEFINITIONS)
1584 set(OPENVDB ${LIBDIR}/openvdb)
1585 set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include)
1586 set(OPENVDB_LIBRARIES openvdb ${TBB_LIBRARIES})
1587 set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
1588 set(OPENVDB_DEFINITIONS)
1591 if(WITH_MOD_CLOTH_ELTOPO)
1592 set(LAPACK ${LIBDIR}/lapack)
1593 # set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
1594 set(LAPACK_LIBPATH ${LAPACK}/lib)
1595 set(LAPACK_LIBRARIES
1596 ${LIBDIR}/lapack/lib/libf2c.lib
1597 ${LIBDIR}/lapack/lib/clapack_nowrap.lib
1598 ${LIBDIR}/lapack/lib/BLAS_nowrap.lib
1603 set(OPENSUBDIV_INCLUDE_DIR ${LIBDIR}/opensubdiv/include)
1604 set(OPENSUBDIV_LIBPATH ${LIBDIR}/opensubdiv/lib)
1605 set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBPATH}/osdCPU.lib ${OPENSUBDIV_LIBPATH}/osdGPU.lib)
1606 find_package(OpenSubdiv)
1610 set(SDL ${LIBDIR}/sdl)
1611 set(SDL_INCLUDE_DIR ${SDL}/include)
1612 set(SDL_LIBPATH ${SDL}/lib)
1613 # MinGW TODO: Update MinGW to SDL2
1614 if(NOT CMAKE_COMPILER_IS_GNUCC)
1615 set(SDL_LIBRARY SDL2)
1617 set(SDL_LIBRARY SDL)
1622 if(WITH_SYSTEM_AUDASPACE)
1623 set(AUDASPACE_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
1624 set(AUDASPACE_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace.lib)
1625 set(AUDASPACE_C_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
1626 set(AUDASPACE_C_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-c.lib)
1627 set(AUDASPACE_PY_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
1628 set(AUDASPACE_PY_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-py.lib)
1631 # used in many places so include globally, like OpenGL
1632 blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
1634 elseif(CMAKE_COMPILER_IS_GNUCC)
1635 # keep GCC specific stuff here
1636 include(CheckCSourceCompiles)
1637 # Setup 64bit and 64bit windows systems
1638 CHECK_C_SOURCE_COMPILES("
1642 int main(void) { return 0; }
1647 message(STATUS "Compiling for 64 bit with MinGW-w64.")
1648 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
1650 message(STATUS "Compiling for 32 bit with MinGW-w32.")
1651 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
1653 if(WITH_RAYOPTIMIZATION)
1654 message(WARNING "MinGW-w32 is known to be unstable with 'WITH_RAYOPTIMIZATION' option enabled.")
1658 list(APPEND PLATFORM_LINKLIBS -lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi -ldbghelp)
1661 list(APPEND PLATFORM_LINKLIBS -limm32)
1664 set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
1667 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
1668 list(APPEND PLATFORM_LINKLIBS -lpthread)
1670 add_definitions(-DFREE_WINDOWS64 -DMS_WIN64)
1673 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1675 add_definitions(-DFREE_WINDOWS)
1677 set(PNG "${LIBDIR}/png")
1678 set(PNG_INCLUDE_DIRS "${PNG}/include")
1679 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1682 set(JPEG_LIBRARIES jpeg)
1684 set(JPEG_LIBRARIES libjpeg)
1686 set(PNG_LIBRARIES png)
1688 set(ZLIB ${LIBDIR}/zlib)
1689 set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
1690 set(ZLIB_LIBPATH ${ZLIB}/lib)
1691 set(ZLIB_LIBRARIES z)
1693 set(JPEG "${LIBDIR}/jpeg")
1694 set(JPEG_INCLUDE_DIR "${JPEG}/include")
1695 set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
1697 # comes with own pthread library
1698 if(NOT WITH_MINGW64)
1699 set(PTHREADS ${LIBDIR}/pthreads)
1700 #set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
1701 set(PTHREADS_LIBPATH ${PTHREADS}/lib)
1702 set(PTHREADS_LIBRARIES pthreadGC2)
1705 set(FREETYPE ${LIBDIR}/freetype)
1706 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1707 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1708 set(FREETYPE_LIBRARY freetype)
1711 set(FFTW3 ${LIBDIR}/fftw3)
1712 set(FFTW3_LIBRARIES fftw3)
1713 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1714 set(FFTW3_LIBPATH ${FFTW3}/lib)
1717 if(WITH_OPENCOLLADA)
1718 set(OPENCOLLADA ${LIBDIR}/opencollada)
1719 set(OPENCOLLADA_INCLUDE_DIRS
1720 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1721 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1722 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1723 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1724 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1726 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib/opencollada)
1727 set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver buffer ftoa xml)
1728 set(PCRE_LIBRARIES pcre)
1731 if(WITH_CODEC_FFMPEG)
1732 set(FFMPEG ${LIBDIR}/ffmpeg)
1733 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1735 set(FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll)
1737 set(FFMPEG_LIBRARIES avcodec-55 avformat-55 avdevice-55 avutil-52 swscale-2)
1739 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1742 if(WITH_IMAGE_OPENEXR)
1743 set(OPENEXR ${LIBDIR}/openexr)
1744 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1745 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1746 set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex)
1747 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1751 set(TIFF ${LIBDIR}/tiff)
1752 set(TIFF_LIBRARY tiff)
1753 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1754 set(TIFF_LIBPATH ${TIFF}/lib)
1758 set(JACK ${LIBDIR}/jack)
1759 set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include)
1760 set(JACK_LIBRARIES jack)
1761 set(JACK_LIBPATH ${JACK}/lib)
1763 # TODO, gives linking errors, force off
1768 # normally cached but not since we include them with blender
1769 set(PYTHON_VERSION 3.5) # CACHE STRING)
1770 string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1771 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}") # CACHE PATH)
1772 set(PYTHON_LIBRARY "${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}mw.lib") # CACHE FILEPATH)
1773 unset(_PYTHON_VERSION_NO_DOTS)
1776 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1777 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1781 set(BOOST ${LIBDIR}/boost)
1782 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1784 set(BOOST_POSTFIX "mgw47-mt-s-1_49")
1785 set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
1787 set(BOOST_POSTFIX "mgw46-mt-s-1_49")
1788 set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49")
1791 optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX}
1792 boost_regex-${BOOST_POSTFIX}
1793 boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX}
1794 debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
1795 boost_regex-${BOOST_DEBUG_POSTFIX}
1796 boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
1797 if(WITH_INTERNATIONAL)
1798 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1799 optimized boost_locale-${BOOST_POSTFIX}
1800 debug boost_locale-${BOOST_DEBUG_POSTFIX})
1803 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1804 optimized boost_wave-${BOOST_POSTFIX}
1805 debug boost_wave-${BOOST_DEBUG_POSTFIX})
1807 set(BOOST_LIBPATH ${BOOST}/lib)
1808 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
1811 if(WITH_OPENIMAGEIO)
1812 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1813 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1814 set(OPENIMAGEIO_LIBRARIES OpenImageIO)
1815 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1816 set(OPENIMAGEIO_DEFINITIONS "")
1817 set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe")
1821 set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1822 set(LLVM_LIBPATH ${LLVM_ROOT_DIR}/lib)
1823 # Explicitly set llvm lib order.
1824 #---- WARNING ON GCC ORDER OF LIBS IS IMPORTANT, DO NOT CHANGE! ---------
1825 set(LLVM_LIBRARY LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMAnalysis LLVMArchive
1826 LLVMAsmParser LLVMAsmPrinter
1827 LLVMBitReader LLVMBitWriter
1828 LLVMDebugInfo LLVMExecutionEngine
1829 LLVMInstCombine LLVMInstrumentation
1830 LLVMInterpreter LLVMJIT
1832 LLVMMCDisassembler LLVMMCJIT
1833 LLVMMCParser LLVMObject
1836 LLVMTableGen LLVMTarget
1837 LLVMTransformUtils LLVMVectorize
1838 LLVMX86AsmParser LLVMX86AsmPrinter
1839 LLVMX86CodeGen LLVMX86Desc
1840 LLVMX86Disassembler LLVMX86Info
1841 LLVMX86Utils LLVMipa
1843 # imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
1844 list(APPEND PLATFORM_LINKLIBS -limagehlp)
1847 if(WITH_OPENCOLORIO)
1848 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1849 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1850 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1851 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1852 set(OPENCOLORIO_DEFINITIONS)
1856 set(SDL ${LIBDIR}/sdl)
1857 set(SDL_INCLUDE_DIR ${SDL}/include)
1858 set(SDL_LIBRARY SDL)
1859 set(SDL_LIBPATH ${SDL}/lib)
1863 set(OPENVDB ${LIBDIR}/openvdb)
1864 set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include)
1865 set(OPENVDB_LIBRARIES openvdb ${TBB_LIBRARIES})
1866 set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
1867 set(OPENVDB_DEFINITIONS)
1870 set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
1872 ## DISABLE - causes linking errors
1873 ## for re-distribution, so users dont need mingw installed
1874 # set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
1878 # Things common to both mingw and MSVC should go here
1880 set(WINTAB_INC ${LIBDIR}/wintab/include)
1883 set(OPENAL ${LIBDIR}/openal)
1884 set(OPENALDIR ${LIBDIR}/openal)
1885 set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
1887 set(OPENAL_LIBRARY openal32)
1889 set(OPENAL_LIBRARY wrap_oal)
1891 set(OPENAL_LIBPATH ${OPENAL}/lib)
1894 if(WITH_CODEC_SNDFILE)
1895 set(SNDFILE ${LIBDIR}/sndfile)
1896 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1897 set(SNDFILE_LIBRARIES libsndfile-1)
1898 set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
1901 if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
1902 add_definitions(-D__SSE__ -D__MMX__)
1906 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1908 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1909 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1910 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1911 find_library(OSL_LIB_EXEC_DEBUG NAMES oslexec_d PATHS ${CYCLES_OSL}/lib)
1912 find_library(OSL_LIB_COMP_DEBUG NAMES oslcomp_d PATHS ${CYCLES_OSL}/lib)
1913 find_library(OSL_LIB_QUERY_DEBUG NAMES oslquery_d PATHS ${CYCLES_OSL}/lib)
1914 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})
1915 find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1916 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1918 if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
1921 message(STATUS "OSL not found")
1922 set(WITH_CYCLES_OSL OFF)
1928 if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5")
1929 set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/7/8/9
1933 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
1935 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1936 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
1938 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
1944 find_package(OpenAL)
1947 set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
1949 set(WITH_OPENAL OFF)
1954 set(OPENSUBDIV ${LIBDIR}/opensubdiv)
1955 set(OPENSUBDIV_LIBPATH ${OPENSUBDIV}/lib)
1956 find_library(OSL_LIB_UTIL NAMES osdutil PATHS ${OPENSUBDIV_LIBPATH})
1957 find_library(OSL_LIB_CPU NAMES osdCPU PATHS ${OPENSUBDIV_LIBPATH})
1958 find_library(OSL_LIB_GPU NAMES osdGPU PATHS ${OPENSUBDIV_LIBPATH})
1959 set(OPENSUBDIV_INCLUDE_DIR ${OPENSUBDIV}/include)
1960 set(OPENSUBDIV_INCLUDE_DIRS ${OPENSUBDIV_INCLUDE_DIR})
1961 list(APPEND OPENSUBDIV_LIBRARIES ${OSL_LIB_UTIL} ${OSL_LIB_CPU} ${OSL_LIB_GPU})
1965 find_library(JACK_FRAMEWORK
1968 set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
1969 if(NOT JACK_FRAMEWORK)
1974 if(WITH_CODEC_SNDFILE)
1975 set(SNDFILE ${LIBDIR}/sndfile)
1976 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1977 set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
1978 set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) # TODO, deprecate
1982 # we use precompiled libraries for py 3.5 and up by default
1983 set(PYTHON_VERSION 3.5)
1984 if(NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK)
1985 # normally cached but not since we include them with blender
1986 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
1987 # set(PYTHON_EXECUTABLE "${LIBDIR}/python/bin/python${PYTHON_VERSION}") # not used yet
1988 set(PYTHON_LIBRARY python${PYTHON_VERSION}m)
1989 set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
1990 # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
1992 # module must be compiled against Python framework
1993 set(PYTHON_INCLUDE_DIR "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}m")
1994 set(PYTHON_EXECUTABLE "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}")
1995 #set(PYTHON_LIBRARY python${PYTHON_VERSION})
1996 set(PYTHON_LIBPATH "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m")
1997 #set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled
2001 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
2002 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
2006 set(FFTW3 ${LIBDIR}/fftw3)
2007 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
2008 set(FFTW3_LIBRARIES fftw3)
2009 set(FFTW3_LIBPATH ${FFTW3}/lib)
2012 set(PNG_LIBRARIES png)
2013 set(JPEG_LIBRARIES jpeg)
2016 set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
2017 set(ZLIB_LIBRARIES z bz2)
2019 set(FREETYPE ${LIBDIR}/freetype)
2020 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
2021 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
2022 set(FREETYPE_LIBRARY freetype)
2024 if(WITH_IMAGE_OPENEXR)
2025 set(OPENEXR ${LIBDIR}/openexr)
2026 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
2027 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
2028 set(OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread)
2029 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
2032 if(WITH_CODEC_FFMPEG)
2033 set(FFMPEG ${LIBDIR}/ffmpeg)
2034 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
2035 set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
2036 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
2039 find_library(SYSTEMSTUBS_LIBRARY
2044 mark_as_advanced(SYSTEMSTUBS_LIBRARY)
2045 if(SYSTEMSTUBS_LIBRARY)
2046 list(APPEND PLATFORM_LINKLIBS stdc++ SystemStubs)
2048 list(APPEND PLATFORM_LINKLIBS stdc++)
2051 set(PLATFORM_CFLAGS "-pipe -funsigned-char")
2052 set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
2053 if(WITH_CODEC_QUICKTIME)
2054 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
2055 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
2056 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
2057 # libSDL still needs 32bit carbon quicktime
2061 # XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
2062 # ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
2064 # This thread it *should* work and check the framework - campbell
2065 # http://www.cmake.org/pipermail/cmake/2005-December/007740.html
2066 find_library(3DCONNEXION_CLIENT_FRAMEWORK
2067 NAMES 3DconnexionClient
2069 if(NOT 3DCONNEXION_CLIENT_FRAMEWORK)
2070 set(WITH_INPUT_NDOF OFF)
2074 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework 3DconnexionClient")
2075 set(NDOF_INCLUDE_DIRS /Library/Frameworks/3DconnexionClient.framework/Headers )
2080 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework jackmp")
2083 if(WITH_PYTHON_MODULE OR WITH_PYTHON_FRAMEWORK)
2084 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python")# force cmake to link right framework
2087 if(WITH_OPENCOLLADA)
2088 set(OPENCOLLADA ${LIBDIR}/opencollada)
2090 set(OPENCOLLADA_INCLUDE_DIRS
2091 ${LIBDIR}/opencollada/include/COLLADAStreamWriter
2092 ${LIBDIR}/opencollada/include/COLLADABaseUtils
2093 ${LIBDIR}/opencollada/include/COLLADAFramework
2094 ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
2095 ${LIBDIR}/opencollada/include/GeneratedSaxParser
2098 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
2099 set(OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lxml2 -lbuffer -lftoa")
2100 # Use UTF functions from collada if LLVM is not enabled
2102 set(OPENCOLLADA_LIBRARIES "${OPENCOLLADA_LIBRARIES} -lUTF")
2104 # pcre is bundled with openCollada
2105 #set(PCRE ${LIBDIR}/pcre)
2106 #set(PCRE_LIBPATH ${PCRE}/lib)
2107 set(PCRE_LIBRARIES pcre)
2109 #set(EXPAT ${LIBDIR}/expat)
2110 #set(EXPAT_LIBPATH ${EXPAT}/lib)
2115 set(SDL ${LIBDIR}/sdl)
2116 set(SDL_INCLUDE_DIR ${SDL}/include)
2117 set(SDL_LIBRARY SDL2)
2118 set(SDL_LIBPATH ${SDL}/lib)
2119 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -lazy_framework ForceFeedback")
2122 set(PNG "${LIBDIR}/png")
2123 set(PNG_INCLUDE_DIRS "${PNG}/include")
2124 set(PNG_LIBPATH ${PNG}/lib)
2126 set(JPEG "${LIBDIR}/jpeg")
2127 set(JPEG_INCLUDE_DIR "${JPEG}/include")
2128 set(JPEG_LIBPATH ${JPEG}/lib)
2131 set(TIFF ${LIBDIR}/tiff)
2132 set(TIFF_INCLUDE_DIR ${TIFF}/include)
2133 set(TIFF_LIBRARY tiff)
2134 set(TIFF_LIBPATH ${TIFF}/lib)
2138 # linker needs "-weak_framework 3DconnexionClient"
2142 set(BOOST ${LIBDIR}/boost)
2143 set(BOOST_INCLUDE_DIR ${BOOST}/include)
2144 set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt boost_wave-mt)
2145 if(WITH_INTERNATIONAL)
2146 list(APPEND BOOST_LIBRARIES boost_locale-mt)
2148 if(WITH_CYCLES_NETWORK)
2149 list(APPEND BOOST_LIBRARIES boost_serialization-mt)
2151 set(BOOST_LIBPATH ${BOOST}/lib)
2152 set(BOOST_DEFINITIONS)
2155 if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG)
2156 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale and ffmpeg needs it !
2159 if(WITH_OPENIMAGEIO)
2160 set(OPENIMAGEIO ${LIBDIR}/openimageio)
2161 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
2162 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO}/lib/libOpenImageIO.a ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
2163 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
2164 set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
2165 set(OPENIMAGEIO_IDIFF "${LIBDIR}/openimageio/bin/idiff")
2168 if(WITH_OPENCOLORIO)
2169 set(OPENCOLORIO ${LIBDIR}/opencolorio)
2170 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
2171 set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
2172 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
2176 set(OPENVDB ${LIBDIR}/openvdb)
2177 set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include)
2178 set(OPENVDB_LIBRARIES openvdb ${TBB_LIBRARIES})
2179 set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
2180 set(OPENVDB_DEFINITIONS)
2184 set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
2185 set(LLVM_VERSION "3.4" CACHE STRING "Version of LLVM to use")
2186 if(EXISTS "${LLVM_ROOT_DIR}/bin/llvm-config")
2187 set(LLVM_CONFIG "${LLVM_ROOT_DIR}/bin/llvm-config")
2189 set(LLVM_CONFIG llvm-config)
2191 execute_process(COMMAND ${LLVM_CONFIG} --version
2192 OUTPUT_VARIABLE LLVM_VERSION
2193 OUTPUT_STRIP_TRAILING_WHITESPACE)
2194 execute_process(COMMAND ${LLVM_CONFIG} --prefix
2195 OUTPUT_VARIABLE LLVM_ROOT_DIR
2196 OUTPUT_STRIP_TRAILING_WHITESPACE)
2197 execute_process(COMMAND ${LLVM_CONFIG} --libdir
2198 OUTPUT_VARIABLE LLVM_LIBPATH
2199 OUTPUT_STRIP_TRAILING_WHITESPACE)
2200 find_library(LLVM_LIBRARY
2201 NAMES LLVMAnalysis # first of a whole bunch of libs to get
2202 PATHS ${LLVM_LIBPATH})
2204 if(LLVM_LIBRARY AND LLVM_ROOT_DIR AND LLVM_LIBPATH)
2206 # if static LLVM libraries were requested, use llvm-config to generate
2207 # the list of what libraries we need, and substitute that in the right
2208 # way for LLVM_LIBRARY.
2209 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
2210 OUTPUT_VARIABLE LLVM_LIBRARY
2211 OUTPUT_STRIP_TRAILING_WHITESPACE)
2212 string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
2214 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -lLLVM-3.4")
2217 message(FATAL_ERROR "LLVM not found.")
2222 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
2224 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
2225 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
2226 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
2227 # WARNING! depends on correct order of OSL libs linking
2228 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
2229 find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
2230 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
2232 if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
2235 message(STATUS "OSL not found")
2236 set(WITH_CYCLES_OSL OFF)
2241 execute_process(COMMAND ${CMAKE_C_COMPILER} --version OUTPUT_VARIABLE COMPILER_VENDOR)
2242 string(SUBSTRING "${COMPILER_VENDOR}" 0 5 VENDOR_NAME) # truncate output
2243 if(${VENDOR_NAME} MATCHES "Apple") # Apple does not support OpenMP reliable with gcc and not with clang
2244 set(WITH_OPENMP OFF)
2245 else() # vanilla gcc or clang_omp support OpenMP
2246 message(STATUS "Using special OpenMP enabled compiler !") # letting find_package(OpenMP) module work for gcc
2247 if(CMAKE_C_COMPILER_ID MATCHES "Clang") # clang-omp in darwin libs
2248 set(OPENMP_FOUND ON)
2249 set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "C compiler flags for OpenMP parallization" FORCE)
2250 set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "C++ compiler flags for OpenMP parallization" FORCE)
2251 include_directories(${LIBDIR}/openmp/include)
2252 link_directories(${LIBDIR}/openmp/lib)
2253 # This is a workaround for our helperbinaries ( datatoc, masgfmt, ... ),
2254 # They are linked also to omp lib, so we need it in builddir for runtime exexcution, TODO: remove all unneeded dependencies from these
2255 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
2260 set(EXETYPE MACOSX_BUNDLE)
2262 set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
2263 set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
2264 if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386")
2265 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
2266 set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
2267 if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang")
2268 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
2269 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
2272 set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
2273 set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
2276 if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5)
2277 # Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv
2278 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024")
2280 # Get rid of eventually clashes, we export some symbols explicite as local
2281 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Xlinker -unexported_symbols_list -Xlinker ${CMAKE_SOURCE_DIR}/source/creator/osx_locals.map")
2284 #-----------------------------------------------------------------------------
2288 if(NOT EXISTS "${LIBDIR}/")
2289 message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'")
2293 if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
2294 message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
2298 if(NOT WITH_OPENIMAGEIO)
2299 message(FATAL_ERROR "Cycles requires WITH_OPENIMAGEIO, the library may not have been found. Configure OIIO or disable WITH_CYCLES")
2302 message(FATAL_ERROR "Cycles requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES")
2307 message(FATAL_ERROR "Cycles OSL requires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL")
2312 if(WITH_INTERNATIONAL)
2314 message(FATAL_ERROR "Internationalization requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL")
2318 # See TEST_SSE_SUPPORT() for how this is defined.
2320 if(WITH_RAYOPTIMIZATION)
2321 if(SUPPORT_SSE_BUILD)
2322 set(PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}")
2323 add_definitions(-D__SSE__ -D__MMX__)
2325 if(SUPPORT_SSE2_BUILD)
2326 set(PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}")
2327 add_definitions(-D__SSE2__)
2328 if(NOT SUPPORT_SSE_BUILD) # dont double up
2329 add_definitions(-D__MMX__)
2335 # set the endian define
2337 # for some reason this fails on msvc
2338 add_definitions(-D__LITTLE_ENDIAN__)
2340 # OSX-Note: as we do crosscompiling with specific set architecture,
2341 # endianess-detection and autosetting is counterproductive
2342 # so we just set endianess according CMAKE_OSX_ARCHITECTURES
2344 elseif(CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
2345 add_definitions(-D__LITTLE_ENDIAN__)
2346 elseif(CMAKE_OSX_ARCHITECTURES MATCHES ppc OR CMAKE_OSX_ARCHITECTURES MATCHES ppc64)
2347 add_definitions(-D__BIG_ENDIAN__)
2350 include(TestBigEndian)
2351 test_big_endian(_SYSTEM_BIG_ENDIAN)
2352 if(_SYSTEM_BIG_ENDIAN)
2353 add_definitions(-D__BIG_ENDIAN__)
2355 add_definitions(-D__LITTLE_ENDIAN__)
2357 unset(_SYSTEM_BIG_ENDIAN)
2361 if(WITH_IMAGE_OPENJPEG)
2362 if(WITH_SYSTEM_OPENJPEG)
2364 set(OPENJPEG_DEFINES "")
2366 set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg")
2367 set(OPENJPEG_DEFINES "-DOPJ_STATIC")
2369 # Special handling of Windows platform where openjpeg is always static.
2371 set(OPENJPEG_DEFINES "-DOPJ_STATIC")
2375 if(WITH_IMAGE_REDCODE)
2376 set(REDCODE ${CMAKE_SOURCE_DIR}/extern)
2377 set(REDCODE_INC ${REDCODE})
2380 if(NOT WITH_SYSTEM_EIGEN3)
2381 set(EIGEN3_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/Eigen3)
2384 #-----------------------------------------------------------------------------
2387 find_package(OpenGL)
2388 blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}")
2391 list(APPEND BLENDER_GL_LIBRARIES "${OPENGL_glu_LIBRARY}")
2392 list(APPEND GL_DEFINITIONS -DWITH_GLU)
2395 if(WITH_SYSTEM_GLES)
2396 find_package_wrapper(OpenGLES)
2399 if(WITH_GL_PROFILE_COMPAT OR WITH_GL_PROFILE_CORE)
2400 list(APPEND BLENDER_GL_LIBRARIES "${OPENGL_gl_LIBRARY}")
2402 elseif(WITH_GL_PROFILE_ES20)
2403 if(WITH_SYSTEM_GLES)
2404 if(NOT OPENGLES_LIBRARY)
2405 message(FATAL_ERROR "Unable to find OpenGL ES libraries. Install them or disable WITH_SYSTEM_GLES.")
2408 list(APPEND BLENDER_GL_LIBRARIES OPENGLES_LIBRARY)
2411 set(OPENGLES_LIBRARY "" CACHE FILEPATH "OpenGL ES 2.0 library file")
2412 mark_as_advanced(OPENGLES_LIBRARY)
2414 list(APPEND BLENDER_GL_LIBRARIES "${OPENGLES_LIBRARY}")
2416 if(NOT OPENGLES_LIBRARY)
2417 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.")
2423 # Setup paths to files needed to install and redistribute Windows Blender with OpenGL ES
2425 set(OPENGLES_DLL "" CACHE FILEPATH "OpenGL ES 2.0 redistributable DLL file")
2426 mark_as_advanced(OPENGLES_DLL)
2428 if(NOT OPENGLES_DLL)
2429 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).")
2433 list(APPEND GL_DEFINITIONS -DWITH_ANGLE)
2435 set(D3DCOMPILER_DLL "" CACHE FILEPATH "Direct3D Compiler redistributable DLL file (needed by ANGLE)")
2437 get_filename_component(D3DCOMPILER_FILENAME "${D3DCOMPILER_DLL}" NAME)
2438 list(APPEND GL_DEFINITIONS "-DD3DCOMPILER=\"\\\"${D3DCOMPILER_FILENAME}\\\"\"")
2440 mark_as_advanced(D3DCOMPILER_DLL)
2442 if(D3DCOMPILER_DLL STREQUAL "")
2443 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")
2453 list(APPEND GL_DEFINITIONS -DWITH_GL_EGL)
2455 if(WITH_SYSTEM_GLES)
2456 if(NOT OPENGLES_EGL_LIBRARY)
2457 message(FATAL_ERROR "Unable to find OpenGL ES libraries. Install them or disable WITH_SYSTEM_GLES.")
2460 list(APPEND BLENDER_GL_LIBRARIES OPENGLES_EGL_LIBRARY)
2463 set(OPENGLES_EGL_LIBRARY "" CACHE FILEPATH "EGL library file")
2464 mark_as_advanced(OPENGLES_EGL_LIBRARY)
2466 list(APPEND BLENDER_GL_LIBRARIES "${OPENGLES_LIBRARY}" "${OPENGLES_EGL_LIBRARY}")
2468 if(NOT OPENGLES_EGL_LIBRARY)
2469 message(FATAL_ERROR "To compile WITH_GL_EGL you need to set OPENGLES_EGL_LIBRARY to the file path of an EGL library.")
2475 # Setup paths to files needed to install and redistribute Windows Blender with OpenGL ES
2477 set(OPENGLES_EGL_DLL "" CACHE FILEPATH "EGL redistributable DLL file")
2478 mark_as_advanced(OPENGLES_EGL_DLL)
2480 if(NOT OPENGLES_EGL_DLL)
2481 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).")
2488 if(WITH_GL_PROFILE_COMPAT)
2489 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_COMPAT)
2492 if(WITH_GL_PROFILE_CORE)
2493 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_CORE)
2496 if(WITH_GL_PROFILE_ES20)
2497 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_ES20)
2501 list(APPEND GL_DEFINITIONS -DWITH_EGL)
2504 #-----------------------------------------------------------------------------
2507 find_package(OpenMP)
2509 if(NOT WITH_OPENMP_STATIC)
2510 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
2511 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
2513 # Typically avoid adding flags as defines but we can't
2514 # pass OpenMP flags to the linker for static builds, meaning
2515 # we can't add any OpenMP related flags to CFLAGS variables
2516 # since they're passed to the linker as well.
2517 add_definitions("${OpenMP_C_FLAGS}")
2519 find_library_static(OpenMP_LIBRARIES gomp ${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES})
2522 set(WITH_OPENMP OFF)
2531 #-----------------------------------------------------------------------------
2535 list(APPEND GL_DEFINITIONS -DWITH_GLEW_MX)
2538 if(WITH_SYSTEM_GLEW)
2541 # Note: There is an assumption here that the system GLEW is not a static library.
2544 message(FATAL_ERROR "GLEW is required to build Blender. Install it or disable WITH_SYSTEM_GLEW.")
2548 set(BLENDER_GLEW_LIBRARIES ${GLEW_MX_LIBRARY})
2550 set(BLENDER_GLEW_LIBRARIES ${GLEW_LIBRARY})
2554 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew-es/include")
2556 list(APPEND GL_DEFINITIONS -DGLEW_STATIC -DWITH_GLEW_ES)
2558 # These definitions remove APIs from glew.h, making GLEW smaller, and catching unguarded API usage
2559 if(NOT WITH_GL_PROFILE_ES20)
2560 # No ES functions are needed
2561 list(APPEND GL_DEFINITIONS -DGLEW_NO_ES)
2562 elseif(NOT (WITH_GL_PROFILE_CORE OR WITH_GL_PROFILE_COMPAT))
2563 # ES is enabled, but the other functions are all disabled
2564 list(APPEND GL_DEFINITIONS -DGLEW_ES_ONLY)
2567 if(WITH_GL_PROFILE_ES20)
2569 list(APPEND GL_DEFINITIONS -DGLEW_USE_LIB_ES20)
2572 # ToDo: This is an experiment to eliminate ES 1 symbols,
2573 # GLEW doesn't really properly provide this level of control
2574 # (for example, without modification it eliminates too many symbols)
2575 # so there are lots of modifications to GLEW to make this work,
2576 # and no attempt to make it work beyond Blender at this point.
2577 list(APPEND GL_DEFINITIONS -DGL_ES_VERSION_1_0=0 -DGL_ES_VERSION_CL_1_1=0 -DGL_ES_VERSION_CM_1_1=0)
2581 list(APPEND GL_DEFINITIONS -DGLEW_INC_EGL)
2584 set(BLENDER_GLEW_LIBRARIES extern_glew_es bf_intern_glew_mx)
2587 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
2589 list(APPEND GL_DEFINITIONS -DGLEW_STATIC)
2591 # This won't affect the non-experimental glew library,
2592 # but is used for conditional compilation elsewhere.
2593 list(APPEND GL_DEFINITIONS -DGLEW_NO_ES)
2595 set(BLENDER_GLEW_LIBRARIES extern_glew)
2602 list(APPEND GL_DEFINITIONS -DGLEW_NO_GLU)
2605 #-----------------------------------------------------------------------------
2608 if(WITH_BULLET AND WITH_SYSTEM_BULLET)
2609 find_package(Bullet)
2610 if(NOT BULLET_FOUND)
2611 set(WITH_BULLET OFF)
2614 set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
2615 # set(BULLET_LIBRARIES "")
2618 #-----------------------------------------------------------------------------
2621 if(WITH_PYTHON_MODULE)
2622 add_definitions(-DPy_ENABLE_SHARED)
2625 #-----------------------------------------------------------------------------
2626 # Configure GLog/GFlags
2628 if(WITH_LIBMV OR WITH_GTESTS OR (WITH_CYCLES AND WITH_CYCLES_LOGGING))
2630 -DGOOGLE_GLOG_DLL_DECL=
2634 -DGFLAGS_DLL_DEFINE_FLAG=
2635 -DGFLAGS_DLL_DECLARE_FLAG=
2640 #-----------------------------------------------------------------------------
2646 if(SHARED_PTR_FOUND)
2647 if(SHARED_PTR_TR1_MEMORY_HEADER)
2648 list(APPEND CERES_DEFINES -DCERES_TR1_MEMORY_HEADER)
2650 if(SHARED_PTR_TR1_NAMESPACE)
2651 list(APPEND CERES_DEFINES -DCERES_TR1_SHARED_PTR)
2654 message(FATAL_ERROR "Ceres: Unable to find shared_ptr.")
2657 if(HAVE_STD_UNORDERED_MAP_HEADER)
2658 if(HAVE_UNORDERED_MAP_IN_STD_NAMESPACE)
2659 list(APPEND CERES_DEFINES -DCERES_STD_UNORDERED_MAP)
2661 if(HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE)
2662 list(APPEND CERES_DEFINES -DCERES_STD_UNORDERED_MAP_IN_TR1_NAMESPACE)
2664 list(APPEND CERES_DEFINES -DCERES_NO_UNORDERED_MAP)
2665 message(STATUS "Ceres: Replacing unordered_map/set with map/set (warning: slower!)")
2669 if(HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE)
2670 list(APPEND CERES_DEFINES -DCERES_TR1_UNORDERED_MAP)
2672 list(APPEND CERES_DEFINES -DCERES_NO_UNORDERED_MAP)
2673 message(STATUS "Ceres: Replacing unordered_map/set with map/set (warning: slower!)")
2678 #-----------------------------------------------------------------------------
2679 # Extra compile flags
2681 if(CMAKE_COMPILER_IS_GNUCC)
2683 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2684 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_CAST_ALIGN -Wcast-align)
2685 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2686 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2687 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_VLA -Werror=vla)
2688 # system headers sometimes do this, disable for now, was: -Werror=strict-prototypes
2689 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2690 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2691 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2692 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2693 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2694 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2695 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_WRITE_STRINGS -Wwrite-strings)
2696 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_LOGICAL_OP -Wlogical-op)
2697 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNDEF -Wundef)
2698 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2699 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_NULL -Wnonnull) # C only
2700 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2701 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2702 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_TYPE_LIMITS -Wtype-limits)
2703 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_FORMAT_SIGN -Wformat-signedness)
2705 # gcc 4.2 gives annoying warnings on every file with this
2706 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2707 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNINITIALIZED -Wuninitialized)
2710 # versions before gcc4.6 give many BLI_math warnings
2711 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.6")
2712 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_REDUNDANT_DECLS -Wredundant-decls)
2713 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_REDUNDANT_DECLS -Wredundant-decls)
2716 # versions before gcc4.8 include global name-space.
2717 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.8")
2718 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_SHADOW -Wshadow)
2721 # disable because it gives warnings for printf() & friends.
2722 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_DOUBLE_PROMOTION -Wdouble-promotion -Wno-error=double-promotion)
2725 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2728 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2729 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2730 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2731 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_LOGICAL_OP -Wlogical-op)
2732 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2733 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2734 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2735 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_TYPE_LIMITS -Wtype-limits)
2736 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2737 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2738 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2739 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2740 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_POINTER_ARITH -Wpointer-arith)
2741 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_PARAMETER -Wunused-parameter)
2742 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_WRITE_STRINGS -Wwrite-strings)
2743 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
2744 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_FORMAT_SIGN -Wformat-signedness)
2746 # gcc 4.2 gives annoying warnings on every file with this
2747 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2748 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNINITIALIZED -Wuninitialized)
2751 # causes too many warnings
2753 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
2754 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_DECLARATIONS -Wmissing-declarations)
2757 # flags to undo strict flags
2758 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
2759 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2762 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2765 elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
2767 if(APPLE AND WITH_OPENMP) # we need the Intel omp lib linked here to not fail all tests due presence of -fopenmp !
2768 set(CMAKE_REQUIRED_FLAGS "-L${LIBDIR}/openmp/lib -liomp5") # these are only used for the checks
2771 # strange, clang complains these are not supported, but then yses them.
2772 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2773 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2774 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2775 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2776 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2777 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2778 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2779 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2780 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2782 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2783 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2784 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2785 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2786 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.
2787 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2788 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2790 # gives too many unfixable warnings
2791 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_MACROS -Wunused-macros)
2792 # ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_MACROS -Wunused-macros)
2794 # flags to undo strict flags
2795 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2796 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2798 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_VARIABLE_DECLARATIONS -Wno-missing-variable-declarations)
2799 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INCOMPAT_PTR_DISCARD_QUAL -Wno-incompatible-pointer-types-discards-qualifiers)
2800 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_FUNCTION -Wno-unused-function)
2801 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INT_TO_VOID_POINTER_CAST -Wno-int-to-void-pointer-cast)
2802 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_PROTOTYPES -Wno-missing-prototypes)
2803 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DUPLICATE_ENUM -Wno-duplicate-enum)
2804 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNDEF -Wno-undef)
2805 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_NORETURN -Wno-missing-noreturn)
2807 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_PRIVATE_FIELD -Wno-unused-private-field)
2808 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_CXX11_NARROWING -Wno-c++11-narrowing)
2809 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_NON_VIRTUAL_DTOR -Wno-non-virtual-dtor)
2810 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2811 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_REORDER -Wno-reorder)
2813 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
2815 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2816 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2817 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2819 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2820 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2821 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2823 # disable numbered, false positives
2824 set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556")
2825 set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556")
2826 elseif(CMAKE_C_COMPILER_ID MATCHES "MSVC")
2827 # most msvc warnings are C & C++
2831 "/w34062" # switch statement contains 'default' but no 'case' labels
2833 "/wd4018" # signed/unsigned mismatch
2834 "/wd4146" # unary minus operator applied to unsigned type, result still unsigned
2835 "/wd4065" # switch statement contains 'default' but no 'case' labels
2836 "/wd4127" # conditional expression is constant
2837 "/wd4181" # qualifier applied to reference type; ignored
2838 "/wd4200" # zero-sized array in struct/union
2839 "/wd4244" # conversion from 'type1' to 'type2', possible loss of data
2840 "/wd4267" # conversion from 'size_t' to 'type', possible loss of data
2841 "/wd4305" # truncation from 'type1' to 'type2'
2842 "/wd4800" # forcing value to bool 'true' or 'false'
2844 "/we4013" # 'function' undefined; assuming extern returning int
2845 "/we4431" # missing type specifier - int assumed
2848 string(REPLACE ";" " " _WARNINGS "${_WARNINGS}")
2849 set(C_WARNINGS "${_WARNINGS}")
2850 set(CXX_WARNINGS "${_WARNINGS}")
2854 # ensure python header is found since detection can fail, this could happen
2855 # with _any_ library but since we used a fixed python version this tends to
2856 # be most problematic.
2858 if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/Python.h")
2859 message(FATAL_ERROR "Missing: \"${PYTHON_INCLUDE_DIR}/Python.h\",\n"
2860 "Set the cache entry 'PYTHON_INCLUDE_DIR' to point "
2861 "to a valid python include path. Containing "
2862 "Python.h for python version \"${PYTHON_VERSION}\"")
2866 # pass, we have this in an archive to extract
2867 elseif(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
2868 find_python_package(numpy)
2872 # pass, we have this in lib/python/site-packages
2873 elseif(WITH_PYTHON_INSTALL_REQUESTS)
2874 find_python_package(requests)
2879 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
2880 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
2882 # Nothing special is needed, C++11 features are available by default.
2884 message(FATAL_ERROR "Compiler ${CMAKE_C_COMPILER_ID} is not supported for C++11 build yet")
2888 # Visual Studio has all standards it supports available by default
2889 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "Intel")
2890 # Use C99 + GNU extensions, works with GCC, Clang, ICC
2891 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
2894 # Include warnings first, so its possible to disable them with user defined flags
2895 # eg: -Wno-uninitialized
2896 set(CMAKE_C_FLAGS "${C_WARNINGS} ${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}")
2897 set(CMAKE_CXX_FLAGS "${CXX_WARNINGS} ${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}")
2899 # defined above, platform spesific but shared names
2916 #-------------------------------------------------------------------------------
2919 # better not set includes here but this debugging option is off by default.
2920 if(WITH_CXX_GUARDEDALLOC)
2921 include_directories(${CMAKE_SOURCE_DIR}/intern/guardedalloc)
2922 add_definitions(-DWITH_CXX_GUARDEDALLOC)
2925 if(WITH_ASSERT_ABORT)
2926 add_definitions(-DWITH_ASSERT_ABORT)
2929 # message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
2930 # message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
2932 #-----------------------------------------------------------------------------
2936 include(GTestTesting)
2939 if(WITH_BLENDER OR WITH_PLAYER)
2940 add_subdirectory(intern)
2941 add_subdirectory(extern)
2943 # source after intern and extern to gather all
2944 # internal and external library information first, for test linking
2945 add_subdirectory(source)
2946 elseif(WITH_CYCLES_STANDALONE)
2947 add_subdirectory(intern/cycles)
2948 add_subdirectory(extern/clew)
2949 if(WITH_CUDA_DYNLOAD)
2950 add_subdirectory(extern/cuew)
2952 if(NOT WITH_SYSTEM_GLEW)
2953 add_subdirectory(extern/glew)
2957 #-----------------------------------------------------------------------------
2958 # Blender Application
2960 add_subdirectory(source/creator)
2964 #-----------------------------------------------------------------------------
2967 add_subdirectory(source/blenderplayer)
2971 #-----------------------------------------------------------------------------
2973 add_subdirectory(tests)
2976 #-----------------------------------------------------------------------------
2977 # CPack for generating packages
2978 include(build_files/cmake/packaging.cmake)
2981 #-----------------------------------------------------------------------------
2982 # Print Final Configuration
2986 set(_config_msg "\nBlender Configuration\n=====================")
2988 function(info_cfg_option
2992 set(_msg " - ${_setting}")
2993 string(LENGTH "${_msg}" _len)
2994 while("32" GREATER "${_len}")
2995 set(_msg "${_msg} ")
2996 math(EXPR _len "${_len} + 1")
2999 set(_config_msg "${_config_msg}\n${_msg}${${_setting}}" PARENT_SCOPE)
3002 function(info_cfg_text
3006 set(_config_msg "${_config_msg}\n\n ${_text}" PARENT_SCOPE)
3009 message(STATUS "C Compiler: \"${CMAKE_C_COMPILER_ID}\"")
3010 message(STATUS "C++ Compiler: \"${CMAKE_CXX_COMPILER_ID}\"")
3012 info_cfg_text("Build Options:")
3013 info_cfg_option(WITH_GAMEENGINE)
3014 info_cfg_option(WITH_PLAYER)
3015 info_cfg_option(WITH_BULLET)
3016 info_cfg_option(WITH_IK_SOLVER)
3017 info_cfg_option(WITH_IK_ITASC)
3018 info_cfg_option(WITH_OPENCOLLADA)
3019 info_cfg_option(WITH_FFTW3)
3020 info_cfg_option(WITH_INTERNATIONAL)
3021 info_cfg_option(WITH_INPUT_NDOF)
3022 info_cfg_option(WITH_CYCLES)
3023 info_cfg_option(WITH_FREESTYLE)
3024 info_cfg_option(WITH_OPENCOLORIO)
3025 info_cfg_option(WITH_OPENVDB)
3027 info_cfg_text("Compiler Options:")
3028 info_cfg_option(WITH_BUILDINFO)
3029 info_cfg_option(WITH_OPENMP)
3030 info_cfg_option(WITH_RAYOPTIMIZATION)
3032 info_cfg_text("System Options:")
3033 info_cfg_option(WITH_INSTALL_PORTABLE)
3034 info_cfg_option(WITH_X11_XF86VMODE)
3035 info_cfg_option(WITH_X11_XINPUT)
3036 info_cfg_option(WITH_MEM_JEMALLOC)
3037 info_cfg_option(WITH_MEM_VALGRIND)
3038 info_cfg_option(WITH_SYSTEM_GLEW)
3039 info_cfg_option(WITH_SYSTEM_OPENJPEG)
3041 info_cfg_text("Image Formats:")
3042 info_cfg_option(WITH_OPENIMAGEIO)
3043 info_cfg_option(WITH_IMAGE_CINEON)
3044 info_cfg_option(WITH_IMAGE_DDS)
3045 info_cfg_option(WITH_IMAGE_HDR)
3046 info_cfg_option(WITH_IMAGE_OPENEXR)
3047 info_cfg_option(WITH_IMAGE_OPENJPEG)
3048 info_cfg_option(WITH_IMAGE_REDCODE)
3049 info_cfg_option(WITH_IMAGE_TIFF)
3051 info_cfg_text("Audio:")
3052 info_cfg_option(WITH_OPENAL)
3053 info_cfg_option(WITH_SDL)
3054 info_cfg_option(WITH_SDL_DYNLOAD)
3055 info_cfg_option(WITH_JACK)
3056 info_cfg_option(WITH_JACK_DYNLOAD)
3057 info_cfg_option(WITH_CODEC_AVI)
3058 info_cfg_option(WITH_CODEC_FFMPEG)
3059 info_cfg_option(WITH_CODEC_SNDFILE)
3061 info_cfg_text("Compression:")
3062 info_cfg_option(WITH_LZMA)
3063 info_cfg_option(WITH_LZO)
3065 info_cfg_text("Python:")
3066 info_cfg_option(WITH_PYTHON_INSTALL)
3067 info_cfg_option(WITH_PYTHON_INSTALL_NUMPY)
3068 info_cfg_option(WITH_PYTHON_MODULE)
3069 info_cfg_option(WITH_PYTHON_SAFETY)
3071 info_cfg_option(WITH_PYTHON_FRAMEWORK)
3074 info_cfg_text("Modifiers:")
3075 info_cfg_option(WITH_MOD_BOOLEAN)
3076 info_cfg_option(WITH_MOD_REMESH)
3077 info_cfg_option(WITH_MOD_FLUID)
3078 info_cfg_option(WITH_MOD_OCEANSIM)
3080 info_cfg_text("OpenGL:")
3081 info_cfg_option(WITH_GLEW_ES)
3082 info_cfg_option(WITH_GLU)
3083 info_cfg_option(WITH_GL_EGL)
3084 info_cfg_option(WITH_GL_PROFILE_COMPAT)
3085 info_cfg_option(WITH_GL_PROFILE_CORE)
3086 info_cfg_option(WITH_GL_PROFILE_ES20)
3088 info_cfg_option(WITH_GL_ANGLE)
3093 message("${_config_msg}")