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_BOOL_COMPAT "Continue defining \"TRUE\" and \"FALSE\" until these can be replaced with \"true\" and \"false\" from stdbool.h" ON)
159 mark_as_advanced(WITH_BOOL_COMPAT)
161 # (unix defaults to OpenMP On)
162 if((UNIX AND NOT APPLE) OR (MINGW))
163 set(PLATFORM_DEFAULT ON)
165 set(PLATFORM_DEFAULT OFF)
167 option(WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" ${PLATFORM_DEFAULT})
168 unset(PLATFORM_DEFAULT)
171 if(UNIX AND NOT APPLE)
172 option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)" ON)
173 option(WITH_X11_XF86VMODE "Enable X11 video mode switching" ON)
174 option(WITH_SYSTEM_GLEW "Use GLEW OpenGL wrapper library provided by the operating system" ON)
176 # freebsd doesn't seems to support XDND
177 if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
178 option(WITH_GHOST_XDND "Enable drag'n'drop support on Linux using XDND protocol" ON)
181 # not an option for other OS's
182 set(WITH_SYSTEM_GLEW OFF)
186 # (unix defaults to System OpenJPEG On)
187 if(UNIX AND NOT APPLE)
188 set(PLATFORM_DEFAULT ON)
190 set(PLATFORM_DEFAULT OFF)
192 option(WITH_SYSTEM_OPENJPEG "Use the operating systems OpenJPEG library" ${PLATFORM_DEFAULT})
193 unset(PLATFORM_DEFAULT)
197 option(WITH_MOD_FLUID "Enable Elbeem Modifier (Fluid Simulation)" ON)
198 option(WITH_MOD_SMOKE "Enable Smoke Modifier (Smoke Simulation)" ON)
199 option(WITH_MOD_BOOLEAN "Enable Boolean Modifier" ON)
200 option(WITH_MOD_REMESH "Enable Remesh Modifier" ON)
201 # option(WITH_MOD_CLOTH_ELTOPO "Enable Experimental cloth solver" OFF) # this is now only available in a branch
202 # mark_as_advanced(WITH_MOD_CLOTH_ELTOPO)
203 option(WITH_MOD_OCEANSIM "Enable Ocean Modifier" OFF)
205 # Image format support
206 option(WITH_IMAGE_OPENEXR "Enable OpenEXR Support (http://www.openexr.com)" ON)
207 option(WITH_IMAGE_OPENJPEG "Enable OpenJpeg Support (http://www.openjpeg.org)" ON)
208 option(WITH_IMAGE_TIFF "Enable LibTIFF Support" ON)
209 option(WITH_IMAGE_DDS "Enable DDS Image Support" ON)
210 option(WITH_IMAGE_CINEON "Enable CINEON and DPX Image Support" ON)
211 option(WITH_IMAGE_HDR "Enable HDR Image Support" ON)
212 option(WITH_IMAGE_REDCODE "Enable RedCode Image Support" OFF)
213 option(WITH_IMAGE_FRAMESERVER "Enable image FrameServer Support for rendering" ON)
215 # Audio/Video format support
216 option(WITH_CODEC_AVI "Enable Blenders own AVI file support (raw/jpeg)" ON)
217 option(WITH_CODEC_FFMPEG "Enable FFMPeg Support (http://ffmpeg.org)" OFF)
219 option(WITH_CODEC_SNDFILE "Enable libsndfile Support (http://www.mega-nerd.com/libsndfile)" OFF)
220 if(APPLE OR (WIN32 AND NOT UNIX))
221 option(WITH_CODEC_QUICKTIME "Enable Quicktime Support" OFF)
225 # disable opencollada on non-apple unix because opencollada has no package for debian
226 option(WITH_OPENCOLLADA "Enable OpenCollada Support (http://www.opencollada.org)" OFF)
229 option(WITH_SDL "Enable SDL for sound and joystick support" ON)
230 option(WITH_OPENAL "Enable OpenAL Support (http://www.openal.org)" ON)
231 option(WITH_JACK "Enable Jack Support (http://www.jackaudio.org)" OFF)
232 if(UNIX AND NOT APPLE)
233 option(WITH_JACK_DYNLOAD "Enable runtime dynamic Jack libraries loading" OFF)
237 option(WITH_LZO "Enable fast LZO compression (used for pointcache)" ON)
238 option(WITH_LZMA "Enable best LZMA compression, (used for pointcache)" ON)
240 # Camera/motion tracking
241 option(WITH_LIBMV "Enable libmv structure from motion library" ON)
244 option(WITH_FREESTYLE "Enable Freestyle (advanced edges rendering)" ON)
247 option(WITH_INPUT_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ON)
248 option(WITH_RAYOPTIMIZATION "Enable use of SIMD (SSE) optimizations for the raytracer" ON)
249 if(UNIX AND NOT APPLE)
250 option(WITH_INSTALL_PORTABLE "Install redistributeable runtime, otherwise install into CMAKE_INSTALL_PREFIX" ON)
251 option(WITH_STATIC_LIBS "Try to link with static libraries, as much as possible, to make blender more portable across distributions" OFF)
253 option(WITH_BOOST_ICU "Boost uses ICU library (required for linking with static Boost built with libicu)." OFF)
254 mark_as_advanced(WITH_BOOST_ICU)
257 option(WITH_PYTHON_INSTALL "Copy system python into the blender install folder" ON)
258 option(WITH_PYTHON_INSTALL_NUMPY "Copy system numpy into the blender install folder" ON)
259 set(PYTHON_NUMPY_PATH "" CACHE PATH "Python to python site-packages or dist-packages containing 'numpy' module")
260 mark_as_advanced(PYTHON_NUMPY_PATH)
263 option(WITH_CYCLES "Enable cycles Render Engine" ON)
264 option(WITH_CYCLES_STANDALONE "Build cycles standalone application" OFF)
265 option(WITH_CYCLES_STANDALONE_GUI "Build cycles standalone with GUI" OFF)
266 option(WITH_CYCLES_OSL "Build Cycles with OSL support" OFF)
267 option(WITH_CYCLES_CUDA_BINARIES "Build cycles CUDA binaries" OFF)
268 set(CYCLES_CUDA_BINARIES_ARCH sm_20 sm_21 sm_30 sm_35 CACHE STRING "CUDA architectures to build binaries for")
269 mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
270 unset(PLATFORM_DEFAULT)
273 option(WITH_LLVM "Use LLVM" OFF)
274 option(LLVM_STATIC "Link with LLVM static libraries" ON)
275 mark_as_advanced(LLVM_STATIC)
277 # disable for now, but plan to support on all platforms eventually
278 option(WITH_MEM_JEMALLOC "Enable malloc replacement (http://www.canonware.com/jemalloc)" OFF)
279 mark_as_advanced(WITH_MEM_JEMALLOC)
282 option(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking (only enable for development)" OFF)
283 mark_as_advanced(WITH_CXX_GUARDEDALLOC)
285 option(WITH_GUARDEDALLOC "Enable GuardedAlloc (DISABLE AT OWN RISK!)" ON)
286 mark_as_advanced(WITH_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 no 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)
370 if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
371 set(CMAKE_OSX_DEPLOYMENT_TARGET "10.5" CACHE STRING "" FORCE) # 10.5 is our min. target, if you use higher sdk, weak linking happens
374 if(NOT ${CMAKE_GENERATOR} MATCHES "Xcode")
375 # force CMAKE_OSX_DEPLOYMENT_TARGET for makefiles, will not work else ( cmake bug ? )
376 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
377 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
378 add_definitions("-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
381 option(WITH_COCOA "Use Cocoa framework instead of deprecated Carbon" ON)
382 option(USE_QTKIT "Use QtKit instead of Carbon quicktime (needed for having partial quicktime for 64bit)" OFF)
383 option(WITH_LIBS10.5 "Use 10.5 libs (needed for 64bit builds)" OFF)
384 if(CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
385 set(USE_QTKIT ON CACHE BOOL "ON" FORCE) # no Quicktime in 64bit
390 #-----------------------------------------------------------------------------
391 # Check for conflicting/unsupported configurations
393 if(NOT WITH_BLENDER AND NOT WITH_PLAYER AND NOT WITH_CYCLES_STANDALONE)
394 message(FATAL_ERROR "At least one of WITH_BLENDER or WITH_PLAYER must be enabled, nothing to do!")
397 if(NOT WITH_GAMEENGINE AND WITH_PLAYER)
398 message(FATAL_ERROR "WITH_PLAYER requires WITH_GAMEENGINE")
401 if(NOT WITH_AUDASPACE)
403 message(FATAL_ERROR "WITH_OPENAL requires WITH_AUDASPACE")
406 message(FATAL_ERROR "WITH_JACK requires WITH_AUDASPACE")
409 message(FATAL_ERROR "WITH_GAMEENGINE requires WITH_AUDASPACE")
413 if(NOT WITH_SDL AND WITH_GHOST_SDL)
414 message(FATAL_ERROR "WITH_GHOST_SDL requires WITH_SDL")
417 if(WITH_IMAGE_REDCODE AND ((NOT WITH_IMAGE_OPENJPEG) OR (NOT WITH_CODEC_FFMPEG)))
418 message(FATAL_ERROR "WITH_IMAGE_REDCODE requires WITH_IMAGE_OPENJPEG and WITH_CODEC_FFMPEG")
421 # python module, needs some different options
422 if(WITH_PYTHON_MODULE AND WITH_PLAYER)
423 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PLAYER to be OFF")
426 if(WITH_PYTHON_MODULE AND WITH_PYTHON_INSTALL)
427 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PYTHON_INSTALL to be OFF")
431 # may as well build python module without a UI
432 if(WITH_PYTHON_MODULE)
433 set(WITH_HEADLESS ON)
440 # enable boost for cycles, booleans, audaspace or i18n
441 # otherwise if the user disabled
443 # Explicitly disabled. so disable all deps.
447 message(STATUS "'WITH_BOOST' is disabled: forceing 'set(${_setting} ${_val})'")
449 set(${_setting} ${_val})
452 set_and_warn(WITH_CYCLES OFF)
453 set_and_warn(WITH_MOD_BOOLEAN OFF)
454 set_and_warn(WITH_AUDASPACE OFF)
455 set_and_warn(WITH_INTERNATIONAL OFF)
457 set_and_warn(WITH_OPENAL OFF) # depends on AUDASPACE
458 set_and_warn(WITH_GAMEENGINE OFF) # depends on AUDASPACE
459 elseif(WITH_CYCLES OR WITH_MOD_BOOLEAN OR WITH_AUDASPACE OR WITH_INTERNATIONAL)
462 # Enabled but we don't need it
466 # auto enable openimageio for cycles
468 set(WITH_OPENIMAGEIO ON)
471 # auto enable openimageio linking dependencies
473 set(WITH_IMAGE_OPENEXR ON)
474 set(WITH_IMAGE_TIFF ON)
477 # auto enable llvm for cycles_osl
479 set(WITH_LLVM ON CACHE BOOL "ON" FORCE)
482 # don't store paths to libs for portable distribution
483 if(WITH_INSTALL_PORTABLE)
484 set(CMAKE_SKIP_BUILD_RPATH TRUE)
487 if(WITH_GHOST_SDL OR WITH_HEADLESS)
488 set(WITH_GHOST_XDND OFF)
489 set(WITH_X11_XF86VMODE OFF)
490 set(WITH_X11_XINPUT OFF)
494 if(WITH_CODEC_QUICKTIME)
495 message(FATAL_ERROR "MINGW requires WITH_CODEC_QUICKTIME to be OFF "
496 "because it is currently unsupported, remove this "
497 "line if youre a developer who wants to add support.")
501 TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
503 TEST_STDBOOL_SUPPORT()
505 add_definitions(-DHAVE_STDBOOL_H)
508 add_definitions(-DWITH_BOOL_COMPAT)
511 #-----------------------------------------------------------------------------
512 # Check for valid directories
513 # ... svn extern paths can be missing because of svn-git.
515 if(WITH_INTERNATIONAL)
516 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/datafiles/locale")
517 message(WARNING "Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
518 "This is an 'svn external', which are known not to work with bridges to other version "
519 "control systems, disabling 'WITH_INTERNATIONAL'.")
520 set(WITH_INTERNATIONAL OFF)
525 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/scripts/addons")
526 message(WARNING "Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
527 "This is an 'svn external', which are known not to work with bridges to other version "
528 "control systems: * CONTINUING WITHOUT ADDONS *")
532 #-----------------------------------------------------------------------------
533 # Initialize un-cached vars, avoid unused warning
535 # linux only, not cached
536 set(WITH_BINRELOC OFF)
538 # MAXOSX only, set to avoid uninitialized
544 # these are added to later on.
548 # for gcc -Wno-blah-blah
549 set(CC_REMOVE_STRICT_FLAGS)
551 # libraries to link the binary with passed to target_link_libraries()
552 # known as LLIBS to scons
553 set(PLATFORM_LINKLIBS "")
555 # Added to linker flags in setup_liblinks
556 # - CMAKE_EXE_LINKER_FLAGS
557 # - CMAKE_EXE_LINKER_FLAGS_DEBUG
558 set(PLATFORM_LINKFLAGS "")
559 set(PLATFORM_LINKFLAGS_DEBUG "")
562 # For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
565 # -D PYTHON_VERSION=3.3 \
566 # -D PYTHON_INCLUDE_DIR=/opt/py33/include/python3.3d \
567 # -D PYTHON_LIBRARY=/opt/py33/lib/libpython3.3d.so
571 # -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.3/include/python3.3 \
572 # -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/config \
575 # When changing any of this remember to update the notes in doc/build_systems/cmake.txt
577 #-----------------------------------------------------------------------------
580 if(UNIX AND NOT APPLE)
581 macro(find_package_wrapper)
582 string(TOUPPER ${ARGV0} _NAME_UPPER)
584 set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES})
585 set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
587 find_package(${ARGV})
589 set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back})
590 unset(_cmake_find_library_suffixes_back)
594 find_package_wrapper(JPEG REQUIRED)
595 find_package_wrapper(PNG REQUIRED)
596 find_package_wrapper(ZLIB REQUIRED)
597 find_package_wrapper(Freetype REQUIRED)
600 # No way to set py33. remove for now.
601 # find_package(PythonLibs)
603 # Use our own instead, since wothout py is such a rare case,
604 # require this package
605 # XXX Linking errors with debian static python :/
606 # find_package_wrapper(PythonLibsUnix REQUIRED)
607 find_package(PythonLibsUnix REQUIRED)
610 if(WITH_IMAGE_OPENEXR)
611 find_package_wrapper(OpenEXR) # our own module
612 if(NOT OPENEXR_FOUND)
613 set(WITH_IMAGE_OPENEXR OFF)
617 if(WITH_IMAGE_OPENJPEG)
618 find_package_wrapper(OpenJPEG)
619 if(NOT OPENJPEG_FOUND)
620 set(WITH_IMAGE_OPENJPEG OFF)
625 # XXX Linking errors with debian static tiff :/
626 # find_package_wrapper(TIFF)
629 set(WITH_IMAGE_TIFF OFF)
635 find_package_wrapper(OpenAL)
642 find_package_wrapper(SDL)
649 # unset(SDLMAIN_LIBRARY CACHE)
656 find_package_wrapper(Jack)
663 if(WITH_CODEC_SNDFILE)
664 find_package_wrapper(SndFile)
665 if(NOT SNDFILE_FOUND)
666 set(WITH_CODEC_SNDFILE OFF)
670 if(WITH_CODEC_FFMPEG)
671 set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
672 set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
674 mark_as_advanced(FFMPEG)
676 # lame, but until we have proper find module for ffmpeg
677 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
678 if(EXISTS "${FFMPEG}/include/ffmpeg/")
679 list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg")
683 mark_as_advanced(FFMPEG_LIBRARIES)
684 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
685 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
689 find_package_wrapper(Fftw3)
696 find_package_wrapper(OpenCOLLADA)
697 if(OPENCOLLADA_FOUND)
698 find_package_wrapper(XML2)
699 find_package_wrapper(PCRE)
701 set(WITH_OPENCOLLADA OFF)
705 if(WITH_MEM_JEMALLOC)
706 find_package_wrapper(JeMalloc)
707 if(NOT JEMALLOC_FOUND)
708 set(WITH_MEM_JEMALLOC OFF)
713 find_package_wrapper(Spacenav)
714 if(NOT SPACENAV_FOUND)
715 set(WITH_INPUT_NDOF OFF)
718 # use generic names within blenders buildsystem.
720 set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
721 set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
726 # uses in build instructions to override include and library variables
729 set(Boost_USE_STATIC_LIBS ON)
731 set(Boost_USE_MULTITHREADED ON)
732 set(__boost_packages filesystem regex system thread date_time)
733 if(WITH_INTERNATIONAL)
734 list(APPEND __boost_packages locale)
736 find_package(Boost 1.48 COMPONENTS ${__boost_packages})
737 unset(__boost_packages)
738 if(Boost_USE_STATIC_LIBS AND WITH_BOOST_ICU)
739 find_package(IcuLinux)
741 mark_as_advanced(Boost_DIR) # why doesnt boost do this?
744 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
745 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
746 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
747 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
751 find_package_wrapper(OpenImageIO)
753 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES})
754 set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
755 set(OPENIMAGEIO_DEFINITIONS "")
758 list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}")
760 if(WITH_IMAGE_OPENEXR)
761 list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}")
764 if(NOT OPENIMAGEIO_FOUND)
765 set(WITH_OPENIMAGEIO OFF)
766 message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
771 find_package_wrapper(OpenColorIO)
773 set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES})
774 set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
775 set(OPENCOLORIO_DEFINITIONS)
777 if(NOT OPENCOLORIO_FOUND)
778 set(WITH_OPENCOLORIO OFF)
779 message(STATUS "OpenColorIO not found")
783 # XXX Maybe most of this section should go into an llvm module?
785 # Set llvm version if not specified
787 set(LLVM_VERSION "3.0")
791 find_program(LLVM_CONFIG llvm-config-${LLVM_VERSION} HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
793 find_program(LLVM_CONFIG llvm-config HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
796 find_program(LLVM_CONFIG llvm-config-${LLVM_VERSION})
798 find_program(LLVM_CONFIG llvm-config)
801 execute_process(COMMAND ${LLVM_CONFIG} --version
802 OUTPUT_VARIABLE LLVM_VERSION
803 OUTPUT_STRIP_TRAILING_WHITESPACE)
804 execute_process(COMMAND ${LLVM_CONFIG} --prefix
805 OUTPUT_VARIABLE LLVM_DIRECTORY
806 OUTPUT_STRIP_TRAILING_WHITESPACE)
807 execute_process(COMMAND ${LLVM_CONFIG} --libdir
808 OUTPUT_VARIABLE LLVM_LIB_DIR
809 OUTPUT_STRIP_TRAILING_WHITESPACE)
812 find_library(LLVM_LIBRARY
813 NAMES LLVMAnalysis # first of a whole bunch of libs to get
814 PATHS ${LLVM_LIB_DIR})
816 find_library(LLVM_LIBRARY
817 NAMES LLVM-${LLVM_VERSION}
818 PATHS ${LLVM_LIB_DIR})
821 message(STATUS "LLVM version = ${LLVM_VERSION}")
822 message(STATUS "LLVM dir = ${LLVM_DIRECTORY}")
823 message(STATUS "LLVM lib dir = ${LLVM_LIB_DIR}")
824 set(LLVM_VERSION ${LLVM_VERSION} CACHE STRING "Version of LLVM to use")
825 set(LLVM_DIRECTORY ${LLVM_DIRECTORY} CACHE PATH "Path to the LLVM installation")
827 if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIB_DIR)
829 # if static LLVM libraries were requested, use llvm-config to generate
830 # the list of what libraries we need, and substitute that in the right
831 # way for LLVM_LIBRARY.
832 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
833 OUTPUT_VARIABLE LLVM_LIBRARY
834 OUTPUT_STRIP_TRAILING_WHITESPACE)
835 string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
838 message(FATAL_ERROR "LLVM not found.")
841 # Fix for conflict with Mesa llvmpipe
842 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/source/creator/blender.map")
846 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
848 message(STATUS "CYCLES_OSL = ${CYCLES_OSL}")
850 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
851 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
852 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
853 # Note: --whole-archive is needed to force loading of all symbols in liboslexec,
854 # otherwise LLVM is missing the osl_allocate_closure_component function
855 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -Wl,--whole-archive ${OSL_LIB_EXEC} -Wl,--no-whole-archive ${OSL_LIB_QUERY})
856 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
857 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
859 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
861 message(STATUS "OSL includes = ${OSL_INCLUDES}")
862 message(STATUS "OSL library = ${OSL_LIBRARIES}")
863 message(STATUS "OSL compiler = ${OSL_COMPILER}")
865 message(STATUS "OSL not found")
869 # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
870 set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread -lstdc++")
872 if((NOT WITH_HEADLESS) AND (NOT WITH_GHOST_SDL))
873 find_package(X11 REQUIRED)
874 find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
875 mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
877 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_X11_LIB}")
881 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xinput_LIB}")
883 set(WITH_X11_XINPUT OFF)
887 if(WITH_X11_XF86VMODE)
888 # XXX, why dont cmake make this available?
889 FIND_LIBRARY(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
890 mark_as_advanced(X11_Xxf86vmode_LIB)
891 if(X11_Xxf86vmode_LIB)
892 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xxf86vmode_LIB}")
894 set(WITH_X11_XF86VMODE OFF)
899 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
900 if(NOT WITH_PYTHON_MODULE)
901 # binreloc is linux only
902 set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include)
903 set(WITH_BINRELOC ON)
907 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -pthread")
909 # lfs on glibc, all compilers should use
910 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
913 if(CMAKE_COMPILER_IS_GNUCC)
914 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
915 # CLang is the same as GCC for now.
916 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
917 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
919 elseif(CMAKE_CXX_COMPILER_ID MATCHES "SunPro")
920 set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
923 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
924 # think these next two are broken
925 find_program(XIAR xiar)
927 set(CMAKE_AR "${XIAR}")
929 mark_as_advanced(XIAR)
931 find_program(XILD xild)
933 set(CMAKE_LINKER "${XILD}")
935 mark_as_advanced(XILD)
937 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
938 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
940 # set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
941 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
942 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
947 # this file is included anyway when building under Windows with cl.exe
948 # include(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)
950 if(CMAKE_COMPILER_IS_GNUCC)
951 include(CheckCSourceCompiles)
952 # Setup 64bit and 64bit windows systems
953 CHECK_C_SOURCE_COMPILES("
957 int main(void) { return 0; }
962 message(STATUS "Compiling for 64 bit with MinGW-w64.")
963 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
965 message(STATUS "Compiling for 32 bit with MinGW-w32.")
966 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
968 if(WITH_RAYOPTIMIZATION)
969 message(WARNING "MinGW-w32 is known to be unstable with 'WITH_RAYOPTIMIZATION' option enabled.")
973 # Setup 64bit and 64bit windows systems
975 message(STATUS "64 bit compiler detected.")
977 message(STATUS "Visual C++ 2012 detected.")
978 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64_vc11)
980 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64)
983 # Setup 32bit windows systems
985 message(STATUS "Visual C++ 2012 detected.")
986 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows_vc11)
988 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
993 add_definitions(-DWIN32)
995 set(JPEG "${LIBDIR}/jpeg")
996 set(JPEG_INCLUDE_DIR "${JPEG}/include")
997 set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
999 set(WINTAB_INC ${LIBDIR}/wintab/include)
1002 set(OPENAL ${LIBDIR}/openal)
1003 set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
1005 set(OPENAL_LIBRARY openal32)
1007 set(OPENAL_LIBRARY wrap_oal)
1009 set(OPENAL_LIBPATH ${OPENAL}/lib)
1012 if(WITH_CODEC_SNDFILE)
1013 set(SNDFILE ${LIBDIR}/sndfile)
1014 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1015 set(SNDFILE_LIBRARIES libsndfile-1)
1016 set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
1020 set(SDL ${LIBDIR}/sdl)
1021 set(SDL_INCLUDE_DIR ${SDL}/include)
1022 set(SDL_LIBRARY SDL)
1023 set(SDL_LIBPATH ${SDL}/lib)
1026 if(WITH_CODEC_QUICKTIME)
1027 set(QUICKTIME ${LIBDIR}/QTDevWin)
1028 set(QUICKTIME_INCLUDE_DIRS ${QUICKTIME}/CIncludes)
1029 set(QUICKTIME_LIBRARIES qtmlClient)
1030 set(QUICKTIME_LIBPATH ${QUICKTIME}/Libraries)
1033 if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
1034 add_definitions(-D__SSE__ -D__MMX__)
1038 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1040 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1041 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1042 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1043 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
1044 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1045 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1047 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
1050 message(STATUS "OSL not found")
1055 set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi)
1057 # MSVC11 SDL is not hard linked to dxguid.lib
1058 if(MSVC11 AND WITH_SDL)
1059 set(PLATFORM_LINKLIBS ${PLATFORM_LINKLIBS} dxguid)
1062 add_definitions(/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_CONSOLE /D_LIB)
1064 # MSVC11 needs _ALLOW_KEYWORD_MACROS to build
1066 add_definitions(/D_ALLOW_KEYWORD_MACROS)
1069 set(CMAKE_CXX_FLAGS "/nologo /J /Gd /EHsc" CACHE STRING "MSVC MT C++ flags " FORCE)
1070 set(CMAKE_C_FLAGS "/nologo /J /Gd" CACHE STRING "MSVC MT C++ flags " FORCE)
1073 set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
1075 set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
1077 set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE)
1078 set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE)
1079 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE)
1081 set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
1083 set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
1085 set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE)
1086 set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE)
1087 set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE)
1089 # most msvc warnings are C & C++
1090 set(_WARNINGS "/W3 /wd4018 /wd4244 /wd4305 /wd4800 /wd4181 /wd4065 /wd4267 /we4013 /wd4200")
1091 set(C_WARNINGS "${_WARNINGS}")
1092 set(CXX_WARNINGS "${_WARNINGS}")
1095 if(WITH_MOD_CLOTH_ELTOPO)
1096 set(LAPACK ${LIBDIR}/lapack)
1097 # set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
1098 set(LAPACK_LIBPATH ${LAPACK}/lib)
1099 set(LAPACK_LIBRARIES
1100 ${LIBDIR}/lapack/lib/libf2c.lib
1101 ${LIBDIR}/lapack/lib/clapack_nowrap.lib
1102 ${LIBDIR}/lapack/lib/BLAS_nowrap.lib
1106 set(PNG_LIBRARIES libpng)
1107 set(JPEG_LIBRARIES libjpeg)
1109 set(PNG "${LIBDIR}/png")
1110 set(PNG_INCLUDE_DIR "${PNG}/include")
1111 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1113 set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
1114 set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz_st.lib)
1116 set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
1117 set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
1119 set(FREETYPE ${LIBDIR}/freetype)
1120 set(FREETYPE_INCLUDE_DIRS
1121 ${LIBDIR}/freetype/include
1122 ${LIBDIR}/freetype/include/freetype2
1124 set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
1127 set(FFTW3 ${LIBDIR}/fftw3)
1128 set(FFTW3_LIBRARIES libfftw)
1129 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1130 set(FFTW3_LIBPATH ${FFTW3}/lib)
1133 if(WITH_OPENCOLLADA)
1134 set(OPENCOLLADA ${LIBDIR}/opencollada)
1136 set(OPENCOLLADA_INCLUDE_DIRS
1137 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1138 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1139 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1140 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1141 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1144 set(OPENCOLLADA_LIBRARIES
1145 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADASaxFrameworkLoader.lib
1146 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAFramework.lib
1147 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADABaseUtils.lib
1148 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter.lib
1149 ${OPENCOLLADA}/lib/opencollada/MathMLSolver.lib
1150 ${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser.lib
1151 ${OPENCOLLADA}/lib/opencollada/xml.lib
1152 ${OPENCOLLADA}/lib/opencollada/buffer.lib
1153 ${OPENCOLLADA}/lib/opencollada/ftoa.lib
1154 ${OPENCOLLADA}/lib/opencollada/UTF.lib
1157 ${OPENCOLLADA}/lib/opencollada/pcre.lib
1161 if(WITH_CODEC_FFMPEG)
1162 set(FFMPEG_INCLUDE_DIRS
1163 ${LIBDIR}/ffmpeg/include
1164 ${LIBDIR}/ffmpeg/include/msvc
1166 # MSVC11 FFMPEG libs are newer
1168 set(FFMPEG_LIBRARIES
1169 ${LIBDIR}/ffmpeg/lib/avcodec-54.lib
1170 ${LIBDIR}/ffmpeg/lib/avformat-54.lib
1171 ${LIBDIR}/ffmpeg/lib/avdevice-54.lib
1172 ${LIBDIR}/ffmpeg/lib/avutil-52.lib
1173 ${LIBDIR}/ffmpeg/lib/swscale-2.lib
1176 set(FFMPEG_LIBRARIES
1177 ${LIBDIR}/ffmpeg/lib/avcodec-53.lib
1178 ${LIBDIR}/ffmpeg/lib/avformat-53.lib
1179 ${LIBDIR}/ffmpeg/lib/avdevice-53.lib
1180 ${LIBDIR}/ffmpeg/lib/avutil-51.lib
1181 ${LIBDIR}/ffmpeg/lib/swscale-2.lib
1186 if(WITH_IMAGE_OPENEXR)
1187 set(OPENEXR ${LIBDIR}/openexr)
1188 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1189 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1190 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1191 set(OPENEXR_LIBRARIES
1192 ${OPENEXR_LIBPATH}/Iex.lib
1193 ${OPENEXR_LIBPATH}/Half.lib
1194 ${OPENEXR_LIBPATH}/IlmImf.lib
1195 ${OPENEXR_LIBPATH}/Imath.lib
1196 ${OPENEXR_LIBPATH}/IlmThread.lib
1201 set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
1202 set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
1206 set(JACK_INCLUDE_DIRS
1207 ${LIBDIR}/jack/include/jack
1208 ${LIBDIR}/jack/include
1210 set(JACK_LIBRARIES ${LIBDIR}/jack/lib/libjack.lib)
1214 set(PYTHON_VERSION 3.3) # CACHE STRING)
1216 string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1217 # Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs
1218 set(PYTHON_LIBRARY ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.lib)
1219 unset(_PYTHON_VERSION_NO_DOTS)
1221 # Shared includes for both vc2008 and vc2010
1222 set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION})
1225 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1226 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1230 set(BOOST ${LIBDIR}/boost)
1231 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1233 set(BOOST_LIBPATH ${BOOST}/lib)
1234 set(BOOST_POSTFIX "vc110-mt-s-1_53.lib")
1235 set(BOOST_DEBUG_POSTFIX "vc110-mt-sgd-1_53.lib")
1237 set(BOOST_LIBPATH ${BOOST}/lib)
1238 set(BOOST_POSTFIX "vc90-mt-s-1_49.lib")
1239 set(BOOST_DEBUG_POSTFIX "vc90-mt-sgd-1_49.lib")
1242 optimized libboost_date_time-${BOOST_POSTFIX} optimized libboost_filesystem-${BOOST_POSTFIX}
1243 optimized libboost_regex-${BOOST_POSTFIX}
1244 optimized libboost_system-${BOOST_POSTFIX} optimized libboost_thread-${BOOST_POSTFIX}
1245 debug libboost_date_time-${BOOST_DEBUG_POSTFIX} debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
1246 debug libboost_regex-${BOOST_DEBUG_POSTFIX}
1247 debug libboost_system-${BOOST_DEBUG_POSTFIX} debug libboost_thread-${BOOST_DEBUG_POSTFIX})
1249 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1250 optimized libboost_wave-${BOOST_POSTFIX}
1251 debug libboost_wave-${BOOST_DEBUG_POSTFIX})
1253 if(WITH_INTERNATIONAL)
1254 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1255 optimized libboost_locale-${BOOST_POSTFIX}
1256 debug libboost_locale-${BOOST_DEBUG_POSTFIX})
1258 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1261 if(WITH_OPENIMAGEIO)
1262 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1263 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1264 set(OPENIMAGEIO_LIBRARIES optimized OpenImageIO debug OpenImageIO_d)
1265 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1266 set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0")
1270 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1271 file(GLOB LLVM_LIBRARY ${LLVM_DIRECTORY}/lib/*.lib)
1274 if(WITH_OPENCOLORIO)
1275 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1276 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1277 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1278 set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
1279 set(OPENCOLORIO_DEFINITIONS)
1282 set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
1284 # MSVC only, Mingw doesnt need
1286 set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
1288 set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
1291 set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
1293 # used in many places so include globally, like OpenGL
1294 blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
1296 elseif(CMAKE_COMPILER_IS_GNUCC)
1297 # keep GCC specific stuff here
1298 set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi")
1299 set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
1302 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
1303 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread")
1305 add_definitions(-DFREE_WINDOWS64 -DMS_WIN64)
1306 # Turn off OpenMP since it causes crashes on render for subsurfed/multiresolution meshes
1307 set(WITH_OPENMP OFF)
1310 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1312 add_definitions(-DFREE_WINDOWS)
1314 set(PNG "${LIBDIR}/png")
1315 set(PNG_INCLUDE_DIR "${PNG}/include")
1316 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1319 set(JPEG_LIBRARIES jpeg)
1321 set(JPEG_LIBRARIES libjpeg)
1323 set(PNG_LIBRARIES png)
1325 set(ZLIB ${LIBDIR}/zlib)
1326 set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
1327 set(ZLIB_LIBPATH ${ZLIB}/lib)
1328 set(ZLIB_LIBRARIES z)
1330 # comes with own pthread library
1331 if(NOT WITH_MINGW64)
1332 set(PTHREADS ${LIBDIR}/pthreads)
1333 #set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
1334 set(PTHREADS_LIBPATH ${PTHREADS}/lib)
1335 set(PTHREADS_LIBRARIES pthreadGC2)
1338 set(FREETYPE ${LIBDIR}/freetype)
1339 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1340 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1341 set(FREETYPE_LIBRARY freetype)
1344 set(FFTW3 ${LIBDIR}/fftw3)
1345 set(FFTW3_LIBRARIES fftw3)
1346 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1347 set(FFTW3_LIBPATH ${FFTW3}/lib)
1350 if(WITH_OPENCOLLADA)
1351 set(OPENCOLLADA ${LIBDIR}/opencollada)
1352 set(OPENCOLLADA_INCLUDE_DIRS
1353 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1354 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1355 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1356 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1357 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1359 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib/opencollada)
1360 set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver buffer ftoa xml)
1361 set(PCRE_LIBRARIES pcre)
1364 if(WITH_CODEC_FFMPEG)
1365 set(FFMPEG ${LIBDIR}/ffmpeg)
1366 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1368 set(FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll)
1370 set(FFMPEG_LIBRARIES avcodec-53 avformat-53 avdevice-53 avutil-51 swscale-2)
1372 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1375 if(WITH_IMAGE_OPENEXR)
1376 set(OPENEXR ${LIBDIR}/openexr)
1377 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1378 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1379 set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex)
1380 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1384 set(TIFF ${LIBDIR}/tiff)
1385 set(TIFF_LIBRARY tiff)
1386 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1387 set(TIFF_LIBPATH ${TIFF}/lib)
1391 set(JACK ${LIBDIR}/jack)
1392 set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include)
1393 set(JACK_LIBRARIES jack)
1394 set(JACK_LIBPATH ${JACK}/lib)
1396 # TODO, gives linking errors, force off
1401 # normally cached but not since we include them with blender
1402 set(PYTHON_VERSION 3.3) # CACHE STRING)
1403 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}") # CACHE PATH)
1404 set(PYTHON_LIBRARY "${LIBDIR}/python/lib/python33mw.lib") # CACHE FILEPATH)
1407 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1408 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1412 set(BOOST ${LIBDIR}/boost)
1413 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1415 set(BOOST_POSTFIX "mgw47-mt-s-1_49")
1416 set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
1418 set(BOOST_POSTFIX "mgw46-mt-s-1_49")
1419 set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49")
1422 optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX}
1423 boost_regex-${BOOST_POSTFIX}
1424 boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX}
1425 debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
1426 boost_regex-${BOOST_DEBUG_POSTFIX}
1427 boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
1428 if(WITH_INTERNATIONAL)
1429 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1430 optimized boost_locale-${BOOST_POSTFIX}
1431 debug boost_locale-${BOOST_DEBUG_POSTFIX})
1434 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1435 optimized boost_wave-${BOOST_POSTFIX}
1436 debug boost_wave-${BOOST_DEBUG_POSTFIX})
1438 set(BOOST_LIBPATH ${BOOST}/lib)
1439 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
1442 if(WITH_OPENIMAGEIO)
1443 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1444 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1445 set(OPENIMAGEIO_LIBRARIES OpenImageIO)
1446 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1447 set(OPENIMAGEIO_DEFINITIONS "")
1451 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1452 set(LLVM_LIB_DIR ${LLVM_DIRECTORY}/lib)
1453 # Explicitly set llvm lib order.
1454 #---- WARNING ON GCC ORDER OF LIBS IS IMPORTANT, DO NOT CHANGE! ---------
1455 set(LLVM_LIBRARY LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMAnalysis LLVMArchive
1456 LLVMAsmParser LLVMAsmPrinter
1457 LLVMBitReader LLVMBitWriter
1458 LLVMDebugInfo LLVMExecutionEngine
1459 LLVMInstCombine LLVMInstrumentation
1460 LLVMInterpreter LLVMJIT
1462 LLVMMCDisassembler LLVMMCJIT
1463 LLVMMCParser LLVMObject
1466 LLVMTableGen LLVMTarget
1467 LLVMTransformUtils LLVMVectorize
1468 LLVMX86AsmParser LLVMX86AsmPrinter
1469 LLVMX86CodeGen LLVMX86Desc
1470 LLVMX86Disassembler LLVMX86Info
1471 LLVMX86Utils LLVMipa
1473 # imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
1474 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -limagehlp")
1477 if(WITH_OPENCOLORIO)
1478 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1479 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1480 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1481 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1482 set(OPENCOLORIO_DEFINITIONS)
1485 set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
1487 ## DISABLE - causes linking errors
1488 ## for re-distribution, so users dont need mingw installed
1489 # set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
1495 if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5")
1496 set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/10.7
1500 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
1502 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1503 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
1505 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
1511 find_package(OpenAL)
1514 set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
1516 set(WITH_OPENAL OFF)
1521 find_library(JACK_FRAMEWORK
1524 set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
1525 if(NOT JACK_FRAMEWORK)
1530 if(WITH_CODEC_SNDFILE)
1531 set(SNDFILE ${LIBDIR}/sndfile)
1532 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1533 set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
1534 set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) # TODO, deprecate
1538 # we use precompiled libraries for py 3.3 and up by default
1539 set(PYTHON_VERSION 3.3)
1540 if(NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK)
1541 # normally cached but not since we include them with blender
1542 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
1543 # set(PYTHON_BINARY "${LIBDIR}/python/bin/python${PYTHON_VERSION}") # not used yet
1544 set(PYTHON_LIBRARY python${PYTHON_VERSION}m)
1545 set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
1546 # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
1548 # module must be compiled against Python framework
1549 set(PYTHON_INCLUDE_DIR "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}m")
1550 set(PYTHON_BINARY "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}")
1551 #set(PYTHON_LIBRARY python${PYTHON_VERSION})
1552 set(PYTHON_LIBPATH "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m")
1553 #set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled
1557 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1558 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1562 set(FFTW3 ${LIBDIR}/fftw3)
1563 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1564 set(FFTW3_LIBRARIES fftw3)
1565 set(FFTW3_LIBPATH ${FFTW3}/lib)
1568 set(PNG_LIBRARIES png)
1569 set(JPEG_LIBRARIES jpeg)
1572 set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
1573 set(ZLIB_LIBRARIES z bz2)
1575 set(FREETYPE ${LIBDIR}/freetype)
1576 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1577 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1578 set(FREETYPE_LIBRARY freetype)
1580 if(WITH_IMAGE_OPENEXR)
1581 set(OPENEXR ${LIBDIR}/openexr)
1582 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1583 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1584 set(OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread)
1585 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1588 if(WITH_CODEC_FFMPEG)
1589 set(FFMPEG ${LIBDIR}/ffmpeg)
1590 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1591 set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
1592 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1593 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
1596 find_library(SYSTEMSTUBS_LIBRARY
1601 mark_as_advanced(SYSTEMSTUBS_LIBRARY)
1602 if(SYSTEMSTUBS_LIBRARY)
1603 set(PLATFORM_LINKLIBS stdc++ SystemStubs)
1605 set(PLATFORM_LINKLIBS stdc++)
1609 set(PLATFORM_CFLAGS "-pipe -funsigned-char -DGHOST_COCOA")
1610 set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
1612 set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT")
1613 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
1614 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1615 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
1616 # libSDL still needs 32bit carbon quicktime
1618 elseif(WITH_CODEC_QUICKTIME)
1619 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
1622 # XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
1623 # ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
1625 # This thread it *should* work and check the framework - campbell
1626 # http://www.cmake.org/pipermail/cmake/2005-December/007740.html
1627 find_library(3DCONNEXION_CLIENT_FRAMEWORK
1628 NAMES 3DconnexionClient
1630 if(NOT 3DCONNEXION_CLIENT_FRAMEWORK)
1631 set(WITH_INPUT_NDOF OFF)
1635 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework 3DconnexionClient")
1636 set(NDOF_INCLUDE_DIRS /Library/Frameworks/3DconnexionClient.framework/Headers )
1641 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework jackmp")
1645 set(PLATFORM_CFLAGS "-pipe -funsigned-char")
1646 set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime")
1647 set(WITH_INPUT_NDOF OFF) # unsupported
1650 if(WITH_PYTHON_MODULE OR WITH_PYTHON_FRAMEWORK)
1651 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python")# force cmake to link right framework
1654 if(WITH_OPENCOLLADA)
1655 set(OPENCOLLADA ${LIBDIR}/opencollada)
1657 set(OPENCOLLADA_INCLUDE_DIRS
1658 ${LIBDIR}/opencollada/include/COLLADAStreamWriter
1659 ${LIBDIR}/opencollada/include/COLLADABaseUtils
1660 ${LIBDIR}/opencollada/include/COLLADAFramework
1661 ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
1662 ${LIBDIR}/opencollada/include/GeneratedSaxParser
1665 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
1666 set(OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lUTF -lxml2 -lbuffer -lftoa")
1667 # pcre is bundled with openCollada
1668 #set(PCRE ${LIBDIR}/pcre)
1669 #set(PCRE_LIBPATH ${PCRE}/lib)
1670 set(PCRE_LIBRARIES pcre)
1672 #set(EXPAT ${LIBDIR}/expat)
1673 #set(EXPAT_LIBPATH ${EXPAT}/lib)
1678 set(SDL ${LIBDIR}/sdl)
1679 set(SDL_INCLUDE_DIR ${SDL}/include)
1680 set(SDL_LIBRARY SDL)
1681 set(SDL_LIBPATH ${SDL}/lib)
1684 set(PNG "${LIBDIR}/png")
1685 set(PNG_INCLUDE_DIR "${PNG}/include")
1686 set(PNG_LIBPATH ${PNG}/lib)
1688 set(JPEG "${LIBDIR}/jpeg")
1689 set(JPEG_INCLUDE_DIR "${JPEG}/include")
1690 set(JPEG_LIBPATH ${JPEG}/lib)
1693 set(TIFF ${LIBDIR}/tiff)
1694 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1695 set(TIFF_LIBRARY tiff)
1696 set(TIFF_LIBPATH ${TIFF}/lib)
1700 # linker needs "-weak_framework 3DconnexionClient"
1704 set(BOOST ${LIBDIR}/boost)
1705 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1706 set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt boost_wave-mt)
1707 if(WITH_INTERNATIONAL)
1708 list(APPEND BOOST_LIBRARIES boost_locale-mt)
1709 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale needs it !
1711 set(BOOST_LIBPATH ${BOOST}/lib)
1712 set(BOOST_DEFINITIONS)
1715 if(WITH_OPENIMAGEIO)
1716 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1717 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1718 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO}/lib/libOpenImageIO.a ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
1719 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
1720 set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
1723 if(WITH_OPENCOLORIO)
1724 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1725 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1726 set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
1727 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1728 set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD")
1732 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1733 set(LLVM_VERSION "3.1" CACHE STRING "Version of LLVM to use")
1734 if(EXISTS "${LLVM_DIRECTORY}/bin/llvm-config")
1735 set(LLVM_CONFIG "${LLVM_DIRECTORY}/bin/llvm-config")
1737 set(LLVM_CONFIG llvm-config)
1739 execute_process(COMMAND ${LLVM_CONFIG} --version
1740 OUTPUT_VARIABLE LLVM_VERSION
1741 OUTPUT_STRIP_TRAILING_WHITESPACE)
1742 execute_process(COMMAND ${LLVM_CONFIG} --prefix
1743 OUTPUT_VARIABLE LLVM_DIRECTORY
1744 OUTPUT_STRIP_TRAILING_WHITESPACE)
1745 execute_process(COMMAND ${LLVM_CONFIG} --libdir
1746 OUTPUT_VARIABLE LLVM_LIB_DIR
1747 OUTPUT_STRIP_TRAILING_WHITESPACE)
1748 find_library(LLVM_LIBRARY
1749 NAMES LLVMAnalysis # first of a whole bunch of libs to get
1750 PATHS ${LLVM_LIB_DIR})
1752 if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIB_DIR)
1754 # if static LLVM libraries were requested, use llvm-config to generate
1755 # the list of what libraries we need, and substitute that in the right
1756 # way for LLVM_LIBRARY.
1757 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
1758 OUTPUT_VARIABLE LLVM_LIBRARY
1759 OUTPUT_STRIP_TRAILING_WHITESPACE)
1760 string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
1763 message(FATAL_ERROR "LLVM not found.")
1768 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1770 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1771 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1772 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1773 # WARNING! depends on correct order of OSL libs linking
1774 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
1775 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1776 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1778 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
1781 message(STATUS "OSL not found")
1785 set(EXETYPE MACOSX_BUNDLE)
1787 set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
1788 set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
1789 if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386")
1790 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
1791 set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
1792 if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
1793 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
1794 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
1797 set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
1798 set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
1801 if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
1802 if(${CMAKE_GENERATOR} MATCHES "Xcode")
1803 if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5)
1804 # Xcode 5 has too low template depth of 128 for libmv
1805 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024")
1811 #-----------------------------------------------------------------------------
1815 if(NOT EXISTS "${LIBDIR}/")
1816 message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'")
1820 if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
1821 message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
1825 if(NOT WITH_OPENIMAGEIO)
1826 message(FATAL_ERROR "Cycles reqires WITH_OPENIMAGEIO, the library may not have been found. Configure OIIO or disable WITH_CYCLES")
1829 message(FATAL_ERROR "Cycles reqires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES")
1834 message(FATAL_ERROR "Cycles OSL reqires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL")
1839 if(WITH_INTERNATIONAL)
1841 message(FATAL_ERROR "Internationalization reqires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL")
1845 # See TEST_SSE_SUPPORT() for how this is defined.
1847 if(WITH_RAYOPTIMIZATION)
1848 if(SUPPORT_SSE_BUILD)
1849 set(PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}")
1850 add_definitions(-D__SSE__ -D__MMX__)
1852 if(SUPPORT_SSE2_BUILD)
1853 set(PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}")
1854 add_definitions(-D__SSE2__)
1855 if(NOT SUPPORT_SSE_BUILD) # dont double up
1856 add_definitions(-D__MMX__)
1862 # set the endian define
1864 # for some reason this fails on msvc
1865 add_definitions(-D__LITTLE_ENDIAN__)
1867 # OSX-Note: as we do crosscompiling with specific set architecture,
1868 # endianess-detection and autosetting is counterproductive
1869 # so we just set endianess according CMAKE_OSX_ARCHITECTURES
1871 elseif(CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
1872 add_definitions(-D__LITTLE_ENDIAN__)
1873 elseif(CMAKE_OSX_ARCHITECTURES MATCHES ppc OR CMAKE_OSX_ARCHITECTURES MATCHES ppc64)
1874 add_definitions(-D__BIG_ENDIAN__)
1877 include(TestBigEndian)
1878 test_big_endian(_SYSTEM_BIG_ENDIAN)
1879 if(_SYSTEM_BIG_ENDIAN)
1880 add_definitions(-D__BIG_ENDIAN__)
1882 add_definitions(-D__LITTLE_ENDIAN__)
1884 unset(_SYSTEM_BIG_ENDIAN)
1888 if(WITH_IMAGE_OPENJPEG)
1889 if(WITH_SYSTEM_OPENJPEG)
1892 set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg")
1893 add_definitions(-DOPJ_STATIC)
1897 if(WITH_IMAGE_REDCODE)
1898 set(REDCODE ${CMAKE_SOURCE_DIR}/extern)
1899 set(REDCODE_INC ${REDCODE})
1903 #-----------------------------------------------------------------------------
1905 find_package(OpenGL)
1906 blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}")
1907 # unset(OPENGL_LIBRARIES CACHE) # not compat with older cmake
1908 # unset(OPENGL_xmesa_INCLUDE_DIR CACHE) # not compat with older cmake
1910 #-----------------------------------------------------------------------------
1913 find_package(OpenMP)
1915 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
1916 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
1918 if(APPLE AND ${CMAKE_GENERATOR} MATCHES "Xcode")
1919 set(CMAKE_XCODE_ATTRIBUTE_ENABLE_OPENMP_SUPPORT "YES")
1922 set(WITH_OPENMP OFF)
1931 #-----------------------------------------------------------------------------
1934 if(WITH_SYSTEM_GLEW)
1938 message(FATAL_ERROR "GLEW is required to build blender, install it or disable WITH_SYSTEM_GLEW")
1946 # set(GLEW_LIBRARY "") # unused
1947 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
1951 #-----------------------------------------------------------------------------
1954 if(WITH_BULLET AND WITH_SYSTEM_BULLET)
1955 find_package(Bullet)
1956 if(NOT BULLET_FOUND)
1957 set(WITH_BULLET OFF)
1960 set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
1961 # set(BULLET_LIBRARIES "")
1964 #-----------------------------------------------------------------------------
1967 if(WITH_PYTHON_MODULE)
1968 add_definitions(-DPy_ENABLE_SHARED)
1971 #-----------------------------------------------------------------------------
1972 # Extra compile flags
1974 if(CMAKE_COMPILER_IS_GNUCC)
1976 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
1977 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_CAST_ALIGN -Wcast-align)
1978 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
1979 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
1980 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
1981 # system headers sometimes do this, disable for now, was: -Werror=strict-prototypes
1982 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
1983 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
1984 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
1985 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
1986 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
1987 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
1988 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_WRITE_STRINGS -Wwrite-strings)
1989 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_LOGICAL_OP -Wlogical-op)
1990 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNDEF -Wundef)
1991 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
1992 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_NULL -Wnonnull) # C only
1993 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
1994 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
1995 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_TYPE_LIMITS -Wtype-limits)
1997 # gcc 4.2 gives annoying warnings on every file with this
1998 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
1999 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNINITIALIZED -Wuninitialized)
2002 # versions before gcc4.6 give many BLI_math warnings
2003 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.6")
2004 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_REDUNDANT_DECLS -Wredundant-decls)
2005 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_REDUNDANT_DECLS -Wredundant-decls)
2008 # disable because it gives warnings for printf() & friends.
2009 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_DOUBLE_PROMOTION -Wdouble-promotion -Wno-error=double-promotion)
2012 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2015 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2016 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2017 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2018 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_LOGICAL_OP -Wlogical-op)
2019 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2020 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2021 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2022 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_TYPE_LIMITS -Wtype-limits)
2024 # gcc 4.2 gives annoying warnings on every file with this
2025 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2026 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNINITIALIZED -Wuninitialized)
2029 # causes too many warnings
2031 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
2032 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_DECLARATIONS -Wmissing-declarations)
2035 # flags to undo strict flags
2036 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
2037 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2040 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2043 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
2045 # strange, clang complains these are not supported, but then yses them.
2046 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2047 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
2048 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2049 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2050 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2051 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2052 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2053 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2054 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2055 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2057 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2058 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2059 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2060 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2061 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.
2062 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2063 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2065 # gives too many unfixable warnings
2066 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_MACROS -Wunused-macros)
2067 # ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_MACROS -Wunused-macros)
2069 # flags to undo strict flags
2070 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2071 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2073 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_VARIABLE_DECLARATIONS -Wno-missing-variable-declarations)
2074 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_FUNCTION -Wno-unused-function)
2075 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INT_TO_VOID_POINTER_CAST -Wno-int-to-void-pointer-cast)
2076 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_PROTOTYPES -Wno-missing-prototypes)
2077 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DUPLICATE_ENUM -Wno-duplicate-enum)
2078 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNDEF -Wno-undef)
2079 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_NORETURN -Wno-missing-noreturn)
2081 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_PRIVATE_FIELD -Wno-unused-private-field)
2082 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_CXX11_NARROWING -Wno-c++11-narrowing)
2083 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_NON_VIRTUAL_DTOR -Wno-non-virtual-dtor)
2084 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2085 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_REORDER -Wno-reorder)
2087 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
2089 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2090 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2091 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2093 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2094 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2095 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2097 # disable numbered, false positives
2098 set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556")
2099 set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556")
2103 # ensure python header is found since detection can fail, this could happen
2104 # with _any_ library but since we used a fixed python version this tends to
2105 # be most problematic.
2107 if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/Python.h")
2108 message(FATAL_ERROR "Missing: \"${PYTHON_INCLUDE_DIR}/Python.h\",\n"
2109 "Set the cache entry 'PYTHON_INCLUDE_DIR' to point "
2110 "to a valid python include path. Containing "
2111 "Python.h for python version \"${PYTHON_VERSION}\"")
2114 if(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
2116 # -- disabled until we make numpy bundled with blender - campbell
2117 if((NOT ${PYTHON_NUMPY_PATH} STREQUAL "") AND (NOT ${PYTHON_NUMPY_PATH} MATCHES NOTFOUND))
2118 # if(NOT EXISTS "${PYTHON_NUMPY_PATH}/numpy")
2119 # message(WARNING "PYTHON_NUMPY_PATH is invalid, numpy not found in '${PYTHON_NUMPY_PATH}' "
2120 # "WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
2121 # set(WITH_PYTHON_INSTALL_NUMPY OFF)
2123 # not set, so initialize
2125 string(REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}")
2126 list(GET _PY_VER_SPLIT 0 _PY_VER_MAJOR)
2129 unset(PYTHON_NUMPY_PATH CACHE)
2130 find_path(PYTHON_NUMPY_PATH
2134 "${PYTHON_LIBPATH}/python${PYTHON_VERSION}/"
2135 "${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/"
2142 if(NOT EXISTS "${PYTHON_NUMPY_PATH}")
2143 message(WARNING "'numpy' path could not be found in:\n"
2144 "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/numpy', "
2145 "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/numpy', "
2146 "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/numpy', "
2147 "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/numpy', "
2148 "WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
2149 set(WITH_PYTHON_INSTALL_NUMPY OFF)
2151 message(STATUS "numpy found at '${PYTHON_NUMPY_PATH}'")
2154 unset(_PY_VER_SPLIT)
2155 unset(_PY_VER_MAJOR)
2160 if(WITH_GCC_MUDFLAP)
2161 set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -fmudflapth -funwind-tables")
2162 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lpthread -lmudflapth -rdynamic")
2163 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_MUDFLAP -Wno-error=mudflap)
2164 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_ERROR_MUDFLAP -Wno-error=mudflap)
2167 # Include warnings first, so its possible to disable them with user defined flags
2168 # eg: -Wno-uninitialized
2169 set(CMAKE_C_FLAGS "${C_WARNINGS} ${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}")
2170 set(CMAKE_CXX_FLAGS "${CXX_WARNINGS} ${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}")
2172 # defined above, platform spesific but shared names
2189 #-------------------------------------------------------------------------------
2192 # better not set includes here but this debugging option is off by default.
2193 if(WITH_CXX_GUARDEDALLOC)
2194 include_directories(${CMAKE_SOURCE_DIR}/intern/guardedalloc)
2195 add_definitions(-DWITH_CXX_GUARDEDALLOC)
2198 if(WITH_ASSERT_ABORT)
2199 add_definitions(-DWITH_ASSERT_ABORT)
2202 # message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
2203 # message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
2205 #-----------------------------------------------------------------------------
2208 add_subdirectory(source)
2209 add_subdirectory(intern)
2210 add_subdirectory(extern)
2213 #-----------------------------------------------------------------------------
2214 # Blender Application
2216 add_subdirectory(source/creator)
2220 #-----------------------------------------------------------------------------
2223 add_subdirectory(source/blenderplayer)
2226 #-----------------------------------------------------------------------------
2227 # CPack for generating packages
2228 include(build_files/cmake/packaging.cmake)
2231 #-----------------------------------------------------------------------------
2232 # Print Final Configuration
2235 set(_config_msg "\n* Blender Configuration *")
2236 macro(info_cfg_option
2238 set(_msg " * ${_setting}")
2239 string(LENGTH "${_msg}" _len)
2240 while("32" GREATER "${_len}")
2241 set(_msg "${_msg} ")
2242 math(EXPR _len "${_len} + 1")
2245 set(_config_msg "${_config_msg}\n${_msg}${${_setting}}")
2250 set(_config_msg "${_config_msg}\n\n ${_text}")
2255 info_cfg_text("Build Options:")
2256 info_cfg_option(WITH_GAMEENGINE)
2257 info_cfg_option(WITH_PLAYER)
2258 info_cfg_option(WITH_BULLET)
2259 info_cfg_option(WITH_IK_SOLVER)
2260 info_cfg_option(WITH_IK_ITASC)
2261 info_cfg_option(WITH_OPENCOLLADA)
2262 info_cfg_option(WITH_FFTW3)
2263 info_cfg_option(WITH_INTERNATIONAL)
2264 info_cfg_option(WITH_INPUT_NDOF)
2265 info_cfg_option(WITH_CYCLES)
2266 info_cfg_option(WITH_FREESTYLE)
2267 info_cfg_option(WITH_OPENCOLORIO)
2269 info_cfg_text("Compiler Options:")
2270 info_cfg_option(WITH_BUILDINFO)
2271 info_cfg_option(WITH_OPENMP)
2272 info_cfg_option(WITH_RAYOPTIMIZATION)
2274 info_cfg_text("System Options:")
2275 info_cfg_option(WITH_INSTALL_PORTABLE)
2276 info_cfg_option(WITH_X11_XF86VMODE)
2277 info_cfg_option(WITH_X11_XINPUT)
2278 info_cfg_option(WITH_MEM_JEMALLOC)
2279 info_cfg_option(WITH_SYSTEM_GLEW)
2280 info_cfg_option(WITH_SYSTEM_OPENJPEG)
2282 info_cfg_text("Image Formats:")
2283 info_cfg_option(WITH_IMAGE_CINEON)
2284 info_cfg_option(WITH_IMAGE_DDS)
2285 info_cfg_option(WITH_IMAGE_HDR)
2286 info_cfg_option(WITH_IMAGE_OPENEXR)
2287 info_cfg_option(WITH_IMAGE_OPENJPEG)
2288 info_cfg_option(WITH_IMAGE_REDCODE)
2289 info_cfg_option(WITH_IMAGE_TIFF)
2291 info_cfg_text("Audio:")
2292 info_cfg_option(WITH_OPENAL)
2293 info_cfg_option(WITH_SDL)
2294 info_cfg_option(WITH_JACK)
2295 info_cfg_option(WITH_JACK_DYNLOAD)
2296 info_cfg_option(WITH_CODEC_AVI)
2297 info_cfg_option(WITH_CODEC_FFMPEG)
2298 info_cfg_option(WITH_CODEC_SNDFILE)
2300 info_cfg_text("Compression:")
2301 info_cfg_option(WITH_LZMA)
2302 info_cfg_option(WITH_LZO)
2304 info_cfg_text("Python:")
2305 info_cfg_option(WITH_PYTHON_INSTALL)
2306 info_cfg_option(WITH_PYTHON_INSTALL_NUMPY)
2307 info_cfg_option(WITH_PYTHON_MODULE)
2308 info_cfg_option(WITH_PYTHON_SAFETY)
2310 info_cfg_option(WITH_PYTHON_FRAMEWORK)
2313 info_cfg_text("Modifiers:")
2314 info_cfg_option(WITH_MOD_BOOLEAN)
2315 info_cfg_option(WITH_MOD_REMESH)
2316 info_cfg_option(WITH_MOD_FLUID)
2317 info_cfg_option(WITH_MOD_OCEANSIM)
2320 message(STATUS "HAVE_STDBOOL_H = ${HAVE_STDBOOL_H}")
2324 message("${_config_msg}")