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 # Enabled but we don't need it
680 # auto enable openimageio for cycles
682 set(WITH_OPENIMAGEIO ON)
684 # auto enable llvm for cycles_osl
686 set(WITH_LLVM ON CACHE BOOL "" FORCE)
689 set(WITH_CYCLES_OSL OFF)
692 # auto enable openimageio linking dependencies
694 set(WITH_IMAGE_OPENEXR ON)
695 set(WITH_IMAGE_TIFF ON)
698 # don't store paths to libs for portable distribution
699 if(WITH_INSTALL_PORTABLE)
700 set(CMAKE_SKIP_BUILD_RPATH TRUE)
703 if(WITH_GHOST_SDL OR WITH_HEADLESS)
705 set(WITH_X11_XINPUT OFF)
706 set(WITH_X11_XF86VMODE OFF)
707 set(WITH_GHOST_XDND OFF)
708 set(WITH_INPUT_IME OFF)
712 TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
714 message(STATUS "SSE and SSE2 optimizations are DISABLED!")
715 set(COMPILER_SSE_FLAG)
716 set(COMPILER_SSE2_FLAG)
719 TEST_SHARED_PTR_SUPPORT()
720 TEST_UNORDERED_MAP_SUPPORT()
723 if(WITH_SYSTEM_AUDASPACE)
724 set(AUDASPACE_DEFINITIONS
726 -DWITH_SYSTEM_AUDASPACE
727 "-DAUD_DEVICE_H=<AUD_Device.h>"
728 "-DAUD_SPECIAL_H=<AUD_Special.h>"
729 "-DAUD_SOUND_H=<AUD_Sound.h>"
730 "-DAUD_HANDLE_H=<AUD_Handle.h>"
731 "-DAUD_SEQUENCE_H=<AUD_Sequence.h>"
732 "-DAUD_TYPES_H=<AUD_Types.h>"
733 "-DAUD_PYTHON_H=<python/PyAPI.h>"
736 set(AUDASPACE_C_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/intern/audaspace/intern")
737 set(AUDASPACE_PY_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/intern/audaspace/intern")
738 set(AUDASPACE_DEFINITIONS
740 "-DAUD_DEVICE_H=<AUD_C-API.h>"
741 "-DAUD_SPECIAL_H=<AUD_C-API.h>"
742 "-DAUD_SOUND_H=<AUD_C-API.h>"
743 "-DAUD_HANDLE_H=<AUD_C-API.h>"
744 "-DAUD_SEQUENCE_H=<AUD_C-API.h>"
745 "-DAUD_TYPES_H=<AUD_Space.h>"
750 #-----------------------------------------------------------------------------
751 # Check for valid directories
752 # ... a partial checkout may cause this.
754 # note: we need to check for a known subdir in both cases.
755 # since uninitialized git submodules will give blank dirs
757 if(WITH_INTERNATIONAL)
758 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/datafiles/locale/languages")
759 message(WARNING "Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
760 "This is a 'git submodule', which are known not to work with bridges to other version "
761 "control systems, disabling 'WITH_INTERNATIONAL'.")
762 set(WITH_INTERNATIONAL OFF)
767 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/scripts/addons/modules")
768 message(WARNING "Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
769 "This is a 'git submodule', which are known not to work with bridges to other version "
770 "control systems: * CONTINUING WITHOUT ADDONS *")
774 #-----------------------------------------------------------------------------
775 # Initialize un-cached vars, avoid unused warning
777 # linux only, not cached
778 set(WITH_BINRELOC OFF)
780 # MAXOSX only, set to avoid uninitialized
786 # these are added to later on.
790 # for gcc -Wno-blah-blah
791 set(CC_REMOVE_STRICT_FLAGS)
793 # libraries to link the binary with passed to target_link_libraries()
794 # known as LLIBS to scons
795 set(PLATFORM_LINKLIBS "")
797 # Added to linker flags in setup_liblinks
798 # - CMAKE_EXE_LINKER_FLAGS
799 # - CMAKE_EXE_LINKER_FLAGS_DEBUG
800 set(PLATFORM_LINKFLAGS "")
801 set(PLATFORM_LINKFLAGS_DEBUG "")
804 # For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
807 # -D PYTHON_VERSION=3.5 \
808 # -D PYTHON_INCLUDE_DIR=/opt/py35/include/python3.5d \
809 # -D PYTHON_LIBRARY=/opt/py35/lib/libpython3.5d.so
813 # -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.5/include/python3.5 \
814 # -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/config \
817 # When changing any of this remember to update the notes in doc/build_systems/cmake.txt
819 #-----------------------------------------------------------------------------
823 find_package(X11 REQUIRED)
825 find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
826 mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
828 list(APPEND PLATFORM_LINKLIBS ${X11_X11_LIB})
832 list(APPEND PLATFORM_LINKLIBS ${X11_Xinput_LIB})
834 set(WITH_X11_XINPUT OFF)
838 if(WITH_X11_XF86VMODE)
839 # XXX, why dont cmake make this available?
840 find_library(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
841 mark_as_advanced(X11_Xxf86vmode_LIB)
842 if(X11_Xxf86vmode_LIB)
843 list(APPEND PLATFORM_LINKLIBS ${X11_Xxf86vmode_LIB})
845 set(WITH_X11_XF86VMODE OFF)
852 # ----------------------------------------------------------------------------
853 # Main Platform Checks
859 if(UNIX AND NOT APPLE)
860 macro(find_package_wrapper)
862 find_package_static(${ARGV})
864 find_package(${ARGV})
868 find_package_wrapper(JPEG REQUIRED)
869 find_package_wrapper(PNG REQUIRED)
870 find_package_wrapper(ZLIB REQUIRED)
871 find_package_wrapper(Freetype REQUIRED)
873 if(WITH_LZO AND WITH_SYSTEM_LZO)
874 find_package_wrapper(LZO)
876 message(FATAL_ERROR "Failed finding system LZO version!")
880 if(WITH_SYSTEM_EIGEN3)
881 find_package_wrapper(Eigen3)
883 message(FATAL_ERROR "Failed finding system Eigen3 version!")
886 # else values are set below for all platforms
889 # No way to set py35, remove for now.
890 # find_package(PythonLibs)
892 # Use our own instead, since without py is such a rare case,
893 # require this package
894 # XXX Linking errors with debian static python :/
895 # find_package_wrapper(PythonLibsUnix REQUIRED)
896 find_package(PythonLibsUnix REQUIRED)
899 if(WITH_IMAGE_OPENEXR)
900 find_package_wrapper(OpenEXR) # our own module
901 if(NOT OPENEXR_FOUND)
902 set(WITH_IMAGE_OPENEXR OFF)
906 if(WITH_IMAGE_OPENJPEG)
907 find_package_wrapper(OpenJPEG)
908 if(NOT OPENJPEG_FOUND)
909 set(WITH_IMAGE_OPENJPEG OFF)
914 # XXX Linking errors with debian static tiff :/
915 # find_package_wrapper(TIFF)
918 set(WITH_IMAGE_TIFF OFF)
923 if(WITH_SYSTEM_AUDASPACE)
924 find_package_wrapper(Audaspace)
925 if(NOT AUDASPACE_FOUND OR NOT AUDASPACE_C_FOUND)
926 message(FATAL_ERROR "Audaspace external library not found!")
931 find_package_wrapper(OpenAL)
939 set(SDL_INCLUDE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/extern/sdlew/include/SDL2")
942 find_package_wrapper(SDL2)
944 # Use same names for both versions of SDL until we move to 2.x.
945 set(SDL_INCLUDE_DIR "${SDL2_INCLUDE_DIR}")
946 set(SDL_LIBRARY "${SDL2_LIBRARY}")
947 set(SDL_FOUND "${SDL2_FOUND}")
949 find_package_wrapper(SDL)
955 # unset(SDLMAIN_LIBRARY CACHE)
963 find_package_wrapper(Jack)
970 if(WITH_CODEC_SNDFILE)
971 find_package_wrapper(SndFile)
972 if(NOT SNDFILE_FOUND)
973 set(WITH_CODEC_SNDFILE OFF)
977 if(WITH_CODEC_FFMPEG)
978 set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
979 set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
981 mark_as_advanced(FFMPEG)
983 # lame, but until we have proper find module for ffmpeg
984 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
985 if(EXISTS "${FFMPEG}/include/ffmpeg/")
986 list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg")
990 mark_as_advanced(FFMPEG_LIBRARIES)
991 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
995 find_package_wrapper(Fftw3)
1001 if(WITH_OPENCOLLADA)
1002 find_package_wrapper(OpenCOLLADA)
1003 if(OPENCOLLADA_FOUND)
1004 find_package_wrapper(XML2)
1005 find_package_wrapper(PCRE)
1007 set(WITH_OPENCOLLADA OFF)
1011 if(WITH_MEM_JEMALLOC)
1012 find_package_wrapper(JeMalloc)
1013 if(NOT JEMALLOC_FOUND)
1014 set(WITH_MEM_JEMALLOC OFF)
1019 find_package_wrapper(Spacenav)
1020 if(NOT SPACENAV_FOUND)
1021 set(WITH_INPUT_NDOF OFF)
1024 # use generic names within blenders buildsystem.
1026 set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
1027 set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
1032 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1034 set(OSL_ROOT ${CYCLES_OSL})
1036 find_package_wrapper(OpenShadingLanguage)
1038 if(${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6")
1039 # Note: --whole-archive is needed to force loading of all symbols in liboslexec,
1040 # otherwise LLVM is missing the osl_allocate_closure_component function
1041 set(OSL_LIBRARIES ${OSL_OSLCOMP_LIBRARY} -Wl,--whole-archive ${OSL_OSLEXEC_LIBRARY} -Wl,--no-whole-archive ${OSL_OSLQUERY_LIBRARY})
1044 message(STATUS "OSL not found, disabling it from Cycles")
1045 set(WITH_CYCLES_OSL OFF)
1050 find_package_wrapper(OpenVDB)
1051 find_package_wrapper(TBB)
1052 if(NOT OPENVDB_FOUND OR NOT TBB_FOUND)
1053 set(WITH_OPENVDB OFF)
1054 set(WITH_OPENVDB_BLOSC OFF)
1055 message(STATUS "OpenVDB not found, disabling it")
1060 # uses in build instructions to override include and library variables
1061 if(NOT BOOST_CUSTOM)
1062 if(WITH_STATIC_LIBS)
1063 set(Boost_USE_STATIC_LIBS ON)
1065 set(Boost_USE_MULTITHREADED ON)
1066 set(__boost_packages filesystem regex system thread date_time)
1068 if(NOT (${OSL_LIBRARY_VERSION_MAJOR} EQUAL "1" AND ${OSL_LIBRARY_VERSION_MINOR} LESS "6"))
1069 list(APPEND __boost_packages wave)
1073 if(WITH_INTERNATIONAL)
1074 list(APPEND __boost_packages locale)
1076 if(WITH_CYCLES_NETWORK)
1077 list(APPEND __boost_packages serialization)
1080 list(APPEND __boost_packages iostreams)
1082 find_package(Boost 1.48 COMPONENTS ${__boost_packages})
1084 # try to find non-multithreaded if -mt not found, this flag
1085 # doesn't matter for us, it has nothing to do with thread
1086 # safety, but keep it to not disturb build setups
1087 set(Boost_USE_MULTITHREADED OFF)
1088 find_package(Boost 1.48 COMPONENTS ${__boost_packages})
1090 unset(__boost_packages)
1091 if(Boost_USE_STATIC_LIBS AND WITH_BOOST_ICU)
1092 find_package(IcuLinux)
1094 mark_as_advanced(Boost_DIR) # why doesnt boost do this?
1097 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
1098 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
1099 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
1100 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1103 if(WITH_OPENIMAGEIO)
1104 find_package_wrapper(OpenImageIO)
1105 if(NOT OPENIMAGEIO_PUGIXML_FOUND AND WITH_CYCLES_STANDALONE)
1106 find_package_wrapper(PugiXML)
1108 set(PUGIXML_INCLUDE_DIR "${OPENIMAGEIO_INCLUDE_DIR/OpenImageIO}")
1109 set(PUGIXML_LIBRARIES "")
1112 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES})
1113 set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
1114 set(OPENIMAGEIO_DEFINITIONS "")
1117 list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}")
1119 if(WITH_IMAGE_OPENEXR)
1120 list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}")
1123 if(NOT OPENIMAGEIO_FOUND)
1124 set(WITH_OPENIMAGEIO OFF)
1125 message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
1129 if(WITH_OPENCOLORIO)
1130 find_package_wrapper(OpenColorIO)
1132 set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES})
1133 set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
1134 set(OPENCOLORIO_DEFINITIONS)
1136 if(NOT OPENCOLORIO_FOUND)
1137 set(WITH_OPENCOLORIO OFF)
1138 message(STATUS "OpenColorIO not found")
1143 find_package_wrapper(LLVM)
1147 message(STATUS "LLVM not found")
1151 if(WITH_LLVM OR WITH_SDL_DYNLOAD)
1152 # Fix for conflict with Mesa llvmpipe
1153 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script='${CMAKE_SOURCE_DIR}/source/creator/blender.map'")
1157 find_package_wrapper(OpenSubdiv)
1159 set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBRARIES})
1160 set(OPENSUBDIV_LIBPATH) # TODO, remove and reference the absolute path everywhere
1162 if(NOT OPENSUBDIV_FOUND)
1163 set(WITH_OPENSUBDIV OFF)
1164 message(STATUS "OpenSubdiv not found")
1168 # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
1169 list(APPEND PLATFORM_LINKLIBS -lutil -lc -lm)
1171 find_package(Threads REQUIRED)
1172 list(APPEND PLATFORM_LINKLIBS ${CMAKE_THREAD_LIBS_INIT})
1173 # used by other platforms
1174 set(PTHREADS_LIBRARIES ${CMAKE_THREAD_LIBS_INIT})
1177 list(APPEND PLATFORM_LINKLIBS ${CMAKE_DL_LIBS})
1180 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
1181 if(NOT WITH_PYTHON_MODULE)
1182 # binreloc is linux only
1183 set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include)
1184 set(WITH_BINRELOC ON)
1188 # lfs on glibc, all compilers should use
1189 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1192 if(CMAKE_COMPILER_IS_GNUCC)
1193 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1195 # use ld.gold linker if available, could make optional
1197 COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version
1198 ERROR_QUIET OUTPUT_VARIABLE LD_VERSION)
1199 if("${LD_VERSION}" MATCHES "GNU gold")
1200 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fuse-ld=gold")
1201 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fuse-ld=gold")
1203 message(STATUS "GNU gold linker isn't available, using the default system linker.")
1207 # CLang is the same as GCC for now.
1208 elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
1209 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1211 elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro")
1212 set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
1214 # Intel C++ Compiler
1215 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
1216 # think these next two are broken
1217 find_program(XIAR xiar)
1219 set(CMAKE_AR "${XIAR}")
1221 mark_as_advanced(XIAR)
1223 find_program(XILD xild)
1225 set(CMAKE_LINKER "${XILD}")
1227 mark_as_advanced(XILD)
1229 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
1230 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
1232 # set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
1233 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
1234 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
1239 add_definitions(-DWIN32)
1243 # needed for some MSVC installations
1244 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SAFESEH:NO")
1245 set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /SAFESEH:NO")
1246 set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} /SAFESEH:NO")
1248 list(APPEND PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi Dbghelp)
1251 list(APPEND PLATFORM_LINKLIBS imm32)
1255 -D_CRT_NONSTDC_NO_DEPRECATE
1256 -D_CRT_SECURE_NO_DEPRECATE
1257 -D_SCL_SECURE_NO_DEPRECATE
1262 # MSVC11 needs _ALLOW_KEYWORD_MACROS to build
1263 add_definitions(-D_ALLOW_KEYWORD_MACROS)
1266 # We want to support Vista level ABI for x64
1267 add_definitions(-D_WIN32_WINNT=0x600)
1270 # Make cmake find the msvc redistributables
1271 set(CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP TRUE)
1272 include(InstallRequiredSystemLibraries)
1274 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /nologo /J /Gd /MP /EHsc")
1275 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /nologo /J /Gd /MP")
1277 set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd")
1278 set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} /MTd")
1279 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT")
1280 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} /MT")
1281 set(CMAKE_CXX_FLAGS_MINSIZEREL "${CMAKE_CXX_FLAGS_MINSIZEREL} /MT")
1282 set(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} /MT")
1283 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} /MT")
1284 set(CMAKE_C_FLAGS_RELWITHDEBINFO "${CMAKE_C_FLAGS_RELWITHDEBINFO} /MT")
1286 set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
1288 # MSVC only, Mingw doesnt need
1290 set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
1292 set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
1295 set(PLATFORM_LINKFLAGS_DEBUG "/IGNORE:4099 /NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
1297 if(NOT DEFINED LIBDIR)
1299 # Setup 64bit and 64bit windows systems
1301 message(STATUS "64 bit compiler detected.")
1302 set(LIBDIR_BASE "win64")
1304 message(STATUS "32 bit compiler detected.")
1305 set(LIBDIR_BASE "windows")
1308 if(MSVC_VERSION EQUAL 1900)
1309 message(STATUS "Visual Studio 2015 detected.")
1310 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc14)
1312 message(STATUS "Visual Studio 2013 detected.")
1313 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/${LIBDIR_BASE}_vc12)
1316 message(STATUS using LIBDIR ${LIBDIR})
1319 # Add each of our libraries to our cmake_prefix_path so find_package() could work
1320 file(GLOB children RELATIVE ${LIBDIR} ${LIBDIR}/*)
1321 foreach(child ${children})
1322 if(IS_DIRECTORY ${LIBDIR}/${child})
1323 list(APPEND CMAKE_PREFIX_PATH ${LIBDIR}/${child})
1327 set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
1328 set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz_st.lib)
1329 set(ZLIB_INCLUDE_DIR ${LIBDIR}/zlib/include)
1330 set(ZLIB_LIBRARY ${LIBDIR}/zlib/lib/libz_st.lib)
1331 set(ZLIB_DIR ${LIBDIR}/zlib)
1332 #find_package(zlib) # we want to find before finding things that depend on it like png
1337 message(WARNING "Using HARDCODED libpng locations")
1338 set(PNG_PNG_INCLUDE_DIR ${LIBDIR}/png/include)
1339 set(PNG_LIBRARIES libpng)
1340 set(PNG "${LIBDIR}/png")
1341 set(PNG_INCLUDE_DIRS "${PNG}/include")
1342 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1345 set(JPEG_NAMES ${JPEG_NAMES} libjpeg)
1346 find_package(jpeg REQUIRED)
1348 set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
1349 set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
1351 set(FREETYPE ${LIBDIR}/freetype)
1352 set(FREETYPE_INCLUDE_DIRS
1353 ${LIBDIR}/freetype/include
1354 ${LIBDIR}/freetype/include/freetype2
1356 set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
1357 find_package(freetype REQUIRED)
1360 set(FFTW3 ${LIBDIR}/fftw3)
1361 set(FFTW3_LIBRARIES libfftw)
1362 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1363 set(FFTW3_LIBPATH ${FFTW3}/lib)
1366 if(WITH_OPENCOLLADA)
1367 set(OPENCOLLADA ${LIBDIR}/opencollada)
1369 set(OPENCOLLADA_INCLUDE_DIRS
1370 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1371 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1372 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1373 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1374 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1377 set(OPENCOLLADA_LIBRARIES
1378 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADASaxFrameworkLoader.lib
1379 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAFramework.lib
1380 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADABaseUtils.lib
1381 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter.lib
1382 ${OPENCOLLADA}/lib/opencollada/MathMLSolver.lib
1383 ${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser.lib
1384 ${OPENCOLLADA}/lib/opencollada/xml.lib
1385 ${OPENCOLLADA}/lib/opencollada/buffer.lib
1386 ${OPENCOLLADA}/lib/opencollada/ftoa.lib
1390 list(APPEND OPENCOLLADA_LIBRARIES ${OPENCOLLADA}/lib/opencollada/UTF.lib)
1394 ${OPENCOLLADA}/lib/opencollada/pcre.lib
1398 if(WITH_CODEC_FFMPEG)
1399 set(FFMPEG_INCLUDE_DIRS
1400 ${LIBDIR}/ffmpeg/include
1401 ${LIBDIR}/ffmpeg/include/msvc
1403 find_package(FFMPEG)
1404 if(NOT FFMPEG_FOUND)
1405 message(WARNING "Using HARDCODED ffmpeg locations")
1406 set(FFMPEG_LIBRARY_VERSION 55)
1407 set(FFMPEG_LIBRARY_VERSION_AVU 52)
1408 set(FFMPEG_LIBRARIES
1409 ${LIBDIR}/ffmpeg/lib/avcodec-${FFMPEG_LIBRARY_VERSION}.lib
1410 ${LIBDIR}/ffmpeg/lib/avformat-${FFMPEG_LIBRARY_VERSION}.lib
1411 ${LIBDIR}/ffmpeg/lib/avdevice-${FFMPEG_LIBRARY_VERSION}.lib
1412 ${LIBDIR}/ffmpeg/lib/avutil-${FFMPEG_LIBRARY_VERSION_AVU}.lib
1413 ${LIBDIR}/ffmpeg/lib/swscale-2.lib
1418 if(WITH_IMAGE_OPENEXR)
1419 set(OPENEXR_ROOT_DIR ${LIBDIR}/openexr)
1420 set(OPENEXR_VERSION "2.1")
1421 find_package(OPENEXR REQUIRED)
1422 if(NOT OPENEXR_FOUND)
1423 message(WARNING "Using HARDCODED OpenEXR locations")
1424 set(OPENEXR ${LIBDIR}/openexr)
1425 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1426 set(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR}/include/OpenEXR)
1427 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1428 set(OPENEXR_LIBRARIES
1429 ${OPENEXR_LIBPATH}/Iex-2_2.lib
1430 ${OPENEXR_LIBPATH}/Half.lib
1431 ${OPENEXR_LIBPATH}/IlmImf-2_2.lib
1432 ${OPENEXR_LIBPATH}/Imath-2_2.lib
1433 ${OPENEXR_LIBPATH}/IlmThread-2_2.lib
1439 # Try to find tiff first then complain and set static and maybe wrong paths
1442 message(WARNING "Using HARDCODED libtiff locations")
1443 set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
1444 set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
1449 set(JACK_INCLUDE_DIRS
1450 ${LIBDIR}/jack/include/jack
1451 ${LIBDIR}/jack/include
1453 set(JACK_LIBRARIES optimized ${LIBDIR}/jack/lib/libjack.lib debug ${LIBDIR}/jack/lib/libjack_d.lib)
1457 set(PYTHON_VERSION 3.5) # CACHE STRING)
1459 string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1460 # Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs
1461 set(PYTHON_LIBRARY ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.lib)
1462 unset(_PYTHON_VERSION_NO_DOTS)
1464 # Shared includes for both vc2008 and vc2010
1465 set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION})
1468 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1469 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1474 set(boost_extra_libs wave)
1476 if(WITH_INTERNATIONAL)
1477 list(APPEND boost_extra_libs locale)
1480 list(APPEND boost_extra_libs iostreams)
1482 set(Boost_USE_STATIC_RUNTIME ON) # prefix lib
1483 set(Boost_USE_MULTITHREADED ON) # suffix -mt
1484 set(Boost_USE_STATIC_LIBS ON) # suffix -s
1485 find_package(Boost COMPONENTS date_time filesystem thread regex system ${boost_extra_libs})
1487 message(WARNING "USING HARDCODED boost locations")
1488 set(BOOST ${LIBDIR}/boost)
1489 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1491 set(BOOST_LIBPATH ${BOOST}/lib)
1492 set(BOOST_POSTFIX "vc120-mt-s-1_60.lib")
1493 set(BOOST_DEBUG_POSTFIX "vc120-mt-sgd-1_60.lib")
1495 set(BOOST_LIBPATH ${BOOST}/lib)
1496 set(BOOST_POSTFIX "vc140-mt-s-1_60.lib")
1497 set(BOOST_DEBUG_POSTFIX "vc140-mt-sgd-1_60.lib")
1500 optimized libboost_date_time-${BOOST_POSTFIX} optimized libboost_filesystem-${BOOST_POSTFIX}
1501 optimized libboost_regex-${BOOST_POSTFIX}
1502 optimized libboost_system-${BOOST_POSTFIX} optimized libboost_thread-${BOOST_POSTFIX}
1503 debug libboost_date_time-${BOOST_DEBUG_POSTFIX} debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
1504 debug libboost_regex-${BOOST_DEBUG_POSTFIX}
1505 debug libboost_system-${BOOST_DEBUG_POSTFIX} debug libboost_thread-${BOOST_DEBUG_POSTFIX})
1507 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1508 optimized libboost_wave-${BOOST_POSTFIX}
1509 debug libboost_wave-${BOOST_DEBUG_POSTFIX})
1511 if(WITH_INTERNATIONAL)
1512 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1513 optimized libboost_locale-${BOOST_POSTFIX}
1514 debug libboost_locale-${BOOST_DEBUG_POSTFIX})
1516 else() # we found boost using find_package
1517 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
1518 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
1519 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
1521 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1524 if(WITH_OPENIMAGEIO)
1525 find_package(OpenImageIO)
1526 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1527 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1528 set(OIIO_OPTIMIZED optimized OpenImageIO optimized OpenImageIO_Util)
1529 set(OIIO_DEBUG debug OpenImageIO_d debug OpenImageIO_Util_d)
1530 set(OPENIMAGEIO_LIBRARIES ${OIIO_OPTIMIZED} ${OIIO_DEBUG})
1531 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1532 set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0")
1533 set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD")
1534 set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe")
1535 add_definitions(-DOIIO_STATIC_BUILD)
1539 set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1540 file(GLOB LLVM_LIBRARY_OPTIMIZED ${LLVM_ROOT_DIR}/lib/*.lib)
1542 if(EXISTS ${LLVM_ROOT_DIR}/debug/lib)
1543 foreach(LLVM_OPTIMIZED_LIB ${LLVM_LIBRARY_OPTIMIZED})
1544 get_filename_component(LIBNAME ${LLVM_OPTIMIZED_LIB} ABSOLUTE)
1545 list(APPEND LLVM_LIBS optimized ${LIBNAME})
1546 endforeach(LLVM_OPTIMIZED_LIB)
1548 file(GLOB LLVM_LIBRARY_DEBUG ${LLVM_ROOT_DIR}/debug/lib/*.lib)
1550 foreach(LLVM_DEBUG_LIB ${LLVM_LIBRARY_DEBUG})
1551 get_filename_component(LIBNAME ${LLVM_DEBUG_LIB} ABSOLUTE)
1552 list(APPEND LLVM_LIBS debug ${LIBNAME})
1553 endforeach(LLVM_DEBUG_LIB)
1555 set(LLVM_LIBRARY ${LLVM_LIBS})
1557 message(WARNING "LLVM debug libs not present on this system. Using release libs for debug builds.")
1558 set(LLVM_LIBRARY ${LLVM_LIBRARY_OPTIMIZED})
1563 if(WITH_OPENCOLORIO)
1564 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1565 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1566 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1567 set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
1568 set(OPENCOLORIO_DEFINITIONS)
1572 set(TBB_LIBRARIES ${LIBDIR}/tbb/lib/tbb.lib)
1573 set(TBB_INCLUDE_DIR ${LIBDIR}/tbb/include)
1574 set(OPENVDB ${LIBDIR}/openvdb)
1575 set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include ${TBB_INCLUDE_DIR})
1576 set(OPENVDB_LIBRARIES openvdb ${TBB_LIBRARIES})
1577 set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
1580 if(WITH_MOD_CLOTH_ELTOPO)
1581 set(LAPACK ${LIBDIR}/lapack)
1582 # set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
1583 set(LAPACK_LIBPATH ${LAPACK}/lib)
1584 set(LAPACK_LIBRARIES
1585 ${LIBDIR}/lapack/lib/libf2c.lib
1586 ${LIBDIR}/lapack/lib/clapack_nowrap.lib
1587 ${LIBDIR}/lapack/lib/BLAS_nowrap.lib
1592 set(OPENSUBDIV_INCLUDE_DIR ${LIBDIR}/opensubdiv/include)
1593 set(OPENSUBDIV_LIBPATH ${LIBDIR}/opensubdiv/lib)
1594 set(OPENSUBDIV_LIBRARIES ${OPENSUBDIV_LIBPATH}/osdCPU.lib ${OPENSUBDIV_LIBPATH}/osdGPU.lib)
1595 find_package(OpenSubdiv)
1599 set(SDL ${LIBDIR}/sdl)
1600 set(SDL_INCLUDE_DIR ${SDL}/include)
1601 set(SDL_LIBPATH ${SDL}/lib)
1602 # MinGW TODO: Update MinGW to SDL2
1603 if(NOT CMAKE_COMPILER_IS_GNUCC)
1604 set(SDL_LIBRARY SDL2)
1606 set(SDL_LIBRARY SDL)
1611 if(WITH_SYSTEM_AUDASPACE)
1612 set(AUDASPACE_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
1613 set(AUDASPACE_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace.lib)
1614 set(AUDASPACE_C_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
1615 set(AUDASPACE_C_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-c.lib)
1616 set(AUDASPACE_PY_INCLUDE_DIRS ${LIBDIR}/audaspace/include/audaspace)
1617 set(AUDASPACE_PY_LIBRARIES ${LIBDIR}/audaspace/lib/audaspace-py.lib)
1620 # used in many places so include globally, like OpenGL
1621 blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
1623 elseif(CMAKE_COMPILER_IS_GNUCC)
1624 # keep GCC specific stuff here
1625 include(CheckCSourceCompiles)
1626 # Setup 64bit and 64bit windows systems
1627 CHECK_C_SOURCE_COMPILES("
1631 int main(void) { return 0; }
1636 message(STATUS "Compiling for 64 bit with MinGW-w64.")
1637 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
1639 message(STATUS "Compiling for 32 bit with MinGW-w32.")
1640 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
1642 if(WITH_RAYOPTIMIZATION)
1643 message(WARNING "MinGW-w32 is known to be unstable with 'WITH_RAYOPTIMIZATION' option enabled.")
1647 list(APPEND PLATFORM_LINKLIBS -lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi -ldbghelp)
1650 list(APPEND PLATFORM_LINKLIBS -limm32)
1653 set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
1656 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
1657 list(APPEND PLATFORM_LINKLIBS -lpthread)
1659 add_definitions(-DFREE_WINDOWS64 -DMS_WIN64)
1662 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1664 add_definitions(-DFREE_WINDOWS)
1666 set(PNG "${LIBDIR}/png")
1667 set(PNG_INCLUDE_DIRS "${PNG}/include")
1668 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1671 set(JPEG_LIBRARIES jpeg)
1673 set(JPEG_LIBRARIES libjpeg)
1675 set(PNG_LIBRARIES png)
1677 set(ZLIB ${LIBDIR}/zlib)
1678 set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
1679 set(ZLIB_LIBPATH ${ZLIB}/lib)
1680 set(ZLIB_LIBRARIES z)
1682 set(JPEG "${LIBDIR}/jpeg")
1683 set(JPEG_INCLUDE_DIR "${JPEG}/include")
1684 set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
1686 # comes with own pthread library
1687 if(NOT WITH_MINGW64)
1688 set(PTHREADS ${LIBDIR}/pthreads)
1689 #set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
1690 set(PTHREADS_LIBPATH ${PTHREADS}/lib)
1691 set(PTHREADS_LIBRARIES pthreadGC2)
1694 set(FREETYPE ${LIBDIR}/freetype)
1695 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1696 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1697 set(FREETYPE_LIBRARY freetype)
1700 set(FFTW3 ${LIBDIR}/fftw3)
1701 set(FFTW3_LIBRARIES fftw3)
1702 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1703 set(FFTW3_LIBPATH ${FFTW3}/lib)
1706 if(WITH_OPENCOLLADA)
1707 set(OPENCOLLADA ${LIBDIR}/opencollada)
1708 set(OPENCOLLADA_INCLUDE_DIRS
1709 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1710 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1711 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1712 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1713 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1715 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib/opencollada)
1716 set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver buffer ftoa xml)
1717 set(PCRE_LIBRARIES pcre)
1720 if(WITH_CODEC_FFMPEG)
1721 set(FFMPEG ${LIBDIR}/ffmpeg)
1722 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1724 set(FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll)
1726 set(FFMPEG_LIBRARIES avcodec-55 avformat-55 avdevice-55 avutil-52 swscale-2)
1728 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1731 if(WITH_IMAGE_OPENEXR)
1732 set(OPENEXR ${LIBDIR}/openexr)
1733 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1734 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1735 set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex)
1736 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1740 set(TIFF ${LIBDIR}/tiff)
1741 set(TIFF_LIBRARY tiff)
1742 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1743 set(TIFF_LIBPATH ${TIFF}/lib)
1747 set(JACK ${LIBDIR}/jack)
1748 set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include)
1749 set(JACK_LIBRARIES jack)
1750 set(JACK_LIBPATH ${JACK}/lib)
1752 # TODO, gives linking errors, force off
1757 # normally cached but not since we include them with blender
1758 set(PYTHON_VERSION 3.5) # CACHE STRING)
1759 string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1760 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}") # CACHE PATH)
1761 set(PYTHON_LIBRARY "${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}mw.lib") # CACHE FILEPATH)
1762 unset(_PYTHON_VERSION_NO_DOTS)
1765 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1766 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1770 set(BOOST ${LIBDIR}/boost)
1771 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1773 set(BOOST_POSTFIX "mgw47-mt-s-1_49")
1774 set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
1776 set(BOOST_POSTFIX "mgw46-mt-s-1_49")
1777 set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49")
1780 optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX}
1781 boost_regex-${BOOST_POSTFIX}
1782 boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX}
1783 debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
1784 boost_regex-${BOOST_DEBUG_POSTFIX}
1785 boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
1786 if(WITH_INTERNATIONAL)
1787 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1788 optimized boost_locale-${BOOST_POSTFIX}
1789 debug boost_locale-${BOOST_DEBUG_POSTFIX})
1792 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1793 optimized boost_wave-${BOOST_POSTFIX}
1794 debug boost_wave-${BOOST_DEBUG_POSTFIX})
1796 set(BOOST_LIBPATH ${BOOST}/lib)
1797 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
1800 if(WITH_OPENIMAGEIO)
1801 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1802 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1803 set(OPENIMAGEIO_LIBRARIES OpenImageIO)
1804 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1805 set(OPENIMAGEIO_DEFINITIONS "")
1806 set(OPENIMAGEIO_IDIFF "${OPENIMAGEIO}/bin/idiff.exe")
1810 set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1811 set(LLVM_LIBPATH ${LLVM_ROOT_DIR}/lib)
1812 # Explicitly set llvm lib order.
1813 #---- WARNING ON GCC ORDER OF LIBS IS IMPORTANT, DO NOT CHANGE! ---------
1814 set(LLVM_LIBRARY LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMAnalysis LLVMArchive
1815 LLVMAsmParser LLVMAsmPrinter
1816 LLVMBitReader LLVMBitWriter
1817 LLVMDebugInfo LLVMExecutionEngine
1818 LLVMInstCombine LLVMInstrumentation
1819 LLVMInterpreter LLVMJIT
1821 LLVMMCDisassembler LLVMMCJIT
1822 LLVMMCParser LLVMObject
1825 LLVMTableGen LLVMTarget
1826 LLVMTransformUtils LLVMVectorize
1827 LLVMX86AsmParser LLVMX86AsmPrinter
1828 LLVMX86CodeGen LLVMX86Desc
1829 LLVMX86Disassembler LLVMX86Info
1830 LLVMX86Utils LLVMipa
1832 # imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
1833 list(APPEND PLATFORM_LINKLIBS -limagehlp)
1836 if(WITH_OPENCOLORIO)
1837 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1838 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1839 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1840 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1841 set(OPENCOLORIO_DEFINITIONS)
1845 set(SDL ${LIBDIR}/sdl)
1846 set(SDL_INCLUDE_DIR ${SDL}/include)
1847 set(SDL_LIBRARY SDL)
1848 set(SDL_LIBPATH ${SDL}/lib)
1852 set(OPENVDB ${LIBDIR}/openvdb)
1853 set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include)
1854 set(OPENVDB_LIBRARIES openvdb ${TBB_LIBRARIES})
1855 set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
1856 set(OPENVDB_DEFINITIONS)
1859 set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
1861 ## DISABLE - causes linking errors
1862 ## for re-distribution, so users dont need mingw installed
1863 # set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
1867 # Things common to both mingw and MSVC should go here
1869 set(WINTAB_INC ${LIBDIR}/wintab/include)
1872 set(OPENAL ${LIBDIR}/openal)
1873 set(OPENALDIR ${LIBDIR}/openal)
1874 set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
1876 set(OPENAL_LIBRARY openal32)
1878 set(OPENAL_LIBRARY wrap_oal)
1880 set(OPENAL_LIBPATH ${OPENAL}/lib)
1883 if(WITH_CODEC_SNDFILE)
1884 set(SNDFILE ${LIBDIR}/sndfile)
1885 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1886 set(SNDFILE_LIBRARIES libsndfile-1)
1887 set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
1890 if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
1891 add_definitions(-D__SSE__ -D__MMX__)
1895 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1897 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1898 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1899 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1900 find_library(OSL_LIB_EXEC_DEBUG NAMES oslexec_d PATHS ${CYCLES_OSL}/lib)
1901 find_library(OSL_LIB_COMP_DEBUG NAMES oslcomp_d PATHS ${CYCLES_OSL}/lib)
1902 find_library(OSL_LIB_QUERY_DEBUG NAMES oslquery_d PATHS ${CYCLES_OSL}/lib)
1903 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})
1904 find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1905 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1907 if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
1910 message(STATUS "OSL not found")
1911 set(WITH_CYCLES_OSL OFF)
1917 if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5")
1918 set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/7/8/9
1922 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
1924 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1925 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
1927 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
1933 find_package(OpenAL)
1936 set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
1938 set(WITH_OPENAL OFF)
1943 set(OPENSUBDIV ${LIBDIR}/opensubdiv)
1944 set(OPENSUBDIV_LIBPATH ${OPENSUBDIV}/lib)
1945 find_library(OSL_LIB_UTIL NAMES osdutil PATHS ${OPENSUBDIV_LIBPATH})
1946 find_library(OSL_LIB_CPU NAMES osdCPU PATHS ${OPENSUBDIV_LIBPATH})
1947 find_library(OSL_LIB_GPU NAMES osdGPU PATHS ${OPENSUBDIV_LIBPATH})
1948 set(OPENSUBDIV_INCLUDE_DIR ${OPENSUBDIV}/include)
1949 set(OPENSUBDIV_INCLUDE_DIRS ${OPENSUBDIV_INCLUDE_DIR})
1950 list(APPEND OPENSUBDIV_LIBRARIES ${OSL_LIB_UTIL} ${OSL_LIB_CPU} ${OSL_LIB_GPU})
1954 find_library(JACK_FRAMEWORK
1957 set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
1958 if(NOT JACK_FRAMEWORK)
1963 if(WITH_CODEC_SNDFILE)
1964 set(SNDFILE ${LIBDIR}/sndfile)
1965 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1966 set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
1967 set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) # TODO, deprecate
1971 # we use precompiled libraries for py 3.5 and up by default
1972 set(PYTHON_VERSION 3.5)
1973 if(NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK)
1974 # normally cached but not since we include them with blender
1975 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
1976 # set(PYTHON_EXECUTABLE "${LIBDIR}/python/bin/python${PYTHON_VERSION}") # not used yet
1977 set(PYTHON_LIBRARY python${PYTHON_VERSION}m)
1978 set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
1979 # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
1981 # module must be compiled against Python framework
1982 set(PYTHON_INCLUDE_DIR "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}m")
1983 set(PYTHON_EXECUTABLE "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}")
1984 #set(PYTHON_LIBRARY python${PYTHON_VERSION})
1985 set(PYTHON_LIBPATH "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m")
1986 #set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled
1990 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1991 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1995 set(FFTW3 ${LIBDIR}/fftw3)
1996 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1997 set(FFTW3_LIBRARIES fftw3)
1998 set(FFTW3_LIBPATH ${FFTW3}/lib)
2001 set(PNG_LIBRARIES png)
2002 set(JPEG_LIBRARIES jpeg)
2005 set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
2006 set(ZLIB_LIBRARIES z bz2)
2008 set(FREETYPE ${LIBDIR}/freetype)
2009 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
2010 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
2011 set(FREETYPE_LIBRARY freetype)
2013 if(WITH_IMAGE_OPENEXR)
2014 set(OPENEXR ${LIBDIR}/openexr)
2015 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
2016 set(OPENEXR_INCLUDE_DIRS ${OPENEXR_INCLUDE_DIR} ${OPENEXR}/include/OpenEXR)
2017 set(OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread)
2018 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
2021 if(WITH_CODEC_FFMPEG)
2022 set(FFMPEG ${LIBDIR}/ffmpeg)
2023 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
2024 set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
2025 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
2028 find_library(SYSTEMSTUBS_LIBRARY
2033 mark_as_advanced(SYSTEMSTUBS_LIBRARY)
2034 if(SYSTEMSTUBS_LIBRARY)
2035 list(APPEND PLATFORM_LINKLIBS stdc++ SystemStubs)
2037 list(APPEND PLATFORM_LINKLIBS stdc++)
2040 set(PLATFORM_CFLAGS "-pipe -funsigned-char")
2041 set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
2042 if(WITH_CODEC_QUICKTIME)
2043 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
2044 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
2045 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
2046 # libSDL still needs 32bit carbon quicktime
2050 # XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
2051 # ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
2053 # This thread it *should* work and check the framework - campbell
2054 # http://www.cmake.org/pipermail/cmake/2005-December/007740.html
2055 find_library(3DCONNEXION_CLIENT_FRAMEWORK
2056 NAMES 3DconnexionClient
2058 if(NOT 3DCONNEXION_CLIENT_FRAMEWORK)
2059 set(WITH_INPUT_NDOF OFF)
2063 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework 3DconnexionClient")
2064 set(NDOF_INCLUDE_DIRS /Library/Frameworks/3DconnexionClient.framework/Headers )
2069 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework jackmp")
2072 if(WITH_PYTHON_MODULE OR WITH_PYTHON_FRAMEWORK)
2073 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python")# force cmake to link right framework
2076 if(WITH_OPENCOLLADA)
2077 set(OPENCOLLADA ${LIBDIR}/opencollada)
2079 set(OPENCOLLADA_INCLUDE_DIRS
2080 ${LIBDIR}/opencollada/include/COLLADAStreamWriter
2081 ${LIBDIR}/opencollada/include/COLLADABaseUtils
2082 ${LIBDIR}/opencollada/include/COLLADAFramework
2083 ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
2084 ${LIBDIR}/opencollada/include/GeneratedSaxParser
2087 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
2088 set(OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lxml2 -lbuffer -lftoa")
2089 # Use UTF functions from collada if LLVM is not enabled
2091 set(OPENCOLLADA_LIBRARIES "${OPENCOLLADA_LIBRARIES} -lUTF")
2093 # pcre is bundled with openCollada
2094 #set(PCRE ${LIBDIR}/pcre)
2095 #set(PCRE_LIBPATH ${PCRE}/lib)
2096 set(PCRE_LIBRARIES pcre)
2098 #set(EXPAT ${LIBDIR}/expat)
2099 #set(EXPAT_LIBPATH ${EXPAT}/lib)
2104 set(SDL ${LIBDIR}/sdl)
2105 set(SDL_INCLUDE_DIR ${SDL}/include)
2106 set(SDL_LIBRARY SDL2)
2107 set(SDL_LIBPATH ${SDL}/lib)
2108 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -lazy_framework ForceFeedback")
2111 set(PNG "${LIBDIR}/png")
2112 set(PNG_INCLUDE_DIRS "${PNG}/include")
2113 set(PNG_LIBPATH ${PNG}/lib)
2115 set(JPEG "${LIBDIR}/jpeg")
2116 set(JPEG_INCLUDE_DIR "${JPEG}/include")
2117 set(JPEG_LIBPATH ${JPEG}/lib)
2120 set(TIFF ${LIBDIR}/tiff)
2121 set(TIFF_INCLUDE_DIR ${TIFF}/include)
2122 set(TIFF_LIBRARY tiff)
2123 set(TIFF_LIBPATH ${TIFF}/lib)
2127 # linker needs "-weak_framework 3DconnexionClient"
2131 set(BOOST ${LIBDIR}/boost)
2132 set(BOOST_INCLUDE_DIR ${BOOST}/include)
2133 set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt boost_wave-mt)
2134 if(WITH_INTERNATIONAL)
2135 list(APPEND BOOST_LIBRARIES boost_locale-mt)
2137 if(WITH_CYCLES_NETWORK)
2138 list(APPEND BOOST_LIBRARIES boost_serialization-mt)
2141 list(APPEND BOOST_LIBRARIES boost_iostreams-mt)
2143 set(BOOST_LIBPATH ${BOOST}/lib)
2144 set(BOOST_DEFINITIONS)
2147 if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG)
2148 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale and ffmpeg needs it !
2151 if(WITH_OPENIMAGEIO)
2152 set(OPENIMAGEIO ${LIBDIR}/openimageio)
2153 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
2154 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO}/lib/libOpenImageIO.a ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
2155 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
2156 set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
2157 set(OPENIMAGEIO_IDIFF "${LIBDIR}/openimageio/bin/idiff")
2160 if(WITH_OPENCOLORIO)
2161 set(OPENCOLORIO ${LIBDIR}/opencolorio)
2162 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
2163 set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
2164 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
2168 set(OPENVDB ${LIBDIR}/openvdb)
2169 set(OPENVDB_INCLUDE_DIRS ${OPENVDB}/include)
2170 set(TBB_INCLUDE_DIRS ${LIBDIR}/tbb/include)
2171 set(TBB_LIBRARIES ${LIBDIR}/tbb/lib/libtbb.a)
2172 set(OPENVDB_LIBRARIES openvdb ${TBB_LIBRARIES})
2173 set(OPENVDB_LIBPATH ${LIBDIR}/openvdb/lib)
2174 set(OPENVDB_DEFINITIONS)
2178 set(LLVM_ROOT_DIR ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
2179 set(LLVM_VERSION "3.4" CACHE STRING "Version of LLVM to use")
2180 if(EXISTS "${LLVM_ROOT_DIR}/bin/llvm-config")
2181 set(LLVM_CONFIG "${LLVM_ROOT_DIR}/bin/llvm-config")
2183 set(LLVM_CONFIG llvm-config)
2185 execute_process(COMMAND ${LLVM_CONFIG} --version
2186 OUTPUT_VARIABLE LLVM_VERSION
2187 OUTPUT_STRIP_TRAILING_WHITESPACE)
2188 execute_process(COMMAND ${LLVM_CONFIG} --prefix
2189 OUTPUT_VARIABLE LLVM_ROOT_DIR
2190 OUTPUT_STRIP_TRAILING_WHITESPACE)
2191 execute_process(COMMAND ${LLVM_CONFIG} --libdir
2192 OUTPUT_VARIABLE LLVM_LIBPATH
2193 OUTPUT_STRIP_TRAILING_WHITESPACE)
2194 find_library(LLVM_LIBRARY
2195 NAMES LLVMAnalysis # first of a whole bunch of libs to get
2196 PATHS ${LLVM_LIBPATH})
2198 if(LLVM_LIBRARY AND LLVM_ROOT_DIR AND LLVM_LIBPATH)
2200 # if static LLVM libraries were requested, use llvm-config to generate
2201 # the list of what libraries we need, and substitute that in the right
2202 # way for LLVM_LIBRARY.
2203 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
2204 OUTPUT_VARIABLE LLVM_LIBRARY
2205 OUTPUT_STRIP_TRAILING_WHITESPACE)
2206 string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
2208 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -lLLVM-3.4")
2211 message(FATAL_ERROR "LLVM not found.")
2216 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
2218 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
2219 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
2220 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
2221 # WARNING! depends on correct order of OSL libs linking
2222 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
2223 find_path(OSL_INCLUDE_DIR OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
2224 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
2226 if(OSL_INCLUDE_DIR AND OSL_LIBRARIES AND OSL_COMPILER)
2229 message(STATUS "OSL not found")
2230 set(WITH_CYCLES_OSL OFF)
2235 execute_process(COMMAND ${CMAKE_C_COMPILER} --version OUTPUT_VARIABLE COMPILER_VENDOR)
2236 string(SUBSTRING "${COMPILER_VENDOR}" 0 5 VENDOR_NAME) # truncate output
2237 if(${VENDOR_NAME} MATCHES "Apple") # Apple does not support OpenMP reliable with gcc and not with clang
2238 set(WITH_OPENMP OFF)
2239 else() # vanilla gcc or clang_omp support OpenMP
2240 message(STATUS "Using special OpenMP enabled compiler !") # letting find_package(OpenMP) module work for gcc
2241 if(CMAKE_C_COMPILER_ID MATCHES "Clang") # clang-omp in darwin libs
2242 set(OPENMP_FOUND ON)
2243 set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "C compiler flags for OpenMP parallization" FORCE)
2244 set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "C++ compiler flags for OpenMP parallization" FORCE)
2245 include_directories(${LIBDIR}/openmp/include)
2246 link_directories(${LIBDIR}/openmp/lib)
2247 # This is a workaround for our helperbinaries ( datatoc, masgfmt, ... ),
2248 # They are linked also to omp lib, so we need it in builddir for runtime exexcution, TODO: remove all unneeded dependencies from these
2249 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
2254 set(EXETYPE MACOSX_BUNDLE)
2256 set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
2257 set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
2258 if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386")
2259 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
2260 set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
2261 if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang")
2262 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
2263 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
2266 set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
2267 set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
2270 if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5)
2271 # Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv
2272 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024")
2274 # Get rid of eventually clashes, we export some symbols explicite as local
2275 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Xlinker -unexported_symbols_list -Xlinker ${CMAKE_SOURCE_DIR}/source/creator/osx_locals.map")
2278 #-----------------------------------------------------------------------------
2282 if(NOT EXISTS "${LIBDIR}/")
2283 message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'")
2287 if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
2288 message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
2292 if(NOT WITH_OPENIMAGEIO)
2293 message(FATAL_ERROR "Cycles requires WITH_OPENIMAGEIO, the library may not have been found. Configure OIIO or disable WITH_CYCLES")
2296 message(FATAL_ERROR "Cycles requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES")
2301 message(FATAL_ERROR "Cycles OSL requires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL")
2306 if(WITH_INTERNATIONAL)
2308 message(FATAL_ERROR "Internationalization requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL")
2312 # See TEST_SSE_SUPPORT() for how this is defined.
2314 if(WITH_RAYOPTIMIZATION)
2315 if(SUPPORT_SSE_BUILD)
2316 set(PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}")
2317 add_definitions(-D__SSE__ -D__MMX__)
2319 if(SUPPORT_SSE2_BUILD)
2320 set(PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}")
2321 add_definitions(-D__SSE2__)
2322 if(NOT SUPPORT_SSE_BUILD) # dont double up
2323 add_definitions(-D__MMX__)
2329 # set the endian define
2331 # for some reason this fails on msvc
2332 add_definitions(-D__LITTLE_ENDIAN__)
2334 # OSX-Note: as we do crosscompiling with specific set architecture,
2335 # endianess-detection and autosetting is counterproductive
2336 # so we just set endianess according CMAKE_OSX_ARCHITECTURES
2338 elseif(CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
2339 add_definitions(-D__LITTLE_ENDIAN__)
2340 elseif(CMAKE_OSX_ARCHITECTURES MATCHES ppc OR CMAKE_OSX_ARCHITECTURES MATCHES ppc64)
2341 add_definitions(-D__BIG_ENDIAN__)
2344 include(TestBigEndian)
2345 test_big_endian(_SYSTEM_BIG_ENDIAN)
2346 if(_SYSTEM_BIG_ENDIAN)
2347 add_definitions(-D__BIG_ENDIAN__)
2349 add_definitions(-D__LITTLE_ENDIAN__)
2351 unset(_SYSTEM_BIG_ENDIAN)
2355 if(WITH_IMAGE_OPENJPEG)
2356 if(WITH_SYSTEM_OPENJPEG)
2358 set(OPENJPEG_DEFINES "")
2360 set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg")
2361 set(OPENJPEG_DEFINES "-DOPJ_STATIC")
2363 # Special handling of Windows platform where openjpeg is always static.
2365 set(OPENJPEG_DEFINES "-DOPJ_STATIC")
2369 if(NOT WITH_SYSTEM_EIGEN3)
2370 set(EIGEN3_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/Eigen3)
2373 #-----------------------------------------------------------------------------
2376 find_package(OpenGL)
2377 blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}")
2380 list(APPEND BLENDER_GL_LIBRARIES "${OPENGL_glu_LIBRARY}")
2381 list(APPEND GL_DEFINITIONS -DWITH_GLU)
2384 if(WITH_SYSTEM_GLES)
2385 find_package_wrapper(OpenGLES)
2388 if(WITH_GL_PROFILE_COMPAT OR WITH_GL_PROFILE_CORE)
2389 list(APPEND BLENDER_GL_LIBRARIES "${OPENGL_gl_LIBRARY}")
2391 elseif(WITH_GL_PROFILE_ES20)
2392 if(WITH_SYSTEM_GLES)
2393 if(NOT OPENGLES_LIBRARY)
2394 message(FATAL_ERROR "Unable to find OpenGL ES libraries. Install them or disable WITH_SYSTEM_GLES.")
2397 list(APPEND BLENDER_GL_LIBRARIES OPENGLES_LIBRARY)
2400 set(OPENGLES_LIBRARY "" CACHE FILEPATH "OpenGL ES 2.0 library file")
2401 mark_as_advanced(OPENGLES_LIBRARY)
2403 list(APPEND BLENDER_GL_LIBRARIES "${OPENGLES_LIBRARY}")
2405 if(NOT OPENGLES_LIBRARY)
2406 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.")
2412 # Setup paths to files needed to install and redistribute Windows Blender with OpenGL ES
2414 set(OPENGLES_DLL "" CACHE FILEPATH "OpenGL ES 2.0 redistributable DLL file")
2415 mark_as_advanced(OPENGLES_DLL)
2417 if(NOT OPENGLES_DLL)
2418 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).")
2422 list(APPEND GL_DEFINITIONS -DWITH_ANGLE)
2424 set(D3DCOMPILER_DLL "" CACHE FILEPATH "Direct3D Compiler redistributable DLL file (needed by ANGLE)")
2426 get_filename_component(D3DCOMPILER_FILENAME "${D3DCOMPILER_DLL}" NAME)
2427 list(APPEND GL_DEFINITIONS "-DD3DCOMPILER=\"\\\"${D3DCOMPILER_FILENAME}\\\"\"")
2429 mark_as_advanced(D3DCOMPILER_DLL)
2431 if(D3DCOMPILER_DLL STREQUAL "")
2432 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")
2442 list(APPEND GL_DEFINITIONS -DWITH_GL_EGL)
2444 if(WITH_SYSTEM_GLES)
2445 if(NOT OPENGLES_EGL_LIBRARY)
2446 message(FATAL_ERROR "Unable to find OpenGL ES libraries. Install them or disable WITH_SYSTEM_GLES.")
2449 list(APPEND BLENDER_GL_LIBRARIES OPENGLES_EGL_LIBRARY)
2452 set(OPENGLES_EGL_LIBRARY "" CACHE FILEPATH "EGL library file")
2453 mark_as_advanced(OPENGLES_EGL_LIBRARY)
2455 list(APPEND BLENDER_GL_LIBRARIES "${OPENGLES_LIBRARY}" "${OPENGLES_EGL_LIBRARY}")
2457 if(NOT OPENGLES_EGL_LIBRARY)
2458 message(FATAL_ERROR "To compile WITH_GL_EGL you need to set OPENGLES_EGL_LIBRARY to the file path of an EGL library.")
2464 # Setup paths to files needed to install and redistribute Windows Blender with OpenGL ES
2466 set(OPENGLES_EGL_DLL "" CACHE FILEPATH "EGL redistributable DLL file")
2467 mark_as_advanced(OPENGLES_EGL_DLL)
2469 if(NOT OPENGLES_EGL_DLL)
2470 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).")
2477 if(WITH_GL_PROFILE_COMPAT)
2478 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_COMPAT)
2481 if(WITH_GL_PROFILE_CORE)
2482 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_CORE)
2485 if(WITH_GL_PROFILE_ES20)
2486 list(APPEND GL_DEFINITIONS -DWITH_GL_PROFILE_ES20)
2490 list(APPEND GL_DEFINITIONS -DWITH_EGL)
2493 #-----------------------------------------------------------------------------
2496 find_package(OpenMP)
2498 if(NOT WITH_OPENMP_STATIC)
2499 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
2500 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
2502 # Typically avoid adding flags as defines but we can't
2503 # pass OpenMP flags to the linker for static builds, meaning
2504 # we can't add any OpenMP related flags to CFLAGS variables
2505 # since they're passed to the linker as well.
2506 add_definitions("${OpenMP_C_FLAGS}")
2508 find_library_static(OpenMP_LIBRARIES gomp ${CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES})
2511 set(WITH_OPENMP OFF)
2520 #-----------------------------------------------------------------------------
2524 list(APPEND GL_DEFINITIONS -DWITH_GLEW_MX)
2527 if(WITH_SYSTEM_GLEW)
2530 # Note: There is an assumption here that the system GLEW is not a static library.
2533 message(FATAL_ERROR "GLEW is required to build Blender. Install it or disable WITH_SYSTEM_GLEW.")
2537 set(BLENDER_GLEW_LIBRARIES ${GLEW_MX_LIBRARY})
2539 set(BLENDER_GLEW_LIBRARIES ${GLEW_LIBRARY})
2543 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew-es/include")
2545 list(APPEND GL_DEFINITIONS -DGLEW_STATIC -DWITH_GLEW_ES)
2547 # These definitions remove APIs from glew.h, making GLEW smaller, and catching unguarded API usage
2548 if(NOT WITH_GL_PROFILE_ES20)
2549 # No ES functions are needed
2550 list(APPEND GL_DEFINITIONS -DGLEW_NO_ES)
2551 elseif(NOT (WITH_GL_PROFILE_CORE OR WITH_GL_PROFILE_COMPAT))
2552 # ES is enabled, but the other functions are all disabled
2553 list(APPEND GL_DEFINITIONS -DGLEW_ES_ONLY)
2556 if(WITH_GL_PROFILE_ES20)
2558 list(APPEND GL_DEFINITIONS -DGLEW_USE_LIB_ES20)
2561 # ToDo: This is an experiment to eliminate ES 1 symbols,
2562 # GLEW doesn't really properly provide this level of control
2563 # (for example, without modification it eliminates too many symbols)
2564 # so there are lots of modifications to GLEW to make this work,
2565 # and no attempt to make it work beyond Blender at this point.
2566 list(APPEND GL_DEFINITIONS -DGL_ES_VERSION_1_0=0 -DGL_ES_VERSION_CL_1_1=0 -DGL_ES_VERSION_CM_1_1=0)
2570 list(APPEND GL_DEFINITIONS -DGLEW_INC_EGL)
2573 set(BLENDER_GLEW_LIBRARIES extern_glew_es bf_intern_glew_mx)
2576 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
2578 list(APPEND GL_DEFINITIONS -DGLEW_STATIC)
2580 # This won't affect the non-experimental glew library,
2581 # but is used for conditional compilation elsewhere.
2582 list(APPEND GL_DEFINITIONS -DGLEW_NO_ES)
2584 set(BLENDER_GLEW_LIBRARIES extern_glew)
2591 list(APPEND GL_DEFINITIONS -DGLEW_NO_GLU)
2594 #-----------------------------------------------------------------------------
2597 if(WITH_BULLET AND WITH_SYSTEM_BULLET)
2598 find_package(Bullet)
2599 if(NOT BULLET_FOUND)
2600 set(WITH_BULLET OFF)
2603 set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
2604 # set(BULLET_LIBRARIES "")
2607 #-----------------------------------------------------------------------------
2610 if(WITH_PYTHON_MODULE)
2611 add_definitions(-DPy_ENABLE_SHARED)
2614 #-----------------------------------------------------------------------------
2615 # Configure GLog/GFlags
2617 if(WITH_LIBMV OR WITH_GTESTS OR (WITH_CYCLES AND WITH_CYCLES_LOGGING))
2619 -DGOOGLE_GLOG_DLL_DECL=
2623 -DGFLAGS_DLL_DEFINE_FLAG=
2624 -DGFLAGS_DLL_DECLARE_FLAG=
2629 #-----------------------------------------------------------------------------
2635 if(SHARED_PTR_FOUND)
2636 if(SHARED_PTR_TR1_MEMORY_HEADER)
2637 list(APPEND CERES_DEFINES -DCERES_TR1_MEMORY_HEADER)
2639 if(SHARED_PTR_TR1_NAMESPACE)
2640 list(APPEND CERES_DEFINES -DCERES_TR1_SHARED_PTR)
2643 message(FATAL_ERROR "Ceres: Unable to find shared_ptr.")
2646 if(HAVE_STD_UNORDERED_MAP_HEADER)
2647 if(HAVE_UNORDERED_MAP_IN_STD_NAMESPACE)
2648 list(APPEND CERES_DEFINES -DCERES_STD_UNORDERED_MAP)
2650 if(HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE)
2651 list(APPEND CERES_DEFINES -DCERES_STD_UNORDERED_MAP_IN_TR1_NAMESPACE)
2653 list(APPEND CERES_DEFINES -DCERES_NO_UNORDERED_MAP)
2654 message(STATUS "Ceres: Replacing unordered_map/set with map/set (warning: slower!)")
2658 if(HAVE_UNORDERED_MAP_IN_TR1_NAMESPACE)
2659 list(APPEND CERES_DEFINES -DCERES_TR1_UNORDERED_MAP)
2661 list(APPEND CERES_DEFINES -DCERES_NO_UNORDERED_MAP)
2662 message(STATUS "Ceres: Replacing unordered_map/set with map/set (warning: slower!)")
2667 #-----------------------------------------------------------------------------
2668 # Extra compile flags
2670 if(CMAKE_COMPILER_IS_GNUCC)
2672 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2673 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_CAST_ALIGN -Wcast-align)
2674 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2675 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2676 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_VLA -Werror=vla)
2677 # system headers sometimes do this, disable for now, was: -Werror=strict-prototypes
2678 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2679 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2680 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2681 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2682 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2683 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2684 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_WRITE_STRINGS -Wwrite-strings)
2685 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_LOGICAL_OP -Wlogical-op)
2686 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNDEF -Wundef)
2687 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2688 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_NULL -Wnonnull) # C only
2689 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2690 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2691 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_TYPE_LIMITS -Wtype-limits)
2692 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_FORMAT_SIGN -Wformat-signedness)
2694 # gcc 4.2 gives annoying warnings on every file with this
2695 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2696 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNINITIALIZED -Wuninitialized)
2699 # versions before gcc4.6 give many BLI_math warnings
2700 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.6")
2701 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_REDUNDANT_DECLS -Wredundant-decls)
2702 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_REDUNDANT_DECLS -Wredundant-decls)
2705 # versions before gcc4.8 include global name-space.
2706 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.8")
2707 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_SHADOW -Wshadow)
2710 # disable because it gives warnings for printf() & friends.
2711 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_DOUBLE_PROMOTION -Wdouble-promotion -Wno-error=double-promotion)
2714 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2717 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2718 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2719 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2720 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_LOGICAL_OP -Wlogical-op)
2721 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2722 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2723 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2724 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_TYPE_LIMITS -Wtype-limits)
2725 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2726 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2727 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2728 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2729 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_POINTER_ARITH -Wpointer-arith)
2730 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_PARAMETER -Wunused-parameter)
2731 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_WRITE_STRINGS -Wwrite-strings)
2732 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
2733 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_FORMAT_SIGN -Wformat-signedness)
2735 # gcc 4.2 gives annoying warnings on every file with this
2736 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2737 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNINITIALIZED -Wuninitialized)
2740 # causes too many warnings
2742 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
2743 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_DECLARATIONS -Wmissing-declarations)
2746 # flags to undo strict flags
2747 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
2748 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2751 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2754 elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
2756 if(APPLE AND WITH_OPENMP) # we need the Intel omp lib linked here to not fail all tests due presence of -fopenmp !
2757 set(CMAKE_REQUIRED_FLAGS "-L${LIBDIR}/openmp/lib -liomp5") # these are only used for the checks
2760 # strange, clang complains these are not supported, but then yses them.
2761 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2762 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2763 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2764 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2765 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2766 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2767 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2768 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2769 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2771 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2772 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2773 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2774 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2775 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.
2776 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2777 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2779 # gives too many unfixable warnings
2780 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_MACROS -Wunused-macros)
2781 # ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_MACROS -Wunused-macros)
2783 # flags to undo strict flags
2784 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2785 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2787 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_VARIABLE_DECLARATIONS -Wno-missing-variable-declarations)
2788 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INCOMPAT_PTR_DISCARD_QUAL -Wno-incompatible-pointer-types-discards-qualifiers)
2789 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_FUNCTION -Wno-unused-function)
2790 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INT_TO_VOID_POINTER_CAST -Wno-int-to-void-pointer-cast)
2791 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_PROTOTYPES -Wno-missing-prototypes)
2792 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DUPLICATE_ENUM -Wno-duplicate-enum)
2793 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNDEF -Wno-undef)
2794 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_NORETURN -Wno-missing-noreturn)
2796 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_PRIVATE_FIELD -Wno-unused-private-field)
2797 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_CXX11_NARROWING -Wno-c++11-narrowing)
2798 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_NON_VIRTUAL_DTOR -Wno-non-virtual-dtor)
2799 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2800 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_REORDER -Wno-reorder)
2802 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
2804 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2805 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2806 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2808 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2809 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2810 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2812 # disable numbered, false positives
2813 set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556")
2814 set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556")
2815 elseif(CMAKE_C_COMPILER_ID MATCHES "MSVC")
2816 # most msvc warnings are C & C++
2820 "/w34062" # switch statement contains 'default' but no 'case' labels
2822 "/wd4018" # signed/unsigned mismatch
2823 "/wd4146" # unary minus operator applied to unsigned type, result still unsigned
2824 "/wd4065" # switch statement contains 'default' but no 'case' labels
2825 "/wd4127" # conditional expression is constant
2826 "/wd4181" # qualifier applied to reference type; ignored
2827 "/wd4200" # zero-sized array in struct/union
2828 "/wd4244" # conversion from 'type1' to 'type2', possible loss of data
2829 "/wd4267" # conversion from 'size_t' to 'type', possible loss of data
2830 "/wd4305" # truncation from 'type1' to 'type2'
2831 "/wd4800" # forcing value to bool 'true' or 'false'
2833 "/we4013" # 'function' undefined; assuming extern returning int
2834 "/we4431" # missing type specifier - int assumed
2837 string(REPLACE ";" " " _WARNINGS "${_WARNINGS}")
2838 set(C_WARNINGS "${_WARNINGS}")
2839 set(CXX_WARNINGS "${_WARNINGS}")
2843 # ensure python header is found since detection can fail, this could happen
2844 # with _any_ library but since we used a fixed python version this tends to
2845 # be most problematic.
2847 if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/Python.h")
2848 message(FATAL_ERROR "Missing: \"${PYTHON_INCLUDE_DIR}/Python.h\",\n"
2849 "Set the cache entry 'PYTHON_INCLUDE_DIR' to point "
2850 "to a valid python include path. Containing "
2851 "Python.h for python version \"${PYTHON_VERSION}\"")
2855 # pass, we have this in an archive to extract
2856 elseif(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
2857 find_python_package(numpy)
2861 # pass, we have this in lib/python/site-packages
2862 elseif(WITH_PYTHON_INSTALL_REQUESTS)
2863 find_python_package(requests)
2868 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang")
2869 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
2871 # Nothing special is needed, C++11 features are available by default.
2873 message(FATAL_ERROR "Compiler ${CMAKE_C_COMPILER_ID} is not supported for C++11 build yet")
2877 # Visual Studio has all standards it supports available by default
2878 if(CMAKE_COMPILER_IS_GNUCC OR CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID MATCHES "Intel")
2879 # Use C99 + GNU extensions, works with GCC, Clang, ICC
2880 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=gnu99")
2883 # Include warnings first, so its possible to disable them with user defined flags
2884 # eg: -Wno-uninitialized
2885 set(CMAKE_C_FLAGS "${C_WARNINGS} ${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}")
2886 set(CMAKE_CXX_FLAGS "${CXX_WARNINGS} ${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}")
2888 # defined above, platform spesific but shared names
2905 #-------------------------------------------------------------------------------
2908 # better not set includes here but this debugging option is off by default.
2909 if(WITH_CXX_GUARDEDALLOC)
2910 include_directories(${CMAKE_SOURCE_DIR}/intern/guardedalloc)
2911 add_definitions(-DWITH_CXX_GUARDEDALLOC)
2914 if(WITH_ASSERT_ABORT)
2915 add_definitions(-DWITH_ASSERT_ABORT)
2918 # message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
2919 # message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
2921 #-----------------------------------------------------------------------------
2925 include(GTestTesting)
2928 if(WITH_BLENDER OR WITH_PLAYER)
2929 add_subdirectory(intern)
2930 add_subdirectory(extern)
2932 # source after intern and extern to gather all
2933 # internal and external library information first, for test linking
2934 add_subdirectory(source)
2935 elseif(WITH_CYCLES_STANDALONE)
2936 add_subdirectory(intern/cycles)
2937 add_subdirectory(extern/clew)
2938 if(WITH_CUDA_DYNLOAD)
2939 add_subdirectory(extern/cuew)
2941 if(NOT WITH_SYSTEM_GLEW)
2942 add_subdirectory(extern/glew)
2946 #-----------------------------------------------------------------------------
2947 # Blender Application
2949 add_subdirectory(source/creator)
2953 #-----------------------------------------------------------------------------
2956 add_subdirectory(source/blenderplayer)
2960 #-----------------------------------------------------------------------------
2962 add_subdirectory(tests)
2965 #-----------------------------------------------------------------------------
2966 # CPack for generating packages
2967 include(build_files/cmake/packaging.cmake)
2970 #-----------------------------------------------------------------------------
2971 # Print Final Configuration
2975 set(_config_msg "\nBlender Configuration\n=====================")
2977 function(info_cfg_option
2981 set(_msg " - ${_setting}")
2982 string(LENGTH "${_msg}" _len)
2983 while("32" GREATER "${_len}")
2984 set(_msg "${_msg} ")
2985 math(EXPR _len "${_len} + 1")
2988 set(_config_msg "${_config_msg}\n${_msg}${${_setting}}" PARENT_SCOPE)
2991 function(info_cfg_text
2995 set(_config_msg "${_config_msg}\n\n ${_text}" PARENT_SCOPE)
2998 message(STATUS "C Compiler: \"${CMAKE_C_COMPILER_ID}\"")
2999 message(STATUS "C++ Compiler: \"${CMAKE_CXX_COMPILER_ID}\"")
3001 info_cfg_text("Build Options:")
3002 info_cfg_option(WITH_GAMEENGINE)
3003 info_cfg_option(WITH_PLAYER)
3004 info_cfg_option(WITH_BULLET)
3005 info_cfg_option(WITH_IK_SOLVER)
3006 info_cfg_option(WITH_IK_ITASC)
3007 info_cfg_option(WITH_OPENCOLLADA)
3008 info_cfg_option(WITH_FFTW3)
3009 info_cfg_option(WITH_INTERNATIONAL)
3010 info_cfg_option(WITH_INPUT_NDOF)
3011 info_cfg_option(WITH_CYCLES)
3012 info_cfg_option(WITH_FREESTYLE)
3013 info_cfg_option(WITH_OPENCOLORIO)
3014 info_cfg_option(WITH_OPENVDB)
3016 info_cfg_text("Compiler Options:")
3017 info_cfg_option(WITH_BUILDINFO)
3018 info_cfg_option(WITH_OPENMP)
3019 info_cfg_option(WITH_RAYOPTIMIZATION)
3021 info_cfg_text("System Options:")
3022 info_cfg_option(WITH_INSTALL_PORTABLE)
3023 info_cfg_option(WITH_X11_XF86VMODE)
3024 info_cfg_option(WITH_X11_XINPUT)
3025 info_cfg_option(WITH_MEM_JEMALLOC)
3026 info_cfg_option(WITH_MEM_VALGRIND)
3027 info_cfg_option(WITH_SYSTEM_GLEW)
3028 info_cfg_option(WITH_SYSTEM_OPENJPEG)
3030 info_cfg_text("Image Formats:")
3031 info_cfg_option(WITH_OPENIMAGEIO)
3032 info_cfg_option(WITH_IMAGE_CINEON)
3033 info_cfg_option(WITH_IMAGE_DDS)
3034 info_cfg_option(WITH_IMAGE_HDR)
3035 info_cfg_option(WITH_IMAGE_OPENEXR)
3036 info_cfg_option(WITH_IMAGE_OPENJPEG)
3037 info_cfg_option(WITH_IMAGE_TIFF)
3039 info_cfg_text("Audio:")
3040 info_cfg_option(WITH_OPENAL)
3041 info_cfg_option(WITH_SDL)
3042 info_cfg_option(WITH_SDL_DYNLOAD)
3043 info_cfg_option(WITH_JACK)
3044 info_cfg_option(WITH_JACK_DYNLOAD)
3045 info_cfg_option(WITH_CODEC_AVI)
3046 info_cfg_option(WITH_CODEC_FFMPEG)
3047 info_cfg_option(WITH_CODEC_SNDFILE)
3049 info_cfg_text("Compression:")
3050 info_cfg_option(WITH_LZMA)
3051 info_cfg_option(WITH_LZO)
3053 info_cfg_text("Python:")
3054 info_cfg_option(WITH_PYTHON_INSTALL)
3055 info_cfg_option(WITH_PYTHON_INSTALL_NUMPY)
3056 info_cfg_option(WITH_PYTHON_MODULE)
3057 info_cfg_option(WITH_PYTHON_SAFETY)
3059 info_cfg_option(WITH_PYTHON_FRAMEWORK)
3062 info_cfg_text("Modifiers:")
3063 info_cfg_option(WITH_MOD_BOOLEAN)
3064 info_cfg_option(WITH_MOD_REMESH)
3065 info_cfg_option(WITH_MOD_FLUID)
3066 info_cfg_option(WITH_MOD_OCEANSIM)
3068 info_cfg_text("OpenGL:")
3069 info_cfg_option(WITH_GLEW_ES)
3070 info_cfg_option(WITH_GLU)
3071 info_cfg_option(WITH_GL_EGL)
3072 info_cfg_option(WITH_GL_PROFILE_COMPAT)
3073 info_cfg_option(WITH_GL_PROFILE_CORE)
3074 info_cfg_option(WITH_GL_PROFILE_ES20)
3076 info_cfg_option(WITH_GL_ANGLE)
3081 message("${_config_msg}")