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(
169 if (UNIX AND NOT APPLE)
170 # some of these libraries are problematic on Linux
171 # disable less important dependencies by default
172 set(_init_CODEC_FFMPEG OFF)
173 set(_init_CYCLES_OSL OFF)
174 set(_init_IMAGE_OPENEXR OFF)
175 set(_init_INPUT_NDOF OFF)
177 set(_init_OPENCOLLADA OFF)
178 set(_init_OPENCOLORIO OFF)
181 set(_init_OPENSUBDIV OFF)
186 set(_init_OPENSUBDIV OFF)
190 #-----------------------------------------------------------------------------
193 # First platform spesific non-cached vars
194 if(UNIX AND NOT APPLE)
198 # Blender internal features
199 option(WITH_BLENDER "Build blender (disable to build only the blender player)" ON)
200 mark_as_advanced(WITH_BLENDER)
202 option(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON)
204 option(WITH_PYTHON "Enable Embedded Python API (only disable for development)" ON)
205 option(WITH_PYTHON_SECURITY "Disables execution of scripts within blend files by default" ON)
206 mark_as_advanced(WITH_PYTHON) # dont want people disabling this unless they really know what they are doing.
207 mark_as_advanced(WITH_PYTHON_SECURITY) # some distributions see this as a security issue, rather than have them patch it, make a build option.
209 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)
210 mark_as_advanced(WITH_PYTHON_SAFETY)
211 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)
213 option(WITH_PYTHON_FRAMEWORK "Enable building using the Python available in the framework (OSX only)" OFF)
216 option(WITH_BUILDINFO "Include extra build details (only disable for development & faster builds)" ${_init_BUILDINFO})
217 if(${CMAKE_VERSION} VERSION_LESS 2.8.8)
218 # add_library OBJECT arg unsupported
219 set(WITH_BUILDINFO OFF)
222 option(WITH_IK_ITASC "Enable ITASC IK solver (only disable for development & for incompatible C++ compilers)" ON)
223 option(WITH_IK_SOLVER "Enable Legacy IK solver (only disable for development)" ON)
224 option(WITH_FFTW3 "Enable FFTW3 support (Used for smoke and audio effects)" ${_init_FFTW3})
225 option(WITH_BULLET "Enable Bullet (Physics Engine)" ON)
226 option(WITH_SYSTEM_BULLET "Use the systems bullet library (currently unsupported due to missing features in upstream!)" )
227 mark_as_advanced(WITH_SYSTEM_BULLET)
228 option(WITH_GAMEENGINE "Enable Game Engine" ${_init_GAMEENGINE})
229 option(WITH_PLAYER "Build Player" OFF)
230 option(WITH_OPENCOLORIO "Enable OpenColorIO color management" ${_init_OPENCOLORIO})
233 option(WITH_COMPOSITOR "Enable the tile based nodal compositor" ON)
235 option(WITH_OPENSUBDIV "Enable OpenSubdiv for surface subdivision" _init_OPENSUBDIV)
237 option(WITH_OPENVDB "Enable features relying on OpenVDB" OFF)
238 option(WITH_OPENVDB_BLOSC "Enable blosc compression for OpenVDB, only enable if OpenVDB was built with blosc support" OFF)
240 # GHOST Windowing Library Options
241 option(WITH_GHOST_DEBUG "Enable debugging output for the GHOST library" OFF)
242 mark_as_advanced(WITH_GHOST_DEBUG)
244 option(WITH_GHOST_SDL "Enable building Blender against SDL for windowing rather than the native APIs" OFF)
245 mark_as_advanced(WITH_GHOST_SDL)
248 option(WITH_GHOST_XDND "Enable drag'n'drop support on X11 using XDND protocol" ON)
252 option(WITH_HEADLESS "Build without graphical support (renderfarm, server mode only)" OFF)
253 mark_as_advanced(WITH_HEADLESS)
255 option(WITH_AUDASPACE "Build with blenders audio library (only disable if you know what you're doing!)" ON)
256 option(WITH_SYSTEM_AUDASPACE "Build with external audaspace library installed on the system (only enable if you know what you're doing!)" OFF)
257 mark_as_advanced(WITH_AUDASPACE)
258 mark_as_advanced(WITH_SYSTEM_AUDASPACE)
260 if(NOT WITH_AUDASPACE)
261 set(WITH_SYSTEM_AUDASPACE OFF)
264 option(WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" ON)
265 if(UNIX AND NOT APPLE)
266 option(WITH_OPENMP_STATIC "Link OpenMP statically (only used by the release environment)" OFF)
267 mark_as_advanced(WITH_OPENMP_STATIC)
271 option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)" ON)
272 option(WITH_X11_XF86VMODE "Enable X11 video mode switching" ON)
275 if(UNIX AND NOT APPLE)
276 option(WITH_SYSTEM_GLEW "Use GLEW OpenGL wrapper library provided by the operating system" ON)
277 option(WITH_SYSTEM_GLES "Use OpenGL ES library provided by the operating system" ON)
279 # not an option for other OS's
280 set(WITH_SYSTEM_GLEW OFF)
281 set(WITH_SYSTEM_GLES OFF)
285 # (unix defaults to System OpenJPEG On)
286 option(WITH_SYSTEM_OPENJPEG "Use the operating systems OpenJPEG library" OFF)
288 if(UNIX AND NOT APPLE)
289 option(WITH_SYSTEM_EIGEN3 "Use the systems Eigen3 library" OFF)
294 option(WITH_MOD_FLUID "Enable Elbeem Modifier (Fluid Simulation)" ON)
295 option(WITH_MOD_SMOKE "Enable Smoke Modifier (Smoke Simulation)" ON)
296 option(WITH_MOD_BOOLEAN "Enable Boolean Modifier" ON)
297 option(WITH_MOD_REMESH "Enable Remesh Modifier" ON)
298 # option(WITH_MOD_CLOTH_ELTOPO "Enable Experimental cloth solver" OFF) # this is now only available in a branch
299 # mark_as_advanced(WITH_MOD_CLOTH_ELTOPO)
300 option(WITH_MOD_OCEANSIM "Enable Ocean Modifier" OFF)
302 # Image format support
303 option(WITH_OPENIMAGEIO "Enable OpenImageIO Support (http://www.openimageio.org)" ON)
304 option(WITH_IMAGE_OPENEXR "Enable OpenEXR Support (http://www.openexr.com)" ${_init_IMAGE_OPENEXR})
305 option(WITH_IMAGE_OPENJPEG "Enable OpenJpeg Support (http://www.openjpeg.org)" ON)
306 option(WITH_IMAGE_TIFF "Enable LibTIFF Support" ON)
307 option(WITH_IMAGE_DDS "Enable DDS Image Support" ON)
308 option(WITH_IMAGE_CINEON "Enable CINEON and DPX Image Support" ON)
309 option(WITH_IMAGE_HDR "Enable HDR Image Support" ON)
310 option(WITH_IMAGE_FRAMESERVER "Enable image FrameServer Support for rendering" ON)
312 # Audio/Video format support
313 option(WITH_CODEC_AVI "Enable Blenders own AVI file support (raw/jpeg)" ON)
314 option(WITH_CODEC_FFMPEG "Enable FFMPeg Support (http://ffmpeg.org)" ${_init_CODEC_FFMPEG})
315 option(WITH_CODEC_SNDFILE "Enable libsndfile Support (http://www.mega-nerd.com/libsndfile)" OFF)
318 option(WITH_CODEC_QUICKTIME "Enable Quicktime Support" ON)
322 # Disable opencollada when we don't have precompiled libs
323 option(WITH_OPENCOLLADA "Enable OpenCollada Support (http://www.opencollada.org)" ${_init_OPENCOLLADA})
326 option(WITH_SDL "Enable SDL for sound and joystick support" ${_init_SDL})
327 option(WITH_OPENAL "Enable OpenAL Support (http://www.openal.org)" ON)
328 option(WITH_JACK "Enable Jack Support (http://www.jackaudio.org)" ${_init_JACK})
329 if(UNIX AND NOT APPLE)
330 option(WITH_JACK_DYNLOAD "Enable runtime dynamic Jack libraries loading" OFF)
332 if(UNIX AND NOT APPLE)
333 option(WITH_SDL_DYNLOAD "Enable runtime dynamic SDL libraries loading" OFF)
337 option(WITH_LZO "Enable fast LZO compression (used for pointcache)" ON)
338 option(WITH_LZMA "Enable best LZMA compression, (used for pointcache)" ON)
339 if(UNIX AND NOT APPLE)
340 option(WITH_SYSTEM_LZO "Use the system LZO library" OFF)
343 # Camera/motion tracking
344 option(WITH_LIBMV "Enable Libmv structure from motion library" ON)
345 option(WITH_LIBMV_SCHUR_SPECIALIZATIONS "Enable fixed-size schur specializations." OFF)
346 mark_as_advanced(WITH_LIBMV_SCHUR_SPECIALIZATIONS)
349 option(WITH_FREESTYLE "Enable Freestyle (advanced edges rendering)" ON)
353 option(WITH_INPUT_IME "Enable Input Method Editor (IME) for complex Asian character input" ON)
355 option(WITH_INPUT_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ${_init_INPUT_NDOF})
356 option(WITH_RAYOPTIMIZATION "Enable use of SIMD (SSE) optimizations for the raytracer" ON)
357 if(UNIX AND NOT APPLE)
358 option(WITH_INSTALL_PORTABLE "Install redistributeable runtime, otherwise install into CMAKE_INSTALL_PREFIX" ON)
359 option(WITH_STATIC_LIBS "Try to link with static libraries, as much as possible, to make blender more portable across distributions" OFF)
361 option(WITH_BOOST_ICU "Boost uses ICU library (required for linking with static Boost built with libicu)." OFF)
362 mark_as_advanced(WITH_BOOST_ICU)
366 option(WITH_PYTHON_INSTALL "Copy system python into the blender install folder" ON)
367 if(WITH_PYTHON_INSTALL)
368 option(WITH_PYTHON_INSTALL_NUMPY "Copy system numpy into the blender install folder" ON)
369 set(PYTHON_NUMPY_PATH "" CACHE PATH "Path to python site-packages or dist-packages containing 'numpy' module")
370 mark_as_advanced(PYTHON_NUMPY_PATH)
372 if(UNIX AND NOT APPLE)
373 option(WITH_PYTHON_INSTALL_REQUESTS "Copy system requests into the blender install folder" ON)
374 set(PYTHON_REQUESTS_PATH "" CACHE PATH "Path to python site-packages or dist-packages containing 'requests' module")
375 mark_as_advanced(PYTHON_REQUESTS_PATH)
379 option(WITH_CPU_SSE "Enable SIMD instruction if they're detected on the host machine" ON)
380 mark_as_advanced(WITH_CPU_SSE)
383 option(WITH_CYCLES "Enable Cycles Render Engine" ON)
384 option(WITH_CYCLES_STANDALONE "Build Cycles standalone application" OFF)
385 option(WITH_CYCLES_STANDALONE_GUI "Build Cycles standalone with GUI" OFF)
386 option(WITH_CYCLES_OSL "Build Cycles with OSL support" ${_init_CYCLES_OSL})
387 option(WITH_CYCLES_CUDA_BINARIES "Build Cycles CUDA binaries" OFF)
388 set(CYCLES_CUDA_BINARIES_ARCH sm_20 sm_21 sm_30 sm_35 sm_37 sm_50 sm_52 CACHE STRING "CUDA architectures to build binaries for")
389 mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
390 unset(PLATFORM_DEFAULT)
391 option(WITH_CYCLES_LOGGING "Build Cycles with logging support" ON)
392 option(WITH_CYCLES_DEBUG "Build Cycles with extra debug capabilities" OFF)
393 option(WITH_CYCLES_NATIVE_ONLY "Build Cycles with native kernel only (which fits current CPU, use for development only)" OFF)
394 mark_as_advanced(WITH_CYCLES_LOGGING)
395 mark_as_advanced(WITH_CYCLES_DEBUG)
396 mark_as_advanced(WITH_CYCLES_NATIVE_ONLY)
398 option(WITH_CUDA_DYNLOAD "Dynamically load CUDA libraries at runtime" ON)
399 mark_as_advanced(WITH_CUDA_DYNLOAD)
402 option(WITH_LLVM "Use LLVM" OFF)
404 option(LLVM_STATIC "Link with LLVM static libraries" ON) # we prefer static llvm build on Apple, dyn build possible though
406 option(LLVM_STATIC "Link with LLVM static libraries" OFF)
408 mark_as_advanced(LLVM_STATIC)
410 # disable for now, but plan to support on all platforms eventually
411 option(WITH_MEM_JEMALLOC "Enable malloc replacement (http://www.canonware.com/jemalloc)" ON)
412 mark_as_advanced(WITH_MEM_JEMALLOC)
414 # currently only used for BLI_mempool
415 option(WITH_MEM_VALGRIND "Enable extended valgrind support for better reporting" OFF)
416 mark_as_advanced(WITH_MEM_VALGRIND)
419 option(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking (only enable for development)" OFF)
420 mark_as_advanced(WITH_CXX_GUARDEDALLOC)
422 option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF)
423 mark_as_advanced(WITH_ASSERT_ABORT)
425 option(WITH_BOOST "Enable features depending on boost" ON)
428 option(WITH_GTESTS "Enable GTest unit testing" OFF)
432 if(UNIX AND NOT APPLE)
433 option(WITH_DOC_MANPAGE "Create a manual page (Unix manpage)" OFF)
439 option(WITH_GLEW_MX "Support multiple GLEW contexts (experimental)" OFF )
440 option(WITH_GLEW_ES "Switches to experimental copy of GLEW that has support for OpenGL ES. (temporary option for development purposes)" OFF)
441 option(WITH_GL_EGL "Use the EGL OpenGL system library instead of the platform specific OpenGL system library (CGL, glX, or WGL)" OFF)
442 option(WITH_GL_PROFILE_COMPAT "Support using the OpenGL 'compatibility' profile. (deprecated)" ON )
443 option(WITH_GL_PROFILE_CORE "Support using the OpenGL 3.2+ 'core' profile." OFF)
444 option(WITH_GL_PROFILE_ES20 "Support using OpenGL ES 2.0. (thru either EGL or the AGL/WGL/XGL 'es20' profile)" OFF)
450 WITH_GL_PROFILE_COMPAT
455 if(WITH_GL_PROFILE_COMPAT)
462 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)
463 mark_as_advanced(WITH_GL_ANGLE)
466 if(WITH_GLEW_ES AND WITH_SYSTEM_GLEW)
467 message(WARNING Ignoring WITH_SYSTEM_GLEW and using WITH_GLEW_ES)
468 set(WITH_SYSTEM_GLEW OFF)
472 getDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES)
473 set(CPACK_INSTALL_PREFIX ${CMAKE_GENERIC_PROGRAM_FILES}/${})
476 # Experimental support of C11 and C++11
477 option(WITH_C11 "Build with C11 standard enabled, for development use only!" OFF)
478 mark_as_advanced(WITH_C11)
479 option(WITH_CXX11 "Build with C++11 standard enabled, for development use only!" OFF)
480 mark_as_advanced(WITH_CXX11)
483 option(WITH_LEGACY_DEPSGRAPH "Build Blender with legacy dependency graph" ON)
484 mark_as_advanced(WITH_LEGACY_DEPSGRAPH)
487 option_defaults_clear()
493 # By default we want to install to the directory we are compiling our executables
494 # unless specified otherwise, which we currently do not allow
495 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
497 set(CMAKE_INSTALL_PREFIX ${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE} CACHE PATH "default install path" FORCE)
499 set(CMAKE_INSTALL_PREFIX ${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE} CACHE PATH "default install path" FORCE)
501 if(WITH_INSTALL_PORTABLE)
502 set(CMAKE_INSTALL_PREFIX ${EXECUTABLE_OUTPUT_PATH} CACHE PATH "default install path" FORCE)
512 # require newer cmake on osx because of version handling,
513 # older cmake cannot handle 2 digit subversion!
514 cmake_minimum_required(VERSION 3.0.0)
516 if(NOT CMAKE_OSX_ARCHITECTURES)
517 set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING
518 "Choose the architecture you want to build Blender for: i386, x86_64 or ppc"
522 if(NOT DEFINED OSX_SYSTEM)
524 COMMAND xcodebuild -version -sdk macosx SDKVersion
525 OUTPUT_VARIABLE OSX_SYSTEM
526 OUTPUT_STRIP_TRAILING_WHITESPACE)
529 # workaround for incorrect cmake xcode lookup for developer previews - XCODE_VERSION does not take xcode-select path into accout
530 # but would always look into /Applications/Xcode.app while dev versions are named Xcode<version>-DP<preview_number>
531 execute_process(COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_CHECK OUTPUT_STRIP_TRAILING_WHITESPACE)
532 string(REPLACE "/Contents/Developer" "" XCODE_BUNDLE ${XCODE_CHECK}) # truncate to bundlepath in any case
534 if(${CMAKE_GENERATOR} MATCHES "Xcode")
536 if(${XCODE_VERSION} VERSION_GREATER 4.2) # earlier xcode has no bundled developer dir, no sense in getting xcode path from
537 string(SUBSTRING "${XCODE_CHECK}" 14 6 DP_NAME) # reduce to XCode name without dp extension
538 if(${DP_NAME} MATCHES Xcode5)
543 ##### cmake incompatibility with xcode 4.3 and higher #####
544 if(${XCODE_VERSION} MATCHES '') # cmake fails due looking for xcode in the wrong path, thus will be empty var
545 message(FATAL_ERROR "Xcode 4.3 and higher must be used with cmake 2.8-8 or higher")
547 ### end cmake incompatibility with xcode 4.3 and higher ###
549 if(${XCODE_VERSION} VERSION_EQUAL 4 OR ${XCODE_VERSION} VERSION_GREATER 4 AND ${XCODE_VERSION} VERSION_LESS 4.3)
550 # Xcode 4 defaults to the Apple LLVM Compiler.
551 # Override the default compiler selection because Blender only compiles with gcc up to xcode 4.2
552 set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
553 message(STATUS "Setting compiler to: " ${CMAKE_XCODE_ATTRIBUTE_GCC_VERSION})
555 else() # unix makefile generator does not fill XCODE_VERSION var, so we get it with a command
556 execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERS_BUILD_NR)
557 string(SUBSTRING "${XCODE_VERS_BUILD_NR}" 6 3 XCODE_VERSION) # truncate away build-nr
558 unset(XCODE_VERS_BUILD_NR)
561 message(STATUS "Detected OS X ${OSX_SYSTEM} and Xcode ${XCODE_VERSION} at ${XCODE_BUNDLE}")
563 if(${XCODE_VERSION} VERSION_LESS 4.3)
564 set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk CACHE PATH "" FORCE) # use guaranteed existing sdk
566 # note: xcode-select path could be ambigous, cause /Applications/Xcode.app/Contents/Developer or /Applications/Xcode.app would be allowed
567 # so i use a selfcomposed bundlepath here
568 set(OSX_SYSROOT_PREFIX ${XCODE_BUNDLE}/Contents/Developer/Platforms/MacOSX.platform)
569 message(STATUS "OSX_SYSROOT_PREFIX: " ${OSX_SYSROOT_PREFIX})
570 set(OSX_DEVELOPER_PREFIX /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk) # use guaranteed existing sdk
571 set(CMAKE_OSX_SYSROOT ${OSX_SYSROOT_PREFIX}/${OSX_DEVELOPER_PREFIX} CACHE PATH "" FORCE)
572 if(${CMAKE_GENERATOR} MATCHES "Xcode")
573 set(CMAKE_XCODE_ATTRIBUTE_SDKROOT macosx${OSX_SYSTEM}) # to silence sdk not found warning, just overrides CMAKE_OSX_SYSROOT
577 if(OSX_SYSTEM MATCHES 10.9)
578 set(CMAKE_FIND_ROOT_PATH ${CMAKE_OSX_SYSROOT}) # make sure syslibs and headers are looked up in sdk ( expecially for 10.9 openGL atm. )
581 if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
582 set(CMAKE_OSX_DEPLOYMENT_TARGET "10.6" CACHE STRING "" FORCE) # 10.6 is our min. target, if you use higher sdk, weak linking happens
585 if(NOT ${CMAKE_GENERATOR} MATCHES "Xcode")
586 # force CMAKE_OSX_DEPLOYMENT_TARGET for makefiles, will not work else ( cmake bug ? )
587 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
588 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
589 add_definitions("-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
592 option(WITH_LIBS10.5 "Use 10.5 libs (needed for 64bit builds)" OFF)
596 #-----------------------------------------------------------------------------
597 # Check for conflicting/unsupported configurations
599 if(NOT WITH_BLENDER AND NOT WITH_PLAYER AND NOT WITH_CYCLES_STANDALONE)
600 message(FATAL_ERROR "At least one of WITH_BLENDER or WITH_PLAYER or WITH_CYCLES_STANDALONE must be enabled, nothing to do!")
603 if(NOT WITH_GAMEENGINE AND WITH_PLAYER)
604 message(FATAL_ERROR "WITH_PLAYER requires WITH_GAMEENGINE")
607 if(NOT WITH_AUDASPACE)
609 message(FATAL_ERROR "WITH_OPENAL requires WITH_AUDASPACE")
612 message(FATAL_ERROR "WITH_JACK requires WITH_AUDASPACE")
615 message(FATAL_ERROR "WITH_GAMEENGINE requires WITH_AUDASPACE")
619 if(NOT WITH_SDL AND WITH_GHOST_SDL)
620 message(FATAL_ERROR "WITH_GHOST_SDL requires WITH_SDL")
623 # python module, needs some different options
624 if(WITH_PYTHON_MODULE AND WITH_PLAYER)
625 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PLAYER to be OFF")
628 if(WITH_PYTHON_MODULE AND WITH_PYTHON_INSTALL)
629 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PYTHON_INSTALL to be OFF")
633 # may as well build python module without a UI
634 if(WITH_PYTHON_MODULE)
635 set(WITH_HEADLESS ON)
642 # enable boost for cycles, audaspace or i18n
643 # otherwise if the user disabled
645 # Explicitly disabled. so disable all deps.
649 message(STATUS "'WITH_BOOST' is disabled: forceing 'set(${_setting} ${_val})'")
651 set(${_setting} ${_val})
654 set_and_warn(WITH_CYCLES OFF)
655 set_and_warn(WITH_AUDASPACE OFF)
656 set_and_warn(WITH_INTERNATIONAL OFF)
657 set_and_warn(WITH_OPENVDB OFF)
658 set_and_warn(WITH_OPENCOLORIO OFF)
659 set_and_warn(WITH_MOD_BOOLEAN OFF)
661 set_and_warn(WITH_OPENAL OFF) # depends on AUDASPACE
662 set_and_warn(WITH_GAMEENGINE OFF) # depends on AUDASPACE
663 set_and_warn(WITH_PLAYER OFF) # depends on GAMEENGINE
664 elseif(WITH_CYCLES OR WITH_OPENIMAGEIO OR WITH_AUDASPACE OR WITH_INTERNATIONAL OR WITH_OPENVDB OR WITH_OPENCOLORIO OR WITH_MOD_BOOLEAN)
667 # New dependency graph needs either Boost or C++11 for function bindings.
669 # Enabled but we don't need it
674 # auto enable openimageio for cycles
676 set(WITH_OPENIMAGEIO ON)
678 # auto enable llvm for cycles_osl
680 set(WITH_LLVM ON CACHE BOOL "" FORCE)
683 set(WITH_CYCLES_OSL OFF)
686 # auto enable openimageio linking dependencies
688 set(WITH_IMAGE_OPENEXR ON)
689 set(WITH_IMAGE_TIFF ON)
692 # don't store paths to libs for portable distribution
693 if(WITH_INSTALL_PORTABLE)
694 set(CMAKE_SKIP_BUILD_RPATH TRUE)
697 if(WITH_GHOST_SDL OR WITH_HEADLESS)
699 set(WITH_X11_XINPUT OFF)
700 set(WITH_X11_XF86VMODE OFF)
701 set(WITH_GHOST_XDND OFF)
702 set(WITH_INPUT_IME OFF)
706 TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
708 message(STATUS "SSE and SSE2 optimizations are DISABLED!")
709 set(COMPILER_SSE_FLAG)
710 set(COMPILER_SSE2_FLAG)
716 message(WARNING "Git was not found, disabling WITH_BUILDINFO")
717 set(WITH_BUILDINFO OFF)
721 TEST_SHARED_PTR_SUPPORT()
722 TEST_UNORDERED_MAP_SUPPORT()
725 if(WITH_SYSTEM_AUDASPACE)
726 set(AUDASPACE_DEFINITIONS
728 -DWITH_SYSTEM_AUDASPACE
729 "-DAUD_DEVICE_H=<AUD_Device.h>"
730 "-DAUD_SPECIAL_H=<AUD_Special.h>"
731 "-DAUD_SOUND_H=<AUD_Sound.h>"
732 "-DAUD_HANDLE_H=<AUD_Handle.h>"
733 "-DAUD_SEQUENCE_H=<AUD_Sequence.h>"
734 "-DAUD_TYPES_H=<AUD_Types.h>"
735 "-DAUD_PYTHON_H=<python/PyAPI.h>"
738 set(AUDASPACE_C_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/intern/audaspace/intern")
739 set(AUDASPACE_PY_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/intern/audaspace/intern")
740 set(AUDASPACE_DEFINITIONS
742 "-DAUD_DEVICE_H=<AUD_C-API.h>"
743 "-DAUD_SPECIAL_H=<AUD_C-API.h>"
744 "-DAUD_SOUND_H=<AUD_C-API.h>"
745 "-DAUD_HANDLE_H=<AUD_C-API.h>"
746 "-DAUD_SEQUENCE_H=<AUD_C-API.h>"
747 "-DAUD_TYPES_H=<AUD_Space.h>"
752 #-----------------------------------------------------------------------------
753 # Check for valid directories
754 # ... a partial checkout may cause this.
756 # note: we need to check for a known subdir in both cases.
757 # since uninitialized git submodules will give blank dirs
759 if(WITH_INTERNATIONAL)
760 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/datafiles/locale/languages")
761 message(WARNING "Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
762 "This is a 'git submodule', which are known not to work with bridges to other version "
763 "control systems, disabling 'WITH_INTERNATIONAL'.")
764 set(WITH_INTERNATIONAL OFF)
769 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/scripts/addons/modules")
770 message(WARNING "Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
771 "This is a 'git submodule', which are known not to work with bridges to other version "
772 "control systems: * CONTINUING WITHOUT ADDONS *")
776 #-----------------------------------------------------------------------------
777 # Initialize un-cached vars, avoid unused warning
779 # linux only, not cached
780 set(WITH_BINRELOC OFF)
782 # MAXOSX only, set to avoid uninitialized
788 # these are added to later on.
792 # for gcc -Wno-blah-blah
793 set(CC_REMOVE_STRICT_FLAGS)
795 # libraries to link the binary with passed to target_link_libraries()
796 # known as LLIBS to scons
797 set(PLATFORM_LINKLIBS "")
799 # Added to linker flags in setup_liblinks
800 # - CMAKE_EXE_LINKER_FLAGS
801 # - CMAKE_EXE_LINKER_FLAGS_DEBUG
802 set(PLATFORM_LINKFLAGS "")
803 set(PLATFORM_LINKFLAGS_DEBUG "")
806 # For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
809 # -D PYTHON_VERSION=3.5 \
810 # -D PYTHON_INCLUDE_DIR=/opt/py35/include/python3.5d \
811 # -D PYTHON_LIBRARY=/opt/py35/lib/libpython3.5d.so
815 # -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.5/include/python3.5 \
816 # -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/config \
819 # When changing any of this remember to update the notes in doc/build_systems/cmake.txt
821 #-----------------------------------------------------------------------------
825 find_package(X11 REQUIRED)
827 find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
828 mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
830 list(APPEND PLATFORM_LINKLIBS ${X11_X11_LIB})
834 list(APPEND PLATFORM_LINKLIBS ${X11_Xinput_LIB})
836 set(WITH_X11_XINPUT OFF)
840 if(WITH_X11_XF86VMODE)
841 # XXX, why dont cmake make this available?
842 find_library(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
843 mark_as_advanced(X11_Xxf86vmode_LIB)
844 if(X11_Xxf86vmode_LIB)
845 list(APPEND PLATFORM_LINKLIBS ${X11_Xxf86vmode_LIB})
847 set(WITH_X11_XF86VMODE OFF)
854 # ----------------------------------------------------------------------------
855 # Main Platform Checks
861 if(UNIX AND NOT APPLE)
862 macro(find_package_wrapper)
864 find_package_static(${ARGV})
866 find_package(${ARGV})
870 find_package_wrapper(JPEG REQUIRED)
871 find_package_wrapper(PNG REQUIRED)
872 find_package_wrapper(ZLIB REQUIRED)
873 find_package_wrapper(Freetype REQUIRED)
875 if(WITH_LZO AND WITH_SYSTEM_LZO)
876 find_package_wrapper(LZO)
878 message(FATAL_ERROR "Failed finding system LZO version!")
882 if(WITH_SYSTEM_EIGEN3)
883 find_package_wrapper(Eigen3)
885 message(FATAL_ERROR "Failed finding system Eigen3 version!")
888 # else values are set below for all platforms
891 # No way to set py35, remove for now.
892 # find_package(PythonLibs)
894 # Use our own instead, since without py is such a rare case,
895 # require this package
896 # XXX Linking errors with debian static python :/
897 # find_package_wrapper(PythonLibsUnix REQUIRED)
898 find_package(PythonLibsUnix REQUIRED)
901 if(WITH_IMAGE_OPENEXR)
902 find_package_wrapper(OpenEXR) # our own module
903 if(NOT OPENEXR_FOUND)
904 set(WITH_IMAGE_OPENEXR OFF)
908 if(WITH_IMAGE_OPENJPEG)
909 find_package_wrapper(OpenJPEG)
910 if(NOT OPENJPEG_FOUND)
911 set(WITH_IMAGE_OPENJPEG OFF)
916 # XXX Linking errors with debian static tiff :/
917 # find_package_wrapper(TIFF)
920 set(WITH_IMAGE_TIFF OFF)
925 if(WITH_SYSTEM_AUDASPACE)
926 find_package_wrapper(Audaspace)
927 if(NOT AUDASPACE_FOUND OR NOT AUDASPACE_C_FOUND)
928 message(FATAL_ERROR "Audaspace external library not found!")
933 find_package_wrapper(OpenAL)
941 set(SDL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extern/sdlew/include/SDL2")
944 find_package_wrapper(SDL2)
946 # Use same names for both versions of SDL until we move to 2.x.
947 set(SDL_INCLUDE_DIR "${SDL2_INCLUDE_DIR}")
948 set(SDL_LIBRARY "${SDL2_LIBRARY}")
949 set(SDL_FOUND "${SDL2_FOUND}")
951 find_package_wrapper(SDL)
957 # unset(SDLMAIN_LIBRARY CACHE)
965 find_package_wrapper(Jack)
972 if(WITH_CODEC_SNDFILE)
973 find_package_wrapper(SndFile)
974 if(NOT SNDFILE_FOUND)
975 set(WITH_CODEC_SNDFILE OFF)
979 if(WITH_CODEC_FFMPEG)
980 set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
981 set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
983 mark_as_advanced(FFMPEG)
985 # lame, but until we have proper find module for ffmpeg
986 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
987 if(EXISTS "${FFMPEG}/include/ffmpeg/")
988 list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg")
992 mark_as_advanced(FFMPEG_LIBRARIES)
993 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
997 find_package_wrapper(Fftw3)
1003 if(WITH_OPENCOLLADA)
1004 find_package_wrapper(OpenCOLLADA)
1005 if(OPENCOLLADA_FOUND)
1006 find_package_wrapper(XML2)
1007 find_package_wrapper(PCRE)
1009 set(WITH_OPENCOLLADA OFF)
1013 if(WITH_MEM_JEMALLOC)
1014 find_package_wrapper(JeMalloc)
1015 if(NOT JEMALLOC_FOUND)
1016 set(WITH_MEM_JEMALLOC OFF)
1021 find_package_wrapper(Spacenav)
1022 if(NOT SPACENAV_FOUND)
1023 set(WITH_INPUT_NDOF OFF)
1026 # use generic names within blenders buildsystem.
1028 set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
1029 set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
1034 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1036 set(OSL_ROOT ${CYCLES_OSL})
1038 find_package_wrapper(OpenShadingLanguage)
1040 if(${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6")
1041 # Note: --whole-archive is needed to force loading of all symbols in liboslexec,
1042 # otherwise LLVM is missing the osl_allocate_closure_component function
1043 set(OSL_LIBRARIES ${OSL_OSLCOMP_LIBRARY} -Wl,--whole-archive ${OSL_OSLEXEC_LIBRARY} -Wl,--no-whole-archive ${OSL_OSLQUERY_LIBRARY})
1046 message(STATUS "OSL not found, disabling it from Cycles")
1047 set(WITH_CYCLES_OSL OFF)
1052 find_package_wrapper(OpenVDB)
1053 find_package_wrapper(TBB)
1054 if(NOT OPENVDB_FOUND OR NOT TBB_FOUND)
1055 set(WITH_OPENVDB OFF)
1056 set(WITH_OPENVDB_BLOSC OFF)
1057 message(STATUS "OpenVDB not found, disabling it")
1062 # uses in build instructions to override include and library variables
1063 if(NOT BOOST_CUSTOM)
1064 if(WITH_STATIC_LIBS)
1065 set(Boost_USE_STATIC_LIBS ON)
1067 set(Boost_USE_MULTITHREADED ON)
1068 set(__boost_packages filesystem regex system thread date_time)
1070 if(NOT (${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6"))
1071 list(APPEND __boost_packages wave)
1075 if(WITH_INTERNATIONAL)
1076 list(APPEND __boost_packages locale)
1078 if(WITH_CYCLES_NETWORK)
1079 list(APPEND __boost_packages serialization)
1082 list(APPEND __boost_packages iostreams)
1084 find_package(Boost 1.48 COMPONENTS ${__boost_packages})
1086 # try to find non-multithreaded if -mt not found, this flag
1087 # doesn't matter for us, it has nothing to do with thread
1088 # safety, but keep it to not disturb build setups
1089 set(Boost_USE_MULTITHREADED OFF)
1090 find_package(Boost 1.48 COMPONENTS ${__boost_packages})
1092 unset(__boost_packages)
1093 if(Boost_USE_STATIC_LIBS AND WITH_BOOST_ICU)
1094 find_package(IcuLinux)
1096 mark_as_advanced(Boost_DIR) # why doesnt boost do this?
1099 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
1100 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
1101 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
1102 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1105 if(WITH_OPENIMAGEIO)
1106 find_package_wrapper(OpenImageIO)
1107 if(NOT OPENIMAGEIO_PUGIXML_FOUND AND WITH_CYCLES_STANDALONE)
1108 find_package_wrapper(PugiXML)
1110 set(PUGIXML_INCLUDE_DIR "${OPENIMAGEIO_INCLUDE_DIR/OpenImageIO}")
1111 set(PUGIXML_LIBRARIES "")
1114 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES})
1115 set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
1116 set(OPENIMAGEIO_DEFINITIONS "")
1119 list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}")
1121 if(WITH_IMAGE_OPENEXR)
1122 list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}")
1125 if(NOT OPENIMAGEIO_FOUND)
1126 set(WITH_OPENIMAGEIO OFF)
1127 message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
1131 if(WITH_OPENCOLORIO)
1132 find_package_wrapper(OpenColorIO)
1134 set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES})
1135 set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
1136 set(OPENCOLORIO_DEFINITIONS)
1138 if(NOT OPENCOLORIO_FOUND)
1139 set(WITH_OPENCOLORIO OFF)
1140 message(STATUS "OpenColorIO not found")
1145 find_package_wrapper(LLVM)
1149 message(STATUS "LLVM not found")
1153 if(WITH_LLVM OR WITH_SDL_DYNLOAD)
1154 # Fix for conflict with Mesa llvmpipe
1155 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script='${CMAKE_SOURCE_DIR}/source/creator/blender.map'")
1159 find_package_wrapper(OpenSubdiv)
1161 set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBRARIES})
1162 set(OPENSUBDIV_LIBPATH) # TODO, remove and reference the absolute path everywhere
1164 if(NOT OPENSUBDIV_FOUND)
1165 set(WITH_OPENSUBDIV OFF)
1166 message(STATUS "OpenSubdiv not found")
1170 # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
1171 list(APPEND PLATFORM_LINKLIBS -lutil -lc -lm)
1173 find_package(Threads REQUIRED)
1174 list(APPEND PLATFORM_LINKLIBS ${CMAKE_THREAD_LIBS_INIT})
1175 # used by other platforms
1176 set(PTHREADS_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
1179 list(APPEND PLATFORM_LINKLIBS ${CMAKE_DL_LIBS})
1182 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
1183 if(NOT WITH_PYTHON_MODULE)
1184 # binreloc is linux only
1185 set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include)
1186 set(WITH_BINRELOC ON)
1190 # lfs on glibc, all compilers should use
1191 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1194 if(CMAKE_COMPILER_IS_GNUCC)
1195 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1197 # use ld.gold linker if available, could make optional
1199 COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version
1200 ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
1201 if("${LD_VERSION}" MATCHES "GNU gold")
1202 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=gold")
1203 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold")
1205 message(STATUS "GNU gold linker isn't available, using the default system linker.")
1209 # CLang is the same as GCC for now.
1210 elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
1211 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1213 elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro")
1214 set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
1216 # Intel C++ Compiler
1217 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
1218 # think these next two are broken
1219 find_program(XIAR xiar)
1221 set(CMAKE_AR "${XIAR}")
1223 mark_as_advanced(XIAR)
1225 find_program(XILD xild)
1227 set(CMAKE_LINKER "${XILD}")
1229 mark_as_advanced(XILD)
1231 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
1232 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
1234 # set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
1235 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1236 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
1241 add_definitions(-DWIN32)
1244 # Minimum MSVC Version
1245 set(_min_ver "18.0.31101")
1246 if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS ${_min_ver})
1248 "Visual Studio 2013 (Update 4, ${_min_ver}) required, "
1249 "found (${CMAKE_CXX_COMPILER_VERSION})")
1253 # needed for some MSVC installations
1254 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
1255 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
1256 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO")
1258 list(APPEND PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi Dbghelp)
1261 list(APPEND PLATFORM_LINKLIBS imm32)
1265 -D_CRT_NONSTDC_NO_DEPRECATE
1266 -D_CRT_SECURE_NO_DEPRECATE
1267 -D_SCL_SECURE_NO_DEPRECATE
1272 # MSVC11 needs _ALLOW_KEYWORD_MACROS to build
1273 add_definitions(-D_ALLOW_KEYWORD_MACROS)
1276 # We want to support Vista level ABI for x64
1277 add_definitions(-D_WIN32_WINNT=0x600)
1280 # Make cmake find the msvc redistributables
1281 set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
1282 include(InstallRequiredSystemLibraries)
1284 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /nologo /J /Gd /MP /EHsc")
1285 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /nologo /J /Gd /MP")
1287 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
1288 set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
1289 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
1290 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
1291 set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MT")
1292 set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} /MT")
1293 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT")
1294 set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /MT")
1296 set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
1298 # Ignore meaningless for us linker warnings.
1299 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /ignore:4049 /ignore:4217 /ignore:4221")
1300 set(CMAKE_STATIC_LINKER_FLAGS "${CMAKE_STATIC_LINKER_FLAGS} /ignore:4221")
1302 # MSVC only, Mingw doesnt need
1304 set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
1306 set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
1309 set(PLATFORM_LINKFLAGS_DEBUG "/IGNORE:4099 /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
1311 if(NOT DEFINED LIBDIR)
1313 # Setup 64bit and 64bit windows systems
1315 message(STATUS "64 bit compiler detected.")
1316 set(LIBDIR_BASE "win64")
1318 message(STATUS "32 bit compiler detected.")
1319 set(LIBDIR_BASE "windows")
1322 if(MSVC_VERSION EQUAL 1900)
1323 message(STATUS "Visual Studio 2015 detected.")
1324 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc14)
1326 message(STATUS "Visual Studio 2013 detected.")
1327 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc12)
1330 message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
1332 if(NOT EXISTS "${LIBDIR}/")
1333 message(FATAL_ERROR "Windows requires pre-compiled libs at: '${LIBDIR}'")
1336 # Add each of our libraries to our cmake_prefix_path so find_package() could work
1337 file(GLOB children RELATIVE ${LIBDIR} ${LIBDIR}/*)
1338 foreach(child ${children})
1339 if(IS_DIRECTORY ${LIBDIR}/${child})
1340 list(APPEND CMAKE_PREFIX_PATH ${LIBDIR}/${child})
1344 set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
1345 set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz_st.lib)
1346 set(ZLIB_INCLUDE_DIR ${LIBDIR}/zlib/include)
1347 set(ZLIB_LIBRARY ${LIBDIR}/zlib/lib/libz_st.lib)
1348 set(ZLIB_DIR ${LIBDIR}/zlib)
1349 #find_package(zlib) # we want to find before finding things that depend on it like png
1354 message(WARNING "Using HARDCODED libpng locations")
1355 set(PNG_PNG_INCLUDE_DIR ${LIBDIR}/png/include)
1356 set(PNG_LIBRARIES libpng)
1357 set(PNG "${LIBDIR}/png")
1358 set(PNG_INCLUDE_DIRS "${PNG}/include")
1359 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1362 set(JPEG_NAMES ${JPEG_NAMES} libjpeg)
1363 find_package(jpeg REQUIRED)
1365 set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
1366 set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
1368 set(FREETYPE ${LIBDIR}/freetype)
1369 set(FREETYPE_INCLUDE_DIRS
1370 ${LIBDIR}/freetype/include
1371 ${LIBDIR}/freetype/include/freetype2
1373 set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
1374 find_package(freetype REQUIRED)
1377 set(FFTW3 ${LIBDIR}/fftw3)
1378 set(FFTW3_LIBRARIES libfftw)
1379 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1380 set(FFTW3_LIBPATH ${FFTW3}/lib)
1383 if(WITH_OPENCOLLADA)
1384 set(OPENCOLLADA ${LIBDIR}/opencollada)
1386 set(OPENCOLLADA_INCLUDE_DIRS
1387 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1388 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1389 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1390 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1391 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1394 set(OPENCOLLADA_LIBRARIES
1395 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADASaxFrameworkLoader.lib
1396 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAFramework.lib
1397 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADABaseUtils.lib
1398 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter.lib
1399 ${OPENCOLLADA}/lib/opencollada/MathMLSolver.lib
1400 ${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser.lib
1401 ${OPENCOLLADA}/lib/opencollada/xml.lib
1402 ${OPENCOLLADA}/lib/opencollada/buffer.lib
1403 ${OPENCOLLADA}/lib/opencollada/ftoa.lib
1407 list(APPEND OPENCOLLADA_LIBRARIES ${OPENCOLLADA}/lib/opencollada/UTF.lib)
1411 ${OPENCOLLADA}/lib/opencollada/pcre.lib
1415 if(WITH_CODEC_FFMPEG)
1416 set(FFMPEG_INCLUDE_DIRS
1417 ${LIBDIR}/ffmpeg/include
1418 ${LIBDIR}/ffmpeg/include/msvc
1420 find_package(FFMPEG)
1421 if(NOT FFMPEG_FOUND)
1422 message(WARNING "Using HARDCODED ffmpeg locations")
1423 set(FFMPEG_LIBRARY_VERSION 55)
1424 set(FFMPEG_LIBRARY_VERSION_AVU 52)
1425 set(FFMPEG_LIBRARIES
1426 ${LIBDIR}/ffmpeg/lib/avcodec-${FFMPEG_LIBRARY_VERSION}.lib
1427 ${LIBDIR}/ffmpeg/lib/avformat-${FFMPEG_LIBRARY_VERSION}.lib
1428 ${LIBDIR}/ffmpeg/lib/avdevice-${FFMPEG_LIBRARY_VERSION}.lib
1429 ${LIBDIR}/ffmpeg/lib/avutil-${FFMPEG_LIBRARY_VERSION_AVU}.lib
1430 ${LIBDIR}/ffmpeg/lib/swscale-2.lib
1435 if(WITH_IMAGE_OPENEXR)
1436 set(OPENEXR_ROOT_DIR ${LIBDIR}/openexr)
1437 set(OPENEXR_VERSION "2.1")
1438 find_package(OPENEXR REQUIRED)
1439 if(NOT OPENEXR_FOUND)
1440 message(WARNING "Using HARDCODED OpenEXR locations")
1441 set(OPENEXR ${LIBDIR}/openexr)
1442 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1443 set(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR}/include/OpenEXR)
1444 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1445 set(OPENEXR_LIBRARIES
1446 ${OPENEXR_LIBPATH}/Iex-2_2.lib
1447 ${OPENEXR_LIBPATH}/Half.lib
1448 ${OPENEXR_LIBPATH}/IlmImf-2_2.lib
1449 ${OPENEXR_LIBPATH}/Imath-2_2.lib
1450 ${OPENEXR_LIBPATH}/IlmThread-2_2.lib
1456 # Try to find tiff first then complain and set static and maybe wrong paths
1459 message(WARNING "Using HARDCODED libtiff locations")
1460 set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
1461 set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
1466 set(JACK_INCLUDE_DIRS
1467 ${LIBDIR}/jack/include/jack
1468 ${LIBDIR}/jack/include
1470 set(JACK_LIBRARIES optimized ${LIBDIR}/jack/lib/libjack.lib debug ${LIBDIR}/jack/lib/libjack_d.lib)
1474 set(PYTHON_VERSION 3.5) # CACHE STRING)
1476 string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1477 # Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs
1478 set(PYTHON_LIBRARY ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.lib)
1479 unset(_PYTHON_VERSION_NO_DOTS)
1481 # Shared includes for both vc2008 and vc2010
1482 set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION})
1485 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1486 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1491 set(boost_extra_libs wave)
1493 if(WITH_INTERNATIONAL)
1494 list(APPEND boost_extra_libs locale)
1497 list(APPEND boost_extra_libs iostreams)
1499 set(Boost_USE_STATIC_RUNTIME ON) # prefix lib
1500 set(Boost_USE_MULTITHREADED ON) # suffix -mt
1501 set(Boost_USE_STATIC_LIBS ON) # suffix -s
1502 find_package(Boost COMPONENTS date_time filesystem thread regex system ${boost_extra_libs})
1504 message(WARNING "USING HARDCODED boost locations")
1505 set(BOOST ${LIBDIR}/boost)
1506 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1508 set(BOOST_LIBPATH ${BOOST}/lib)
1509 set(BOOST_POSTFIX "vc120-mt-s-1_60.lib")
1510 set(BOOST_DEBUG_POSTFIX "vc120-mt-sgd-1_60.lib")
1512 set(BOOST_LIBPATH ${BOOST}/lib)
1513 set(BOOST_POSTFIX "vc140-mt-s-1_60.lib")
1514 set(BOOST_DEBUG_POSTFIX "vc140-mt-sgd-1_60.lib")
1517 optimized libboost_date_time-${BOOST_POSTFIX} optimized libboost_filesystem-${BOOST_POSTFIX}
1518 optimized libboost_regex-${BOOST_POSTFIX}
1519 optimized libboost_system-${BOOST_POSTFIX} optimized libboost_thread-${BOOST_POSTFIX}
1520 debug libboost_date_time-${BOOST_DEBUG_POSTFIX} debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
1521 debug libboost_regex-${BOOST_DEBUG_POSTFIX}
1522 debug libboost_system-${BOOST_DEBUG_POSTFIX} debug libboost_thread-${BOOST_DEBUG_POSTFIX})
1524 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1525 optimized libboost_wave-${BOOST_POSTFIX}
1526 debug libboost_wave-${BOOST_DEBUG_POSTFIX})
1528 if(WITH_INTERNATIONAL)
1529 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1530 optimized libboost_locale-${BOOST_POSTFIX}
1531 debug libboost_locale-${BOOST_DEBUG_POSTFIX})
1533 else() # we found boost using find_package
1534 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
1535 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
1536 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
1538 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1541 if(WITH_OPENIMAGEIO)
1542 find_package(OpenImageIO)
1543 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1544 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1545 set(OIIO_OPTIMIZED optimized OpenImageIO optimized OpenImageIO_Util)
1546 set(OIIO_DEBUG debug OpenImageIO_d debug OpenImageIO_Util_d)
1547 set(OPENIMAGEIO_LIBRARIES ${OIIO_OPTIMIZED} ${OIIO_DEBUG})
1548 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1549 set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0")
1550 set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD")
1551 set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe")
1552 add_definitions(-DOIIO_STATIC_BUILD)
1556 set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1557 file(GLOB LLVM_LIBRARY_OPTIMIZED ${LLVM_ROOT_DIR}/lib/*.lib)
1559 if(EXISTS ${LLVM_ROOT_DIR}/debug/lib)
1560 foreach(LLVM_OPTIMIZED_LIB ${LLVM_LIBRARY_OPTIMIZED})
1561 get_filename_component(LIBNAME ${LLVM_OPTIMIZED_LIB} ABSOLUTE)
1562 list(APPEND LLVM_LIBS optimized ${LIBNAME})
1563 endforeach(LLVM_OPTIMIZED_LIB)
1565 file(GLOB LLVM_LIBRARY_DEBUG ${LLVM_ROOT_DIR}/debug/lib/*.lib)
1567 foreach(LLVM_DEBUG_LIB ${LLVM_LIBRARY_DEBUG})
1568 get_filename_component(LIBNAME ${LLVM_DEBUG_LIB} ABSOLUTE)
1569 list(APPEND LLVM_LIBS debug ${LIBNAME})
1570 endforeach(LLVM_DEBUG_LIB)
1572 set(LLVM_LIBRARY ${LLVM_LIBS})
1574 message(WARNING "LLVM debug libs not present on this system. Using release libs for debug builds.")
1575 set(LLVM_LIBRARY ${LLVM_LIBRARY_OPTIMIZED})
1580 if(WITH_OPENCOLORIO)
1581 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1582 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1583 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1584 set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
1585 set(OPENCOLORIO_DEFINITIONS)
1589 set(BLOSC_LIBRARIES ${LIBDIR}/blosc/lib/libblosc.lib)
1590 set(TBB_LIBRARIES ${LIBDIR}/tbb/lib/tbb.lib)
1591 set(TBB_INCLUDE_DIR ${LIBDIR}/tbb/include)
1592 set(OPENVDB ${LIBDIR}/openvdb)
1593 set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include ${TBB_INCLUDE_DIR})
1594 set(OPENVDB_LIBRARIES openvdb ${TBB_LIBRARIES} ${BLOSC_LIBRARIES})
1595 set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
1598 if(WITH_MOD_CLOTH_ELTOPO)
1599 set(LAPACK ${LIBDIR}/lapack)
1600 # set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
1601 set(LAPACK_LIBPATH ${LAPACK}/lib)
1602 set(LAPACK_LIBRARIES
1603 ${LIBDIR}/lapack/lib/libf2c.lib
1604 ${LIBDIR}/lapack/lib/clapack_nowrap.lib
1605 ${LIBDIR}/lapack/lib/BLAS_nowrap.lib
1610 set(OPENSUBDIV_INCLUDE_DIR ${LIBDIR}/opensubdiv/include)
1611 set(OPENSUBDIV_LIBPATH ${LIBDIR}/opensubdiv/lib)
1612 set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBPATH}/osdCPU.lib ${OPENSUBDIV_LIBPATH}/osdGPU.lib)
1613 find_package(OpenSubdiv)
1617 set(SDL ${LIBDIR}/sdl)
1618 set(SDL_INCLUDE_DIR ${SDL}/include)
1619 set(SDL_LIBPATH ${SDL}/lib)
1620 # MinGW TODO: Update MinGW to SDL2
1621 if(NOT CMAKE_COMPILER_IS_GNUCC)
1622 set(SDL_LIBRARY SDL2)
1624 set(SDL_LIBRARY SDL)
1629 if(WITH_SYSTEM_AUDASPACE)
1630 set(AUDASPACE_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
1631 set(AUDASPACE_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace.lib)
1632 set(AUDASPACE_C_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
1633 set(AUDASPACE_C_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-c.lib)
1634 set(AUDASPACE_PY_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
1635 set(AUDASPACE_PY_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-py.lib)
1638 # used in many places so include globally, like OpenGL
1639 blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
1641 elseif(CMAKE_COMPILER_IS_GNUCC)
1642 # keep GCC specific stuff here
1643 include(CheckCSourceCompiles)
1644 # Setup 64bit and 64bit windows systems
1645 CHECK_C_SOURCE_COMPILES("
1649 int main(void) { return 0; }
1653 if(NOT DEFINED LIBDIR)
1655 message(STATUS "Compiling for 64 bit with MinGW-w64.")
1656 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
1658 message(STATUS "Compiling for 32 bit with MinGW-w32.")
1659 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
1661 if(WITH_RAYOPTIMIZATION)
1662 message(WARNING "MinGW-w32 is known to be unstable with 'WITH_RAYOPTIMIZATION' option enabled.")
1666 message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
1668 if(NOT EXISTS "${LIBDIR}/")
1669 message(FATAL_ERROR "Windows requires pre-compiled libs at: '${LIBDIR}'")
1672 list(APPEND PLATFORM_LINKLIBS -lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi -ldbghelp)
1675 list(APPEND PLATFORM_LINKLIBS -limm32)
1678 set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
1681 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
1682 list(APPEND PLATFORM_LINKLIBS -lpthread)
1684 add_definitions(-DFREE_WINDOWS64 -DMS_WIN64)
1687 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1689 add_definitions(-DFREE_WINDOWS)
1691 set(PNG "${LIBDIR}/png")
1692 set(PNG_INCLUDE_DIRS "${PNG}/include")
1693 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1696 set(JPEG_LIBRARIES jpeg)
1698 set(JPEG_LIBRARIES libjpeg)
1700 set(PNG_LIBRARIES png)
1702 set(ZLIB ${LIBDIR}/zlib)
1703 set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
1704 set(ZLIB_LIBPATH ${ZLIB}/lib)
1705 set(ZLIB_LIBRARIES z)
1707 set(JPEG "${LIBDIR}/jpeg")
1708 set(JPEG_INCLUDE_DIR "${JPEG}/include")
1709 set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
1711 # comes with own pthread library
1712 if(NOT WITH_MINGW64)
1713 set(PTHREADS ${LIBDIR}/pthreads)
1714 #set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
1715 set(PTHREADS_LIBPATH ${PTHREADS}/lib)
1716 set(PTHREADS_LIBRARIES pthreadGC2)
1719 set(FREETYPE ${LIBDIR}/freetype)
1720 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1721 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1722 set(FREETYPE_LIBRARY freetype)
1725 set(FFTW3 ${LIBDIR}/fftw3)
1726 set(FFTW3_LIBRARIES fftw3)
1727 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1728 set(FFTW3_LIBPATH ${FFTW3}/lib)
1731 if(WITH_OPENCOLLADA)
1732 set(OPENCOLLADA ${LIBDIR}/opencollada)
1733 set(OPENCOLLADA_INCLUDE_DIRS
1734 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1735 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1736 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1737 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1738 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1740 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib/opencollada)
1741 set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver buffer ftoa xml)
1742 set(PCRE_LIBRARIES pcre)
1745 if(WITH_CODEC_FFMPEG)
1746 set(FFMPEG ${LIBDIR}/ffmpeg)
1747 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1749 set(FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll)
1751 set(FFMPEG_LIBRARIES avcodec-55 avformat-55 avdevice-55 avutil-52 swscale-2)
1753 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1756 if(WITH_IMAGE_OPENEXR)
1757 set(OPENEXR ${LIBDIR}/openexr)
1758 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1759 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1760 set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex)
1761 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1765 set(TIFF ${LIBDIR}/tiff)
1766 set(TIFF_LIBRARY tiff)
1767 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1768 set(TIFF_LIBPATH ${TIFF}/lib)
1772 set(JACK ${LIBDIR}/jack)
1773 set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include)
1774 set(JACK_LIBRARIES jack)
1775 set(JACK_LIBPATH ${JACK}/lib)
1777 # TODO, gives linking errors, force off
1782 # normally cached but not since we include them with blender
1783 set(PYTHON_VERSION 3.5) # CACHE STRING)
1784 string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1785 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}") # CACHE PATH)
1786 set(PYTHON_LIBRARY "${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}mw.lib") # CACHE FILEPATH)
1787 unset(_PYTHON_VERSION_NO_DOTS)
1790 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1791 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1795 set(BOOST ${LIBDIR}/boost)
1796 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1798 set(BOOST_POSTFIX "mgw47-mt-s-1_49")
1799 set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
1801 set(BOOST_POSTFIX "mgw46-mt-s-1_49")
1802 set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49")
1805 optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX}
1806 boost_regex-${BOOST_POSTFIX}
1807 boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX}
1808 debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
1809 boost_regex-${BOOST_DEBUG_POSTFIX}
1810 boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
1811 if(WITH_INTERNATIONAL)
1812 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1813 optimized boost_locale-${BOOST_POSTFIX}
1814 debug boost_locale-${BOOST_DEBUG_POSTFIX})
1817 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1818 optimized boost_wave-${BOOST_POSTFIX}
1819 debug boost_wave-${BOOST_DEBUG_POSTFIX})
1821 set(BOOST_LIBPATH ${BOOST}/lib)
1822 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
1825 if(WITH_OPENIMAGEIO)
1826 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1827 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1828 set(OPENIMAGEIO_LIBRARIES OpenImageIO)
1829 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1830 set(OPENIMAGEIO_DEFINITIONS "")
1831 set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe")
1835 set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1836 set(LLVM_LIBPATH ${LLVM_ROOT_DIR}/lib)
1837 # Explicitly set llvm lib order.
1838 #---- WARNING ON GCC ORDER OF LIBS IS IMPORTANT, DO NOT CHANGE! ---------
1839 set(LLVM_LIBRARY LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMAnalysis LLVMArchive
1840 LLVMAsmParser LLVMAsmPrinter
1841 LLVMBitReader LLVMBitWriter
1842 LLVMDebugInfo LLVMExecutionEngine
1843 LLVMInstCombine LLVMInstrumentation
1844 LLVMInterpreter LLVMJIT
1846 LLVMMCDisassembler LLVMMCJIT
1847 LLVMMCParser LLVMObject
1850 LLVMTableGen LLVMTarget
1851 LLVMTransformUtils LLVMVectorize
1852 LLVMX86AsmParser LLVMX86AsmPrinter
1853 LLVMX86CodeGen LLVMX86Desc
1854 LLVMX86Disassembler LLVMX86Info
1855 LLVMX86Utils LLVMipa
1857 # imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
1858 list(APPEND PLATFORM_LINKLIBS -limagehlp)
1861 if(WITH_OPENCOLORIO)
1862 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1863 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1864 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1865 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1866 set(OPENCOLORIO_DEFINITIONS)
1870 set(SDL ${LIBDIR}/sdl)
1871 set(SDL_INCLUDE_DIR ${SDL}/include)
1872 set(SDL_LIBRARY SDL)
1873 set(SDL_LIBPATH ${SDL}/lib)
1877 set(OPENVDB ${LIBDIR}/openvdb)
1878 set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include)
1879 set(OPENVDB_LIBRARIES openvdb ${TBB_LIBRARIES})
1880 set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
1881 set(OPENVDB_DEFINITIONS)
1884 set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
1886 ## DISABLE - causes linking errors
1887 ## for re-distribution, so users dont need mingw installed
1888 # set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
1892 # Things common to both mingw and MSVC should go here
1894 set(WINTAB_INC ${LIBDIR}/wintab/include)
1897 set(OPENAL ${LIBDIR}/openal)
1898 set(OPENALDIR ${LIBDIR}/openal)
1899 set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
1901 set(OPENAL_LIBRARY openal32)
1903 set(OPENAL_LIBRARY wrap_oal)
1905 set(OPENAL_LIBPATH ${OPENAL}/lib)
1908 if(WITH_CODEC_SNDFILE)
1909 set(SNDFILE ${LIBDIR}/sndfile)
1910 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1911 set(SNDFILE_LIBRARIES libsndfile-1)
1912 set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
1915 if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
1916 add_definitions(-D__SSE__ -D__MMX__)
1920 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1922 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1923 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1924 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1925 find_library(OSL_LIB_EXEC_DEBUG NAMES oslexec_d PATHS ${CYCLES_OSL}/lib)
1926 find_library(OSL_LIB_COMP_DEBUG NAMES oslcomp_d PATHS ${CYCLES_OSL}/lib)
1927 find_library(OSL_LIB_QUERY_DEBUG NAMES oslquery_d PATHS ${CYCLES_OSL}/lib)
1928 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})
1929 find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1930 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1932 if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
1935 message(STATUS "OSL not found")
1936 set(WITH_CYCLES_OSL OFF)
1942 if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5")
1943 set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/7/8/9
1946 if(NOT DEFINED LIBDIR)
1948 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
1950 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1951 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
1953 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
1957 message(STATUS "Using pre-compiled LIBDIR: ${LIBDIR}")
1959 if(NOT EXISTS "${LIBDIR}/")
1960 message(FATAL_ERROR "Mac OSX requires pre-compiled libs at: '${LIBDIR}'")
1964 find_package(OpenAL)
1967 set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
1969 set(WITH_OPENAL OFF)
1974 set(OPENSUBDIV ${LIBDIR}/opensubdiv)
1975 set(OPENSUBDIV_LIBPATH ${OPENSUBDIV}/lib)
1976 find_library(OSL_LIB_UTIL NAMES osdutil PATHS ${OPENSUBDIV_LIBPATH})
1977 find_library(OSL_LIB_CPU NAMES osdCPU PATHS ${OPENSUBDIV_LIBPATH})
1978 find_library(OSL_LIB_GPU NAMES osdGPU PATHS ${OPENSUBDIV_LIBPATH})
1979 set(OPENSUBDIV_INCLUDE_DIR ${OPENSUBDIV}/include)
1980 set(OPENSUBDIV_INCLUDE_DIRS ${OPENSUBDIV_INCLUDE_DIR})
1981 list(APPEND OPENSUBDIV_LIBRARIES ${OSL_LIB_UTIL} ${OSL_LIB_CPU} ${OSL_LIB_GPU})
1985 find_library(JACK_FRAMEWORK
1988 set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
1989 if(NOT JACK_FRAMEWORK)
1994 if(WITH_CODEC_SNDFILE)
1995 set(SNDFILE ${LIBDIR}/sndfile)
1996 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1997 set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
1998 set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) # TODO, deprecate
2002 # we use precompiled libraries for py 3.5 and up by default
2003 set(PYTHON_VERSION 3.5)
2004 if(NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK)
2005 # normally cached but not since we include them with blender
2006 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
2007 set(PYTHON_EXECUTABLE "${LIBDIR}/python/bin/python${PYTHON_VERSION}m")
2008 set(PYTHON_LIBRARY python${PYTHON_VERSION}m)
2009 set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
2010 # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
2012 # module must be compiled against Python framework
2013 set(PYTHON_INCLUDE_DIR "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}m")
2014 set(PYTHON_EXECUTABLE "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}m")
2015 #set(PYTHON_LIBRARY python${PYTHON_VERSION})
2016 set(PYTHON_LIBPATH "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m")
2017 #set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled
2021 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
2022 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
2024 if(NOT EXISTS "${PYTHON_EXECUTABLE}")
2025 message(FATAL_ERROR "Python executable missing: ${PYTHON_EXECUTABLE}")
2030 set(FFTW3 ${LIBDIR}/fftw3)
2031 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
2032 set(FFTW3_LIBRARIES fftw3)
2033 set(FFTW3_LIBPATH ${FFTW3}/lib)
2036 set(PNG_LIBRARIES png)
2037 set(JPEG_LIBRARIES jpeg)
2040 set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
2041 set(ZLIB_LIBRARIES z bz2)
2043 set(FREETYPE ${LIBDIR}/freetype)
2044 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
2045 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
2046 set(FREETYPE_LIBRARY freetype)
2048 if(WITH_IMAGE_OPENEXR)
2049 set(OPENEXR ${LIBDIR}/openexr)
2050 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
2051 set(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR}/include/OpenEXR)
2052 set(OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread)
2053 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
2056 if(WITH_CODEC_FFMPEG)
2057 set(FFMPEG ${LIBDIR}/ffmpeg)
2058 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
2059 set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
2060 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
2063 find_library(SYSTEMSTUBS_LIBRARY
2068 mark_as_advanced(SYSTEMSTUBS_LIBRARY)
2069 if(SYSTEMSTUBS_LIBRARY)
2070 list(APPEND PLATFORM_LINKLIBS stdc++ SystemStubs)
2072 list(APPEND PLATFORM_LINKLIBS stdc++)
2075 set(PLATFORM_CFLAGS "-pipe -funsigned-char")
2076 set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
2077 if(WITH_CODEC_QUICKTIME)
2078 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
2079 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
2080 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
2081 # libSDL still needs 32bit carbon quicktime
2085 # XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
2086 # ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
2088 # This thread it *should* work and check the framework - campbell
2089 # http://www.cmake.org/pipermail/cmake/2005-December/007740.html
2090 find_library(3DCONNEXION_CLIENT_FRAMEWORK
2091 NAMES 3DconnexionClient
2093 if(NOT 3DCONNEXION_CLIENT_FRAMEWORK)
2094 set(WITH_INPUT_NDOF OFF)
2098 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework 3DconnexionClient")
2099 set(NDOF_INCLUDE_DIRS /Library/Frameworks/3DconnexionClient.framework/Headers )
2104 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework jackmp")
2107 if(WITH_PYTHON_MODULE OR WITH_PYTHON_FRAMEWORK)
2108 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python")# force cmake to link right framework
2111 if(WITH_OPENCOLLADA)
2112 set(OPENCOLLADA ${LIBDIR}/opencollada)
2114 set(OPENCOLLADA_INCLUDE_DIRS
2115 ${LIBDIR}/opencollada/include/COLLADAStreamWriter
2116 ${LIBDIR}/opencollada/include/COLLADABaseUtils
2117 ${LIBDIR}/opencollada/include/COLLADAFramework
2118 ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
2119 ${LIBDIR}/opencollada/include/GeneratedSaxParser
2122 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
2123 set(OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lxml2 -lbuffer -lftoa")
2124 # Use UTF functions from collada if LLVM is not enabled
2126 set(OPENCOLLADA_LIBRARIES "${OPENCOLLADA_LIBRARIES} -lUTF")
2128 # pcre is bundled with openCollada
2129 #set(PCRE ${LIBDIR}/pcre)
2130 #set(PCRE_LIBPATH ${PCRE}/lib)
2131 set(PCRE_LIBRARIES pcre)
2133 #set(EXPAT ${LIBDIR}/expat)
2134 #set(EXPAT_LIBPATH ${EXPAT}/lib)
2139 set(SDL ${LIBDIR}/sdl)
2140 set(SDL_INCLUDE_DIR ${SDL}/include)
2141 set(SDL_LIBRARY SDL2)
2142 set(SDL_LIBPATH ${SDL}/lib)
2143 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -lazy_framework ForceFeedback")
2146 set(PNG "${LIBDIR}/png")
2147 set(PNG_INCLUDE_DIRS "${PNG}/include")
2148 set(PNG_LIBPATH ${PNG}/lib)
2150 set(JPEG "${LIBDIR}/jpeg")
2151 set(JPEG_INCLUDE_DIR "${JPEG}/include")
2152 set(JPEG_LIBPATH ${JPEG}/lib)
2155 set(TIFF ${LIBDIR}/tiff)
2156 set(TIFF_INCLUDE_DIR ${TIFF}/include)
2157 set(TIFF_LIBRARY tiff)
2158 set(TIFF_LIBPATH ${TIFF}/lib)
2162 # linker needs "-weak_framework 3DconnexionClient"
2166 set(BOOST ${LIBDIR}/boost)
2167 set(BOOST_INCLUDE_DIR ${BOOST}/include)
2168 set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt boost_wave-mt)
2169 if(WITH_INTERNATIONAL)
2170 list(APPEND BOOST_LIBRARIES boost_locale-mt)
2172 if(WITH_CYCLES_NETWORK)
2173 list(APPEND BOOST_LIBRARIES boost_serialization-mt)
2176 list(APPEND BOOST_LIBRARIES boost_iostreams-mt)
2178 set(BOOST_LIBPATH ${BOOST}/lib)
2179 set(BOOST_DEFINITIONS)
2182 if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG)
2183 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale and ffmpeg needs it !
2186 if(WITH_OPENIMAGEIO)
2187 set(OPENIMAGEIO ${LIBDIR}/openimageio)
2188 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
2189 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO}/lib/libOpenImageIO.a ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
2190 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
2191 set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
2192 set(OPENIMAGEIO_IDIFF "${LIBDIR}/openimageio/bin/idiff")
2195 if(WITH_OPENCOLORIO)
2196 set(OPENCOLORIO ${LIBDIR}/opencolorio)
2197 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
2198 set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
2199 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
2203 set(OPENVDB ${LIBDIR}/openvdb)
2204 set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include)
2205 set(TBB_INCLUDE_DIRS ${LIBDIR}/tbb/include)
2206 set(TBB_LIBRARIES ${LIBDIR}/tbb/lib/libtbb.a)
2207 set(OPENVDB_LIBRARIES openvdb blosc ${TBB_LIBRARIES})
2208 set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
2209 set(OPENVDB_DEFINITIONS)
2213 set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
2214 set(LLVM_VERSION "3.4" CACHE STRING "Version of LLVM to use")
2215 if(EXISTS "${LLVM_ROOT_DIR}/bin/llvm-config")
2216 set(LLVM_CONFIG "${LLVM_ROOT_DIR}/bin/llvm-config")
2218 set(LLVM_CONFIG llvm-config)
2220 execute_process(COMMAND ${LLVM_CONFIG} --version
2221 OUTPUT_VARIABLE LLVM_VERSION
2222 OUTPUT_STRIP_TRAILING_WHITESPACE)
2223 execute_process(COMMAND ${LLVM_CONFIG} --prefix
2224 OUTPUT_VARIABLE LLVM_ROOT_DIR
2225 OUTPUT_STRIP_TRAILING_WHITESPACE)
2226 execute_process(COMMAND ${LLVM_CONFIG} --libdir
2227 OUTPUT_VARIABLE LLVM_LIBPATH
2228 OUTPUT_STRIP_TRAILING_WHITESPACE)
2229 find_library(LLVM_LIBRARY
2230 NAMES LLVMAnalysis # first of a whole bunch of libs to get
2231 PATHS ${LLVM_LIBPATH})
2233 if(LLVM_LIBRARY AND LLVM_ROOT_DIR AND LLVM_LIBPATH)
2235 # if static LLVM libraries were requested, use llvm-config to generate
2236 # the list of what libraries we need, and substitute that in the right
2237 # way for LLVM_LIBRARY.
2238 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
2239 OUTPUT_VARIABLE LLVM_LIBRARY
2240 OUTPUT_STRIP_TRAILING_WHITESPACE)
2241 string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
2243 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -lLLVM-3.4")
2246 message(FATAL_ERROR "LLVM not found.")
2251 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
2253 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
2254 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
2255 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
2256 # WARNING! depends on correct order of OSL libs linking
2257 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
2258 find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
2259 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
2261 if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
2264 message(STATUS "OSL not found")
2265 set(WITH_CYCLES_OSL OFF)
2270 execute_process(COMMAND ${CMAKE_C_COMPILER} --version OUTPUT_VARIABLE COMPILER_VENDOR)
2271 string(SUBSTRING "${COMPILER_VENDOR}" 0 5 VENDOR_NAME) # truncate output
2272 if(${VENDOR_NAME} MATCHES "Apple") # Apple does not support OpenMP reliable with gcc and not with clang
2273 set(WITH_OPENMP OFF)
2274 else() # vanilla gcc or clang_omp support OpenMP
2275 message(STATUS "Using special OpenMP enabled compiler !") # letting find_package(OpenMP) module work for gcc
2276 if(CMAKE_C_COMPILER_ID MATCHES "Clang") # clang-omp in darwin libs
2277 set(OPENMP_FOUND ON)
2278 set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "C compiler flags for OpenMP parallization" FORCE)
2279 set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "C++ compiler flags for OpenMP parallization" FORCE)
2280 include_directories(${LIBDIR}/openmp/include)
2281 link_directories(${LIBDIR}/openmp/lib)
2282 # This is a workaround for our helperbinaries ( datatoc, masgfmt, ... ),
2283 # They are linked also to omp lib, so we need it in builddir for runtime exexcution, TODO: remove all unneeded dependencies from these
2284 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
2289 set(EXETYPE MACOSX_BUNDLE)
2291 set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
2292 set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
2293 if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386")
2294 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
2295 set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
2296 if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang")
2297 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
2298 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
2301 set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
2302 set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
2305 if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5)
2306 # Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv
2307 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024")
2309 # Get rid of eventually clashes, we export some symbols explicite as local
2310 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Xlinker -unexported_symbols_list -Xlinker ${CMAKE_SOURCE_DIR}/source/creator/osx_locals.map")
2313 #-----------------------------------------------------------------------------
2316 if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
2317 message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
2321 if(NOT WITH_OPENIMAGEIO)
2322 message(FATAL_ERROR "Cycles requires WITH_OPENIMAGEIO, the library may not have been found. Configure OIIO or disable WITH_CYCLES")
2325 message(FATAL_ERROR "Cycles requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES")
2330 message(FATAL_ERROR "Cycles OSL requires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL")
2335 if(WITH_INTERNATIONAL)
2337 message(FATAL_ERROR "Internationalization requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL")
2341 # See TEST_SSE_SUPPORT() for how this is defined.
2343 if(WITH_RAYOPTIMIZATION)
2344 if(SUPPORT_SSE_BUILD)
2345 set(PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}")
2346 add_definitions(-D__SSE__ -D__MMX__)
2348 if(SUPPORT_SSE2_BUILD)
2349 set(PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}")
2350 add_definitions(-D__SSE2__)
2351 if(NOT SUPPORT_SSE_BUILD) # dont double up
2352 add_definitions(-D__MMX__)
2358 # set the endian define
2360 # for some reason this fails on msvc
2361 add_definitions(-D__LITTLE_ENDIAN__)
2363 # OSX-Note: as we do crosscompiling with specific set architecture,
2364 # endianess-detection and autosetting is counterproductive
2365 # so we just set endianess according CMAKE_OSX_ARCHITECTURES
2367 elseif(CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
2368 add_definitions(-D__LITTLE_ENDIAN__)
2369 elseif(CMAKE_OSX_ARCHITECTURES MATCHES ppc OR CMAKE_OSX_ARCHITECTURES MATCHES ppc64)
2370 add_definitions(-D__BIG_ENDIAN__)
2373 include(TestBigEndian)
2374 test_big_endian(_SYSTEM_BIG_ENDIAN)
2375 if(_SYSTEM_BIG_ENDIAN)
2376 add_definitions(-D__BIG_ENDIAN__)
2378 add_definitions(-D__LITTLE_ENDIAN__)
2380 unset(_SYSTEM_BIG_ENDIAN)
2384 if(WITH_IMAGE_OPENJPEG)
2385 if(WITH_SYSTEM_OPENJPEG)
2387 set(OPENJPEG_DEFINES "")
2389 set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg")
2390 set(OPENJPEG_DEFINES "-DOPJ_STATIC")
2392 # Special handling of Windows platform where openjpeg is always static.
2394 set(OPENJPEG_DEFINES "-DOPJ_STATIC")
2398 if(NOT WITH_SYSTEM_EIGEN3)
2399 set(EIGEN3_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/Eigen3)
2402 #-----------------------------------------------------------------------------
2405 find_package(OpenGL)
2406 blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}")
2409 list(APPEND BLENDER_GL_LIBRARIES "${OPENGL_glu_LIBRARY}")
2410 list(APPEND GL_DEFINITIONS -DWITH_GLU)
2413 if(WITH_SYSTEM_GLES)
2414 find_package_wrapper(OpenGLES)
2417 if(WITH_GL_PROFILE_COMPAT OR WITH_GL_PROFILE_CORE)
2418 list(APPEND BLENDER_GL_LIBRARIES "${OPENGL_gl_LIBRARY}")
2420 elseif(WITH_GL_PROFILE_ES20)
2421 if(WITH_SYSTEM_GLES)
2422 if(NOT OPENGLES_LIBRARY)
2423 message(FATAL_ERROR "Unable to find OpenGL ES libraries. Install them or disable WITH_SYSTEM_GLES.")
2426 list(APPEND BLENDER_GL_LIBRARIES OPENGLES_LIBRARY)
2429 set(OPENGLES_LIBRARY "" CACHE FILEPATH "OpenGL ES 2.0 library file")
2430 mark_as_advanced(OPENGLES_LIBRARY)
2432 list(APPEND BLENDER_GL_LIBRARIES "${OPENGLES_LIBRARY}")
2434 if(NOT OPENGLES_LIBRARY)
2435 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.")
2441 # Setup paths to files needed to install and redistribute Windows Blender with OpenGL ES
2443 set(OPENGLES_DLL "" CACHE FILEPATH "OpenGL ES 2.0 redistributable DLL file")
2444 mark_as_advanced(OPENGLES_DLL)
2446 if(NOT OPENGLES_DLL)
2447 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).")
2451 list(APPEND GL_DEFINITIONS -DWITH_ANGLE)
2453 set(D3DCOMPILER_DLL "" CACHE FILEPATH "Direct3D Compiler redistributable DLL file (needed by ANGLE)")
2455 get_filename_component(D3DCOMPILER_FILENAME "${D3DCOMPILER_DLL}" NAME)
2456 list(APPEND GL_DEFINITIONS "-DD3DCOMPILER=\"\\\"${D3DCOMPILER_FILENAME}\\\"\"")
2458 mark_as_advanced(D3DCOMPILER_DLL)
2460 if(D3DCOMPILER_DLL STREQUAL "")
2461 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")
2471 list(APPEND GL_DEFINITIONS -DWITH_GL_EGL)
2473 if(WITH_SYSTEM_GLES)
2474 if(NOT OPENGLES_EGL_LIBRARY)
2475 message(FATAL_ERROR "Unable to find OpenGL ES libraries. Install them or disable WITH_SYSTEM_GLES.")
2478 list(APPEND BLENDER_GL_LIBRARIES OPENGLES_EGL_LIBRARY)
2481 set(OPENGLES_EGL_LIBRARY "" CACHE FILEPATH "EGL library file")
2482 mark_as_advanced(OPENGLES_EGL_LIBRARY)
2484 list(APPEND BLENDER_GL_LIBRARIES "${OPENGLES_LIBRARY}" "${OPENGLES_EGL_LIBRARY}")
2486 if(NOT OPENGLES_EGL_LIBRARY)
2487 message(FATAL_ERROR "To compile WITH_GL_EGL you need to set OPENGLES_EGL_LIBRARY to the file path of an EGL library.")
2493 # Setup paths to files needed to install and redistribute Windows Blender with OpenGL ES
2495 set(OPENGLES_EGL_DLL "" CACHE FILEPATH "EGL redistributable DLL file")
2496 mark_as_advanced(OPENGLES_EGL_DLL)
2498 if(NOT OPENGLES_EGL_DLL)
2499 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).")
2506 if(WITH_GL_PROFILE_COMPAT)
2507 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_COMPAT)
2510 if(WITH_GL_PROFILE_CORE)
2511 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_CORE)
2514 if(WITH_GL_PROFILE_ES20)
2515 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_ES20)
2519 list(APPEND GL_DEFINITIONS -DWITH_EGL)
2522 #-----------------------------------------------------------------------------
2525 find_package(OpenMP)
2527 if(NOT WITH_OPENMP_STATIC)
2528 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
2529 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
2531 # Typically avoid adding flags as defines but we can't
2532 # pass OpenMP flags to the linker for static builds, meaning
2533 # we can't add any OpenMP related flags to CFLAGS variables
2534 # since they're passed to the linker as well.
2535 add_definitions("${OpenMP_C_FLAGS}")
2537 find_library_static(OpenMP_LIBRARIES gomp ${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES})
2540 set(WITH_OPENMP OFF)
2549 #-----------------------------------------------------------------------------
2553 list(APPEND GL_DEFINITIONS -DWITH_GLEW_MX)
2556 if(WITH_SYSTEM_GLEW)
2559 # Note: There is an assumption here that the system GLEW is not a static library.
2562 message(FATAL_ERROR "GLEW is required to build Blender. Install it or disable WITH_SYSTEM_GLEW.")
2566 set(BLENDER_GLEW_LIBRARIES ${GLEW_MX_LIBRARY})
2568 set(BLENDER_GLEW_LIBRARIES ${GLEW_LIBRARY})
2572 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew-es/include")
2574 list(APPEND GL_DEFINITIONS -DGLEW_STATIC -DWITH_GLEW_ES)
2576 # These definitions remove APIs from glew.h, making GLEW smaller, and catching unguarded API usage
2577 if(NOT WITH_GL_PROFILE_ES20)
2578 # No ES functions are needed
2579 list(APPEND GL_DEFINITIONS -DGLEW_NO_ES)
2580 elseif(NOT (WITH_GL_PROFILE_CORE OR WITH_GL_PROFILE_COMPAT))
2581 # ES is enabled, but the other functions are all disabled
2582 list(APPEND GL_DEFINITIONS -DGLEW_ES_ONLY)
2585 if(WITH_GL_PROFILE_ES20)
2587 list(APPEND GL_DEFINITIONS -DGLEW_USE_LIB_ES20)
2590 # ToDo: This is an experiment to eliminate ES 1 symbols,
2591 # GLEW doesn't really properly provide this level of control
2592 # (for example, without modification it eliminates too many symbols)
2593 # so there are lots of modifications to GLEW to make this work,
2594 # and no attempt to make it work beyond Blender at this point.
2595 list(APPEND GL_DEFINITIONS -DGL_ES_VERSION_1_0=0 -DGL_ES_VERSION_CL_1_1=0 -DGL_ES_VERSION_CM_1_1=0)
2599 list(APPEND GL_DEFINITIONS -DGLEW_INC_EGL)
2602 set(BLENDER_GLEW_LIBRARIES extern_glew_es bf_intern_glew_mx)
2605 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
2607 list(APPEND GL_DEFINITIONS -DGLEW_STATIC)
2609 # This won't affect the non-experimental glew library,
2610 # but is used for conditional compilation elsewhere.
2611 list(APPEND GL_DEFINITIONS -DGLEW_NO_ES)
2613 set(BLENDER_GLEW_LIBRARIES extern_glew)
2620 list(APPEND GL_DEFINITIONS -DGLEW_NO_GLU)
2623 #-----------------------------------------------------------------------------
2626 if(WITH_BULLET AND WITH_SYSTEM_BULLET)
2627 find_package(Bullet)
2628 if(NOT BULLET_FOUND)
2629 set(WITH_BULLET OFF)
2632 set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
2633 # set(BULLET_LIBRARIES "")
2636 #-----------------------------------------------------------------------------
2639 if(WITH_PYTHON_MODULE)
2640 add_definitions(-DPy_ENABLE_SHARED)
2643 #-----------------------------------------------------------------------------
2644 # Configure GLog/GFlags
2646 if(WITH_LIBMV OR WITH_GTESTS OR (WITH_CYCLES AND WITH_CYCLES_LOGGING))
2648 -DGOOGLE_GLOG_DLL_DECL=
2652 -DGFLAGS_DLL_DEFINE_FLAG=
2653 -DGFLAGS_DLL_DECLARE_FLAG=
2658 #-----------------------------------------------------------------------------
2664 if(SHARED_PTR_FOUND)
2665 if(SHARED_PTR_TR1_MEMORY_HEADER)
2666 list(APPEND CERES_DEFINES -DCERES_TR1_MEMORY_HEADER)
2668 if(SHARED_PTR_TR1_NAMESPACE)
2669 list(APPEND CERES_DEFINES -DCERES_TR1_SHARED_PTR)
2672 message(FATAL_ERROR "Ceres: Unable to find shared_ptr.")
2675 if(HAVE_STD_UNORDERED_MAP_HEADER)
2676 if(HAVE_UNORDERED_MAP_IN_STD_NAMESPACE)
2677 list(APPEND CERES_DEFINES -DCERES_STD_UNORDERED_MAP)
2679 if(HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE)
2680 list(APPEND CERES_DEFINES -DCERES_STD_UNORDERED_MAP_IN_TR1_NAMESPACE)
2682 list(APPEND CERES_DEFINES -DCERES_NO_UNORDERED_MAP)
2683 message(STATUS "Ceres: Replacing unordered_map/set with map/set (warning: slower!)")
2687 if(HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE)
2688 list(APPEND CERES_DEFINES -DCERES_TR1_UNORDERED_MAP)
2690 list(APPEND CERES_DEFINES -DCERES_NO_UNORDERED_MAP)
2691 message(STATUS "Ceres: Replacing unordered_map/set with map/set (warning: slower!)")
2696 #-----------------------------------------------------------------------------
2697 # Extra compile flags
2699 if(CMAKE_COMPILER_IS_GNUCC)
2701 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2702 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_CAST_ALIGN -Wcast-align)
2703 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2704 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2705 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_VLA -Werror=vla)
2706 # system headers sometimes do this, disable for now, was: -Werror=strict-prototypes
2707 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2708 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2709 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2710 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2711 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2712 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2713 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_WRITE_STRINGS -Wwrite-strings)
2714 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_LOGICAL_OP -Wlogical-op)
2715 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNDEF -Wundef)
2716 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2717 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_NULL -Wnonnull) # C only
2718 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2719 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2720 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_TYPE_LIMITS -Wtype-limits)
2721 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_FORMAT_SIGN -Wformat-signedness)
2723 # gcc 4.2 gives annoying warnings on every file with this
2724 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2725 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNINITIALIZED -Wuninitialized)
2728 # versions before gcc4.6 give many BLI_math warnings
2729 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.6")
2730 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_REDUNDANT_DECLS -Wredundant-decls)
2731 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_REDUNDANT_DECLS -Wredundant-decls)
2734 # versions before gcc4.8 include global name-space.
2735 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.8")
2736 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_SHADOW -Wshadow)
2739 # disable because it gives warnings for printf() & friends.
2740 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_DOUBLE_PROMOTION -Wdouble-promotion -Wno-error=double-promotion)
2743 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2746 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2747 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2748 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2749 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_LOGICAL_OP -Wlogical-op)
2750 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2751 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2752 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2753 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_TYPE_LIMITS -Wtype-limits)
2754 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2755 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2756 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2757 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2758 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_POINTER_ARITH -Wpointer-arith)
2759 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_PARAMETER -Wunused-parameter)
2760 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_WRITE_STRINGS -Wwrite-strings)
2761 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
2762 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_FORMAT_SIGN -Wformat-signedness)
2764 # gcc 4.2 gives annoying warnings on every file with this
2765 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2766 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNINITIALIZED -Wuninitialized)
2769 # causes too many warnings
2771 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
2772 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_DECLARATIONS -Wmissing-declarations)
2775 # flags to undo strict flags
2776 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
2777 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2780 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2783 elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
2785 if(APPLE AND WITH_OPENMP) # we need the Intel omp lib linked here to not fail all tests due presence of -fopenmp !
2786 set(CMAKE_REQUIRED_FLAGS "-L${LIBDIR}/openmp/lib -liomp5") # these are only used for the checks
2789 # strange, clang complains these are not supported, but then yses them.
2790 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2791 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2792 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2793 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2794 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2795 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2796 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2797 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2798 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2800 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2801 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2802 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2803 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2804 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.
2805 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2806 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2808 # gives too many unfixable warnings
2809 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_MACROS -Wunused-macros)
2810 # ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_MACROS -Wunused-macros)
2812 # flags to undo strict flags
2813 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2814 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2816 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_VARIABLE_DECLARATIONS -Wno-missing-variable-declarations)
2817 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INCOMPAT_PTR_DISCARD_QUAL -Wno-incompatible-pointer-types-discards-qualifiers)
2818 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_FUNCTION -Wno-unused-function)
2819 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INT_TO_VOID_POINTER_CAST -Wno-int-to-void-pointer-cast)
2820 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_PROTOTYPES -Wno-missing-prototypes)
2821 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DUPLICATE_ENUM -Wno-duplicate-enum)
2822 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNDEF -Wno-undef)
2823 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_NORETURN -Wno-missing-noreturn)
2825 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_PRIVATE_FIELD -Wno-unused-private-field)
2826 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_CXX11_NARROWING -Wno-c++11-narrowing)
2827 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_NON_VIRTUAL_DTOR -Wno-non-virtual-dtor)
2828 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2829 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_REORDER -Wno-reorder)
2831 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
2833 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2834 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2835 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2837 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2838 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2839 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2841 # disable numbered, false positives
2842 set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556")
2843 set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556")
2844 elseif(CMAKE_C_COMPILER_ID MATCHES "MSVC")
2845 # most msvc warnings are C & C++
2849 "/w34062" # switch statement contains 'default' but no 'case' labels
2851 "/wd4018" # signed/unsigned mismatch
2852 "/wd4146" # unary minus operator applied to unsigned type, result still unsigned
2853 "/wd4065" # switch statement contains 'default' but no 'case' labels
2854 "/wd4127" # conditional expression is constant
2855 "/wd4181" # qualifier applied to reference type; ignored
2856 "/wd4200" # zero-sized array in struct/union
2857 "/wd4244" # conversion from 'type1' to 'type2', possible loss of data
2858 "/wd4267" # conversion from 'size_t' to 'type', possible loss of data
2859 "/wd4305" # truncation from 'type1' to 'type2'
2860 "/wd4800" # forcing value to bool 'true' or 'false'
2862 "/we4013" # 'function' undefined; assuming extern returning int
2863 "/we4431" # missing type specifier - int assumed
2866 string(REPLACE ";" " " _WARNINGS "${_WARNINGS}")
2867 set(C_WARNINGS "${_WARNINGS}")
2868 set(CXX_WARNINGS "${_WARNINGS}")
2872 # ensure python header is found since detection can fail, this could happen
2873 # with _any_ library but since we used a fixed python version this tends to
2874 # be most problematic.
2876 if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/Python.h")
2877 message(FATAL_ERROR "Missing: \"${PYTHON_INCLUDE_DIR}/Python.h\",\n"
2878 "Set the cache entry 'PYTHON_INCLUDE_DIR' to point "
2879 "to a valid python include path. Containing "
2880 "Python.h for python version \"${PYTHON_VERSION}\"")
2884 # pass, we have this in an archive to extract
2885 elseif(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
2886 find_python_package(numpy)
2890 # pass, we have this in lib/python/site-packages
2891 elseif(WITH_PYTHON_INSTALL_REQUESTS)
2892 find_python_package(requests)
2897 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
2898 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
2900 # Nothing special is needed, C++11 features are available by default.
2902 message(FATAL_ERROR "Compiler ${CMAKE_C_COMPILER_ID} is not supported for C++11 build yet")
2906 # Visual Studio has all standards it supports available by default
2907 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "Intel")
2908 # Use C99 + GNU extensions, works with GCC, Clang, ICC
2910 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu11")
2912 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
2916 # Include warnings first, so its possible to disable them with user defined flags
2917 # eg: -Wno-uninitialized
2918 set(CMAKE_C_FLAGS "${C_WARNINGS} ${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}")
2919 set(CMAKE_CXX_FLAGS "${CXX_WARNINGS} ${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}")
2921 # defined above, platform spesific but shared names
2938 #-------------------------------------------------------------------------------
2941 # better not set includes here but this debugging option is off by default.
2942 if(WITH_CXX_GUARDEDALLOC)
2943 include_directories(${CMAKE_SOURCE_DIR}/intern/guardedalloc)
2944 add_definitions(-DWITH_CXX_GUARDEDALLOC)
2947 if(WITH_ASSERT_ABORT)
2948 add_definitions(-DWITH_ASSERT_ABORT)
2951 # message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
2952 # message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
2954 #-----------------------------------------------------------------------------
2958 include(GTestTesting)
2961 if(WITH_BLENDER OR WITH_PLAYER)
2962 add_subdirectory(intern)
2963 add_subdirectory(extern)
2965 # source after intern and extern to gather all
2966 # internal and external library information first, for test linking
2967 add_subdirectory(source)
2968 elseif(WITH_CYCLES_STANDALONE)
2969 add_subdirectory(intern/cycles)
2970 add_subdirectory(extern/clew)
2971 if(WITH_CUDA_DYNLOAD)
2972 add_subdirectory(extern/cuew)
2974 if(NOT WITH_SYSTEM_GLEW)
2975 add_subdirectory(extern/glew)
2979 #-----------------------------------------------------------------------------
2980 # Blender Application
2982 add_subdirectory(source/creator)
2986 #-----------------------------------------------------------------------------
2989 add_subdirectory(source/blenderplayer)
2993 #-----------------------------------------------------------------------------
2995 add_subdirectory(tests)
2998 #-----------------------------------------------------------------------------
2999 # CPack for generating packages
3000 include(build_files/cmake/packaging.cmake)
3003 #-----------------------------------------------------------------------------
3004 # Print Final Configuration
3008 set(_config_msg "\nBlender Configuration\n=====================")
3010 function(info_cfg_option
3014 set(_msg " - ${_setting}")
3015 string(LENGTH "${_msg}" _len)
3016 while("32" GREATER "${_len}")
3017 set(_msg "${_msg} ")
3018 math(EXPR _len "${_len} + 1")
3021 set(_config_msg "${_config_msg}\n${_msg}${${_setting}}" PARENT_SCOPE)
3024 function(info_cfg_text
3028 set(_config_msg "${_config_msg}\n\n ${_text}" PARENT_SCOPE)
3031 message(STATUS "C Compiler: \"${CMAKE_C_COMPILER_ID}\"")
3032 message(STATUS "C++ Compiler: \"${CMAKE_CXX_COMPILER_ID}\"")
3034 info_cfg_text("Build Options:")
3035 info_cfg_option(WITH_GAMEENGINE)
3036 info_cfg_option(WITH_PLAYER)
3037 info_cfg_option(WITH_BULLET)
3038 info_cfg_option(WITH_IK_SOLVER)
3039 info_cfg_option(WITH_IK_ITASC)
3040 info_cfg_option(WITH_OPENCOLLADA)
3041 info_cfg_option(WITH_FFTW3)
3042 info_cfg_option(WITH_INTERNATIONAL)
3043 info_cfg_option(WITH_INPUT_NDOF)
3044 info_cfg_option(WITH_CYCLES)
3045 info_cfg_option(WITH_FREESTYLE)
3046 info_cfg_option(WITH_OPENCOLORIO)
3047 info_cfg_option(WITH_OPENVDB)
3049 info_cfg_text("Compiler Options:")
3050 info_cfg_option(WITH_BUILDINFO)
3051 info_cfg_option(WITH_OPENMP)
3052 info_cfg_option(WITH_RAYOPTIMIZATION)
3054 info_cfg_text("System Options:")
3055 info_cfg_option(WITH_INSTALL_PORTABLE)
3056 info_cfg_option(WITH_X11_XF86VMODE)
3057 info_cfg_option(WITH_X11_XINPUT)
3058 info_cfg_option(WITH_MEM_JEMALLOC)
3059 info_cfg_option(WITH_MEM_VALGRIND)
3060 info_cfg_option(WITH_SYSTEM_GLEW)
3061 info_cfg_option(WITH_SYSTEM_OPENJPEG)
3063 info_cfg_text("Image Formats:")
3064 info_cfg_option(WITH_OPENIMAGEIO)
3065 info_cfg_option(WITH_IMAGE_CINEON)
3066 info_cfg_option(WITH_IMAGE_DDS)
3067 info_cfg_option(WITH_IMAGE_HDR)
3068 info_cfg_option(WITH_IMAGE_OPENEXR)
3069 info_cfg_option(WITH_IMAGE_OPENJPEG)
3070 info_cfg_option(WITH_IMAGE_TIFF)
3072 info_cfg_text("Audio:")
3073 info_cfg_option(WITH_OPENAL)
3074 info_cfg_option(WITH_SDL)
3075 info_cfg_option(WITH_SDL_DYNLOAD)
3076 info_cfg_option(WITH_JACK)
3077 info_cfg_option(WITH_JACK_DYNLOAD)
3078 info_cfg_option(WITH_CODEC_AVI)
3079 info_cfg_option(WITH_CODEC_FFMPEG)
3080 info_cfg_option(WITH_CODEC_SNDFILE)
3082 info_cfg_text("Compression:")
3083 info_cfg_option(WITH_LZMA)
3084 info_cfg_option(WITH_LZO)
3086 info_cfg_text("Python:")
3087 info_cfg_option(WITH_PYTHON_INSTALL)
3088 info_cfg_option(WITH_PYTHON_INSTALL_NUMPY)
3089 info_cfg_option(WITH_PYTHON_MODULE)
3090 info_cfg_option(WITH_PYTHON_SAFETY)
3092 info_cfg_option(WITH_PYTHON_FRAMEWORK)
3095 info_cfg_text("Modifiers:")
3096 info_cfg_option(WITH_MOD_BOOLEAN)
3097 info_cfg_option(WITH_MOD_REMESH)
3098 info_cfg_option(WITH_MOD_FLUID)
3099 info_cfg_option(WITH_MOD_OCEANSIM)
3101 info_cfg_text("OpenGL:")
3102 info_cfg_option(WITH_GLEW_ES)
3103 info_cfg_option(WITH_GLU)
3104 info_cfg_option(WITH_GL_EGL)
3105 info_cfg_option(WITH_GL_PROFILE_COMPAT)
3106 info_cfg_option(WITH_GL_PROFILE_CORE)
3107 info_cfg_option(WITH_GL_PROFILE_ES20)
3109 info_cfg_option(WITH_GL_ANGLE)
3114 message("${_config_msg}")