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)
365 option(WITH_PYTHON_INSTALL "Copy system python into the blender install folder" ON)
366 option(WITH_PYTHON_INSTALL_NUMPY "Copy system numpy into the blender install folder" ON)
367 set(PYTHON_NUMPY_PATH "" CACHE PATH "Path to python site-packages or dist-packages containing 'numpy' module")
368 mark_as_advanced(PYTHON_NUMPY_PATH)
369 option(WITH_CPU_SSE "Enable SIMD instruction if they're detected on the host machine" ON)
370 mark_as_advanced(WITH_CPU_SSE)
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_CYCLES "Enable Cycles Render Engine" ON)
380 option(WITH_CYCLES_STANDALONE "Build Cycles standalone application" OFF)
381 option(WITH_CYCLES_STANDALONE_GUI "Build Cycles standalone with GUI" OFF)
382 option(WITH_CYCLES_OSL "Build Cycles with OSL support" ${_init_CYCLES_OSL})
383 option(WITH_CYCLES_CUDA_BINARIES "Build Cycles CUDA binaries" OFF)
384 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")
385 mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
386 unset(PLATFORM_DEFAULT)
387 option(WITH_CYCLES_LOGGING "Build Cycles with logging support" ON)
388 option(WITH_CYCLES_DEBUG "Build Cycles with extra debug capabilities" OFF)
389 mark_as_advanced(WITH_CYCLES_LOGGING)
390 mark_as_advanced(WITH_CYCLES_DEBUG)
392 option(WITH_CUDA_DYNLOAD "Dynamically load CUDA libraries at runtime" ON)
393 mark_as_advanced(WITH_CUDA_DYNLOAD)
396 option(WITH_LLVM "Use LLVM" OFF)
398 option(LLVM_STATIC "Link with LLVM static libraries" ON) # we prefer static llvm build on Apple, dyn build possible though
400 option(LLVM_STATIC "Link with LLVM static libraries" OFF)
402 mark_as_advanced(LLVM_STATIC)
404 # disable for now, but plan to support on all platforms eventually
405 option(WITH_MEM_JEMALLOC "Enable malloc replacement (http://www.canonware.com/jemalloc)" ON)
406 mark_as_advanced(WITH_MEM_JEMALLOC)
408 # currently only used for BLI_mempool
409 option(WITH_MEM_VALGRIND "Enable extended valgrind support for better reporting" OFF)
410 mark_as_advanced(WITH_MEM_VALGRIND)
413 option(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking (only enable for development)" OFF)
414 mark_as_advanced(WITH_CXX_GUARDEDALLOC)
416 option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF)
417 mark_as_advanced(WITH_ASSERT_ABORT)
419 option(WITH_BOOST "Enable features depending on boost" ON)
422 option(WITH_GTESTS "Enable GTest unit testing" OFF)
426 if(UNIX AND NOT APPLE)
427 option(WITH_DOC_MANPAGE "Create a manual page (Unix manpage)" OFF)
433 option(WITH_GLEW_MX "Support multiple GLEW contexts (experimental)" OFF )
434 option(WITH_GLEW_ES "Switches to experimental copy of GLEW that has support for OpenGL ES. (temporary option for development purposes)" OFF)
435 option(WITH_GL_EGL "Use the EGL OpenGL system library instead of the platform specific OpenGL system library (CGL, glX, or WGL)" OFF)
436 option(WITH_GL_PROFILE_COMPAT "Support using the OpenGL 'compatibility' profile. (deprecated)" ON )
437 option(WITH_GL_PROFILE_CORE "Support using the OpenGL 3.2+ 'core' profile." OFF)
438 option(WITH_GL_PROFILE_ES20 "Support using OpenGL ES 2.0. (thru either EGL or the AGL/WGL/XGL 'es20' profile)" OFF)
444 WITH_GL_PROFILE_COMPAT
449 if(WITH_GL_PROFILE_COMPAT)
456 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)
457 mark_as_advanced(WITH_GL_ANGLE)
460 if(WITH_GLEW_ES AND WITH_SYSTEM_GLEW)
461 message(WARNING Ignoring WITH_SYSTEM_GLEW and using WITH_GLEW_ES)
462 set(WITH_SYSTEM_GLEW OFF)
466 getDefaultWindowsPrefixBase(CMAKE_GENERIC_PROGRAM_FILES)
467 set(CPACK_INSTALL_PREFIX ${CMAKE_GENERIC_PROGRAM_FILES}/${})
470 # Experimental support of C++11
471 option(WITH_CPP11 "Build with C++11 standard enabled, for development use only!" OFF)
472 mark_as_advanced(WITH_CPP11)
475 option(WITH_LEGACY_DEPSGRAPH "Build Blender with legacy dependency graph" ON)
476 mark_as_advanced(WITH_LEGACY_DEPSGRAPH)
479 option_defaults_clear()
485 # By default we want to install to the directory we are compiling our executables
486 # unless specified otherwise, which we currently do not allow
487 if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
489 set(CMAKE_INSTALL_PREFIX ${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE} CACHE PATH "default install path" FORCE)
491 set(CMAKE_INSTALL_PREFIX ${EXECUTABLE_OUTPUT_PATH}/\${BUILD_TYPE} CACHE PATH "default install path" FORCE)
493 if(WITH_INSTALL_PORTABLE)
494 set(CMAKE_INSTALL_PREFIX ${EXECUTABLE_OUTPUT_PATH} CACHE PATH "default install path" FORCE)
504 if(${CMAKE_VERSION} VERSION_LESS 3.0) # else breaks setting CMP0043 policy
505 cmake_minimum_required(VERSION 2.8.8)
506 cmake_policy(VERSION 2.8.8)
509 if(NOT CMAKE_OSX_ARCHITECTURES)
510 set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING
511 "Choose the architecture you want to build Blender for: i386, x86_64 or ppc"
515 execute_process(COMMAND uname -r OUTPUT_VARIABLE MAC_SYS) # check for actual system-version
516 if(${MAC_SYS} MATCHES 15)
517 set(OSX_SYSTEM 10.11)
518 # throw an error here, older cmake cannot handle 2 digit subversion!
519 cmake_minimum_required(VERSION 3.0.0)
520 elseif(${MAC_SYS} MATCHES 14)
521 set(OSX_SYSTEM 10.10)
522 # throw an error here, older cmake cannot handle 2 digit subversion!
523 cmake_minimum_required(VERSION 3.0.0)
524 elseif(${MAC_SYS} MATCHES 13)
526 elseif(${MAC_SYS} MATCHES 12)
528 elseif(${MAC_SYS} MATCHES 11)
530 elseif(${MAC_SYS} MATCHES 10)
532 elseif(${MAC_SYS} MATCHES 9)
535 set(OSX_SYSTEM unsupported)
538 # workaround for incorrect cmake xcode lookup for developer previews - XCODE_VERSION does not take xcode-select path into accout
539 # but would always look into /Applications/Xcode.app while dev versions are named Xcode<version>-DP<preview_number>
540 execute_process(COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_CHECK OUTPUT_STRIP_TRAILING_WHITESPACE)
541 string(REPLACE "/Contents/Developer" "" XCODE_BUNDLE ${XCODE_CHECK}) # truncate to bundlepath in any case
543 if(${CMAKE_GENERATOR} MATCHES "Xcode")
545 if(${XCODE_VERSION} VERSION_GREATER 4.2) # earlier xcode has no bundled developer dir, no sense in getting xcode path from
546 string(SUBSTRING "${XCODE_CHECK}" 14 6 DP_NAME) # reduce to XCode name without dp extension
547 if(${DP_NAME} MATCHES Xcode5)
552 ##### cmake incompatibility with xcode 4.3 and higher #####
553 if(${XCODE_VERSION} MATCHES '') # cmake fails due looking for xcode in the wrong path, thus will be empty var
554 message(FATAL_ERROR "Xcode 4.3 and higher must be used with cmake 2.8-8 or higher")
556 ### end cmake incompatibility with xcode 4.3 and higher ###
558 if(${XCODE_VERSION} VERSION_EQUAL 4 OR ${XCODE_VERSION} VERSION_GREATER 4 AND ${XCODE_VERSION} VERSION_LESS 4.3)
559 # Xcode 4 defaults to the Apple LLVM Compiler.
560 # Override the default compiler selection because Blender only compiles with gcc up to xcode 4.2
561 set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
562 message(STATUS "Setting compiler to: " ${CMAKE_XCODE_ATTRIBUTE_GCC_VERSION})
564 else() # unix makefile generator does not fill XCODE_VERSION var, so we get it with a command
565 execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERS_BUILD_NR)
566 string(SUBSTRING "${XCODE_VERS_BUILD_NR}" 6 3 XCODE_VERSION) # truncate away build-nr
567 unset(XCODE_VERS_BUILD_NR)
570 message(STATUS "Detected OS X ${OSX_SYSTEM} and Xcode ${XCODE_VERSION} at ${XCODE_BUNDLE}")
572 if(${XCODE_VERSION} VERSION_LESS 4.3)
573 set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk CACHE PATH "" FORCE) # use guaranteed existing sdk
575 # note: xcode-select path could be ambigous, cause /Applications/Xcode.app/Contents/Developer or /Applications/Xcode.app would be allowed
576 # so i use a selfcomposed bundlepath here
577 set(OSX_SYSROOT_PREFIX ${XCODE_BUNDLE}/Contents/Developer/Platforms/MacOSX.platform)
578 message(STATUS "OSX_SYSROOT_PREFIX: " ${OSX_SYSROOT_PREFIX})
579 set(OSX_DEVELOPER_PREFIX /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk) # use guaranteed existing sdk
580 set(CMAKE_OSX_SYSROOT ${OSX_SYSROOT_PREFIX}/${OSX_DEVELOPER_PREFIX} CACHE PATH "" FORCE)
581 if(${CMAKE_GENERATOR} MATCHES "Xcode")
582 set(CMAKE_XCODE_ATTRIBUTE_SDKROOT macosx${OSX_SYSTEM}) # to silence sdk not found warning, just overrides CMAKE_OSX_SYSROOT
586 if(OSX_SYSTEM MATCHES 10.9)
587 set(CMAKE_FIND_ROOT_PATH ${CMAKE_OSX_SYSROOT}) # make sure syslibs and headers are looked up in sdk ( expecially for 10.9 openGL atm. )
590 if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
591 set(CMAKE_OSX_DEPLOYMENT_TARGET "10.6" CACHE STRING "" FORCE) # 10.6 is our min. target, if you use higher sdk, weak linking happens
594 if(NOT ${CMAKE_GENERATOR} MATCHES "Xcode")
595 # force CMAKE_OSX_DEPLOYMENT_TARGET for makefiles, will not work else ( cmake bug ? )
596 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
597 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
598 add_definitions("-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
601 option(WITH_LIBS10.5 "Use 10.5 libs (needed for 64bit builds)" OFF)
605 #-----------------------------------------------------------------------------
606 # Check for conflicting/unsupported configurations
608 if(NOT WITH_BLENDER AND NOT WITH_PLAYER AND NOT WITH_CYCLES_STANDALONE)
609 message(FATAL_ERROR "At least one of WITH_BLENDER or WITH_PLAYER or WITH_CYCLES_STANDALONE must be enabled, nothing to do!")
612 if(NOT WITH_GAMEENGINE AND WITH_PLAYER)
613 message(FATAL_ERROR "WITH_PLAYER requires WITH_GAMEENGINE")
616 if(NOT WITH_AUDASPACE)
618 message(FATAL_ERROR "WITH_OPENAL requires WITH_AUDASPACE")
621 message(FATAL_ERROR "WITH_JACK requires WITH_AUDASPACE")
624 message(FATAL_ERROR "WITH_GAMEENGINE requires WITH_AUDASPACE")
628 if(NOT WITH_SDL AND WITH_GHOST_SDL)
629 message(FATAL_ERROR "WITH_GHOST_SDL requires WITH_SDL")
632 # python module, needs some different options
633 if(WITH_PYTHON_MODULE AND WITH_PLAYER)
634 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PLAYER to be OFF")
637 if(WITH_PYTHON_MODULE AND WITH_PYTHON_INSTALL)
638 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PYTHON_INSTALL to be OFF")
642 # may as well build python module without a UI
643 if(WITH_PYTHON_MODULE)
644 set(WITH_HEADLESS ON)
651 # enable boost for cycles, audaspace or i18n
652 # otherwise if the user disabled
654 # Explicitly disabled. so disable all deps.
658 message(STATUS "'WITH_BOOST' is disabled: forceing 'set(${_setting} ${_val})'")
660 set(${_setting} ${_val})
663 set_and_warn(WITH_CYCLES OFF)
664 set_and_warn(WITH_AUDASPACE OFF)
665 set_and_warn(WITH_INTERNATIONAL OFF)
666 set_and_warn(WITH_OPENVDB OFF)
667 set_and_warn(WITH_OPENCOLORIO OFF)
668 set_and_warn(WITH_MOD_BOOLEAN OFF)
670 set_and_warn(WITH_OPENAL OFF) # depends on AUDASPACE
671 set_and_warn(WITH_GAMEENGINE OFF) # depends on AUDASPACE
672 set_and_warn(WITH_PLAYER OFF) # depends on GAMEENGINE
673 elseif(WITH_CYCLES OR WITH_OPENIMAGEIO OR WITH_AUDASPACE OR WITH_INTERNATIONAL OR WITH_OPENVDB OR WITH_OPENCOLORIO OR WITH_MOD_BOOLEAN)
676 # New dependency graph needs either Boost or C++11 for function bindings.
678 # Enabled but we don't need it
683 # auto enable openimageio for cycles
685 set(WITH_OPENIMAGEIO ON)
687 # auto enable llvm for cycles_osl
689 set(WITH_LLVM ON CACHE BOOL "" FORCE)
692 set(WITH_CYCLES_OSL OFF)
695 # auto enable openimageio linking dependencies
697 set(WITH_IMAGE_OPENEXR ON)
698 set(WITH_IMAGE_TIFF ON)
701 # don't store paths to libs for portable distribution
702 if(WITH_INSTALL_PORTABLE)
703 set(CMAKE_SKIP_BUILD_RPATH TRUE)
706 if(WITH_GHOST_SDL OR WITH_HEADLESS)
708 set(WITH_X11_XINPUT OFF)
709 set(WITH_X11_XF86VMODE OFF)
710 set(WITH_GHOST_XDND OFF)
711 set(WITH_INPUT_IME OFF)
715 TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
717 message(STATUS "SSE and SSE2 optimizations are DISABLED!")
718 set(COMPILER_SSE_FLAG)
719 set(COMPILER_SSE2_FLAG)
722 TEST_SHARED_PTR_SUPPORT()
723 TEST_UNORDERED_MAP_SUPPORT()
726 if(WITH_SYSTEM_AUDASPACE)
727 set(AUDASPACE_DEFINITIONS
729 -DWITH_SYSTEM_AUDASPACE
730 "-DAUD_DEVICE_H=<AUD_Device.h>"
731 "-DAUD_SPECIAL_H=<AUD_Special.h>"
732 "-DAUD_SOUND_H=<AUD_Sound.h>"
733 "-DAUD_HANDLE_H=<AUD_Handle.h>"
734 "-DAUD_SEQUENCE_H=<AUD_Sequence.h>"
735 "-DAUD_TYPES_H=<AUD_Types.h>"
736 "-DAUD_PYTHON_H=<python/PyAPI.h>"
739 set(AUDASPACE_C_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/intern/audaspace/intern")
740 set(AUDASPACE_PY_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/intern/audaspace/intern")
741 set(AUDASPACE_DEFINITIONS
743 "-DAUD_DEVICE_H=<AUD_C-API.h>"
744 "-DAUD_SPECIAL_H=<AUD_C-API.h>"
745 "-DAUD_SOUND_H=<AUD_C-API.h>"
746 "-DAUD_HANDLE_H=<AUD_C-API.h>"
747 "-DAUD_SEQUENCE_H=<AUD_C-API.h>"
748 "-DAUD_TYPES_H=<AUD_Space.h>"
753 #-----------------------------------------------------------------------------
754 # Check for valid directories
755 # ... a partial checkout may cause this.
757 # note: we need to check for a known subdir in both cases.
758 # since uninitialized git submodules will give blank dirs
760 if(WITH_INTERNATIONAL)
761 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/datafiles/locale/languages")
762 message(WARNING "Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
763 "This is a 'git submodule', which are known not to work with bridges to other version "
764 "control systems, disabling 'WITH_INTERNATIONAL'.")
765 set(WITH_INTERNATIONAL OFF)
770 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/scripts/addons/modules")
771 message(WARNING "Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
772 "This is a 'git submodule', which are known not to work with bridges to other version "
773 "control systems: * CONTINUING WITHOUT ADDONS *")
777 #-----------------------------------------------------------------------------
778 # Initialize un-cached vars, avoid unused warning
780 # linux only, not cached
781 set(WITH_BINRELOC OFF)
783 # MAXOSX only, set to avoid uninitialized
789 # these are added to later on.
793 # for gcc -Wno-blah-blah
794 set(CC_REMOVE_STRICT_FLAGS)
796 # libraries to link the binary with passed to target_link_libraries()
797 # known as LLIBS to scons
798 set(PLATFORM_LINKLIBS "")
800 # Added to linker flags in setup_liblinks
801 # - CMAKE_EXE_LINKER_FLAGS
802 # - CMAKE_EXE_LINKER_FLAGS_DEBUG
803 set(PLATFORM_LINKFLAGS "")
804 set(PLATFORM_LINKFLAGS_DEBUG "")
807 # For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
810 # -D PYTHON_VERSION=3.5 \
811 # -D PYTHON_INCLUDE_DIR=/opt/py35/include/python3.5d \
812 # -D PYTHON_LIBRARY=/opt/py35/lib/libpython3.5d.so
816 # -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.5/include/python3.5 \
817 # -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/config \
820 # When changing any of this remember to update the notes in doc/build_systems/cmake.txt
822 #-----------------------------------------------------------------------------
826 find_package(X11 REQUIRED)
828 find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
829 mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
831 list(APPEND PLATFORM_LINKLIBS ${X11_X11_LIB})
835 list(APPEND PLATFORM_LINKLIBS ${X11_Xinput_LIB})
837 set(WITH_X11_XINPUT OFF)
841 if(WITH_X11_XF86VMODE)
842 # XXX, why dont cmake make this available?
843 find_library(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
844 mark_as_advanced(X11_Xxf86vmode_LIB)
845 if(X11_Xxf86vmode_LIB)
846 list(APPEND PLATFORM_LINKLIBS ${X11_Xxf86vmode_LIB})
848 set(WITH_X11_XF86VMODE OFF)
855 # ----------------------------------------------------------------------------
856 # Main Platform Checks
862 if(UNIX AND NOT APPLE)
863 macro(find_package_wrapper)
865 find_package_static(${ARGV})
867 find_package(${ARGV})
871 find_package_wrapper(JPEG REQUIRED)
872 find_package_wrapper(PNG REQUIRED)
873 find_package_wrapper(ZLIB REQUIRED)
874 find_package_wrapper(Freetype REQUIRED)
876 if(WITH_LZO AND WITH_SYSTEM_LZO)
877 find_package_wrapper(LZO)
879 message(FATAL_ERROR "Failed finding system LZO version!")
883 if(WITH_SYSTEM_EIGEN3)
884 find_package_wrapper(Eigen3)
886 message(FATAL_ERROR "Failed finding system Eigen3 version!")
889 # else values are set below for all platforms
892 # No way to set py35, remove for now.
893 # find_package(PythonLibs)
895 # Use our own instead, since without py is such a rare case,
896 # require this package
897 # XXX Linking errors with debian static python :/
898 # find_package_wrapper(PythonLibsUnix REQUIRED)
899 find_package(PythonLibsUnix REQUIRED)
902 if(WITH_IMAGE_OPENEXR)
903 find_package_wrapper(OpenEXR) # our own module
904 if(NOT OPENEXR_FOUND)
905 set(WITH_IMAGE_OPENEXR OFF)
909 if(WITH_IMAGE_OPENJPEG)
910 find_package_wrapper(OpenJPEG)
911 if(NOT OPENJPEG_FOUND)
912 set(WITH_IMAGE_OPENJPEG OFF)
917 # XXX Linking errors with debian static tiff :/
918 # find_package_wrapper(TIFF)
921 set(WITH_IMAGE_TIFF OFF)
926 if(WITH_SYSTEM_AUDASPACE)
927 find_package_wrapper(Audaspace)
928 if(NOT AUDASPACE_FOUND OR NOT AUDASPACE_C_FOUND)
929 message(FATAL_ERROR "Audaspace external library not found!")
934 find_package_wrapper(OpenAL)
942 set(SDL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extern/sdlew/include/SDL2")
945 find_package_wrapper(SDL2)
947 # Use same names for both versions of SDL until we move to 2.x.
948 set(SDL_INCLUDE_DIR "${SDL2_INCLUDE_DIR}")
949 set(SDL_LIBRARY "${SDL2_LIBRARY}")
950 set(SDL_FOUND "${SDL2_FOUND}")
952 find_package_wrapper(SDL)
958 # unset(SDLMAIN_LIBRARY CACHE)
966 find_package_wrapper(Jack)
973 if(WITH_CODEC_SNDFILE)
974 find_package_wrapper(SndFile)
975 if(NOT SNDFILE_FOUND)
976 set(WITH_CODEC_SNDFILE OFF)
980 if(WITH_CODEC_FFMPEG)
981 set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
982 set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
984 mark_as_advanced(FFMPEG)
986 # lame, but until we have proper find module for ffmpeg
987 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
988 if(EXISTS "${FFMPEG}/include/ffmpeg/")
989 list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg")
993 mark_as_advanced(FFMPEG_LIBRARIES)
994 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
998 find_package_wrapper(Fftw3)
1004 if(WITH_OPENCOLLADA)
1005 find_package_wrapper(OpenCOLLADA)
1006 if(OPENCOLLADA_FOUND)
1007 find_package_wrapper(XML2)
1008 find_package_wrapper(PCRE)
1010 set(WITH_OPENCOLLADA OFF)
1014 if(WITH_MEM_JEMALLOC)
1015 find_package_wrapper(JeMalloc)
1016 if(NOT JEMALLOC_FOUND)
1017 set(WITH_MEM_JEMALLOC OFF)
1022 find_package_wrapper(Spacenav)
1023 if(NOT SPACENAV_FOUND)
1024 set(WITH_INPUT_NDOF OFF)
1027 # use generic names within blenders buildsystem.
1029 set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
1030 set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
1035 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1037 set(OSL_ROOT ${CYCLES_OSL})
1039 find_package_wrapper(OpenShadingLanguage)
1041 if(${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6")
1042 # Note: --whole-archive is needed to force loading of all symbols in liboslexec,
1043 # otherwise LLVM is missing the osl_allocate_closure_component function
1044 set(OSL_LIBRARIES ${OSL_OSLCOMP_LIBRARY} -Wl,--whole-archive ${OSL_OSLEXEC_LIBRARY} -Wl,--no-whole-archive ${OSL_OSLQUERY_LIBRARY})
1047 message(STATUS "OSL not found, disabling it from Cycles")
1048 set(WITH_CYCLES_OSL OFF)
1053 find_package_wrapper(OpenVDB)
1054 find_package_wrapper(TBB)
1055 if(NOT OPENVDB_FOUND OR NOT TBB_FOUND)
1056 set(WITH_OPENVDB OFF)
1057 set(WITH_OPENVDB_BLOSC OFF)
1058 message(STATUS "OpenVDB not found, disabling it")
1063 # uses in build instructions to override include and library variables
1064 if(NOT BOOST_CUSTOM)
1065 if(WITH_STATIC_LIBS)
1066 set(Boost_USE_STATIC_LIBS ON)
1068 set(Boost_USE_MULTITHREADED ON)
1069 set(__boost_packages filesystem regex system thread date_time)
1071 if(NOT (${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6"))
1072 list(APPEND __boost_packages wave)
1076 if(WITH_INTERNATIONAL)
1077 list(APPEND __boost_packages locale)
1079 if(WITH_CYCLES_NETWORK)
1080 list(APPEND __boost_packages serialization)
1083 list(APPEND __boost_packages iostreams)
1085 find_package(Boost 1.48 COMPONENTS ${__boost_packages})
1087 # try to find non-multithreaded if -mt not found, this flag
1088 # doesn't matter for us, it has nothing to do with thread
1089 # safety, but keep it to not disturb build setups
1090 set(Boost_USE_MULTITHREADED OFF)
1091 find_package(Boost 1.48 COMPONENTS ${__boost_packages})
1093 unset(__boost_packages)
1094 if(Boost_USE_STATIC_LIBS AND WITH_BOOST_ICU)
1095 find_package(IcuLinux)
1097 mark_as_advanced(Boost_DIR) # why doesnt boost do this?
1100 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
1101 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
1102 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
1103 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1106 if(WITH_OPENIMAGEIO)
1107 find_package_wrapper(OpenImageIO)
1108 if(NOT OPENIMAGEIO_PUGIXML_FOUND AND WITH_CYCLES_STANDALONE)
1109 find_package_wrapper(PugiXML)
1111 set(PUGIXML_INCLUDE_DIR "${OPENIMAGEIO_INCLUDE_DIR/OpenImageIO}")
1112 set(PUGIXML_LIBRARIES "")
1115 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES})
1116 set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
1117 set(OPENIMAGEIO_DEFINITIONS "")
1120 list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}")
1122 if(WITH_IMAGE_OPENEXR)
1123 list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}")
1126 if(NOT OPENIMAGEIO_FOUND)
1127 set(WITH_OPENIMAGEIO OFF)
1128 message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
1132 if(WITH_OPENCOLORIO)
1133 find_package_wrapper(OpenColorIO)
1135 set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES})
1136 set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
1137 set(OPENCOLORIO_DEFINITIONS)
1139 if(NOT OPENCOLORIO_FOUND)
1140 set(WITH_OPENCOLORIO OFF)
1141 message(STATUS "OpenColorIO not found")
1146 find_package_wrapper(LLVM)
1150 message(STATUS "LLVM not found")
1154 if(WITH_LLVM OR WITH_SDL_DYNLOAD)
1155 # Fix for conflict with Mesa llvmpipe
1156 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script='${CMAKE_SOURCE_DIR}/source/creator/blender.map'")
1160 find_package_wrapper(OpenSubdiv)
1162 set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBRARIES})
1163 set(OPENSUBDIV_LIBPATH) # TODO, remove and reference the absolute path everywhere
1165 if(NOT OPENSUBDIV_FOUND)
1166 set(WITH_OPENSUBDIV OFF)
1167 message(STATUS "OpenSubdiv not found")
1171 # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
1172 list(APPEND PLATFORM_LINKLIBS -lutil -lc -lm)
1174 find_package(Threads REQUIRED)
1175 list(APPEND PLATFORM_LINKLIBS ${CMAKE_THREAD_LIBS_INIT})
1176 # used by other platforms
1177 set(PTHREADS_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
1180 list(APPEND PLATFORM_LINKLIBS ${CMAKE_DL_LIBS})
1183 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
1184 if(NOT WITH_PYTHON_MODULE)
1185 # binreloc is linux only
1186 set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include)
1187 set(WITH_BINRELOC ON)
1191 # lfs on glibc, all compilers should use
1192 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1195 if(CMAKE_COMPILER_IS_GNUCC)
1196 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1198 # use ld.gold linker if available, could make optional
1200 COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version
1201 ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
1202 if("${LD_VERSION}" MATCHES "GNU gold")
1203 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=gold")
1204 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold")
1206 message(STATUS "GNU gold linker isn't available, using the default system linker.")
1210 # CLang is the same as GCC for now.
1211 elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
1212 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1214 elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro")
1215 set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
1217 # Intel C++ Compiler
1218 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
1219 # think these next two are broken
1220 find_program(XIAR xiar)
1222 set(CMAKE_AR "${XIAR}")
1224 mark_as_advanced(XIAR)
1226 find_program(XILD xild)
1228 set(CMAKE_LINKER "${XILD}")
1230 mark_as_advanced(XILD)
1232 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
1233 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
1235 # set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
1236 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1237 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
1242 add_definitions(-DWIN32)
1246 # needed for some MSVC installations
1247 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
1248 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
1249 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO")
1251 list(APPEND PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi Dbghelp)
1254 list(APPEND PLATFORM_LINKLIBS imm32)
1258 -D_CRT_NONSTDC_NO_DEPRECATE
1259 -D_CRT_SECURE_NO_DEPRECATE
1260 -D_SCL_SECURE_NO_DEPRECATE
1265 # MSVC11 needs _ALLOW_KEYWORD_MACROS to build
1266 add_definitions(-D_ALLOW_KEYWORD_MACROS)
1269 # We want to support Vista level ABI for x64
1270 add_definitions(-D_WIN32_WINNT=0x600)
1273 # Make cmake find the msvc redistributables
1274 set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
1275 include(InstallRequiredSystemLibraries)
1277 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /nologo /J /Gd /MP /EHsc")
1278 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /nologo /J /Gd /MP")
1280 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
1281 set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
1282 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
1283 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
1284 set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MT")
1285 set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} /MT")
1286 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT")
1287 set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /MT")
1289 set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
1291 # MSVC only, Mingw doesnt need
1293 set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
1295 set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
1298 set(PLATFORM_LINKFLAGS_DEBUG "/IGNORE:4099 /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
1300 if(NOT DEFINED LIBDIR)
1302 # Setup 64bit and 64bit windows systems
1304 message(STATUS "64 bit compiler detected.")
1305 set(LIBDIR_BASE "win64")
1307 message(STATUS "32 bit compiler detected.")
1308 set(LIBDIR_BASE "windows")
1311 if(MSVC_VERSION EQUAL 1900)
1312 message(STATUS "Visual Studio 2015 detected.")
1313 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc14)
1315 message(STATUS "Visual Studio 2013 detected.")
1316 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc12)
1319 message(STATUS using LIBDIR ${LIBDIR})
1322 # Add each of our libraries to our cmake_prefix_path so find_package() could work
1323 file(GLOB children RELATIVE ${LIBDIR} ${LIBDIR}/*)
1324 foreach(child ${children})
1325 if(IS_DIRECTORY ${LIBDIR}/${child})
1326 list(APPEND CMAKE_PREFIX_PATH ${LIBDIR}/${child})
1330 set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
1331 set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz_st.lib)
1332 set(ZLIB_INCLUDE_DIR ${LIBDIR}/zlib/include)
1333 set(ZLIB_LIBRARY ${LIBDIR}/zlib/lib/libz_st.lib)
1334 set(ZLIB_DIR ${LIBDIR}/zlib)
1335 #find_package(zlib) # we want to find before finding things that depend on it like png
1340 message(WARNING "Using HARDCODED libpng locations")
1341 set(PNG_PNG_INCLUDE_DIR ${LIBDIR}/png/include)
1342 set(PNG_LIBRARIES libpng)
1343 set(PNG "${LIBDIR}/png")
1344 set(PNG_INCLUDE_DIRS "${PNG}/include")
1345 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1348 set(JPEG_NAMES ${JPEG_NAMES} libjpeg)
1349 find_package(jpeg REQUIRED)
1351 set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
1352 set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
1354 set(FREETYPE ${LIBDIR}/freetype)
1355 set(FREETYPE_INCLUDE_DIRS
1356 ${LIBDIR}/freetype/include
1357 ${LIBDIR}/freetype/include/freetype2
1359 set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
1360 find_package(freetype REQUIRED)
1363 set(FFTW3 ${LIBDIR}/fftw3)
1364 set(FFTW3_LIBRARIES libfftw)
1365 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1366 set(FFTW3_LIBPATH ${FFTW3}/lib)
1369 if(WITH_OPENCOLLADA)
1370 set(OPENCOLLADA ${LIBDIR}/opencollada)
1372 set(OPENCOLLADA_INCLUDE_DIRS
1373 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1374 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1375 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1376 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1377 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1380 set(OPENCOLLADA_LIBRARIES
1381 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADASaxFrameworkLoader.lib
1382 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAFramework.lib
1383 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADABaseUtils.lib
1384 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter.lib
1385 ${OPENCOLLADA}/lib/opencollada/MathMLSolver.lib
1386 ${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser.lib
1387 ${OPENCOLLADA}/lib/opencollada/xml.lib
1388 ${OPENCOLLADA}/lib/opencollada/buffer.lib
1389 ${OPENCOLLADA}/lib/opencollada/ftoa.lib
1393 list(APPEND OPENCOLLADA_LIBRARIES ${OPENCOLLADA}/lib/opencollada/UTF.lib)
1397 ${OPENCOLLADA}/lib/opencollada/pcre.lib
1401 if(WITH_CODEC_FFMPEG)
1402 set(FFMPEG_INCLUDE_DIRS
1403 ${LIBDIR}/ffmpeg/include
1404 ${LIBDIR}/ffmpeg/include/msvc
1406 find_package(FFMPEG)
1407 if(NOT FFMPEG_FOUND)
1408 message(WARNING "Using HARDCODED ffmpeg locations")
1409 set(FFMPEG_LIBRARY_VERSION 55)
1410 set(FFMPEG_LIBRARY_VERSION_AVU 52)
1411 set(FFMPEG_LIBRARIES
1412 ${LIBDIR}/ffmpeg/lib/avcodec-${FFMPEG_LIBRARY_VERSION}.lib
1413 ${LIBDIR}/ffmpeg/lib/avformat-${FFMPEG_LIBRARY_VERSION}.lib
1414 ${LIBDIR}/ffmpeg/lib/avdevice-${FFMPEG_LIBRARY_VERSION}.lib
1415 ${LIBDIR}/ffmpeg/lib/avutil-${FFMPEG_LIBRARY_VERSION_AVU}.lib
1416 ${LIBDIR}/ffmpeg/lib/swscale-2.lib
1421 if(WITH_IMAGE_OPENEXR)
1422 set(OPENEXR_ROOT_DIR ${LIBDIR}/openexr)
1423 set(OPENEXR_VERSION "2.1")
1424 find_package(OPENEXR REQUIRED)
1425 if(NOT OPENEXR_FOUND)
1426 message(WARNING "Using HARDCODED OpenEXR locations")
1427 set(OPENEXR ${LIBDIR}/openexr)
1428 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1429 set(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR}/include/OpenEXR)
1430 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1431 set(OPENEXR_LIBRARIES
1432 ${OPENEXR_LIBPATH}/Iex-2_2.lib
1433 ${OPENEXR_LIBPATH}/Half.lib
1434 ${OPENEXR_LIBPATH}/IlmImf-2_2.lib
1435 ${OPENEXR_LIBPATH}/Imath-2_2.lib
1436 ${OPENEXR_LIBPATH}/IlmThread-2_2.lib
1442 # Try to find tiff first then complain and set static and maybe wrong paths
1445 message(WARNING "Using HARDCODED libtiff locations")
1446 set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
1447 set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
1452 set(JACK_INCLUDE_DIRS
1453 ${LIBDIR}/jack/include/jack
1454 ${LIBDIR}/jack/include
1456 set(JACK_LIBRARIES optimized ${LIBDIR}/jack/lib/libjack.lib debug ${LIBDIR}/jack/lib/libjack_d.lib)
1460 set(PYTHON_VERSION 3.5) # CACHE STRING)
1462 string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1463 # Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs
1464 set(PYTHON_LIBRARY ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.lib)
1465 unset(_PYTHON_VERSION_NO_DOTS)
1467 # Shared includes for both vc2008 and vc2010
1468 set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION})
1471 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1472 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1477 set(boost_extra_libs wave)
1479 if(WITH_INTERNATIONAL)
1480 list(APPEND boost_extra_libs locale)
1483 list(APPEND boost_extra_libs iostreams)
1485 set(Boost_USE_STATIC_RUNTIME ON) # prefix lib
1486 set(Boost_USE_MULTITHREADED ON) # suffix -mt
1487 set(Boost_USE_STATIC_LIBS ON) # suffix -s
1488 find_package(Boost COMPONENTS date_time filesystem thread regex system ${boost_extra_libs})
1490 message(WARNING "USING HARDCODED boost locations")
1491 set(BOOST ${LIBDIR}/boost)
1492 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1494 set(BOOST_LIBPATH ${BOOST}/lib)
1495 set(BOOST_POSTFIX "vc120-mt-s-1_60.lib")
1496 set(BOOST_DEBUG_POSTFIX "vc120-mt-sgd-1_60.lib")
1498 set(BOOST_LIBPATH ${BOOST}/lib)
1499 set(BOOST_POSTFIX "vc140-mt-s-1_60.lib")
1500 set(BOOST_DEBUG_POSTFIX "vc140-mt-sgd-1_60.lib")
1503 optimized libboost_date_time-${BOOST_POSTFIX} optimized libboost_filesystem-${BOOST_POSTFIX}
1504 optimized libboost_regex-${BOOST_POSTFIX}
1505 optimized libboost_system-${BOOST_POSTFIX} optimized libboost_thread-${BOOST_POSTFIX}
1506 debug libboost_date_time-${BOOST_DEBUG_POSTFIX} debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
1507 debug libboost_regex-${BOOST_DEBUG_POSTFIX}
1508 debug libboost_system-${BOOST_DEBUG_POSTFIX} debug libboost_thread-${BOOST_DEBUG_POSTFIX})
1510 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1511 optimized libboost_wave-${BOOST_POSTFIX}
1512 debug libboost_wave-${BOOST_DEBUG_POSTFIX})
1514 if(WITH_INTERNATIONAL)
1515 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1516 optimized libboost_locale-${BOOST_POSTFIX}
1517 debug libboost_locale-${BOOST_DEBUG_POSTFIX})
1519 else() # we found boost using find_package
1520 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
1521 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
1522 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
1524 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1527 if(WITH_OPENIMAGEIO)
1528 find_package(OpenImageIO)
1529 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1530 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1531 set(OIIO_OPTIMIZED optimized OpenImageIO optimized OpenImageIO_Util)
1532 set(OIIO_DEBUG debug OpenImageIO_d debug OpenImageIO_Util_d)
1533 set(OPENIMAGEIO_LIBRARIES ${OIIO_OPTIMIZED} ${OIIO_DEBUG})
1534 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1535 set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0")
1536 set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD")
1537 set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe")
1538 add_definitions(-DOIIO_STATIC_BUILD)
1542 set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1543 file(GLOB LLVM_LIBRARY_OPTIMIZED ${LLVM_ROOT_DIR}/lib/*.lib)
1545 if(EXISTS ${LLVM_ROOT_DIR}/debug/lib)
1546 foreach(LLVM_OPTIMIZED_LIB ${LLVM_LIBRARY_OPTIMIZED})
1547 get_filename_component(LIBNAME ${LLVM_OPTIMIZED_LIB} ABSOLUTE)
1548 list(APPEND LLVM_LIBS optimized ${LIBNAME})
1549 endforeach(LLVM_OPTIMIZED_LIB)
1551 file(GLOB LLVM_LIBRARY_DEBUG ${LLVM_ROOT_DIR}/debug/lib/*.lib)
1553 foreach(LLVM_DEBUG_LIB ${LLVM_LIBRARY_DEBUG})
1554 get_filename_component(LIBNAME ${LLVM_DEBUG_LIB} ABSOLUTE)
1555 list(APPEND LLVM_LIBS debug ${LIBNAME})
1556 endforeach(LLVM_DEBUG_LIB)
1558 set(LLVM_LIBRARY ${LLVM_LIBS})
1560 message(WARNING "LLVM debug libs not present on this system. Using release libs for debug builds.")
1561 set(LLVM_LIBRARY ${LLVM_LIBRARY_OPTIMIZED})
1566 if(WITH_OPENCOLORIO)
1567 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1568 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1569 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1570 set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
1571 set(OPENCOLORIO_DEFINITIONS)
1575 set(TBB_LIBRARIES ${LIBDIR}/tbb/lib/tbb.lib)
1576 set(TBB_INCLUDE_DIR ${LIBDIR}/tbb/include)
1577 set(OPENVDB ${LIBDIR}/openvdb)
1578 set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include ${TBB_INCLUDE_DIR})
1579 set(OPENVDB_LIBRARIES openvdb ${TBB_LIBRARIES})
1580 set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
1583 if(WITH_MOD_CLOTH_ELTOPO)
1584 set(LAPACK ${LIBDIR}/lapack)
1585 # set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
1586 set(LAPACK_LIBPATH ${LAPACK}/lib)
1587 set(LAPACK_LIBRARIES
1588 ${LIBDIR}/lapack/lib/libf2c.lib
1589 ${LIBDIR}/lapack/lib/clapack_nowrap.lib
1590 ${LIBDIR}/lapack/lib/BLAS_nowrap.lib
1595 set(OPENSUBDIV_INCLUDE_DIR ${LIBDIR}/opensubdiv/include)
1596 set(OPENSUBDIV_LIBPATH ${LIBDIR}/opensubdiv/lib)
1597 set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBPATH}/osdCPU.lib ${OPENSUBDIV_LIBPATH}/osdGPU.lib)
1598 find_package(OpenSubdiv)
1602 set(SDL ${LIBDIR}/sdl)
1603 set(SDL_INCLUDE_DIR ${SDL}/include)
1604 set(SDL_LIBPATH ${SDL}/lib)
1605 # MinGW TODO: Update MinGW to SDL2
1606 if(NOT CMAKE_COMPILER_IS_GNUCC)
1607 set(SDL_LIBRARY SDL2)
1609 set(SDL_LIBRARY SDL)
1614 if(WITH_SYSTEM_AUDASPACE)
1615 set(AUDASPACE_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
1616 set(AUDASPACE_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace.lib)
1617 set(AUDASPACE_C_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
1618 set(AUDASPACE_C_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-c.lib)
1619 set(AUDASPACE_PY_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
1620 set(AUDASPACE_PY_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-py.lib)
1623 # used in many places so include globally, like OpenGL
1624 blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
1626 elseif(CMAKE_COMPILER_IS_GNUCC)
1627 # keep GCC specific stuff here
1628 include(CheckCSourceCompiles)
1629 # Setup 64bit and 64bit windows systems
1630 CHECK_C_SOURCE_COMPILES("
1634 int main(void) { return 0; }
1639 message(STATUS "Compiling for 64 bit with MinGW-w64.")
1640 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
1642 message(STATUS "Compiling for 32 bit with MinGW-w32.")
1643 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
1645 if(WITH_RAYOPTIMIZATION)
1646 message(WARNING "MinGW-w32 is known to be unstable with 'WITH_RAYOPTIMIZATION' option enabled.")
1650 list(APPEND PLATFORM_LINKLIBS -lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi -ldbghelp)
1653 list(APPEND PLATFORM_LINKLIBS -limm32)
1656 set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
1659 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
1660 list(APPEND PLATFORM_LINKLIBS -lpthread)
1662 add_definitions(-DFREE_WINDOWS64 -DMS_WIN64)
1665 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1667 add_definitions(-DFREE_WINDOWS)
1669 set(PNG "${LIBDIR}/png")
1670 set(PNG_INCLUDE_DIRS "${PNG}/include")
1671 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1674 set(JPEG_LIBRARIES jpeg)
1676 set(JPEG_LIBRARIES libjpeg)
1678 set(PNG_LIBRARIES png)
1680 set(ZLIB ${LIBDIR}/zlib)
1681 set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
1682 set(ZLIB_LIBPATH ${ZLIB}/lib)
1683 set(ZLIB_LIBRARIES z)
1685 set(JPEG "${LIBDIR}/jpeg")
1686 set(JPEG_INCLUDE_DIR "${JPEG}/include")
1687 set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
1689 # comes with own pthread library
1690 if(NOT WITH_MINGW64)
1691 set(PTHREADS ${LIBDIR}/pthreads)
1692 #set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
1693 set(PTHREADS_LIBPATH ${PTHREADS}/lib)
1694 set(PTHREADS_LIBRARIES pthreadGC2)
1697 set(FREETYPE ${LIBDIR}/freetype)
1698 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1699 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1700 set(FREETYPE_LIBRARY freetype)
1703 set(FFTW3 ${LIBDIR}/fftw3)
1704 set(FFTW3_LIBRARIES fftw3)
1705 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1706 set(FFTW3_LIBPATH ${FFTW3}/lib)
1709 if(WITH_OPENCOLLADA)
1710 set(OPENCOLLADA ${LIBDIR}/opencollada)
1711 set(OPENCOLLADA_INCLUDE_DIRS
1712 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1713 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1714 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1715 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1716 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1718 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib/opencollada)
1719 set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver buffer ftoa xml)
1720 set(PCRE_LIBRARIES pcre)
1723 if(WITH_CODEC_FFMPEG)
1724 set(FFMPEG ${LIBDIR}/ffmpeg)
1725 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1727 set(FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll)
1729 set(FFMPEG_LIBRARIES avcodec-55 avformat-55 avdevice-55 avutil-52 swscale-2)
1731 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1734 if(WITH_IMAGE_OPENEXR)
1735 set(OPENEXR ${LIBDIR}/openexr)
1736 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1737 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1738 set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex)
1739 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1743 set(TIFF ${LIBDIR}/tiff)
1744 set(TIFF_LIBRARY tiff)
1745 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1746 set(TIFF_LIBPATH ${TIFF}/lib)
1750 set(JACK ${LIBDIR}/jack)
1751 set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include)
1752 set(JACK_LIBRARIES jack)
1753 set(JACK_LIBPATH ${JACK}/lib)
1755 # TODO, gives linking errors, force off
1760 # normally cached but not since we include them with blender
1761 set(PYTHON_VERSION 3.5) # CACHE STRING)
1762 string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1763 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}") # CACHE PATH)
1764 set(PYTHON_LIBRARY "${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}mw.lib") # CACHE FILEPATH)
1765 unset(_PYTHON_VERSION_NO_DOTS)
1768 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1769 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1773 set(BOOST ${LIBDIR}/boost)
1774 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1776 set(BOOST_POSTFIX "mgw47-mt-s-1_49")
1777 set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
1779 set(BOOST_POSTFIX "mgw46-mt-s-1_49")
1780 set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49")
1783 optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX}
1784 boost_regex-${BOOST_POSTFIX}
1785 boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX}
1786 debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
1787 boost_regex-${BOOST_DEBUG_POSTFIX}
1788 boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
1789 if(WITH_INTERNATIONAL)
1790 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1791 optimized boost_locale-${BOOST_POSTFIX}
1792 debug boost_locale-${BOOST_DEBUG_POSTFIX})
1795 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1796 optimized boost_wave-${BOOST_POSTFIX}
1797 debug boost_wave-${BOOST_DEBUG_POSTFIX})
1799 set(BOOST_LIBPATH ${BOOST}/lib)
1800 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
1803 if(WITH_OPENIMAGEIO)
1804 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1805 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1806 set(OPENIMAGEIO_LIBRARIES OpenImageIO)
1807 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1808 set(OPENIMAGEIO_DEFINITIONS "")
1809 set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe")
1813 set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1814 set(LLVM_LIBPATH ${LLVM_ROOT_DIR}/lib)
1815 # Explicitly set llvm lib order.
1816 #---- WARNING ON GCC ORDER OF LIBS IS IMPORTANT, DO NOT CHANGE! ---------
1817 set(LLVM_LIBRARY LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMAnalysis LLVMArchive
1818 LLVMAsmParser LLVMAsmPrinter
1819 LLVMBitReader LLVMBitWriter
1820 LLVMDebugInfo LLVMExecutionEngine
1821 LLVMInstCombine LLVMInstrumentation
1822 LLVMInterpreter LLVMJIT
1824 LLVMMCDisassembler LLVMMCJIT
1825 LLVMMCParser LLVMObject
1828 LLVMTableGen LLVMTarget
1829 LLVMTransformUtils LLVMVectorize
1830 LLVMX86AsmParser LLVMX86AsmPrinter
1831 LLVMX86CodeGen LLVMX86Desc
1832 LLVMX86Disassembler LLVMX86Info
1833 LLVMX86Utils LLVMipa
1835 # imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
1836 list(APPEND PLATFORM_LINKLIBS -limagehlp)
1839 if(WITH_OPENCOLORIO)
1840 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1841 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1842 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1843 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1844 set(OPENCOLORIO_DEFINITIONS)
1848 set(SDL ${LIBDIR}/sdl)
1849 set(SDL_INCLUDE_DIR ${SDL}/include)
1850 set(SDL_LIBRARY SDL)
1851 set(SDL_LIBPATH ${SDL}/lib)
1855 set(OPENVDB ${LIBDIR}/openvdb)
1856 set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include)
1857 set(OPENVDB_LIBRARIES openvdb ${TBB_LIBRARIES})
1858 set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
1859 set(OPENVDB_DEFINITIONS)
1862 set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
1864 ## DISABLE - causes linking errors
1865 ## for re-distribution, so users dont need mingw installed
1866 # set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
1870 # Things common to both mingw and MSVC should go here
1872 set(WINTAB_INC ${LIBDIR}/wintab/include)
1875 set(OPENAL ${LIBDIR}/openal)
1876 set(OPENALDIR ${LIBDIR}/openal)
1877 set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
1879 set(OPENAL_LIBRARY openal32)
1881 set(OPENAL_LIBRARY wrap_oal)
1883 set(OPENAL_LIBPATH ${OPENAL}/lib)
1886 if(WITH_CODEC_SNDFILE)
1887 set(SNDFILE ${LIBDIR}/sndfile)
1888 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1889 set(SNDFILE_LIBRARIES libsndfile-1)
1890 set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
1893 if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
1894 add_definitions(-D__SSE__ -D__MMX__)
1898 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1900 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1901 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1902 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1903 find_library(OSL_LIB_EXEC_DEBUG NAMES oslexec_d PATHS ${CYCLES_OSL}/lib)
1904 find_library(OSL_LIB_COMP_DEBUG NAMES oslcomp_d PATHS ${CYCLES_OSL}/lib)
1905 find_library(OSL_LIB_QUERY_DEBUG NAMES oslquery_d PATHS ${CYCLES_OSL}/lib)
1906 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})
1907 find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1908 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1910 if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
1913 message(STATUS "OSL not found")
1914 set(WITH_CYCLES_OSL OFF)
1920 if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5")
1921 set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/7/8/9
1925 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
1927 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1928 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
1930 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
1936 find_package(OpenAL)
1939 set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
1941 set(WITH_OPENAL OFF)
1946 set(OPENSUBDIV ${LIBDIR}/opensubdiv)
1947 set(OPENSUBDIV_LIBPATH ${OPENSUBDIV}/lib)
1948 find_library(OSL_LIB_UTIL NAMES osdutil PATHS ${OPENSUBDIV_LIBPATH})
1949 find_library(OSL_LIB_CPU NAMES osdCPU PATHS ${OPENSUBDIV_LIBPATH})
1950 find_library(OSL_LIB_GPU NAMES osdGPU PATHS ${OPENSUBDIV_LIBPATH})
1951 set(OPENSUBDIV_INCLUDE_DIR ${OPENSUBDIV}/include)
1952 set(OPENSUBDIV_INCLUDE_DIRS ${OPENSUBDIV_INCLUDE_DIR})
1953 list(APPEND OPENSUBDIV_LIBRARIES ${OSL_LIB_UTIL} ${OSL_LIB_CPU} ${OSL_LIB_GPU})
1957 find_library(JACK_FRAMEWORK
1960 set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
1961 if(NOT JACK_FRAMEWORK)
1966 if(WITH_CODEC_SNDFILE)
1967 set(SNDFILE ${LIBDIR}/sndfile)
1968 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1969 set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
1970 set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) # TODO, deprecate
1974 # we use precompiled libraries for py 3.5 and up by default
1975 set(PYTHON_VERSION 3.5)
1976 if(NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK)
1977 # normally cached but not since we include them with blender
1978 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
1979 # set(PYTHON_EXECUTABLE "${LIBDIR}/python/bin/python${PYTHON_VERSION}") # not used yet
1980 set(PYTHON_LIBRARY python${PYTHON_VERSION}m)
1981 set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
1982 # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
1984 # module must be compiled against Python framework
1985 set(PYTHON_INCLUDE_DIR "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}m")
1986 set(PYTHON_EXECUTABLE "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}")
1987 #set(PYTHON_LIBRARY python${PYTHON_VERSION})
1988 set(PYTHON_LIBPATH "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m")
1989 #set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled
1993 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1994 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1998 set(FFTW3 ${LIBDIR}/fftw3)
1999 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
2000 set(FFTW3_LIBRARIES fftw3)
2001 set(FFTW3_LIBPATH ${FFTW3}/lib)
2004 set(PNG_LIBRARIES png)
2005 set(JPEG_LIBRARIES jpeg)
2008 set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
2009 set(ZLIB_LIBRARIES z bz2)
2011 set(FREETYPE ${LIBDIR}/freetype)
2012 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
2013 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
2014 set(FREETYPE_LIBRARY freetype)
2016 if(WITH_IMAGE_OPENEXR)
2017 set(OPENEXR ${LIBDIR}/openexr)
2018 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
2019 set(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR}/include/OpenEXR)
2020 set(OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread)
2021 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
2024 if(WITH_CODEC_FFMPEG)
2025 set(FFMPEG ${LIBDIR}/ffmpeg)
2026 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
2027 set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
2028 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
2031 find_library(SYSTEMSTUBS_LIBRARY
2036 mark_as_advanced(SYSTEMSTUBS_LIBRARY)
2037 if(SYSTEMSTUBS_LIBRARY)
2038 list(APPEND PLATFORM_LINKLIBS stdc++ SystemStubs)
2040 list(APPEND PLATFORM_LINKLIBS stdc++)
2043 set(PLATFORM_CFLAGS "-pipe -funsigned-char")
2044 set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
2045 if(WITH_CODEC_QUICKTIME)
2046 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
2047 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
2048 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
2049 # libSDL still needs 32bit carbon quicktime
2053 # XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
2054 # ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
2056 # This thread it *should* work and check the framework - campbell
2057 # http://www.cmake.org/pipermail/cmake/2005-December/007740.html
2058 find_library(3DCONNEXION_CLIENT_FRAMEWORK
2059 NAMES 3DconnexionClient
2061 if(NOT 3DCONNEXION_CLIENT_FRAMEWORK)
2062 set(WITH_INPUT_NDOF OFF)
2066 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework 3DconnexionClient")
2067 set(NDOF_INCLUDE_DIRS /Library/Frameworks/3DconnexionClient.framework/Headers )
2072 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework jackmp")
2075 if(WITH_PYTHON_MODULE OR WITH_PYTHON_FRAMEWORK)
2076 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python")# force cmake to link right framework
2079 if(WITH_OPENCOLLADA)
2080 set(OPENCOLLADA ${LIBDIR}/opencollada)
2082 set(OPENCOLLADA_INCLUDE_DIRS
2083 ${LIBDIR}/opencollada/include/COLLADAStreamWriter
2084 ${LIBDIR}/opencollada/include/COLLADABaseUtils
2085 ${LIBDIR}/opencollada/include/COLLADAFramework
2086 ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
2087 ${LIBDIR}/opencollada/include/GeneratedSaxParser
2090 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
2091 set(OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lxml2 -lbuffer -lftoa")
2092 # Use UTF functions from collada if LLVM is not enabled
2094 set(OPENCOLLADA_LIBRARIES "${OPENCOLLADA_LIBRARIES} -lUTF")
2096 # pcre is bundled with openCollada
2097 #set(PCRE ${LIBDIR}/pcre)
2098 #set(PCRE_LIBPATH ${PCRE}/lib)
2099 set(PCRE_LIBRARIES pcre)
2101 #set(EXPAT ${LIBDIR}/expat)
2102 #set(EXPAT_LIBPATH ${EXPAT}/lib)
2107 set(SDL ${LIBDIR}/sdl)
2108 set(SDL_INCLUDE_DIR ${SDL}/include)
2109 set(SDL_LIBRARY SDL2)
2110 set(SDL_LIBPATH ${SDL}/lib)
2111 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -lazy_framework ForceFeedback")
2114 set(PNG "${LIBDIR}/png")
2115 set(PNG_INCLUDE_DIRS "${PNG}/include")
2116 set(PNG_LIBPATH ${PNG}/lib)
2118 set(JPEG "${LIBDIR}/jpeg")
2119 set(JPEG_INCLUDE_DIR "${JPEG}/include")
2120 set(JPEG_LIBPATH ${JPEG}/lib)
2123 set(TIFF ${LIBDIR}/tiff)
2124 set(TIFF_INCLUDE_DIR ${TIFF}/include)
2125 set(TIFF_LIBRARY tiff)
2126 set(TIFF_LIBPATH ${TIFF}/lib)
2130 # linker needs "-weak_framework 3DconnexionClient"
2134 set(BOOST ${LIBDIR}/boost)
2135 set(BOOST_INCLUDE_DIR ${BOOST}/include)
2136 set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt boost_wave-mt)
2137 if(WITH_INTERNATIONAL)
2138 list(APPEND BOOST_LIBRARIES boost_locale-mt)
2140 if(WITH_CYCLES_NETWORK)
2141 list(APPEND BOOST_LIBRARIES boost_serialization-mt)
2144 list(APPEND BOOST_LIBRARIES boost_iostreams-mt)
2146 set(BOOST_LIBPATH ${BOOST}/lib)
2147 set(BOOST_DEFINITIONS)
2150 if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG)
2151 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale and ffmpeg needs it !
2154 if(WITH_OPENIMAGEIO)
2155 set(OPENIMAGEIO ${LIBDIR}/openimageio)
2156 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
2157 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO}/lib/libOpenImageIO.a ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
2158 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
2159 set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
2160 set(OPENIMAGEIO_IDIFF "${LIBDIR}/openimageio/bin/idiff")
2163 if(WITH_OPENCOLORIO)
2164 set(OPENCOLORIO ${LIBDIR}/opencolorio)
2165 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
2166 set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
2167 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
2171 set(OPENVDB ${LIBDIR}/openvdb)
2172 set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include)
2173 set(TBB_INCLUDE_DIRS ${LIBDIR}/tbb/include)
2174 set(TBB_LIBRARIES ${LIBDIR}/tbb/lib/libtbb.a)
2175 set(OPENVDB_LIBRARIES openvdb blosc ${TBB_LIBRARIES})
2176 set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
2177 set(OPENVDB_DEFINITIONS)
2181 set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
2182 set(LLVM_VERSION "3.4" CACHE STRING "Version of LLVM to use")
2183 if(EXISTS "${LLVM_ROOT_DIR}/bin/llvm-config")
2184 set(LLVM_CONFIG "${LLVM_ROOT_DIR}/bin/llvm-config")
2186 set(LLVM_CONFIG llvm-config)
2188 execute_process(COMMAND ${LLVM_CONFIG} --version
2189 OUTPUT_VARIABLE LLVM_VERSION
2190 OUTPUT_STRIP_TRAILING_WHITESPACE)
2191 execute_process(COMMAND ${LLVM_CONFIG} --prefix
2192 OUTPUT_VARIABLE LLVM_ROOT_DIR
2193 OUTPUT_STRIP_TRAILING_WHITESPACE)
2194 execute_process(COMMAND ${LLVM_CONFIG} --libdir
2195 OUTPUT_VARIABLE LLVM_LIBPATH
2196 OUTPUT_STRIP_TRAILING_WHITESPACE)
2197 find_library(LLVM_LIBRARY
2198 NAMES LLVMAnalysis # first of a whole bunch of libs to get
2199 PATHS ${LLVM_LIBPATH})
2201 if(LLVM_LIBRARY AND LLVM_ROOT_DIR AND LLVM_LIBPATH)
2203 # if static LLVM libraries were requested, use llvm-config to generate
2204 # the list of what libraries we need, and substitute that in the right
2205 # way for LLVM_LIBRARY.
2206 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
2207 OUTPUT_VARIABLE LLVM_LIBRARY
2208 OUTPUT_STRIP_TRAILING_WHITESPACE)
2209 string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
2211 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -lLLVM-3.4")
2214 message(FATAL_ERROR "LLVM not found.")
2219 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
2221 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
2222 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
2223 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
2224 # WARNING! depends on correct order of OSL libs linking
2225 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
2226 find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
2227 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
2229 if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
2232 message(STATUS "OSL not found")
2233 set(WITH_CYCLES_OSL OFF)
2238 execute_process(COMMAND ${CMAKE_C_COMPILER} --version OUTPUT_VARIABLE COMPILER_VENDOR)
2239 string(SUBSTRING "${COMPILER_VENDOR}" 0 5 VENDOR_NAME) # truncate output
2240 if(${VENDOR_NAME} MATCHES "Apple") # Apple does not support OpenMP reliable with gcc and not with clang
2241 set(WITH_OPENMP OFF)
2242 else() # vanilla gcc or clang_omp support OpenMP
2243 message(STATUS "Using special OpenMP enabled compiler !") # letting find_package(OpenMP) module work for gcc
2244 if(CMAKE_C_COMPILER_ID MATCHES "Clang") # clang-omp in darwin libs
2245 set(OPENMP_FOUND ON)
2246 set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "C compiler flags for OpenMP parallization" FORCE)
2247 set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "C++ compiler flags for OpenMP parallization" FORCE)
2248 include_directories(${LIBDIR}/openmp/include)
2249 link_directories(${LIBDIR}/openmp/lib)
2250 # This is a workaround for our helperbinaries ( datatoc, masgfmt, ... ),
2251 # They are linked also to omp lib, so we need it in builddir for runtime exexcution, TODO: remove all unneeded dependencies from these
2252 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
2257 set(EXETYPE MACOSX_BUNDLE)
2259 set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
2260 set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
2261 if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386")
2262 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
2263 set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
2264 if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang")
2265 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
2266 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
2269 set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
2270 set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
2273 if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5)
2274 # Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv
2275 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024")
2277 # Get rid of eventually clashes, we export some symbols explicite as local
2278 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Xlinker -unexported_symbols_list -Xlinker ${CMAKE_SOURCE_DIR}/source/creator/osx_locals.map")
2281 #-----------------------------------------------------------------------------
2285 if(NOT EXISTS "${LIBDIR}/")
2286 message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'")
2290 if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
2291 message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
2295 if(NOT WITH_OPENIMAGEIO)
2296 message(FATAL_ERROR "Cycles requires WITH_OPENIMAGEIO, the library may not have been found. Configure OIIO or disable WITH_CYCLES")
2299 message(FATAL_ERROR "Cycles requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES")
2304 message(FATAL_ERROR "Cycles OSL requires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL")
2309 if(WITH_INTERNATIONAL)
2311 message(FATAL_ERROR "Internationalization requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL")
2315 # See TEST_SSE_SUPPORT() for how this is defined.
2317 if(WITH_RAYOPTIMIZATION)
2318 if(SUPPORT_SSE_BUILD)
2319 set(PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}")
2320 add_definitions(-D__SSE__ -D__MMX__)
2322 if(SUPPORT_SSE2_BUILD)
2323 set(PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}")
2324 add_definitions(-D__SSE2__)
2325 if(NOT SUPPORT_SSE_BUILD) # dont double up
2326 add_definitions(-D__MMX__)
2332 # set the endian define
2334 # for some reason this fails on msvc
2335 add_definitions(-D__LITTLE_ENDIAN__)
2337 # OSX-Note: as we do crosscompiling with specific set architecture,
2338 # endianess-detection and autosetting is counterproductive
2339 # so we just set endianess according CMAKE_OSX_ARCHITECTURES
2341 elseif(CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
2342 add_definitions(-D__LITTLE_ENDIAN__)
2343 elseif(CMAKE_OSX_ARCHITECTURES MATCHES ppc OR CMAKE_OSX_ARCHITECTURES MATCHES ppc64)
2344 add_definitions(-D__BIG_ENDIAN__)
2347 include(TestBigEndian)
2348 test_big_endian(_SYSTEM_BIG_ENDIAN)
2349 if(_SYSTEM_BIG_ENDIAN)
2350 add_definitions(-D__BIG_ENDIAN__)
2352 add_definitions(-D__LITTLE_ENDIAN__)
2354 unset(_SYSTEM_BIG_ENDIAN)
2358 if(WITH_IMAGE_OPENJPEG)
2359 if(WITH_SYSTEM_OPENJPEG)
2361 set(OPENJPEG_DEFINES "")
2363 set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg")
2364 set(OPENJPEG_DEFINES "-DOPJ_STATIC")
2366 # Special handling of Windows platform where openjpeg is always static.
2368 set(OPENJPEG_DEFINES "-DOPJ_STATIC")
2372 if(NOT WITH_SYSTEM_EIGEN3)
2373 set(EIGEN3_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/Eigen3)
2376 #-----------------------------------------------------------------------------
2379 find_package(OpenGL)
2380 blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}")
2383 list(APPEND BLENDER_GL_LIBRARIES "${OPENGL_glu_LIBRARY}")
2384 list(APPEND GL_DEFINITIONS -DWITH_GLU)
2387 if(WITH_SYSTEM_GLES)
2388 find_package_wrapper(OpenGLES)
2391 if(WITH_GL_PROFILE_COMPAT OR WITH_GL_PROFILE_CORE)
2392 list(APPEND BLENDER_GL_LIBRARIES "${OPENGL_gl_LIBRARY}")
2394 elseif(WITH_GL_PROFILE_ES20)
2395 if(WITH_SYSTEM_GLES)
2396 if(NOT OPENGLES_LIBRARY)
2397 message(FATAL_ERROR "Unable to find OpenGL ES libraries. Install them or disable WITH_SYSTEM_GLES.")
2400 list(APPEND BLENDER_GL_LIBRARIES OPENGLES_LIBRARY)
2403 set(OPENGLES_LIBRARY "" CACHE FILEPATH "OpenGL ES 2.0 library file")
2404 mark_as_advanced(OPENGLES_LIBRARY)
2406 list(APPEND BLENDER_GL_LIBRARIES "${OPENGLES_LIBRARY}")
2408 if(NOT OPENGLES_LIBRARY)
2409 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.")
2415 # Setup paths to files needed to install and redistribute Windows Blender with OpenGL ES
2417 set(OPENGLES_DLL "" CACHE FILEPATH "OpenGL ES 2.0 redistributable DLL file")
2418 mark_as_advanced(OPENGLES_DLL)
2420 if(NOT OPENGLES_DLL)
2421 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).")
2425 list(APPEND GL_DEFINITIONS -DWITH_ANGLE)
2427 set(D3DCOMPILER_DLL "" CACHE FILEPATH "Direct3D Compiler redistributable DLL file (needed by ANGLE)")
2429 get_filename_component(D3DCOMPILER_FILENAME "${D3DCOMPILER_DLL}" NAME)
2430 list(APPEND GL_DEFINITIONS "-DD3DCOMPILER=\"\\\"${D3DCOMPILER_FILENAME}\\\"\"")
2432 mark_as_advanced(D3DCOMPILER_DLL)
2434 if(D3DCOMPILER_DLL STREQUAL "")
2435 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")
2445 list(APPEND GL_DEFINITIONS -DWITH_GL_EGL)
2447 if(WITH_SYSTEM_GLES)
2448 if(NOT OPENGLES_EGL_LIBRARY)
2449 message(FATAL_ERROR "Unable to find OpenGL ES libraries. Install them or disable WITH_SYSTEM_GLES.")
2452 list(APPEND BLENDER_GL_LIBRARIES OPENGLES_EGL_LIBRARY)
2455 set(OPENGLES_EGL_LIBRARY "" CACHE FILEPATH "EGL library file")
2456 mark_as_advanced(OPENGLES_EGL_LIBRARY)
2458 list(APPEND BLENDER_GL_LIBRARIES "${OPENGLES_LIBRARY}" "${OPENGLES_EGL_LIBRARY}")
2460 if(NOT OPENGLES_EGL_LIBRARY)
2461 message(FATAL_ERROR "To compile WITH_GL_EGL you need to set OPENGLES_EGL_LIBRARY to the file path of an EGL library.")
2467 # Setup paths to files needed to install and redistribute Windows Blender with OpenGL ES
2469 set(OPENGLES_EGL_DLL "" CACHE FILEPATH "EGL redistributable DLL file")
2470 mark_as_advanced(OPENGLES_EGL_DLL)
2472 if(NOT OPENGLES_EGL_DLL)
2473 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).")
2480 if(WITH_GL_PROFILE_COMPAT)
2481 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_COMPAT)
2484 if(WITH_GL_PROFILE_CORE)
2485 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_CORE)
2488 if(WITH_GL_PROFILE_ES20)
2489 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_ES20)
2493 list(APPEND GL_DEFINITIONS -DWITH_EGL)
2496 #-----------------------------------------------------------------------------
2499 find_package(OpenMP)
2501 if(NOT WITH_OPENMP_STATIC)
2502 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
2503 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
2505 # Typically avoid adding flags as defines but we can't
2506 # pass OpenMP flags to the linker for static builds, meaning
2507 # we can't add any OpenMP related flags to CFLAGS variables
2508 # since they're passed to the linker as well.
2509 add_definitions("${OpenMP_C_FLAGS}")
2511 find_library_static(OpenMP_LIBRARIES gomp ${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES})
2514 set(WITH_OPENMP OFF)
2523 #-----------------------------------------------------------------------------
2527 list(APPEND GL_DEFINITIONS -DWITH_GLEW_MX)
2530 if(WITH_SYSTEM_GLEW)
2533 # Note: There is an assumption here that the system GLEW is not a static library.
2536 message(FATAL_ERROR "GLEW is required to build Blender. Install it or disable WITH_SYSTEM_GLEW.")
2540 set(BLENDER_GLEW_LIBRARIES ${GLEW_MX_LIBRARY})
2542 set(BLENDER_GLEW_LIBRARIES ${GLEW_LIBRARY})
2546 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew-es/include")
2548 list(APPEND GL_DEFINITIONS -DGLEW_STATIC -DWITH_GLEW_ES)
2550 # These definitions remove APIs from glew.h, making GLEW smaller, and catching unguarded API usage
2551 if(NOT WITH_GL_PROFILE_ES20)
2552 # No ES functions are needed
2553 list(APPEND GL_DEFINITIONS -DGLEW_NO_ES)
2554 elseif(NOT (WITH_GL_PROFILE_CORE OR WITH_GL_PROFILE_COMPAT))
2555 # ES is enabled, but the other functions are all disabled
2556 list(APPEND GL_DEFINITIONS -DGLEW_ES_ONLY)
2559 if(WITH_GL_PROFILE_ES20)
2561 list(APPEND GL_DEFINITIONS -DGLEW_USE_LIB_ES20)
2564 # ToDo: This is an experiment to eliminate ES 1 symbols,
2565 # GLEW doesn't really properly provide this level of control
2566 # (for example, without modification it eliminates too many symbols)
2567 # so there are lots of modifications to GLEW to make this work,
2568 # and no attempt to make it work beyond Blender at this point.
2569 list(APPEND GL_DEFINITIONS -DGL_ES_VERSION_1_0=0 -DGL_ES_VERSION_CL_1_1=0 -DGL_ES_VERSION_CM_1_1=0)
2573 list(APPEND GL_DEFINITIONS -DGLEW_INC_EGL)
2576 set(BLENDER_GLEW_LIBRARIES extern_glew_es bf_intern_glew_mx)
2579 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
2581 list(APPEND GL_DEFINITIONS -DGLEW_STATIC)
2583 # This won't affect the non-experimental glew library,
2584 # but is used for conditional compilation elsewhere.
2585 list(APPEND GL_DEFINITIONS -DGLEW_NO_ES)
2587 set(BLENDER_GLEW_LIBRARIES extern_glew)
2594 list(APPEND GL_DEFINITIONS -DGLEW_NO_GLU)
2597 #-----------------------------------------------------------------------------
2600 if(WITH_BULLET AND WITH_SYSTEM_BULLET)
2601 find_package(Bullet)
2602 if(NOT BULLET_FOUND)
2603 set(WITH_BULLET OFF)
2606 set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
2607 # set(BULLET_LIBRARIES "")
2610 #-----------------------------------------------------------------------------
2613 if(WITH_PYTHON_MODULE)
2614 add_definitions(-DPy_ENABLE_SHARED)
2617 #-----------------------------------------------------------------------------
2618 # Configure GLog/GFlags
2620 if(WITH_LIBMV OR WITH_GTESTS OR (WITH_CYCLES AND WITH_CYCLES_LOGGING))
2622 -DGOOGLE_GLOG_DLL_DECL=
2626 -DGFLAGS_DLL_DEFINE_FLAG=
2627 -DGFLAGS_DLL_DECLARE_FLAG=
2632 #-----------------------------------------------------------------------------
2638 if(SHARED_PTR_FOUND)
2639 if(SHARED_PTR_TR1_MEMORY_HEADER)
2640 list(APPEND CERES_DEFINES -DCERES_TR1_MEMORY_HEADER)
2642 if(SHARED_PTR_TR1_NAMESPACE)
2643 list(APPEND CERES_DEFINES -DCERES_TR1_SHARED_PTR)
2646 message(FATAL_ERROR "Ceres: Unable to find shared_ptr.")
2649 if(HAVE_STD_UNORDERED_MAP_HEADER)
2650 if(HAVE_UNORDERED_MAP_IN_STD_NAMESPACE)
2651 list(APPEND CERES_DEFINES -DCERES_STD_UNORDERED_MAP)
2653 if(HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE)
2654 list(APPEND CERES_DEFINES -DCERES_STD_UNORDERED_MAP_IN_TR1_NAMESPACE)
2656 list(APPEND CERES_DEFINES -DCERES_NO_UNORDERED_MAP)
2657 message(STATUS "Ceres: Replacing unordered_map/set with map/set (warning: slower!)")
2661 if(HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE)
2662 list(APPEND CERES_DEFINES -DCERES_TR1_UNORDERED_MAP)
2664 list(APPEND CERES_DEFINES -DCERES_NO_UNORDERED_MAP)
2665 message(STATUS "Ceres: Replacing unordered_map/set with map/set (warning: slower!)")
2670 #-----------------------------------------------------------------------------
2671 # Extra compile flags
2673 if(CMAKE_COMPILER_IS_GNUCC)
2675 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2676 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_CAST_ALIGN -Wcast-align)
2677 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2678 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2679 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_VLA -Werror=vla)
2680 # system headers sometimes do this, disable for now, was: -Werror=strict-prototypes
2681 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2682 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2683 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2684 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2685 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2686 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2687 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_WRITE_STRINGS -Wwrite-strings)
2688 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_LOGICAL_OP -Wlogical-op)
2689 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNDEF -Wundef)
2690 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2691 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_NULL -Wnonnull) # C only
2692 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2693 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2694 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_TYPE_LIMITS -Wtype-limits)
2695 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_FORMAT_SIGN -Wformat-signedness)
2697 # gcc 4.2 gives annoying warnings on every file with this
2698 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2699 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNINITIALIZED -Wuninitialized)
2702 # versions before gcc4.6 give many BLI_math warnings
2703 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.6")
2704 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_REDUNDANT_DECLS -Wredundant-decls)
2705 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_REDUNDANT_DECLS -Wredundant-decls)
2708 # versions before gcc4.8 include global name-space.
2709 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.8")
2710 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_SHADOW -Wshadow)
2713 # disable because it gives warnings for printf() & friends.
2714 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_DOUBLE_PROMOTION -Wdouble-promotion -Wno-error=double-promotion)
2717 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2720 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2721 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2722 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2723 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_LOGICAL_OP -Wlogical-op)
2724 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2725 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2726 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2727 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_TYPE_LIMITS -Wtype-limits)
2728 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2729 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2730 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2731 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2732 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_POINTER_ARITH -Wpointer-arith)
2733 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_PARAMETER -Wunused-parameter)
2734 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_WRITE_STRINGS -Wwrite-strings)
2735 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
2736 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_FORMAT_SIGN -Wformat-signedness)
2738 # gcc 4.2 gives annoying warnings on every file with this
2739 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2740 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNINITIALIZED -Wuninitialized)
2743 # causes too many warnings
2745 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
2746 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_DECLARATIONS -Wmissing-declarations)
2749 # flags to undo strict flags
2750 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
2751 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2754 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2757 elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
2759 if(APPLE AND WITH_OPENMP) # we need the Intel omp lib linked here to not fail all tests due presence of -fopenmp !
2760 set(CMAKE_REQUIRED_FLAGS "-L${LIBDIR}/openmp/lib -liomp5") # these are only used for the checks
2763 # strange, clang complains these are not supported, but then yses them.
2764 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2765 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2766 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2767 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2768 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2769 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2770 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2771 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2772 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2774 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2775 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2776 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2777 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2778 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.
2779 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2780 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2782 # gives too many unfixable warnings
2783 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_MACROS -Wunused-macros)
2784 # ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_MACROS -Wunused-macros)
2786 # flags to undo strict flags
2787 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2788 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2790 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_VARIABLE_DECLARATIONS -Wno-missing-variable-declarations)
2791 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INCOMPAT_PTR_DISCARD_QUAL -Wno-incompatible-pointer-types-discards-qualifiers)
2792 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_FUNCTION -Wno-unused-function)
2793 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INT_TO_VOID_POINTER_CAST -Wno-int-to-void-pointer-cast)
2794 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_PROTOTYPES -Wno-missing-prototypes)
2795 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DUPLICATE_ENUM -Wno-duplicate-enum)
2796 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNDEF -Wno-undef)
2797 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_NORETURN -Wno-missing-noreturn)
2799 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_PRIVATE_FIELD -Wno-unused-private-field)
2800 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_CXX11_NARROWING -Wno-c++11-narrowing)
2801 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_NON_VIRTUAL_DTOR -Wno-non-virtual-dtor)
2802 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2803 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_REORDER -Wno-reorder)
2805 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
2807 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2808 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2809 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2811 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2812 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2813 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2815 # disable numbered, false positives
2816 set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556")
2817 set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556")
2818 elseif(CMAKE_C_COMPILER_ID MATCHES "MSVC")
2819 # most msvc warnings are C & C++
2823 "/w34062" # switch statement contains 'default' but no 'case' labels
2825 "/wd4018" # signed/unsigned mismatch
2826 "/wd4146" # unary minus operator applied to unsigned type, result still unsigned
2827 "/wd4065" # switch statement contains 'default' but no 'case' labels
2828 "/wd4127" # conditional expression is constant
2829 "/wd4181" # qualifier applied to reference type; ignored
2830 "/wd4200" # zero-sized array in struct/union
2831 "/wd4244" # conversion from 'type1' to 'type2', possible loss of data
2832 "/wd4267" # conversion from 'size_t' to 'type', possible loss of data
2833 "/wd4305" # truncation from 'type1' to 'type2'
2834 "/wd4800" # forcing value to bool 'true' or 'false'
2836 "/we4013" # 'function' undefined; assuming extern returning int
2837 "/we4431" # missing type specifier - int assumed
2840 string(REPLACE ";" " " _WARNINGS "${_WARNINGS}")
2841 set(C_WARNINGS "${_WARNINGS}")
2842 set(CXX_WARNINGS "${_WARNINGS}")
2846 # ensure python header is found since detection can fail, this could happen
2847 # with _any_ library but since we used a fixed python version this tends to
2848 # be most problematic.
2850 if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/Python.h")
2851 message(FATAL_ERROR "Missing: \"${PYTHON_INCLUDE_DIR}/Python.h\",\n"
2852 "Set the cache entry 'PYTHON_INCLUDE_DIR' to point "
2853 "to a valid python include path. Containing "
2854 "Python.h for python version \"${PYTHON_VERSION}\"")
2858 # pass, we have this in an archive to extract
2859 elseif(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
2860 find_python_package(numpy)
2864 # pass, we have this in lib/python/site-packages
2865 elseif(WITH_PYTHON_INSTALL_REQUESTS)
2866 find_python_package(requests)
2871 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
2872 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
2874 # Nothing special is needed, C++11 features are available by default.
2876 message(FATAL_ERROR "Compiler ${CMAKE_C_COMPILER_ID} is not supported for C++11 build yet")
2880 # Visual Studio has all standards it supports available by default
2881 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "Intel")
2882 # Use C99 + GNU extensions, works with GCC, Clang, ICC
2883 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
2886 # Include warnings first, so its possible to disable them with user defined flags
2887 # eg: -Wno-uninitialized
2888 set(CMAKE_C_FLAGS "${C_WARNINGS} ${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}")
2889 set(CMAKE_CXX_FLAGS "${CXX_WARNINGS} ${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}")
2891 # defined above, platform spesific but shared names
2908 #-------------------------------------------------------------------------------
2911 # better not set includes here but this debugging option is off by default.
2912 if(WITH_CXX_GUARDEDALLOC)
2913 include_directories(${CMAKE_SOURCE_DIR}/intern/guardedalloc)
2914 add_definitions(-DWITH_CXX_GUARDEDALLOC)
2917 if(WITH_ASSERT_ABORT)
2918 add_definitions(-DWITH_ASSERT_ABORT)
2921 # message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
2922 # message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
2924 #-----------------------------------------------------------------------------
2928 include(GTestTesting)
2931 if(WITH_BLENDER OR WITH_PLAYER)
2932 add_subdirectory(intern)
2933 add_subdirectory(extern)
2935 # source after intern and extern to gather all
2936 # internal and external library information first, for test linking
2937 add_subdirectory(source)
2938 elseif(WITH_CYCLES_STANDALONE)
2939 add_subdirectory(intern/cycles)
2940 add_subdirectory(extern/clew)
2941 if(WITH_CUDA_DYNLOAD)
2942 add_subdirectory(extern/cuew)
2944 if(NOT WITH_SYSTEM_GLEW)
2945 add_subdirectory(extern/glew)
2949 #-----------------------------------------------------------------------------
2950 # Blender Application
2952 add_subdirectory(source/creator)
2956 #-----------------------------------------------------------------------------
2959 add_subdirectory(source/blenderplayer)
2963 #-----------------------------------------------------------------------------
2965 add_subdirectory(tests)
2968 #-----------------------------------------------------------------------------
2969 # CPack for generating packages
2970 include(build_files/cmake/packaging.cmake)
2973 #-----------------------------------------------------------------------------
2974 # Print Final Configuration
2978 set(_config_msg "\nBlender Configuration\n=====================")
2980 function(info_cfg_option
2984 set(_msg " - ${_setting}")
2985 string(LENGTH "${_msg}" _len)
2986 while("32" GREATER "${_len}")
2987 set(_msg "${_msg} ")
2988 math(EXPR _len "${_len} + 1")
2991 set(_config_msg "${_config_msg}\n${_msg}${${_setting}}" PARENT_SCOPE)
2994 function(info_cfg_text
2998 set(_config_msg "${_config_msg}\n\n ${_text}" PARENT_SCOPE)
3001 message(STATUS "C Compiler: \"${CMAKE_C_COMPILER_ID}\"")
3002 message(STATUS "C++ Compiler: \"${CMAKE_CXX_COMPILER_ID}\"")
3004 info_cfg_text("Build Options:")
3005 info_cfg_option(WITH_GAMEENGINE)
3006 info_cfg_option(WITH_PLAYER)
3007 info_cfg_option(WITH_BULLET)
3008 info_cfg_option(WITH_IK_SOLVER)
3009 info_cfg_option(WITH_IK_ITASC)
3010 info_cfg_option(WITH_OPENCOLLADA)
3011 info_cfg_option(WITH_FFTW3)
3012 info_cfg_option(WITH_INTERNATIONAL)
3013 info_cfg_option(WITH_INPUT_NDOF)
3014 info_cfg_option(WITH_CYCLES)
3015 info_cfg_option(WITH_FREESTYLE)
3016 info_cfg_option(WITH_OPENCOLORIO)
3017 info_cfg_option(WITH_OPENVDB)
3019 info_cfg_text("Compiler Options:")
3020 info_cfg_option(WITH_BUILDINFO)
3021 info_cfg_option(WITH_OPENMP)
3022 info_cfg_option(WITH_RAYOPTIMIZATION)
3024 info_cfg_text("System Options:")
3025 info_cfg_option(WITH_INSTALL_PORTABLE)
3026 info_cfg_option(WITH_X11_XF86VMODE)
3027 info_cfg_option(WITH_X11_XINPUT)
3028 info_cfg_option(WITH_MEM_JEMALLOC)
3029 info_cfg_option(WITH_MEM_VALGRIND)
3030 info_cfg_option(WITH_SYSTEM_GLEW)
3031 info_cfg_option(WITH_SYSTEM_OPENJPEG)
3033 info_cfg_text("Image Formats:")
3034 info_cfg_option(WITH_OPENIMAGEIO)
3035 info_cfg_option(WITH_IMAGE_CINEON)
3036 info_cfg_option(WITH_IMAGE_DDS)
3037 info_cfg_option(WITH_IMAGE_HDR)
3038 info_cfg_option(WITH_IMAGE_OPENEXR)
3039 info_cfg_option(WITH_IMAGE_OPENJPEG)
3040 info_cfg_option(WITH_IMAGE_TIFF)
3042 info_cfg_text("Audio:")
3043 info_cfg_option(WITH_OPENAL)
3044 info_cfg_option(WITH_SDL)
3045 info_cfg_option(WITH_SDL_DYNLOAD)
3046 info_cfg_option(WITH_JACK)
3047 info_cfg_option(WITH_JACK_DYNLOAD)
3048 info_cfg_option(WITH_CODEC_AVI)
3049 info_cfg_option(WITH_CODEC_FFMPEG)
3050 info_cfg_option(WITH_CODEC_SNDFILE)
3052 info_cfg_text("Compression:")
3053 info_cfg_option(WITH_LZMA)
3054 info_cfg_option(WITH_LZO)
3056 info_cfg_text("Python:")
3057 info_cfg_option(WITH_PYTHON_INSTALL)
3058 info_cfg_option(WITH_PYTHON_INSTALL_NUMPY)
3059 info_cfg_option(WITH_PYTHON_MODULE)
3060 info_cfg_option(WITH_PYTHON_SAFETY)
3062 info_cfg_option(WITH_PYTHON_FRAMEWORK)
3065 info_cfg_text("Modifiers:")
3066 info_cfg_option(WITH_MOD_BOOLEAN)
3067 info_cfg_option(WITH_MOD_REMESH)
3068 info_cfg_option(WITH_MOD_FLUID)
3069 info_cfg_option(WITH_MOD_OCEANSIM)
3071 info_cfg_text("OpenGL:")
3072 info_cfg_option(WITH_GLEW_ES)
3073 info_cfg_option(WITH_GLU)
3074 info_cfg_option(WITH_GL_EGL)
3075 info_cfg_option(WITH_GL_PROFILE_COMPAT)
3076 info_cfg_option(WITH_GL_PROFILE_CORE)
3077 info_cfg_option(WITH_GL_PROFILE_ES20)
3079 info_cfg_option(WITH_GL_ANGLE)
3084 message("${_config_msg}")