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)
54 # this starts out unset
55 list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/build_files/cmake/Modules")
57 # avoid having empty buildtype
58 set(CMAKE_BUILD_TYPE_INIT "Release")
60 # quiet output for Makefiles, 'make -s' helps too
61 # set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
63 # global compile definitions since add_definitions() adds for all.
64 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG _DEBUG)
65 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE NDEBUG)
66 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_MINSIZEREL NDEBUG)
67 set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO NDEBUG)
70 #-----------------------------------------------------------------------------
73 # see "cmake --help-policy CMP0003"
74 # So library linking is more sane
75 cmake_policy(SET CMP0003 NEW)
77 # So BUILDINFO and BLENDERPATH strings are automatically quoted
78 cmake_policy(SET CMP0005 NEW)
80 # So syntax problems are errors
81 cmake_policy(SET CMP0010 NEW)
83 # Input directories must have CMakeLists.txt
84 cmake_policy(SET CMP0014 NEW)
86 #-----------------------------------------------------------------------------
88 include(build_files/cmake/macros.cmake)
91 #-----------------------------------------------------------------------------
94 blender_project_hack_pre()
98 blender_project_hack_post()
102 #-----------------------------------------------------------------------------
103 # Redirect output files
105 set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" FORCE)
106 set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" FORCE)
108 #-----------------------------------------------------------------------------
109 # Set default config options
111 get_blender_version()
114 # Blender internal features
115 option(WITH_BLENDER "Build blender (disable to build only the blender player)" ON)
116 mark_as_advanced(WITH_BLENDER)
118 option(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON)
120 option(WITH_PYTHON "Enable Embedded Python API (only disable for development)" ON)
121 option(WITH_PYTHON_SECURITY "Disables execution of scripts within blend files by default" ON)
122 mark_as_advanced(WITH_PYTHON) # dont want people disabling this unless they really know what they are doing.
123 mark_as_advanced(WITH_PYTHON_SECURITY) # some distributions see this as a security issue, rather than have them patch it, make a build option.
124 set(WITH_PYTHON_SECURITY ON CACHE BOOL "ON" FORCE) # temp force on.
126 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)
127 option(WITH_PYTHON_MODULE "Enable building as a python module which runs without a user interface, like running regular blender in background mode (experimental, only enable for development)" OFF)
129 option(WITH_PYTHON_FRAMEWORK "Enable building using the Python available in the framework (OSX only)" OFF)
132 option(WITH_BUILDINFO "Include extra build details (only disable for development & faster builds)" ON)
133 option(WITH_IK_ITASC "Enable ITASC IK solver (only disable for development & for incompatible C++ compilers)" ON)
134 option(WITH_IK_SOLVER "Enable Legacy IK solver (only disable for development)" ON)
135 option(WITH_FFTW3 "Enable FFTW3 support (Used for smoke and audio effects)" ON)
136 option(WITH_BULLET "Enable Bullet (Physics Engine)" ON)
137 option(WITH_SYSTEM_BULLET "Use the systems bullet library (currently unsupported due to missing features in upstream!)" )
138 mark_as_advanced(WITH_SYSTEM_BULLET)
139 option(WITH_GAMEENGINE "Enable Game Engine" ON)
140 option(WITH_PLAYER "Build Player" OFF)
141 option(WITH_OPENCOLORIO "Enable OpenColorIO color management" ON)
142 option(WITH_COMPOSITOR "Enable the tile based nodal compositor" ON)
144 # GHOST Windowing Library Options
145 option(WITH_GHOST_DEBUG "Enable debugging output for the GHOST library" OFF)
146 mark_as_advanced(WITH_GHOST_DEBUG)
148 option(WITH_GHOST_SDL "Enable building blender against SDL for windowing rather then the native APIs" OFF)
149 mark_as_advanced(WITH_GHOST_SDL)
152 option(WITH_HEADLESS "Build without graphical support (renderfarm, server mode only)" OFF)
153 mark_as_advanced(WITH_HEADLESS)
155 option(WITH_AUDASPACE "Build with blenders audio library (only disable if you know what you're doing!)" ON)
156 mark_as_advanced(WITH_AUDASPACE)
158 option(WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" ON)
160 if(UNIX AND NOT APPLE)
161 option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)" ON)
162 option(WITH_X11_XF86VMODE "Enable X11 video mode switching" ON)
163 option(WITH_SYSTEM_GLEW "Use GLEW OpenGL wrapper library provided by the operating system" ON)
165 option(WITH_GHOST_XDND "Enable drag'n'drop support on X11 using XDND protocol" ON)
167 # not an option for other OS's
168 set(WITH_SYSTEM_GLEW OFF)
172 # (unix defaults to System OpenJPEG On)
173 if(UNIX AND NOT APPLE)
174 set(PLATFORM_DEFAULT ON)
176 set(PLATFORM_DEFAULT OFF)
178 option(WITH_SYSTEM_OPENJPEG "Use the operating systems OpenJPEG library" ${PLATFORM_DEFAULT})
179 unset(PLATFORM_DEFAULT)
183 option(WITH_MOD_FLUID "Enable Elbeem Modifier (Fluid Simulation)" ON)
184 option(WITH_MOD_SMOKE "Enable Smoke Modifier (Smoke Simulation)" ON)
185 option(WITH_MOD_BOOLEAN "Enable Boolean Modifier" ON)
186 option(WITH_MOD_REMESH "Enable Remesh Modifier" ON)
187 # option(WITH_MOD_CLOTH_ELTOPO "Enable Experimental cloth solver" OFF) # this is now only available in a branch
188 # mark_as_advanced(WITH_MOD_CLOTH_ELTOPO)
189 option(WITH_MOD_OCEANSIM "Enable Ocean Modifier" OFF)
191 # Image format support
192 option(WITH_OPENIMAGEIO "Enable OpenImageIO Support (http://www.openimageio.org)" OFF)
193 option(WITH_IMAGE_OPENEXR "Enable OpenEXR Support (http://www.openexr.com)" ON)
194 option(WITH_IMAGE_OPENJPEG "Enable OpenJpeg Support (http://www.openjpeg.org)" ON)
195 option(WITH_IMAGE_TIFF "Enable LibTIFF Support" ON)
196 option(WITH_IMAGE_DDS "Enable DDS Image Support" ON)
197 option(WITH_IMAGE_CINEON "Enable CINEON and DPX Image Support" ON)
198 option(WITH_IMAGE_HDR "Enable HDR Image Support" ON)
199 option(WITH_IMAGE_REDCODE "Enable RedCode Image Support" OFF)
200 option(WITH_IMAGE_FRAMESERVER "Enable image FrameServer Support for rendering" ON)
202 # Audio/Video format support
203 option(WITH_CODEC_AVI "Enable Blenders own AVI file support (raw/jpeg)" ON)
204 option(WITH_CODEC_FFMPEG "Enable FFMPeg Support (http://ffmpeg.org)" OFF)
205 option(WITH_CODEC_SNDFILE "Enable libsndfile Support (http://www.mega-nerd.com/libsndfile)" OFF)
208 option(WITH_CODEC_FFMPEG "Enable FFMPeg Support (http://ffmpeg.org)" ON)
209 option(WITH_CODEC_QUICKTIME "Enable Quicktime Support" ON)
211 option(WITH_CODEC_FFMPEG "Enable FFMPeg Support (http://ffmpeg.org)" OFF)
215 # Disable opencollada when we don't have precompiled libs
217 option(WITH_OPENCOLLADA "Enable OpenCollada Support (http://www.opencollada.org)" ON)
219 option(WITH_OPENCOLLADA "Enable OpenCollada Support (http://www.opencollada.org)" OFF)
223 option(WITH_SDL "Enable SDL for sound and joystick support" ON)
224 option(WITH_OPENAL "Enable OpenAL Support (http://www.openal.org)" ON)
225 option(WITH_JACK "Enable Jack Support (http://www.jackaudio.org)" OFF)
226 if(UNIX AND NOT APPLE)
227 option(WITH_JACK_DYNLOAD "Enable runtime dynamic Jack libraries loading" OFF)
231 option(WITH_LZO "Enable fast LZO compression (used for pointcache)" ON)
232 option(WITH_LZMA "Enable best LZMA compression, (used for pointcache)" ON)
234 # Camera/motion tracking
235 option(WITH_LIBMV "Enable libmv structure from motion library" ON)
238 option(WITH_FREESTYLE "Enable Freestyle (advanced edges rendering)" ON)
241 option(WITH_INPUT_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ON)
242 option(WITH_RAYOPTIMIZATION "Enable use of SIMD (SSE) optimizations for the raytracer" ON)
243 option(WITH_OPENNL "Enable use of Open Numerical Library" ON)
244 if(UNIX AND NOT APPLE)
245 option(WITH_INSTALL_PORTABLE "Install redistributeable runtime, otherwise install into CMAKE_INSTALL_PREFIX" ON)
246 option(WITH_STATIC_LIBS "Try to link with static libraries, as much as possible, to make blender more portable across distributions" OFF)
248 option(WITH_BOOST_ICU "Boost uses ICU library (required for linking with static Boost built with libicu)." OFF)
249 mark_as_advanced(WITH_BOOST_ICU)
252 option(WITH_PYTHON_INSTALL "Copy system python into the blender install folder" ON)
253 option(WITH_PYTHON_INSTALL_NUMPY "Copy system numpy into the blender install folder" ON)
254 set(PYTHON_NUMPY_PATH "" CACHE PATH "Python to python site-packages or dist-packages containing 'numpy' module")
255 mark_as_advanced(PYTHON_NUMPY_PATH)
257 if(UNIX AND NOT APPLE)
258 option(WITH_PYTHON_INSTALL_REQUESTS "Copy system requests into the blender install folder" ON)
262 option(WITH_CYCLES "Enable cycles Render Engine" ON)
263 option(WITH_CYCLES_STANDALONE "Build cycles standalone application" OFF)
264 option(WITH_CYCLES_STANDALONE_GUI "Build cycles standalone with GUI" OFF)
265 option(WITH_CYCLES_OSL "Build Cycles with OSL support" OFF)
266 option(WITH_CYCLES_CUDA_BINARIES "Build cycles CUDA binaries" OFF)
267 set(CYCLES_CUDA_BINARIES_ARCH sm_20 sm_21 sm_30 sm_35 CACHE STRING "CUDA architectures to build binaries for")
268 mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
269 unset(PLATFORM_DEFAULT)
272 option(WITH_LLVM "Use LLVM" OFF)
273 option(LLVM_STATIC "Link with LLVM static libraries" ON)
274 mark_as_advanced(LLVM_STATIC)
276 # disable for now, but plan to support on all platforms eventually
277 option(WITH_MEM_JEMALLOC "Enable malloc replacement (http://www.canonware.com/jemalloc)" OFF)
278 mark_as_advanced(WITH_MEM_JEMALLOC)
280 # currently only used for BLI_mempool
281 option(WITH_MEM_VALGRIND "Enable extended valgrind support for better reporting" OFF)
282 mark_as_advanced(WITH_MEM_VALGRIND)
285 option(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking (only enable for development)" OFF)
286 mark_as_advanced(WITH_CXX_GUARDEDALLOC)
288 option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF)
289 mark_as_advanced(WITH_ASSERT_ABORT)
291 option(WITH_BOOST "Enable features depending on boost" ON)
293 if(CMAKE_COMPILER_IS_GNUCC)
294 option(WITH_GCC_MUDFLAP "Enable mudflap" OFF)
295 mark_as_advanced(WITH_GCC_MUDFLAP)
299 cmake_minimum_required(VERSION 2.8.8)
300 cmake_policy(VERSION 2.8.8)
302 if(NOT CMAKE_OSX_ARCHITECTURES)
303 set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING
304 "Choose the architecture you want to build Blender for: i386, x86_64 or ppc"
308 execute_process(COMMAND uname -r OUTPUT_VARIABLE MAC_SYS) # check for actual system-version
309 if(${MAC_SYS} MATCHES 13)
311 elseif(${MAC_SYS} MATCHES 12)
313 elseif(${MAC_SYS} MATCHES 11)
315 elseif(${MAC_SYS} MATCHES 10)
317 elseif(${MAC_SYS} MATCHES 9)
320 set(OSX_SYSTEM unsupported)
322 message(STATUS "Detected system-version: " ${OSX_SYSTEM})
324 # workaround for incorrect cmake xcode lookup for developer previews - XCODE_VERSION does not take xcode-select path into accout
325 # but would always look into /Applications/Xcode.app while dev versions are named Xcode<version>-DP<preview_number>
326 execute_process(COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_CHECK OUTPUT_STRIP_TRAILING_WHITESPACE)
327 string(REPLACE "/Contents/Developer" "" XCODE_BUNDLE ${XCODE_CHECK}) # truncate to bundlepath in any case
328 message(STATUS "Xcode-bundle : " ${XCODE_BUNDLE})
330 if(${CMAKE_GENERATOR} MATCHES "Xcode")
332 if(${XCODE_VERSION} VERSION_GREATER 4.2) # earlier xcode has no bundled developer dir, no sense in getting xcode path from
333 string(SUBSTRING "${XCODE_CHECK}" 14 6 DP_NAME) # reduce to XCode name without dp extension
334 if(${DP_NAME} MATCHES Xcode5)
339 ##### cmake incompatibility with xcode 4.3 and higher #####
340 if(${XCODE_VERSION} MATCHES '') # cmake fails due looking for xcode in the wrong path, thus will be empty var
341 message(FATAL_ERROR "Xcode 4.3 and higher must be used with cmake 2.8-8 or higher")
343 ### end cmake incompatibility with xcode 4.3 and higher ###
345 if(${XCODE_VERSION} VERSION_EQUAL 4 OR ${XCODE_VERSION} VERSION_GREATER 4 AND ${XCODE_VERSION} VERSION_LESS 4.3)
346 # Xcode 4 defaults to the Apple LLVM Compiler.
347 # Override the default compiler selection because Blender only compiles with gcc up to xcode 4.2
348 set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
349 message(STATUS "Setting compiler to: " ${CMAKE_XCODE_ATTRIBUTE_GCC_VERSION})
351 else() # unix makefile generator does not fill XCODE_VERSION var, so we get it with a command
352 execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERS_BUILD_NR)
353 string(SUBSTRING "${XCODE_VERS_BUILD_NR}" 6 3 XCODE_VERSION) # truncate away build-nr
354 unset(XCODE_VERS_BUILD_NR)
357 message(STATUS "Detected Xcode-version: " ${XCODE_VERSION})
359 if(${XCODE_VERSION} VERSION_LESS 4.3)
360 set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk CACHE PATH "" FORCE) # use guaranteed existing sdk
362 # note: xcode-select path could be ambigous, cause /Applications/Xcode.app/Contents/Developer or /Applications/Xcode.app would be allowed
363 # so i use a selfcomposed bundlepath here
364 set(OSX_SYSROOT_PREFIX ${XCODE_BUNDLE}/Contents/Developer/Platforms/MacOSX.platform)
365 message(STATUS "OSX_SYSROOT_PREFIX: " ${OSX_SYSROOT_PREFIX})
366 set(OSX_DEVELOPER_PREFIX /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk) # use guaranteed existing sdk
367 set(CMAKE_OSX_SYSROOT ${OSX_SYSROOT_PREFIX}/${OSX_DEVELOPER_PREFIX} CACHE PATH "" FORCE)
368 if(${CMAKE_GENERATOR} MATCHES "Xcode")
369 set(CMAKE_XCODE_ATTRIBUTE_SDKROOT macosx${OSX_SYSTEM}) # to silence sdk not found warning, just overrides CMAKE_OSX_SYSROOT
373 if(OSX_SYSTEM MATCHES 10.9)
374 set(CMAKE_FIND_ROOT_PATH ${CMAKE_OSX_SYSROOT}) # make sure syslibs and headers are looked up in sdk ( expecially for 10.9 openGL atm. )
377 if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
378 set(CMAKE_OSX_DEPLOYMENT_TARGET "10.6" CACHE STRING "" FORCE) # 10.6 is our min. target, if you use higher sdk, weak linking happens
381 if(NOT ${CMAKE_GENERATOR} MATCHES "Xcode")
382 # force CMAKE_OSX_DEPLOYMENT_TARGET for makefiles, will not work else ( cmake bug ? )
383 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
384 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
385 add_definitions("-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
388 option(WITH_LIBS10.5 "Use 10.5 libs (needed for 64bit builds)" OFF)
392 #-----------------------------------------------------------------------------
393 # Check for conflicting/unsupported configurations
395 if(NOT WITH_BLENDER AND NOT WITH_PLAYER AND NOT WITH_CYCLES_STANDALONE)
396 message(FATAL_ERROR "At least one of WITH_BLENDER or WITH_PLAYER or WITH_CYCLES_STANDALONE must be enabled, nothing to do!")
399 if(NOT WITH_GAMEENGINE AND WITH_PLAYER)
400 message(FATAL_ERROR "WITH_PLAYER requires WITH_GAMEENGINE")
403 if(NOT WITH_AUDASPACE)
405 message(FATAL_ERROR "WITH_OPENAL requires WITH_AUDASPACE")
408 message(FATAL_ERROR "WITH_JACK requires WITH_AUDASPACE")
411 message(FATAL_ERROR "WITH_GAMEENGINE requires WITH_AUDASPACE")
415 if(NOT WITH_SDL AND WITH_GHOST_SDL)
416 message(FATAL_ERROR "WITH_GHOST_SDL requires WITH_SDL")
419 if(WITH_IMAGE_REDCODE AND ((NOT WITH_IMAGE_OPENJPEG) OR (NOT WITH_CODEC_FFMPEG)))
420 message(FATAL_ERROR "WITH_IMAGE_REDCODE requires WITH_IMAGE_OPENJPEG and WITH_CODEC_FFMPEG")
423 # python module, needs some different options
424 if(WITH_PYTHON_MODULE AND WITH_PLAYER)
425 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PLAYER to be OFF")
428 if(WITH_PYTHON_MODULE AND WITH_PYTHON_INSTALL)
429 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PYTHON_INSTALL to be OFF")
433 # may as well build python module without a UI
434 if(WITH_PYTHON_MODULE)
435 set(WITH_HEADLESS ON)
442 # enable boost for cycles, booleans, audaspace or i18n
443 # otherwise if the user disabled
445 # Explicitly disabled. so disable all deps.
449 message(STATUS "'WITH_BOOST' is disabled: forceing 'set(${_setting} ${_val})'")
451 set(${_setting} ${_val})
454 set_and_warn(WITH_CYCLES OFF)
455 set_and_warn(WITH_MOD_BOOLEAN OFF)
456 set_and_warn(WITH_AUDASPACE OFF)
457 set_and_warn(WITH_INTERNATIONAL OFF)
459 set_and_warn(WITH_OPENAL OFF) # depends on AUDASPACE
460 set_and_warn(WITH_GAMEENGINE OFF) # depends on AUDASPACE
461 elseif(WITH_CYCLES OR WITH_OPENIMAGEIO OR WITH_MOD_BOOLEAN OR WITH_AUDASPACE OR WITH_INTERNATIONAL)
464 # Enabled but we don't need it
468 # auto enable openimageio for cycles
470 set(WITH_OPENIMAGEIO ON)
473 # auto enable openimageio linking dependencies
475 set(WITH_IMAGE_OPENEXR ON)
476 set(WITH_IMAGE_TIFF ON)
479 # auto enable llvm for cycles_osl
481 set(WITH_LLVM ON CACHE BOOL "ON" FORCE)
484 # don't store paths to libs for portable distribution
485 if(WITH_INSTALL_PORTABLE)
486 set(CMAKE_SKIP_BUILD_RPATH TRUE)
489 if(WITH_GHOST_SDL OR WITH_HEADLESS)
490 set(WITH_GHOST_XDND OFF)
491 set(WITH_X11_XF86VMODE OFF)
492 set(WITH_X11_XINPUT OFF)
495 TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
497 TEST_STDBOOL_SUPPORT()
499 add_definitions(-DHAVE_STDBOOL_H)
502 #-----------------------------------------------------------------------------
503 # Check for valid directories
504 # ... a partial checkout may cause this.
506 # note: we need to check for a known subdir in both cases.
507 # since uninitialized git submodules will give blank dirs
509 if(WITH_INTERNATIONAL)
510 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/datafiles/locale/languages")
511 message(WARNING "Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
512 "This is a 'git submodule', which are known not to work with bridges to other version "
513 "control systems, disabling 'WITH_INTERNATIONAL'.")
514 set(WITH_INTERNATIONAL OFF)
519 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/scripts/addons/modules")
520 message(WARNING "Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
521 "This is a 'git submodule', which are known not to work with bridges to other version "
522 "control systems: * CONTINUING WITHOUT ADDONS *")
526 #-----------------------------------------------------------------------------
527 # Initialize un-cached vars, avoid unused warning
529 # linux only, not cached
530 set(WITH_BINRELOC OFF)
532 # MAXOSX only, set to avoid uninitialized
538 # these are added to later on.
542 # for gcc -Wno-blah-blah
543 set(CC_REMOVE_STRICT_FLAGS)
545 # libraries to link the binary with passed to target_link_libraries()
546 # known as LLIBS to scons
547 set(PLATFORM_LINKLIBS "")
549 # Added to linker flags in setup_liblinks
550 # - CMAKE_EXE_LINKER_FLAGS
551 # - CMAKE_EXE_LINKER_FLAGS_DEBUG
552 set(PLATFORM_LINKFLAGS "")
553 set(PLATFORM_LINKFLAGS_DEBUG "")
556 # For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
559 # -D PYTHON_VERSION=3.3 \
560 # -D PYTHON_INCLUDE_DIR=/opt/py33/include/python3.3d \
561 # -D PYTHON_LIBRARY=/opt/py33/lib/libpython3.3d.so
565 # -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.3/include/python3.3 \
566 # -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/config \
569 # When changing any of this remember to update the notes in doc/build_systems/cmake.txt
571 #-----------------------------------------------------------------------------
574 if(UNIX AND NOT APPLE)
575 macro(find_package_wrapper)
576 string(TOUPPER ${ARGV0} _NAME_UPPER)
578 set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES})
579 set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
581 find_package(${ARGV})
583 set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back})
584 unset(_cmake_find_library_suffixes_back)
588 find_package_wrapper(JPEG REQUIRED)
589 find_package_wrapper(PNG REQUIRED)
590 find_package_wrapper(ZLIB REQUIRED)
591 find_package_wrapper(Freetype REQUIRED)
594 # No way to set py33. remove for now.
595 # find_package(PythonLibs)
597 # Use our own instead, since wothout py is such a rare case,
598 # require this package
599 # XXX Linking errors with debian static python :/
600 # find_package_wrapper(PythonLibsUnix REQUIRED)
601 find_package(PythonLibsUnix REQUIRED)
604 if(WITH_IMAGE_OPENEXR)
605 find_package_wrapper(OpenEXR) # our own module
606 if(NOT OPENEXR_FOUND)
607 set(WITH_IMAGE_OPENEXR OFF)
611 if(WITH_IMAGE_OPENJPEG)
612 find_package_wrapper(OpenJPEG)
613 if(NOT OPENJPEG_FOUND)
614 set(WITH_IMAGE_OPENJPEG OFF)
619 # XXX Linking errors with debian static tiff :/
620 # find_package_wrapper(TIFF)
623 set(WITH_IMAGE_TIFF OFF)
629 find_package_wrapper(OpenAL)
636 find_package_wrapper(SDL)
643 # unset(SDLMAIN_LIBRARY CACHE)
650 find_package_wrapper(Jack)
657 if(WITH_CODEC_SNDFILE)
658 find_package_wrapper(SndFile)
659 if(NOT SNDFILE_FOUND)
660 set(WITH_CODEC_SNDFILE OFF)
664 if(WITH_CODEC_FFMPEG)
665 set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
666 set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
668 mark_as_advanced(FFMPEG)
670 # lame, but until we have proper find module for ffmpeg
671 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
672 if(EXISTS "${FFMPEG}/include/ffmpeg/")
673 list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg")
677 mark_as_advanced(FFMPEG_LIBRARIES)
678 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
679 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
683 find_package_wrapper(Fftw3)
690 find_package_wrapper(OpenCOLLADA)
691 if(OPENCOLLADA_FOUND)
692 find_package_wrapper(XML2)
693 find_package_wrapper(PCRE)
695 set(WITH_OPENCOLLADA OFF)
699 if(WITH_MEM_JEMALLOC)
700 find_package_wrapper(JeMalloc)
701 if(NOT JEMALLOC_FOUND)
702 set(WITH_MEM_JEMALLOC OFF)
707 find_package_wrapper(Spacenav)
708 if(NOT SPACENAV_FOUND)
709 set(WITH_INPUT_NDOF OFF)
712 # use generic names within blenders buildsystem.
714 set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
715 set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
720 # uses in build instructions to override include and library variables
723 set(Boost_USE_STATIC_LIBS ON)
725 set(Boost_USE_MULTITHREADED ON)
726 set(__boost_packages filesystem regex system thread date_time)
727 if(WITH_INTERNATIONAL)
728 list(APPEND __boost_packages locale)
730 if(WITH_CYCLES_NETWORK)
731 list(APPEND __boost_packages serialization)
733 find_package(Boost 1.48 COMPONENTS ${__boost_packages})
735 # try to find non-multithreaded if -mt not found, this flag
736 # doesn't matter for us, it has nothing to do with thread
737 # safety, but keep it to not disturb build setups
738 set(Boost_USE_MULTITHREADED OFF)
739 find_package(Boost 1.48 COMPONENTS ${__boost_packages})
741 unset(__boost_packages)
742 if(Boost_USE_STATIC_LIBS AND WITH_BOOST_ICU)
743 find_package(IcuLinux)
745 mark_as_advanced(Boost_DIR) # why doesnt boost do this?
748 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
749 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
750 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
751 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
755 find_package_wrapper(OpenImageIO)
757 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES})
758 set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
759 set(OPENIMAGEIO_DEFINITIONS "")
762 list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}")
764 if(WITH_IMAGE_OPENEXR)
765 list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}")
768 if(NOT OPENIMAGEIO_FOUND)
769 set(WITH_OPENIMAGEIO OFF)
770 message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
775 find_package_wrapper(OpenColorIO)
777 set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES})
778 set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
779 set(OPENCOLORIO_DEFINITIONS)
781 if(NOT OPENCOLORIO_FOUND)
782 set(WITH_OPENCOLORIO OFF)
783 message(STATUS "OpenColorIO not found")
787 # XXX Maybe most of this section should go into an llvm module?
789 # Set llvm version if not specified
791 set(LLVM_VERSION "3.0")
795 find_program(LLVM_CONFIG llvm-config-${LLVM_VERSION} HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
797 find_program(LLVM_CONFIG llvm-config HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
800 find_program(LLVM_CONFIG llvm-config-${LLVM_VERSION})
802 find_program(LLVM_CONFIG llvm-config)
806 if(NOT DEFINED LLVM_VERSION)
807 execute_process(COMMAND ${LLVM_CONFIG} --version
808 OUTPUT_VARIABLE LLVM_VERSION
809 OUTPUT_STRIP_TRAILING_WHITESPACE)
810 set(LLVM_VERSION ${LLVM_VERSION} CACHE STRING "Version of LLVM to use")
812 if(NOT DEFINED LLVM_DIRECTORY)
813 execute_process(COMMAND ${LLVM_CONFIG} --prefix
814 OUTPUT_VARIABLE LLVM_DIRECTORY
815 OUTPUT_STRIP_TRAILING_WHITESPACE)
816 set(LLVM_DIRECTORY ${LLVM_DIRECTORY} CACHE PATH "Path to the LLVM installation")
818 if(NOT DEFINED LLVM_LIBPATH)
819 execute_process(COMMAND ${LLVM_CONFIG} --libdir
820 OUTPUT_VARIABLE LLVM_LIBPATH
821 OUTPUT_STRIP_TRAILING_WHITESPACE)
822 set(LLVM_LIBPATH ${LLVM_LIBPATH} CACHE PATH "Path to the LLVM library path")
826 find_library(LLVM_LIBRARY
827 NAMES LLVMAnalysis # first of a whole bunch of libs to get
828 PATHS ${LLVM_LIBPATH})
830 find_library(LLVM_LIBRARY
831 NAMES LLVM-${LLVM_VERSION}
832 PATHS ${LLVM_LIBPATH})
836 if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIBPATH)
838 # if static LLVM libraries were requested, use llvm-config to generate
839 # the list of what libraries we need, and substitute that in the right
840 # way for LLVM_LIBRARY.
841 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
842 OUTPUT_VARIABLE LLVM_LIBRARY
843 OUTPUT_STRIP_TRAILING_WHITESPACE)
844 string(REPLACE " " ";" LLVM_LIBRARY "${LLVM_LIBRARY}")
847 message(FATAL_ERROR "LLVM not found.")
850 # Fix for conflict with Mesa llvmpipe
851 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/source/creator/blender.map")
855 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
857 message(STATUS "CYCLES_OSL = ${CYCLES_OSL}")
859 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
860 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
861 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
862 # Note: --whole-archive is needed to force loading of all symbols in liboslexec,
863 # otherwise LLVM is missing the osl_allocate_closure_component function
864 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -Wl,--whole-archive ${OSL_LIB_EXEC} -Wl,--no-whole-archive ${OSL_LIB_QUERY})
865 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
866 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
868 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
870 message(STATUS "OSL includes = ${OSL_INCLUDES}")
871 message(STATUS "OSL library = ${OSL_LIBRARIES}")
872 message(STATUS "OSL compiler = ${OSL_COMPILER}")
874 message(STATUS "OSL not found")
878 # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
879 set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread")
881 if((NOT WITH_HEADLESS) AND (NOT WITH_GHOST_SDL))
882 find_package(X11 REQUIRED)
883 find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
884 mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
886 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_X11_LIB}")
890 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xinput_LIB}")
892 set(WITH_X11_XINPUT OFF)
896 if(WITH_X11_XF86VMODE)
897 # XXX, why dont cmake make this available?
898 FIND_LIBRARY(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
899 mark_as_advanced(X11_Xxf86vmode_LIB)
900 if(X11_Xxf86vmode_LIB)
901 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xxf86vmode_LIB}")
903 set(WITH_X11_XF86VMODE OFF)
908 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
909 if(NOT WITH_PYTHON_MODULE)
910 # binreloc is linux only
911 set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include)
912 set(WITH_BINRELOC ON)
916 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -pthread")
918 # lfs on glibc, all compilers should use
919 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
922 if(CMAKE_COMPILER_IS_GNUCC)
923 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
924 # CLang is the same as GCC for now.
925 elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
926 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
928 elseif(CMAKE_C_COMPILER_ID MATCHES "SunPro")
929 set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
932 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
933 # think these next two are broken
934 find_program(XIAR xiar)
936 set(CMAKE_AR "${XIAR}")
938 mark_as_advanced(XIAR)
940 find_program(XILD xild)
942 set(CMAKE_LINKER "${XILD}")
944 mark_as_advanced(XILD)
946 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
947 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
949 # set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
950 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
951 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
956 add_definitions(-DWIN32)
959 set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi)
961 # MSVC11 SDL is not hard linked to dxguid.lib
962 if(MSVC11 AND WITH_SDL)
963 set(PLATFORM_LINKLIBS ${PLATFORM_LINKLIBS} dxguid)
967 -D_CRT_NONSTDC_NO_DEPRECATE
968 -D_CRT_SECURE_NO_DEPRECATE
969 -D_SCL_SECURE_NO_DEPRECATE
974 # MSVC11 needs _ALLOW_KEYWORD_MACROS to build
975 if(NOT MSVC_VERSION VERSION_LESS 1700)
976 add_definitions(-D_ALLOW_KEYWORD_MACROS)
980 # We want to support Vista level ABI for x64
981 if(NOT MSVC_VERSION VERSION_LESS 1700)
982 add_definitions(-D_WIN32_WINNT=0x600)
986 set(CMAKE_CXX_FLAGS "/nologo /J /Gd /EHsc /MP" CACHE STRING "MSVC MT C++ flags " FORCE)
987 set(CMAKE_C_FLAGS "/nologo /J /Gd /MP" CACHE STRING "MSVC MT C++ flags " FORCE)
990 set(CMAKE_CXX_FLAGS_DEBUG "/Od /RTC1 /MTd /Zi /MP" CACHE STRING "MSVC MT flags " FORCE)
992 set(CMAKE_CXX_FLAGS_DEBUG "/Od /RTC1 /MTd /ZI /MP" CACHE STRING "MSVC MT flags " FORCE)
994 set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /MT /MP" CACHE STRING "MSVC MT flags " FORCE)
995 set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /MT /MP" CACHE STRING "MSVC MT flags " FORCE)
996 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi /MP" CACHE STRING "MSVC MT flags " FORCE)
998 set(CMAKE_C_FLAGS_DEBUG "/Od /RTC1 /MTd /Zi /MP" CACHE STRING "MSVC MT flags " FORCE)
1000 set(CMAKE_C_FLAGS_DEBUG "/Od /RTC1 /MTd /ZI /MP" CACHE STRING "MSVC MT flags " FORCE)
1002 set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT /MP" CACHE STRING "MSVC MT flags " FORCE)
1003 set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /MT /MP" CACHE STRING "MSVC MT flags " FORCE)
1004 set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi /MP" CACHE STRING "MSVC MT flags " FORCE)
1006 # most msvc warnings are C & C++
1010 "/w34062" # switch statement contains 'default' but no 'case' labels
1012 "/wd4018" # signed/unsigned mismatch
1013 "/wd4065" # switch statement contains 'default' but no 'case' labels
1014 "/wd4127" # conditional expression is constant
1015 "/wd4181" # qualifier applied to reference type; ignored
1016 "/wd4200" # zero-sized array in struct/union
1017 "/wd4244" # conversion from 'type1' to 'type2', possible loss of data
1018 "/wd4267" # conversion from 'size_t' to 'type', possible loss of data
1019 "/wd4305" # truncation from 'type1' to 'type2'
1020 "/wd4800" # forcing value to bool 'true' or 'false'
1022 "/we4013" # 'function' undefined; assuming extern returning int
1023 "/we4431" # missing type specifier - int assumed
1026 string(REPLACE ";" " " _WARNINGS "${_WARNINGS}")
1027 set(C_WARNINGS "${_WARNINGS}")
1028 set(CXX_WARNINGS "${_WARNINGS}")
1031 set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
1033 # MSVC only, Mingw doesnt need
1035 set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
1037 set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
1040 set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
1042 if(NOT DEFINED LIBDIR)
1043 # Setup 64bit and 64bit windows systems
1045 message(STATUS "64 bit compiler detected.")
1046 set(LIBDIR_BASE ${CMAKE_SOURCE_DIR}/../lib/win64)
1048 message(STATUS "32 bit compiler detected.")
1049 set(LIBDIR_BASE ${CMAKE_SOURCE_DIR}/../lib/windows)
1052 message(STATUS "Visual C++ 2013 detected.")
1053 set(LIBDIR ${LIBDIR_BASE}_vc12)
1055 message(STATUS "Visual C++ 2012 detected.")
1056 set(LIBDIR ${LIBDIR_BASE}_vc11)
1058 set(LIBDIR ${LIBDIR_BASE})
1061 message(STATUS using LIBDIR ${LIBDIR})
1064 # Add each of our libraries to our cmake_prefix_path so find_package() could work
1065 FILE(GLOB children RELATIVE ${LIBDIR} ${LIBDIR}/*)
1066 FOREACH(child ${children})
1067 IF(IS_DIRECTORY ${LIBDIR}/${child})
1068 LIST(APPEND CMAKE_PREFIX_PATH ${LIBDIR}/${child})
1072 set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
1073 set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz_st.lib)
1074 set(ZLIB_INCLUDE_DIR ${LIBDIR}/zlib/include)
1075 set(ZLIB_LIBRARY ${LIBDIR}/zlib/lib/libz_st.lib)
1076 set(ZLIB_DIR ${LIBDIR}/zlib)
1077 find_package(zlib) # we want to find before finding things that depend on it like png
1082 set(PNG_PNG_INCLUDE_DIR ${LIBDIR}/png/include)
1083 message(WARNING "Using HARDCODED libpng locations")
1084 set(PNG_LIBRARIES libpng)
1085 set(PNG "${LIBDIR}/png")
1086 set(PNG_INCLUDE_DIR "${PNG}/include")
1087 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1090 find_package(jpeg REQUIRED)
1092 set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
1093 set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
1095 set(FREETYPE ${LIBDIR}/freetype)
1096 set(FREETYPE_INCLUDE_DIRS
1097 ${LIBDIR}/freetype/include
1098 ${LIBDIR}/freetype/include/freetype2
1100 set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
1101 find_package(freetype REQUIRED)
1104 set(FFTW3 ${LIBDIR}/fftw3)
1105 set(FFTW3_LIBRARIES libfftw)
1106 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1107 set(FFTW3_LIBPATH ${FFTW3}/lib)
1110 if(WITH_OPENCOLLADA)
1111 set(OPENCOLLADA ${LIBDIR}/opencollada)
1113 set(OPENCOLLADA_INCLUDE_DIRS
1114 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1115 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1116 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1117 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1118 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1121 set(OPENCOLLADA_LIBRARIES
1122 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADASaxFrameworkLoader.lib
1123 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAFramework.lib
1124 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADABaseUtils.lib
1125 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter.lib
1126 ${OPENCOLLADA}/lib/opencollada/MathMLSolver.lib
1127 ${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser.lib
1128 ${OPENCOLLADA}/lib/opencollada/xml.lib
1129 ${OPENCOLLADA}/lib/opencollada/buffer.lib
1130 ${OPENCOLLADA}/lib/opencollada/ftoa.lib
1131 ${OPENCOLLADA}/lib/opencollada/UTF.lib
1134 ${OPENCOLLADA}/lib/opencollada/pcre.lib
1138 if(WITH_CODEC_FFMPEG)
1139 set(FFMPEG_INCLUDE_DIRS
1140 ${LIBDIR}/ffmpeg/include
1141 ${LIBDIR}/ffmpeg/include/msvc
1143 find_package(FFMPEG)
1144 if(NOT FFMPEG_FOUND)
1145 message(WARNING "Using HARDCODED ffmpeg locations")
1146 # MSVC11 FFMPEG libs are newer
1148 set(FFMPEG_LIBRARY_VERSION 54)
1149 set(FFMPEG_LIBRARY_VERSION_AVU 52)
1151 set(FFMPEG_LIBRARY_VERSION 55)
1152 set(FFMPEG_LIBRARY_VERSION_AVU 52)
1154 set(FFMPEG_LIBRARIES
1155 ${LIBDIR}/ffmpeg/lib/avcodec-${FFMPEG_LIBRARY_VERSION}.lib
1156 ${LIBDIR}/ffmpeg/lib/avformat-${FFMPEG_LIBRARY_VERSION}.lib
1157 ${LIBDIR}/ffmpeg/lib/avdevice-${FFMPEG_LIBRARY_VERSION}.lib
1158 ${LIBDIR}/ffmpeg/lib/avutil-${FFMPEG_LIBRARY_VERSION_AVU}.lib
1159 ${LIBDIR}/ffmpeg/lib/swscale-2.lib
1164 if(WITH_IMAGE_OPENEXR)
1165 set(OPENEXR_ROOT_DIR ${LIBDIR}/openexr)
1166 set(OPENEXR_VERSION "2.1")
1167 find_package(OPENEXR REQUIRED)
1168 if(NOT OPENEXR_FOUND)
1169 message(WARNING "Using HARDCODED OpenEXR locations")
1170 set(OPENEXR ${LIBDIR}/openexr)
1171 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1172 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1173 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1174 set(OPENEXR_LIBRARIES
1175 ${OPENEXR_LIBPATH}/Iex.lib
1176 ${OPENEXR_LIBPATH}/Half.lib
1177 ${OPENEXR_LIBPATH}/IlmImf.lib
1178 ${OPENEXR_LIBPATH}/Imath.lib
1179 ${OPENEXR_LIBPATH}/IlmThread.lib
1181 endif(NOT OPENEXR_FOUND)
1185 # Try to find tiff first then complain and set static and maybe wrong paths
1188 message(WARNING "Using HARDCODED libtiff locations")
1189 set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
1190 set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
1195 set(JACK_INCLUDE_DIRS
1196 ${LIBDIR}/jack/include/jack
1197 ${LIBDIR}/jack/include
1199 set(JACK_LIBRARIES optimized ${LIBDIR}/jack/lib/libjack.lib debug ${LIBDIR}/jack/lib/libjack_d.lib)
1203 set(PYTHON_VERSION 3.3) # CACHE STRING)
1205 string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1206 # Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs
1207 set(PYTHON_LIBRARY ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.lib)
1208 unset(_PYTHON_VERSION_NO_DOTS)
1210 # Shared includes for both vc2008 and vc2010
1211 set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION})
1214 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1215 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1220 set(boost_extra_libs wave)
1221 endif(WITH_CYCLES_OSL)
1222 if(WITH_INTERNATIONAL)
1223 list(APPEND boost_extra_libs locale)
1224 endif(WITH_INTERNATIONAL)
1225 find_package(Boost COMPONENTS date_time filesystem thread regex system ${boost_extra_libs})
1227 message(WARNING "USING HARDCODED boost locations")
1228 set(BOOST ${LIBDIR}/boost)
1229 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1231 set(BOOST_LIBPATH ${BOOST}/lib)
1232 set(BOOST_POSTFIX "vc120-mt-s-1_55.lib")
1233 set(BOOST_DEBUG_POSTFIX "vc120-mt-sgd-1_55.lib")
1235 set(BOOST_LIBPATH ${BOOST}/lib)
1236 set(BOOST_POSTFIX "vc110-mt-s-1_53.lib")
1237 set(BOOST_DEBUG_POSTFIX "vc110-mt-sgd-1_53.lib")
1239 set(BOOST_LIBPATH ${BOOST}/lib)
1240 set(BOOST_POSTFIX "vc90-mt-s-1_49.lib")
1241 set(BOOST_DEBUG_POSTFIX "vc90-mt-sgd-1_49.lib")
1244 optimized libboost_date_time-${BOOST_POSTFIX} optimized libboost_filesystem-${BOOST_POSTFIX}
1245 optimized libboost_regex-${BOOST_POSTFIX}
1246 optimized libboost_system-${BOOST_POSTFIX} optimized libboost_thread-${BOOST_POSTFIX}
1247 debug libboost_date_time-${BOOST_DEBUG_POSTFIX} debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
1248 debug libboost_regex-${BOOST_DEBUG_POSTFIX}
1249 debug libboost_system-${BOOST_DEBUG_POSTFIX} debug libboost_thread-${BOOST_DEBUG_POSTFIX})
1251 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1252 optimized libboost_wave-${BOOST_POSTFIX}
1253 debug libboost_wave-${BOOST_DEBUG_POSTFIX})
1255 if(WITH_INTERNATIONAL)
1256 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1257 optimized libboost_locale-${BOOST_POSTFIX}
1258 debug libboost_locale-${BOOST_DEBUG_POSTFIX})
1260 else() # we found boost using find_package
1261 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
1262 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
1263 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
1265 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1268 if(WITH_OPENIMAGEIO)
1269 find_package(OpenImageIO)
1270 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1271 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1272 set(OPENIMAGEIO_LIBRARIES optimized OpenImageIO debug OpenImageIO_d)
1273 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1274 set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0")
1278 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1279 file(GLOB LLVM_LIBRARY_OPTIMIZED ${LLVM_DIRECTORY}/lib/*.lib)
1281 if(EXISTS ${LLVM_DIRECTORY}/debug/lib)
1282 foreach(LLVM_OPTIMIZED_LIB ${LLVM_LIBRARY_OPTIMIZED})
1283 get_filename_component(LIBNAME ${LLVM_OPTIMIZED_LIB} ABSOLUTE)
1284 list(APPEND LLVM_LIBS optimized ${LIBNAME})
1285 endforeach(LLVM_OPTIMIZED_LIB)
1287 file(GLOB LLVM_LIBRARY_DEBUG ${LLVM_DIRECTORY}/debug/lib/*.lib)
1289 foreach(LLVM_DEBUG_LIB ${LLVM_LIBRARY_DEBUG})
1290 get_filename_component(LIBNAME ${LLVM_DEBUG_LIB} ABSOLUTE)
1291 list(APPEND LLVM_LIBS debug ${LIBNAME})
1292 endforeach(LLVM_DEBUG_LIB)
1294 set(LLVM_LIBRARY ${LLVM_LIBS})
1296 message(WARNING "LLVM debug libs not present on this system. Using release libs for debug builds.")
1297 set(LLVM_LIBRARY ${LLVM_LIBRARY_OPTIMIZED})
1302 if(WITH_OPENCOLORIO)
1303 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1304 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1305 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1306 set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
1307 set(OPENCOLORIO_DEFINITIONS)
1311 if(WITH_MOD_CLOTH_ELTOPO)
1312 set(LAPACK ${LIBDIR}/lapack)
1313 # set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
1314 set(LAPACK_LIBPATH ${LAPACK}/lib)
1315 set(LAPACK_LIBRARIES
1316 ${LIBDIR}/lapack/lib/libf2c.lib
1317 ${LIBDIR}/lapack/lib/clapack_nowrap.lib
1318 ${LIBDIR}/lapack/lib/BLAS_nowrap.lib
1322 # used in many places so include globally, like OpenGL
1323 blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
1325 elseif(CMAKE_COMPILER_IS_GNUCC)
1326 # keep GCC specific stuff here
1327 include(CheckCSourceCompiles)
1328 # Setup 64bit and 64bit windows systems
1329 CHECK_C_SOURCE_COMPILES("
1333 int main(void) { return 0; }
1338 message(STATUS "Compiling for 64 bit with MinGW-w64.")
1339 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
1341 message(STATUS "Compiling for 32 bit with MinGW-w32.")
1342 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
1344 if(WITH_RAYOPTIMIZATION)
1345 message(WARNING "MinGW-w32 is known to be unstable with 'WITH_RAYOPTIMIZATION' option enabled.")
1349 set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi")
1350 set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
1353 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
1354 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread")
1356 add_definitions(-DFREE_WINDOWS64 -DMS_WIN64)
1359 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1361 add_definitions(-DFREE_WINDOWS)
1363 set(PNG "${LIBDIR}/png")
1364 set(PNG_INCLUDE_DIR "${PNG}/include")
1365 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1368 set(JPEG_LIBRARIES jpeg)
1370 set(JPEG_LIBRARIES libjpeg)
1372 set(PNG_LIBRARIES png)
1374 set(ZLIB ${LIBDIR}/zlib)
1375 set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
1376 set(ZLIB_LIBPATH ${ZLIB}/lib)
1377 set(ZLIB_LIBRARIES z)
1379 set(JPEG "${LIBDIR}/jpeg")
1380 set(JPEG_INCLUDE_DIR "${JPEG}/include")
1381 set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
1383 # comes with own pthread library
1384 if(NOT WITH_MINGW64)
1385 set(PTHREADS ${LIBDIR}/pthreads)
1386 #set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
1387 set(PTHREADS_LIBPATH ${PTHREADS}/lib)
1388 set(PTHREADS_LIBRARIES pthreadGC2)
1391 set(FREETYPE ${LIBDIR}/freetype)
1392 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1393 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1394 set(FREETYPE_LIBRARY freetype)
1397 set(FFTW3 ${LIBDIR}/fftw3)
1398 set(FFTW3_LIBRARIES fftw3)
1399 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1400 set(FFTW3_LIBPATH ${FFTW3}/lib)
1403 if(WITH_OPENCOLLADA)
1404 set(OPENCOLLADA ${LIBDIR}/opencollada)
1405 set(OPENCOLLADA_INCLUDE_DIRS
1406 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1407 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1408 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1409 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1410 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1412 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib/opencollada)
1413 set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver buffer ftoa xml)
1414 set(PCRE_LIBRARIES pcre)
1417 if(WITH_CODEC_FFMPEG)
1418 set(FFMPEG ${LIBDIR}/ffmpeg)
1419 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1421 set(FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll)
1423 set(FFMPEG_LIBRARIES avcodec-55 avformat-55 avdevice-55 avutil-52 swscale-2)
1425 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1428 if(WITH_IMAGE_OPENEXR)
1429 set(OPENEXR ${LIBDIR}/openexr)
1430 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1431 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1432 set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex)
1433 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1437 set(TIFF ${LIBDIR}/tiff)
1438 set(TIFF_LIBRARY tiff)
1439 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1440 set(TIFF_LIBPATH ${TIFF}/lib)
1444 set(JACK ${LIBDIR}/jack)
1445 set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include)
1446 set(JACK_LIBRARIES jack)
1447 set(JACK_LIBPATH ${JACK}/lib)
1449 # TODO, gives linking errors, force off
1454 # normally cached but not since we include them with blender
1455 set(PYTHON_VERSION 3.3) # CACHE STRING)
1456 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}") # CACHE PATH)
1457 set(PYTHON_LIBRARY "${LIBDIR}/python/lib/python33mw.lib") # CACHE FILEPATH)
1460 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1461 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1465 set(BOOST ${LIBDIR}/boost)
1466 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1468 set(BOOST_POSTFIX "mgw47-mt-s-1_49")
1469 set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
1471 set(BOOST_POSTFIX "mgw46-mt-s-1_49")
1472 set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49")
1475 optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX}
1476 boost_regex-${BOOST_POSTFIX}
1477 boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX}
1478 debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
1479 boost_regex-${BOOST_DEBUG_POSTFIX}
1480 boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
1481 if(WITH_INTERNATIONAL)
1482 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1483 optimized boost_locale-${BOOST_POSTFIX}
1484 debug boost_locale-${BOOST_DEBUG_POSTFIX})
1487 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1488 optimized boost_wave-${BOOST_POSTFIX}
1489 debug boost_wave-${BOOST_DEBUG_POSTFIX})
1491 set(BOOST_LIBPATH ${BOOST}/lib)
1492 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
1495 if(WITH_OPENIMAGEIO)
1496 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1497 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1498 set(OPENIMAGEIO_LIBRARIES OpenImageIO)
1499 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1500 set(OPENIMAGEIO_DEFINITIONS "")
1504 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1505 set(LLVM_LIBPATH ${LLVM_DIRECTORY}/lib)
1506 # Explicitly set llvm lib order.
1507 #---- WARNING ON GCC ORDER OF LIBS IS IMPORTANT, DO NOT CHANGE! ---------
1508 set(LLVM_LIBRARY LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMAnalysis LLVMArchive
1509 LLVMAsmParser LLVMAsmPrinter
1510 LLVMBitReader LLVMBitWriter
1511 LLVMDebugInfo LLVMExecutionEngine
1512 LLVMInstCombine LLVMInstrumentation
1513 LLVMInterpreter LLVMJIT
1515 LLVMMCDisassembler LLVMMCJIT
1516 LLVMMCParser LLVMObject
1519 LLVMTableGen LLVMTarget
1520 LLVMTransformUtils LLVMVectorize
1521 LLVMX86AsmParser LLVMX86AsmPrinter
1522 LLVMX86CodeGen LLVMX86Desc
1523 LLVMX86Disassembler LLVMX86Info
1524 LLVMX86Utils LLVMipa
1526 # imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
1527 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -limagehlp")
1530 if(WITH_OPENCOLORIO)
1531 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1532 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1533 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1534 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1535 set(OPENCOLORIO_DEFINITIONS)
1538 set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
1540 ## DISABLE - causes linking errors
1541 ## for re-distribution, so users dont need mingw installed
1542 # set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
1546 # Things common to both mingw and MSVC should go here
1548 set(WINTAB_INC ${LIBDIR}/wintab/include)
1551 set(OPENAL ${LIBDIR}/openal)
1552 set(OPENALDIR ${LIBDIR}/openal)
1553 set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
1554 if(MSVC11 OR MSVC12)
1555 set(OPENAL_LIBRARY openal32)
1557 set(OPENAL_LIBRARY wrap_oal)
1559 set(OPENAL_LIBPATH ${OPENAL}/lib)
1562 if(WITH_CODEC_SNDFILE)
1563 set(SNDFILE ${LIBDIR}/sndfile)
1564 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1565 set(SNDFILE_LIBRARIES libsndfile-1)
1566 set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
1570 set(SDL ${LIBDIR}/sdl)
1571 set(SDL_INCLUDE_DIR ${SDL}/include)
1572 set(SDL_LIBRARY SDL)
1573 set(SDL_LIBPATH ${SDL}/lib)
1576 if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
1577 add_definitions(-D__SSE__ -D__MMX__)
1581 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1583 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1584 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1585 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1586 find_library(OSL_LIB_EXEC_DEBUG NAMES oslexec_d PATHS ${CYCLES_OSL}/lib)
1587 find_library(OSL_LIB_COMP_DEBUG NAMES oslcomp_d PATHS ${CYCLES_OSL}/lib)
1588 find_library(OSL_LIB_QUERY_DEBUG NAMES oslquery_d PATHS ${CYCLES_OSL}/lib)
1589 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})
1590 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1591 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1593 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
1596 message(STATUS "OSL not found")
1602 if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5")
1603 set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/7/8/9
1607 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
1609 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1610 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
1612 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
1618 find_package(OpenAL)
1621 set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
1623 set(WITH_OPENAL OFF)
1628 find_library(JACK_FRAMEWORK
1631 set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
1632 if(NOT JACK_FRAMEWORK)
1637 if(WITH_CODEC_SNDFILE)
1638 set(SNDFILE ${LIBDIR}/sndfile)
1639 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1640 set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
1641 set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) # TODO, deprecate
1645 # we use precompiled libraries for py 3.4 and up by default
1646 set(PYTHON_VERSION 3.4)
1647 if(NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK)
1648 # normally cached but not since we include them with blender
1649 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
1650 # set(PYTHON_BINARY "${LIBDIR}/python/bin/python${PYTHON_VERSION}") # not used yet
1651 set(PYTHON_LIBRARY python${PYTHON_VERSION}m)
1652 set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
1653 # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
1655 # module must be compiled against Python framework
1656 set(PYTHON_INCLUDE_DIR "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}m")
1657 set(PYTHON_BINARY "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}")
1658 #set(PYTHON_LIBRARY python${PYTHON_VERSION})
1659 set(PYTHON_LIBPATH "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m")
1660 #set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled
1664 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1665 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1669 set(FFTW3 ${LIBDIR}/fftw3)
1670 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1671 set(FFTW3_LIBRARIES fftw3)
1672 set(FFTW3_LIBPATH ${FFTW3}/lib)
1675 set(PNG_LIBRARIES png)
1676 set(JPEG_LIBRARIES jpeg)
1679 set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
1680 set(ZLIB_LIBRARIES z bz2)
1682 set(FREETYPE ${LIBDIR}/freetype)
1683 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1684 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1685 set(FREETYPE_LIBRARY freetype)
1687 if(WITH_IMAGE_OPENEXR)
1688 set(OPENEXR ${LIBDIR}/openexr)
1689 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1690 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1691 set(OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread)
1692 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1695 if(WITH_CODEC_FFMPEG)
1696 set(FFMPEG ${LIBDIR}/ffmpeg)
1697 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1698 set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
1699 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1700 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
1703 find_library(SYSTEMSTUBS_LIBRARY
1708 mark_as_advanced(SYSTEMSTUBS_LIBRARY)
1709 if(SYSTEMSTUBS_LIBRARY)
1710 set(PLATFORM_LINKLIBS stdc++ SystemStubs)
1712 set(PLATFORM_LINKLIBS stdc++)
1715 set(PLATFORM_CFLAGS "-pipe -funsigned-char")
1716 set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
1717 if(WITH_CODEC_QUICKTIME)
1718 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
1719 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1720 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
1721 # libSDL still needs 32bit carbon quicktime
1725 # XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
1726 # ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
1728 # This thread it *should* work and check the framework - campbell
1729 # http://www.cmake.org/pipermail/cmake/2005-December/007740.html
1730 find_library(3DCONNEXION_CLIENT_FRAMEWORK
1731 NAMES 3DconnexionClient
1733 if(NOT 3DCONNEXION_CLIENT_FRAMEWORK)
1734 set(WITH_INPUT_NDOF OFF)
1738 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework 3DconnexionClient")
1739 set(NDOF_INCLUDE_DIRS /Library/Frameworks/3DconnexionClient.framework/Headers )
1744 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework jackmp")
1747 if(WITH_PYTHON_MODULE OR WITH_PYTHON_FRAMEWORK)
1748 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python")# force cmake to link right framework
1751 if(WITH_OPENCOLLADA)
1752 set(OPENCOLLADA ${LIBDIR}/opencollada)
1754 set(OPENCOLLADA_INCLUDE_DIRS
1755 ${LIBDIR}/opencollada/include/COLLADAStreamWriter
1756 ${LIBDIR}/opencollada/include/COLLADABaseUtils
1757 ${LIBDIR}/opencollada/include/COLLADAFramework
1758 ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
1759 ${LIBDIR}/opencollada/include/GeneratedSaxParser
1762 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
1763 set(OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lUTF -lxml2 -lbuffer -lftoa")
1764 # pcre is bundled with openCollada
1765 #set(PCRE ${LIBDIR}/pcre)
1766 #set(PCRE_LIBPATH ${PCRE}/lib)
1767 set(PCRE_LIBRARIES pcre)
1769 #set(EXPAT ${LIBDIR}/expat)
1770 #set(EXPAT_LIBPATH ${EXPAT}/lib)
1775 set(SDL ${LIBDIR}/sdl)
1776 set(SDL_INCLUDE_DIR ${SDL}/include)
1777 set(SDL_LIBRARY SDL)
1778 set(SDL_LIBPATH ${SDL}/lib)
1781 set(PNG "${LIBDIR}/png")
1782 set(PNG_INCLUDE_DIR "${PNG}/include")
1783 set(PNG_LIBPATH ${PNG}/lib)
1785 set(JPEG "${LIBDIR}/jpeg")
1786 set(JPEG_INCLUDE_DIR "${JPEG}/include")
1787 set(JPEG_LIBPATH ${JPEG}/lib)
1790 set(TIFF ${LIBDIR}/tiff)
1791 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1792 set(TIFF_LIBRARY tiff)
1793 set(TIFF_LIBPATH ${TIFF}/lib)
1797 # linker needs "-weak_framework 3DconnexionClient"
1801 set(BOOST ${LIBDIR}/boost)
1802 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1803 set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt boost_wave-mt)
1804 if(WITH_INTERNATIONAL)
1805 list(APPEND BOOST_LIBRARIES boost_locale-mt)
1807 if(WITH_CYCLES_NETWORK)
1808 list(APPEND BOOST_LIBRARIES boost_serialization-mt)
1810 set(BOOST_LIBPATH ${BOOST}/lib)
1811 set(BOOST_DEFINITIONS)
1814 if(WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG)
1815 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale and ffmpeg needs it !
1818 if(WITH_OPENIMAGEIO)
1819 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1820 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1821 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO}/lib/libOpenImageIO.a ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
1822 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
1823 set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
1826 if(WITH_OPENCOLORIO)
1827 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1828 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1829 set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
1830 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1831 set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD")
1835 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1836 set(LLVM_VERSION "3.1" CACHE STRING "Version of LLVM to use")
1837 if(EXISTS "${LLVM_DIRECTORY}/bin/llvm-config")
1838 set(LLVM_CONFIG "${LLVM_DIRECTORY}/bin/llvm-config")
1840 set(LLVM_CONFIG llvm-config)
1842 execute_process(COMMAND ${LLVM_CONFIG} --version
1843 OUTPUT_VARIABLE LLVM_VERSION
1844 OUTPUT_STRIP_TRAILING_WHITESPACE)
1845 execute_process(COMMAND ${LLVM_CONFIG} --prefix
1846 OUTPUT_VARIABLE LLVM_DIRECTORY
1847 OUTPUT_STRIP_TRAILING_WHITESPACE)
1848 execute_process(COMMAND ${LLVM_CONFIG} --libdir
1849 OUTPUT_VARIABLE LLVM_LIBPATH
1850 OUTPUT_STRIP_TRAILING_WHITESPACE)
1851 find_library(LLVM_LIBRARY
1852 NAMES LLVMAnalysis # first of a whole bunch of libs to get
1853 PATHS ${LLVM_LIBPATH})
1855 if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIBPATH)
1857 # if static LLVM libraries were requested, use llvm-config to generate
1858 # the list of what libraries we need, and substitute that in the right
1859 # way for LLVM_LIBRARY.
1860 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
1861 OUTPUT_VARIABLE LLVM_LIBRARY
1862 OUTPUT_STRIP_TRAILING_WHITESPACE)
1863 string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
1866 message(FATAL_ERROR "LLVM not found.")
1871 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1873 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1874 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1875 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1876 # WARNING! depends on correct order of OSL libs linking
1877 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
1878 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1879 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1881 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
1884 message(STATUS "OSL not found")
1888 if(WITH_OPENMP AND CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT ${CMAKE_C_COMPILER_VERSION} VERSION_LESS '3.4')
1889 set(OPENMP_FOUND ON)
1890 set(OpenMP_C_FLAGS "-fopenmp" CACHE STRING "C compiler flags for OpenMP parallization" FORCE)
1891 set(OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "C++ compiler flags for OpenMP parallization" FORCE)
1892 include_directories(${LIBDIR}/openmp/include)
1893 LINK_DIRECTORIES(${LIBDIR}/openmp/lib)
1894 execute_process(COMMAND ditto -arch ${CMAKE_OSX_ARCHITECTURES} ${LIBDIR}/openmp/lib/libiomp5.dylib ${CMAKE_BINARY_DIR}/bin/libiomp5.dylib) # for intermediate binaries, lib id is @loader_path
1896 set(OpenMP_C_FLAGS "" CACHE STRING "C compiler flags for OpenMP parallization" FORCE) # unset
1897 set(OpenMP_CXX_FLAGS "" CACHE STRING "C++ compiler flags for OpenMP parallization" FORCE) # unset
1900 set(EXETYPE MACOSX_BUNDLE)
1902 set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
1903 set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
1904 if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386")
1905 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
1906 set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
1907 if(NOT CMAKE_C_COMPILER_ID MATCHES "Clang")
1908 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
1909 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
1912 set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
1913 set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
1916 if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5)
1917 # Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv
1918 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024")
1922 #-----------------------------------------------------------------------------
1926 if(NOT EXISTS "${LIBDIR}/")
1927 message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'")
1931 if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
1932 message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
1936 if(NOT WITH_OPENIMAGEIO)
1937 message(FATAL_ERROR "Cycles requires WITH_OPENIMAGEIO, the library may not have been found. Configure OIIO or disable WITH_CYCLES")
1940 message(FATAL_ERROR "Cycles requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES")
1945 message(FATAL_ERROR "Cycles OSL requires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL")
1950 if(WITH_INTERNATIONAL)
1952 message(FATAL_ERROR "Internationalization requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL")
1956 # See TEST_SSE_SUPPORT() for how this is defined.
1958 if(WITH_RAYOPTIMIZATION)
1959 if(SUPPORT_SSE_BUILD)
1960 set(PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}")
1961 add_definitions(-D__SSE__ -D__MMX__)
1963 if(SUPPORT_SSE2_BUILD)
1964 set(PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}")
1965 add_definitions(-D__SSE2__)
1966 if(NOT SUPPORT_SSE_BUILD) # dont double up
1967 add_definitions(-D__MMX__)
1973 # set the endian define
1975 # for some reason this fails on msvc
1976 add_definitions(-D__LITTLE_ENDIAN__)
1978 # OSX-Note: as we do crosscompiling with specific set architecture,
1979 # endianess-detection and autosetting is counterproductive
1980 # so we just set endianess according CMAKE_OSX_ARCHITECTURES
1982 elseif(CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
1983 add_definitions(-D__LITTLE_ENDIAN__)
1984 elseif(CMAKE_OSX_ARCHITECTURES MATCHES ppc OR CMAKE_OSX_ARCHITECTURES MATCHES ppc64)
1985 add_definitions(-D__BIG_ENDIAN__)
1988 include(TestBigEndian)
1989 test_big_endian(_SYSTEM_BIG_ENDIAN)
1990 if(_SYSTEM_BIG_ENDIAN)
1991 add_definitions(-D__BIG_ENDIAN__)
1993 add_definitions(-D__LITTLE_ENDIAN__)
1995 unset(_SYSTEM_BIG_ENDIAN)
1999 if(WITH_IMAGE_OPENJPEG)
2000 if(WITH_SYSTEM_OPENJPEG)
2003 set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg")
2004 add_definitions(-DOPJ_STATIC)
2008 if(WITH_IMAGE_REDCODE)
2009 set(REDCODE ${CMAKE_SOURCE_DIR}/extern)
2010 set(REDCODE_INC ${REDCODE})
2014 #-----------------------------------------------------------------------------
2016 find_package(OpenGL)
2017 blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}")
2018 # unset(OPENGL_LIBRARIES CACHE) # not compat with older cmake
2019 # unset(OPENGL_xmesa_INCLUDE_DIR CACHE) # not compat with older cmake
2021 #-----------------------------------------------------------------------------
2024 find_package(OpenMP)
2026 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
2027 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
2029 if(APPLE AND ${CMAKE_GENERATOR} MATCHES "Xcode")
2030 set(CMAKE_XCODE_ATTRIBUTE_ENABLE_OPENMP_SUPPORT "YES")
2033 set(WITH_OPENMP OFF)
2042 #-----------------------------------------------------------------------------
2045 if(WITH_SYSTEM_GLEW)
2049 message(FATAL_ERROR "GLEW is required to build blender, install it or disable WITH_SYSTEM_GLEW")
2057 # set(GLEW_LIBRARY "") # unused
2058 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
2062 #-----------------------------------------------------------------------------
2065 if(WITH_BULLET AND WITH_SYSTEM_BULLET)
2066 find_package(Bullet)
2067 if(NOT BULLET_FOUND)
2068 set(WITH_BULLET OFF)
2071 set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
2072 # set(BULLET_LIBRARIES "")
2075 #-----------------------------------------------------------------------------
2078 if(WITH_PYTHON_MODULE)
2079 add_definitions(-DPy_ENABLE_SHARED)
2082 #-----------------------------------------------------------------------------
2083 # Extra compile flags
2085 if(CMAKE_COMPILER_IS_GNUCC)
2087 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2088 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_CAST_ALIGN -Wcast-align)
2089 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
2090 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2091 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2092 # system headers sometimes do this, disable for now, was: -Werror=strict-prototypes
2093 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2094 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2095 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2096 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2097 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2098 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2099 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_WRITE_STRINGS -Wwrite-strings)
2100 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_LOGICAL_OP -Wlogical-op)
2101 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNDEF -Wundef)
2102 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2103 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_NULL -Wnonnull) # C only
2104 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2105 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2106 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_TYPE_LIMITS -Wtype-limits)
2108 # gcc 4.2 gives annoying warnings on every file with this
2109 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2110 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNINITIALIZED -Wuninitialized)
2113 # versions before gcc4.6 give many BLI_math warnings
2114 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.6")
2115 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_REDUNDANT_DECLS -Wredundant-decls)
2116 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_REDUNDANT_DECLS -Wredundant-decls)
2119 # disable because it gives warnings for printf() & friends.
2120 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_DOUBLE_PROMOTION -Wdouble-promotion -Wno-error=double-promotion)
2123 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2126 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2127 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2128 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2129 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_LOGICAL_OP -Wlogical-op)
2130 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2131 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2132 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2133 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_TYPE_LIMITS -Wtype-limits)
2135 # gcc 4.2 gives annoying warnings on every file with this
2136 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2137 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNINITIALIZED -Wuninitialized)
2140 # causes too many warnings
2142 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
2143 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_DECLARATIONS -Wmissing-declarations)
2146 # flags to undo strict flags
2147 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
2148 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2151 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2154 elseif(CMAKE_C_COMPILER_ID MATCHES "Clang")
2156 # strange, clang complains these are not supported, but then yses them.
2157 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2158 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
2159 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2160 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2161 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2162 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2163 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2164 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2165 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2166 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2168 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2169 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2170 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2171 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2172 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.
2173 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2174 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2176 # gives too many unfixable warnings
2177 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_MACROS -Wunused-macros)
2178 # ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_MACROS -Wunused-macros)
2180 # flags to undo strict flags
2181 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2182 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2184 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_VARIABLE_DECLARATIONS -Wno-missing-variable-declarations)
2185 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INCOMPAT_PTR_DISCARD_QUAL -Wno-incompatible-pointer-types-discards-qualifiers)
2186 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_FUNCTION -Wno-unused-function)
2187 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INT_TO_VOID_POINTER_CAST -Wno-int-to-void-pointer-cast)
2188 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_PROTOTYPES -Wno-missing-prototypes)
2189 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DUPLICATE_ENUM -Wno-duplicate-enum)
2190 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNDEF -Wno-undef)
2191 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_NORETURN -Wno-missing-noreturn)
2193 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_PRIVATE_FIELD -Wno-unused-private-field)
2194 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_CXX11_NARROWING -Wno-c++11-narrowing)
2195 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_NON_VIRTUAL_DTOR -Wno-non-virtual-dtor)
2196 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2197 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_REORDER -Wno-reorder)
2199 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
2201 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2202 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2203 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2205 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2206 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2207 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2209 # disable numbered, false positives
2210 set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556")
2211 set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556")
2215 # ensure python header is found since detection can fail, this could happen
2216 # with _any_ library but since we used a fixed python version this tends to
2217 # be most problematic.
2219 if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/Python.h")
2220 message(FATAL_ERROR "Missing: \"${PYTHON_INCLUDE_DIR}/Python.h\",\n"
2221 "Set the cache entry 'PYTHON_INCLUDE_DIR' to point "
2222 "to a valid python include path. Containing "
2223 "Python.h for python version \"${PYTHON_VERSION}\"")
2227 # pass, we have this in an archive to extract
2228 elseif(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
2230 # -- disabled until we make numpy bundled with blender - campbell
2231 if((NOT ${PYTHON_NUMPY_PATH} STREQUAL "") AND (NOT ${PYTHON_NUMPY_PATH} MATCHES NOTFOUND))
2232 # if(NOT EXISTS "${PYTHON_NUMPY_PATH}/numpy")
2233 # message(WARNING "PYTHON_NUMPY_PATH is invalid, numpy not found in '${PYTHON_NUMPY_PATH}' "
2234 # "WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
2235 # set(WITH_PYTHON_INSTALL_NUMPY OFF)
2237 # not set, so initialize
2239 string(REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}")
2240 list(GET _PY_VER_SPLIT 0 _PY_VER_MAJOR)
2243 unset(PYTHON_NUMPY_PATH CACHE)
2244 find_path(PYTHON_NUMPY_PATH
2248 "${PYTHON_LIBPATH}/python${PYTHON_VERSION}/"
2249 "${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/"
2256 if(NOT EXISTS "${PYTHON_NUMPY_PATH}")
2257 message(WARNING "'numpy' path could not be found in:\n"
2258 "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/numpy', "
2259 "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/numpy', "
2260 "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/numpy', "
2261 "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/numpy', "
2262 "WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
2263 set(WITH_PYTHON_INSTALL_NUMPY OFF)
2265 message(STATUS "numpy found at '${PYTHON_NUMPY_PATH}'")
2268 unset(_PY_VER_SPLIT)
2269 unset(_PY_VER_MAJOR)
2274 # pass, we have this in lib/python/site-packages
2275 elseif(WITH_PYTHON_INSTALL_REQUESTS)
2276 if(NOT EXISTS ${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/requests)
2277 # gets annoying otherwise...
2279 message(WARNING "'requests' path could not be found in:\n"
2280 "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/requests'\n"
2281 "WITH_PYTHON_INSTALL_REQUESTS option will be ignored when installing python")
2283 set(WITH_PYTHON_INSTALL_REQUESTS OFF)
2288 if(WITH_GCC_MUDFLAP)
2289 set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -fmudflapth -funwind-tables")
2290 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lpthread -lmudflapth -rdynamic")
2291 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_MUDFLAP -Wno-error=mudflap)
2292 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_ERROR_MUDFLAP -Wno-error=mudflap)
2295 # Include warnings first, so its possible to disable them with user defined flags
2296 # eg: -Wno-uninitialized
2297 set(CMAKE_C_FLAGS "${C_WARNINGS} ${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}")
2298 set(CMAKE_CXX_FLAGS "${CXX_WARNINGS} ${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}")
2300 # defined above, platform spesific but shared names
2317 #-------------------------------------------------------------------------------
2320 # better not set includes here but this debugging option is off by default.
2321 if(WITH_CXX_GUARDEDALLOC)
2322 include_directories(${CMAKE_SOURCE_DIR}/intern/guardedalloc)
2323 add_definitions(-DWITH_CXX_GUARDEDALLOC)
2326 if(WITH_ASSERT_ABORT)
2327 add_definitions(-DWITH_ASSERT_ABORT)
2330 # message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
2331 # message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
2333 #-----------------------------------------------------------------------------
2336 if(WITH_BLENDER OR WITH_PLAYER)
2337 add_subdirectory(source)
2338 add_subdirectory(intern)
2339 add_subdirectory(extern)
2340 elseif(WITH_CYCLES_STANDALONE)
2341 add_subdirectory(intern/cycles)
2342 if(NOT WITH_SYSTEM_GLEW)
2343 add_subdirectory(extern/glew)
2347 #-----------------------------------------------------------------------------
2348 # Blender Application
2350 add_subdirectory(source/creator)
2354 #-----------------------------------------------------------------------------
2357 add_subdirectory(source/blenderplayer)
2360 #-----------------------------------------------------------------------------
2361 # CPack for generating packages
2362 include(build_files/cmake/packaging.cmake)
2365 #-----------------------------------------------------------------------------
2366 # Print Final Configuration
2369 set(_config_msg "\n* Blender Configuration *")
2370 macro(info_cfg_option
2372 set(_msg " * ${_setting}")
2373 string(LENGTH "${_msg}" _len)
2374 while("32" GREATER "${_len}")
2375 set(_msg "${_msg} ")
2376 math(EXPR _len "${_len} + 1")
2379 set(_config_msg "${_config_msg}\n${_msg}${${_setting}}")
2384 set(_config_msg "${_config_msg}\n\n ${_text}")
2389 message(STATUS "C Compiler: \"${CMAKE_C_COMPILER_ID}\"")
2390 message(STATUS "C++ Compiler: \"${CMAKE_CXX_COMPILER_ID}\"")
2392 info_cfg_text("Build Options:")
2393 info_cfg_option(WITH_GAMEENGINE)
2394 info_cfg_option(WITH_PLAYER)
2395 info_cfg_option(WITH_BULLET)
2396 info_cfg_option(WITH_IK_SOLVER)
2397 info_cfg_option(WITH_IK_ITASC)
2398 info_cfg_option(WITH_OPENCOLLADA)
2399 info_cfg_option(WITH_FFTW3)
2400 info_cfg_option(WITH_INTERNATIONAL)
2401 info_cfg_option(WITH_INPUT_NDOF)
2402 info_cfg_option(WITH_CYCLES)
2403 info_cfg_option(WITH_FREESTYLE)
2404 info_cfg_option(WITH_OPENCOLORIO)
2406 info_cfg_text("Compiler Options:")
2407 info_cfg_option(WITH_BUILDINFO)
2408 info_cfg_option(WITH_OPENMP)
2409 info_cfg_option(WITH_RAYOPTIMIZATION)
2411 info_cfg_text("System Options:")
2412 info_cfg_option(WITH_INSTALL_PORTABLE)
2413 info_cfg_option(WITH_X11_XF86VMODE)
2414 info_cfg_option(WITH_X11_XINPUT)
2415 info_cfg_option(WITH_MEM_JEMALLOC)
2416 info_cfg_option(WITH_MEM_VALGRIND)
2417 info_cfg_option(WITH_SYSTEM_GLEW)
2418 info_cfg_option(WITH_SYSTEM_OPENJPEG)
2420 info_cfg_text("Image Formats:")
2421 info_cfg_option(WITH_OPENIMAGEIO)
2422 info_cfg_option(WITH_IMAGE_CINEON)
2423 info_cfg_option(WITH_IMAGE_DDS)
2424 info_cfg_option(WITH_IMAGE_HDR)
2425 info_cfg_option(WITH_IMAGE_OPENEXR)
2426 info_cfg_option(WITH_IMAGE_OPENJPEG)
2427 info_cfg_option(WITH_IMAGE_REDCODE)
2428 info_cfg_option(WITH_IMAGE_TIFF)
2430 info_cfg_text("Audio:")
2431 info_cfg_option(WITH_OPENAL)
2432 info_cfg_option(WITH_SDL)
2433 info_cfg_option(WITH_JACK)
2434 info_cfg_option(WITH_JACK_DYNLOAD)
2435 info_cfg_option(WITH_CODEC_AVI)
2436 info_cfg_option(WITH_CODEC_FFMPEG)
2437 info_cfg_option(WITH_CODEC_SNDFILE)
2439 info_cfg_text("Compression:")
2440 info_cfg_option(WITH_LZMA)
2441 info_cfg_option(WITH_LZO)
2443 info_cfg_text("Python:")
2444 info_cfg_option(WITH_PYTHON_INSTALL)
2445 info_cfg_option(WITH_PYTHON_INSTALL_NUMPY)
2446 info_cfg_option(WITH_PYTHON_MODULE)
2447 info_cfg_option(WITH_PYTHON_SAFETY)
2449 info_cfg_option(WITH_PYTHON_FRAMEWORK)
2452 info_cfg_text("Modifiers:")
2453 info_cfg_option(WITH_MOD_BOOLEAN)
2454 info_cfg_option(WITH_MOD_REMESH)
2455 info_cfg_option(WITH_MOD_FLUID)
2456 info_cfg_option(WITH_MOD_OCEANSIM)
2458 info_cfg_text("Other:")
2459 info_cfg_option(WITH_OPENNL)
2462 message(STATUS "HAVE_STDBOOL_H = ${HAVE_STDBOOL_H}")
2466 message("${_config_msg}")