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_OPENIMAGEIO 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)
802 if(NOT DEFINED LLVM_VERSION)
803 execute_process(COMMAND ${LLVM_CONFIG} --version
804 OUTPUT_VARIABLE LLVM_VERSION
805 OUTPUT_STRIP_TRAILING_WHITESPACE)
806 set(LLVM_VERSION ${LLVM_VERSION} CACHE STRING "Version of LLVM to use")
808 if(NOT DEFINED LLVM_DIRECTORY)
809 execute_process(COMMAND ${LLVM_CONFIG} --prefix
810 OUTPUT_VARIABLE LLVM_DIRECTORY
811 OUTPUT_STRIP_TRAILING_WHITESPACE)
812 set(LLVM_DIRECTORY ${LLVM_DIRECTORY} CACHE PATH "Path to the LLVM installation")
814 if(NOT DEFINED LLVM_LIBPATH)
815 execute_process(COMMAND ${LLVM_CONFIG} --libdir
816 OUTPUT_VARIABLE LLVM_LIBPATH
817 OUTPUT_STRIP_TRAILING_WHITESPACE)
818 set(LLVM_LIBPATH ${LLVM_LIBPATH} CACHE PATH "Path to the LLVM library path")
822 find_library(LLVM_LIBRARY
823 NAMES LLVMAnalysis # first of a whole bunch of libs to get
824 PATHS ${LLVM_LIBPATH})
826 find_library(LLVM_LIBRARY
827 NAMES LLVM-${LLVM_VERSION}
828 PATHS ${LLVM_LIBPATH})
832 if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIBPATH)
834 # if static LLVM libraries were requested, use llvm-config to generate
835 # the list of what libraries we need, and substitute that in the right
836 # way for LLVM_LIBRARY.
837 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
838 OUTPUT_VARIABLE LLVM_LIBRARY
839 OUTPUT_STRIP_TRAILING_WHITESPACE)
840 string(REPLACE " " ";" LLVM_LIBRARY "${LLVM_LIBRARY}")
843 message(FATAL_ERROR "LLVM not found.")
846 # Fix for conflict with Mesa llvmpipe
847 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/source/creator/blender.map")
851 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
853 message(STATUS "CYCLES_OSL = ${CYCLES_OSL}")
855 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
856 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
857 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
858 # Note: --whole-archive is needed to force loading of all symbols in liboslexec,
859 # otherwise LLVM is missing the osl_allocate_closure_component function
860 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -Wl,--whole-archive ${OSL_LIB_EXEC} -Wl,--no-whole-archive ${OSL_LIB_QUERY})
861 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
862 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
864 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
866 message(STATUS "OSL includes = ${OSL_INCLUDES}")
867 message(STATUS "OSL library = ${OSL_LIBRARIES}")
868 message(STATUS "OSL compiler = ${OSL_COMPILER}")
870 message(STATUS "OSL not found")
874 # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
875 set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread -lstdc++")
877 if((NOT WITH_HEADLESS) AND (NOT WITH_GHOST_SDL))
878 find_package(X11 REQUIRED)
879 find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
880 mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
882 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_X11_LIB}")
886 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xinput_LIB}")
888 set(WITH_X11_XINPUT OFF)
892 if(WITH_X11_XF86VMODE)
893 # XXX, why dont cmake make this available?
894 FIND_LIBRARY(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
895 mark_as_advanced(X11_Xxf86vmode_LIB)
896 if(X11_Xxf86vmode_LIB)
897 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xxf86vmode_LIB}")
899 set(WITH_X11_XF86VMODE OFF)
904 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
905 if(NOT WITH_PYTHON_MODULE)
906 # binreloc is linux only
907 set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include)
908 set(WITH_BINRELOC ON)
912 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -pthread")
914 # lfs on glibc, all compilers should use
915 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
918 if(CMAKE_COMPILER_IS_GNUCC)
919 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
920 # CLang is the same as GCC for now.
921 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
922 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
924 elseif(CMAKE_CXX_COMPILER_ID MATCHES "SunPro")
925 set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
928 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
929 # think these next two are broken
930 find_program(XIAR xiar)
932 set(CMAKE_AR "${XIAR}")
934 mark_as_advanced(XIAR)
936 find_program(XILD xild)
938 set(CMAKE_LINKER "${XILD}")
940 mark_as_advanced(XILD)
942 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
943 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
945 # set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
946 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
947 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
952 # this file is included anyway when building under Windows with cl.exe
953 # include(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)
955 if(CMAKE_COMPILER_IS_GNUCC)
956 include(CheckCSourceCompiles)
957 # Setup 64bit and 64bit windows systems
958 CHECK_C_SOURCE_COMPILES("
962 int main(void) { return 0; }
967 message(STATUS "Compiling for 64 bit with MinGW-w64.")
968 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
970 message(STATUS "Compiling for 32 bit with MinGW-w32.")
971 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
973 if(WITH_RAYOPTIMIZATION)
974 message(WARNING "MinGW-w32 is known to be unstable with 'WITH_RAYOPTIMIZATION' option enabled.")
978 # Setup 64bit and 64bit windows systems
980 message(STATUS "64 bit compiler detected.")
982 message(STATUS "Visual C++ 2012 detected.")
983 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64_vc11)
985 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64)
988 # Setup 32bit windows systems
990 message(STATUS "Visual C++ 2012 detected.")
991 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows_vc11)
993 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
998 add_definitions(-DWIN32)
1000 set(JPEG "${LIBDIR}/jpeg")
1001 set(JPEG_INCLUDE_DIR "${JPEG}/include")
1002 set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
1004 set(WINTAB_INC ${LIBDIR}/wintab/include)
1007 set(OPENAL ${LIBDIR}/openal)
1008 set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
1010 set(OPENAL_LIBRARY openal32)
1012 set(OPENAL_LIBRARY wrap_oal)
1014 set(OPENAL_LIBPATH ${OPENAL}/lib)
1017 if(WITH_CODEC_SNDFILE)
1018 set(SNDFILE ${LIBDIR}/sndfile)
1019 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1020 set(SNDFILE_LIBRARIES libsndfile-1)
1021 set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
1025 set(SDL ${LIBDIR}/sdl)
1026 set(SDL_INCLUDE_DIR ${SDL}/include)
1027 set(SDL_LIBRARY SDL)
1028 set(SDL_LIBPATH ${SDL}/lib)
1031 if(WITH_CODEC_QUICKTIME)
1032 set(QUICKTIME ${LIBDIR}/QTDevWin)
1033 set(QUICKTIME_INCLUDE_DIRS ${QUICKTIME}/CIncludes)
1034 set(QUICKTIME_LIBRARIES qtmlClient)
1035 set(QUICKTIME_LIBPATH ${QUICKTIME}/Libraries)
1038 if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
1039 add_definitions(-D__SSE__ -D__MMX__)
1043 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1045 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1046 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1047 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1048 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
1049 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1050 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1052 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
1055 message(STATUS "OSL not found")
1060 set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi)
1062 # MSVC11 SDL is not hard linked to dxguid.lib
1063 if(MSVC11 AND WITH_SDL)
1064 set(PLATFORM_LINKLIBS ${PLATFORM_LINKLIBS} dxguid)
1067 add_definitions(/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_CONSOLE /D_LIB)
1069 # MSVC11 needs _ALLOW_KEYWORD_MACROS to build
1071 add_definitions(/D_ALLOW_KEYWORD_MACROS)
1074 set(CMAKE_CXX_FLAGS "/nologo /J /Gd /EHsc" CACHE STRING "MSVC MT C++ flags " FORCE)
1075 set(CMAKE_C_FLAGS "/nologo /J /Gd" CACHE STRING "MSVC MT C++ flags " FORCE)
1078 set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
1080 set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
1082 set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE)
1083 set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE)
1084 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE)
1086 set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
1088 set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
1090 set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE)
1091 set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE)
1092 set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE)
1094 # most msvc warnings are C & C++
1095 set(_WARNINGS "/W3 /wd4018 /wd4244 /wd4305 /wd4800 /wd4181 /wd4065 /wd4267 /we4013 /wd4200")
1096 set(C_WARNINGS "${_WARNINGS}")
1097 set(CXX_WARNINGS "${_WARNINGS}")
1100 if(WITH_MOD_CLOTH_ELTOPO)
1101 set(LAPACK ${LIBDIR}/lapack)
1102 # set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
1103 set(LAPACK_LIBPATH ${LAPACK}/lib)
1104 set(LAPACK_LIBRARIES
1105 ${LIBDIR}/lapack/lib/libf2c.lib
1106 ${LIBDIR}/lapack/lib/clapack_nowrap.lib
1107 ${LIBDIR}/lapack/lib/BLAS_nowrap.lib
1111 set(PNG_LIBRARIES libpng)
1112 set(JPEG_LIBRARIES libjpeg)
1114 set(PNG "${LIBDIR}/png")
1115 set(PNG_INCLUDE_DIR "${PNG}/include")
1116 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1118 set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
1119 set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz_st.lib)
1121 set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
1122 set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
1124 set(FREETYPE ${LIBDIR}/freetype)
1125 set(FREETYPE_INCLUDE_DIRS
1126 ${LIBDIR}/freetype/include
1127 ${LIBDIR}/freetype/include/freetype2
1129 set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
1132 set(FFTW3 ${LIBDIR}/fftw3)
1133 set(FFTW3_LIBRARIES libfftw)
1134 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1135 set(FFTW3_LIBPATH ${FFTW3}/lib)
1138 if(WITH_OPENCOLLADA)
1139 set(OPENCOLLADA ${LIBDIR}/opencollada)
1141 set(OPENCOLLADA_INCLUDE_DIRS
1142 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1143 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1144 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1145 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1146 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1149 set(OPENCOLLADA_LIBRARIES
1150 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADASaxFrameworkLoader.lib
1151 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAFramework.lib
1152 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADABaseUtils.lib
1153 ${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter.lib
1154 ${OPENCOLLADA}/lib/opencollada/MathMLSolver.lib
1155 ${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser.lib
1156 ${OPENCOLLADA}/lib/opencollada/xml.lib
1157 ${OPENCOLLADA}/lib/opencollada/buffer.lib
1158 ${OPENCOLLADA}/lib/opencollada/ftoa.lib
1159 ${OPENCOLLADA}/lib/opencollada/UTF.lib
1162 ${OPENCOLLADA}/lib/opencollada/pcre.lib
1166 if(WITH_CODEC_FFMPEG)
1167 set(FFMPEG_INCLUDE_DIRS
1168 ${LIBDIR}/ffmpeg/include
1169 ${LIBDIR}/ffmpeg/include/msvc
1171 # MSVC11 FFMPEG libs are newer
1173 set(FFMPEG_LIBRARIES
1174 ${LIBDIR}/ffmpeg/lib/avcodec-54.lib
1175 ${LIBDIR}/ffmpeg/lib/avformat-54.lib
1176 ${LIBDIR}/ffmpeg/lib/avdevice-54.lib
1177 ${LIBDIR}/ffmpeg/lib/avutil-52.lib
1178 ${LIBDIR}/ffmpeg/lib/swscale-2.lib
1181 set(FFMPEG_LIBRARIES
1182 ${LIBDIR}/ffmpeg/lib/avcodec-53.lib
1183 ${LIBDIR}/ffmpeg/lib/avformat-53.lib
1184 ${LIBDIR}/ffmpeg/lib/avdevice-53.lib
1185 ${LIBDIR}/ffmpeg/lib/avutil-51.lib
1186 ${LIBDIR}/ffmpeg/lib/swscale-2.lib
1191 if(WITH_IMAGE_OPENEXR)
1192 set(OPENEXR ${LIBDIR}/openexr)
1193 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1194 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1195 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1196 set(OPENEXR_LIBRARIES
1197 ${OPENEXR_LIBPATH}/Iex.lib
1198 ${OPENEXR_LIBPATH}/Half.lib
1199 ${OPENEXR_LIBPATH}/IlmImf.lib
1200 ${OPENEXR_LIBPATH}/Imath.lib
1201 ${OPENEXR_LIBPATH}/IlmThread.lib
1206 set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
1207 set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
1211 set(JACK_INCLUDE_DIRS
1212 ${LIBDIR}/jack/include/jack
1213 ${LIBDIR}/jack/include
1215 set(JACK_LIBRARIES ${LIBDIR}/jack/lib/libjack.lib)
1219 set(PYTHON_VERSION 3.3) # CACHE STRING)
1221 string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1222 # Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs
1223 set(PYTHON_LIBRARY ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.lib)
1224 unset(_PYTHON_VERSION_NO_DOTS)
1226 # Shared includes for both vc2008 and vc2010
1227 set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION})
1230 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1231 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1235 set(BOOST ${LIBDIR}/boost)
1236 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1238 set(BOOST_LIBPATH ${BOOST}/lib)
1239 set(BOOST_POSTFIX "vc110-mt-s-1_53.lib")
1240 set(BOOST_DEBUG_POSTFIX "vc110-mt-sgd-1_53.lib")
1242 set(BOOST_LIBPATH ${BOOST}/lib)
1243 set(BOOST_POSTFIX "vc90-mt-s-1_49.lib")
1244 set(BOOST_DEBUG_POSTFIX "vc90-mt-sgd-1_49.lib")
1247 optimized libboost_date_time-${BOOST_POSTFIX} optimized libboost_filesystem-${BOOST_POSTFIX}
1248 optimized libboost_regex-${BOOST_POSTFIX}
1249 optimized libboost_system-${BOOST_POSTFIX} optimized libboost_thread-${BOOST_POSTFIX}
1250 debug libboost_date_time-${BOOST_DEBUG_POSTFIX} debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
1251 debug libboost_regex-${BOOST_DEBUG_POSTFIX}
1252 debug libboost_system-${BOOST_DEBUG_POSTFIX} debug libboost_thread-${BOOST_DEBUG_POSTFIX})
1254 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1255 optimized libboost_wave-${BOOST_POSTFIX}
1256 debug libboost_wave-${BOOST_DEBUG_POSTFIX})
1258 if(WITH_INTERNATIONAL)
1259 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1260 optimized libboost_locale-${BOOST_POSTFIX}
1261 debug libboost_locale-${BOOST_DEBUG_POSTFIX})
1263 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1266 if(WITH_OPENIMAGEIO)
1267 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1268 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1269 set(OPENIMAGEIO_LIBRARIES optimized OpenImageIO debug OpenImageIO_d)
1270 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1271 set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0")
1275 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1276 file(GLOB LLVM_LIBRARY ${LLVM_DIRECTORY}/lib/*.lib)
1279 if(WITH_OPENCOLORIO)
1280 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1281 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1282 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1283 set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
1284 set(OPENCOLORIO_DEFINITIONS)
1287 set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
1289 # MSVC only, Mingw doesnt need
1291 set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
1293 set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
1296 set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
1298 # used in many places so include globally, like OpenGL
1299 blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
1301 elseif(CMAKE_COMPILER_IS_GNUCC)
1302 # keep GCC specific stuff here
1303 set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi")
1304 set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
1307 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
1308 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread")
1310 add_definitions(-DFREE_WINDOWS64 -DMS_WIN64)
1311 # Turn off OpenMP since it causes crashes on render for subsurfed/multiresolution meshes
1312 set(WITH_OPENMP OFF)
1315 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1317 add_definitions(-DFREE_WINDOWS)
1319 set(PNG "${LIBDIR}/png")
1320 set(PNG_INCLUDE_DIR "${PNG}/include")
1321 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1324 set(JPEG_LIBRARIES jpeg)
1326 set(JPEG_LIBRARIES libjpeg)
1328 set(PNG_LIBRARIES png)
1330 set(ZLIB ${LIBDIR}/zlib)
1331 set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
1332 set(ZLIB_LIBPATH ${ZLIB}/lib)
1333 set(ZLIB_LIBRARIES z)
1335 # comes with own pthread library
1336 if(NOT WITH_MINGW64)
1337 set(PTHREADS ${LIBDIR}/pthreads)
1338 #set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
1339 set(PTHREADS_LIBPATH ${PTHREADS}/lib)
1340 set(PTHREADS_LIBRARIES pthreadGC2)
1343 set(FREETYPE ${LIBDIR}/freetype)
1344 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1345 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1346 set(FREETYPE_LIBRARY freetype)
1349 set(FFTW3 ${LIBDIR}/fftw3)
1350 set(FFTW3_LIBRARIES fftw3)
1351 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1352 set(FFTW3_LIBPATH ${FFTW3}/lib)
1355 if(WITH_OPENCOLLADA)
1356 set(OPENCOLLADA ${LIBDIR}/opencollada)
1357 set(OPENCOLLADA_INCLUDE_DIRS
1358 ${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1359 ${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1360 ${OPENCOLLADA}/include/opencollada/COLLADAFramework
1361 ${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1362 ${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1364 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib/opencollada)
1365 set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver buffer ftoa xml)
1366 set(PCRE_LIBRARIES pcre)
1369 if(WITH_CODEC_FFMPEG)
1370 set(FFMPEG ${LIBDIR}/ffmpeg)
1371 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1373 set(FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll)
1375 set(FFMPEG_LIBRARIES avcodec-53 avformat-53 avdevice-53 avutil-51 swscale-2)
1377 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1380 if(WITH_IMAGE_OPENEXR)
1381 set(OPENEXR ${LIBDIR}/openexr)
1382 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1383 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1384 set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex)
1385 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1389 set(TIFF ${LIBDIR}/tiff)
1390 set(TIFF_LIBRARY tiff)
1391 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1392 set(TIFF_LIBPATH ${TIFF}/lib)
1396 set(JACK ${LIBDIR}/jack)
1397 set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include)
1398 set(JACK_LIBRARIES jack)
1399 set(JACK_LIBPATH ${JACK}/lib)
1401 # TODO, gives linking errors, force off
1406 # normally cached but not since we include them with blender
1407 set(PYTHON_VERSION 3.3) # CACHE STRING)
1408 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}") # CACHE PATH)
1409 set(PYTHON_LIBRARY "${LIBDIR}/python/lib/python33mw.lib") # CACHE FILEPATH)
1412 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1413 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1417 set(BOOST ${LIBDIR}/boost)
1418 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1420 set(BOOST_POSTFIX "mgw47-mt-s-1_49")
1421 set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
1423 set(BOOST_POSTFIX "mgw46-mt-s-1_49")
1424 set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49")
1427 optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX}
1428 boost_regex-${BOOST_POSTFIX}
1429 boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX}
1430 debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
1431 boost_regex-${BOOST_DEBUG_POSTFIX}
1432 boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
1433 if(WITH_INTERNATIONAL)
1434 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1435 optimized boost_locale-${BOOST_POSTFIX}
1436 debug boost_locale-${BOOST_DEBUG_POSTFIX})
1439 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1440 optimized boost_wave-${BOOST_POSTFIX}
1441 debug boost_wave-${BOOST_DEBUG_POSTFIX})
1443 set(BOOST_LIBPATH ${BOOST}/lib)
1444 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
1447 if(WITH_OPENIMAGEIO)
1448 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1449 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1450 set(OPENIMAGEIO_LIBRARIES OpenImageIO)
1451 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1452 set(OPENIMAGEIO_DEFINITIONS "")
1456 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1457 set(LLVM_LIBPATH ${LLVM_DIRECTORY}/lib)
1458 # Explicitly set llvm lib order.
1459 #---- WARNING ON GCC ORDER OF LIBS IS IMPORTANT, DO NOT CHANGE! ---------
1460 set(LLVM_LIBRARY LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMAnalysis LLVMArchive
1461 LLVMAsmParser LLVMAsmPrinter
1462 LLVMBitReader LLVMBitWriter
1463 LLVMDebugInfo LLVMExecutionEngine
1464 LLVMInstCombine LLVMInstrumentation
1465 LLVMInterpreter LLVMJIT
1467 LLVMMCDisassembler LLVMMCJIT
1468 LLVMMCParser LLVMObject
1471 LLVMTableGen LLVMTarget
1472 LLVMTransformUtils LLVMVectorize
1473 LLVMX86AsmParser LLVMX86AsmPrinter
1474 LLVMX86CodeGen LLVMX86Desc
1475 LLVMX86Disassembler LLVMX86Info
1476 LLVMX86Utils LLVMipa
1478 # imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
1479 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -limagehlp")
1482 if(WITH_OPENCOLORIO)
1483 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1484 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1485 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1486 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1487 set(OPENCOLORIO_DEFINITIONS)
1490 set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
1492 ## DISABLE - causes linking errors
1493 ## for re-distribution, so users dont need mingw installed
1494 # set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
1500 if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5")
1501 set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/10.7
1505 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
1507 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1508 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
1510 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
1516 find_package(OpenAL)
1519 set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
1521 set(WITH_OPENAL OFF)
1526 find_library(JACK_FRAMEWORK
1529 set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
1530 if(NOT JACK_FRAMEWORK)
1535 if(WITH_CODEC_SNDFILE)
1536 set(SNDFILE ${LIBDIR}/sndfile)
1537 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1538 set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
1539 set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) # TODO, deprecate
1543 # we use precompiled libraries for py 3.3 and up by default
1544 set(PYTHON_VERSION 3.3)
1545 if(NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK)
1546 # normally cached but not since we include them with blender
1547 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
1548 # set(PYTHON_BINARY "${LIBDIR}/python/bin/python${PYTHON_VERSION}") # not used yet
1549 set(PYTHON_LIBRARY python${PYTHON_VERSION}m)
1550 set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
1551 # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
1553 # module must be compiled against Python framework
1554 set(PYTHON_INCLUDE_DIR "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}m")
1555 set(PYTHON_BINARY "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}")
1556 #set(PYTHON_LIBRARY python${PYTHON_VERSION})
1557 set(PYTHON_LIBPATH "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m")
1558 #set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled
1562 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1563 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1567 set(FFTW3 ${LIBDIR}/fftw3)
1568 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1569 set(FFTW3_LIBRARIES fftw3)
1570 set(FFTW3_LIBPATH ${FFTW3}/lib)
1573 set(PNG_LIBRARIES png)
1574 set(JPEG_LIBRARIES jpeg)
1577 set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
1578 set(ZLIB_LIBRARIES z bz2)
1580 set(FREETYPE ${LIBDIR}/freetype)
1581 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1582 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1583 set(FREETYPE_LIBRARY freetype)
1585 if(WITH_IMAGE_OPENEXR)
1586 set(OPENEXR ${LIBDIR}/openexr)
1587 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1588 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1589 set(OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread)
1590 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1593 if(WITH_CODEC_FFMPEG)
1594 set(FFMPEG ${LIBDIR}/ffmpeg)
1595 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1596 set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
1597 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1598 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
1601 find_library(SYSTEMSTUBS_LIBRARY
1606 mark_as_advanced(SYSTEMSTUBS_LIBRARY)
1607 if(SYSTEMSTUBS_LIBRARY)
1608 set(PLATFORM_LINKLIBS stdc++ SystemStubs)
1610 set(PLATFORM_LINKLIBS stdc++)
1614 set(PLATFORM_CFLAGS "-pipe -funsigned-char -DGHOST_COCOA")
1615 set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
1617 set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT")
1618 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
1619 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1620 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
1621 # libSDL still needs 32bit carbon quicktime
1623 elseif(WITH_CODEC_QUICKTIME)
1624 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
1627 # XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
1628 # ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
1630 # This thread it *should* work and check the framework - campbell
1631 # http://www.cmake.org/pipermail/cmake/2005-December/007740.html
1632 find_library(3DCONNEXION_CLIENT_FRAMEWORK
1633 NAMES 3DconnexionClient
1635 if(NOT 3DCONNEXION_CLIENT_FRAMEWORK)
1636 set(WITH_INPUT_NDOF OFF)
1640 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework 3DconnexionClient")
1641 set(NDOF_INCLUDE_DIRS /Library/Frameworks/3DconnexionClient.framework/Headers )
1646 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework jackmp")
1650 set(PLATFORM_CFLAGS "-pipe -funsigned-char")
1651 set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime")
1652 set(WITH_INPUT_NDOF OFF) # unsupported
1655 if(WITH_PYTHON_MODULE OR WITH_PYTHON_FRAMEWORK)
1656 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python")# force cmake to link right framework
1659 if(WITH_OPENCOLLADA)
1660 set(OPENCOLLADA ${LIBDIR}/opencollada)
1662 set(OPENCOLLADA_INCLUDE_DIRS
1663 ${LIBDIR}/opencollada/include/COLLADAStreamWriter
1664 ${LIBDIR}/opencollada/include/COLLADABaseUtils
1665 ${LIBDIR}/opencollada/include/COLLADAFramework
1666 ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
1667 ${LIBDIR}/opencollada/include/GeneratedSaxParser
1670 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
1671 set(OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lUTF -lxml2 -lbuffer -lftoa")
1672 # pcre is bundled with openCollada
1673 #set(PCRE ${LIBDIR}/pcre)
1674 #set(PCRE_LIBPATH ${PCRE}/lib)
1675 set(PCRE_LIBRARIES pcre)
1677 #set(EXPAT ${LIBDIR}/expat)
1678 #set(EXPAT_LIBPATH ${EXPAT}/lib)
1683 set(SDL ${LIBDIR}/sdl)
1684 set(SDL_INCLUDE_DIR ${SDL}/include)
1685 set(SDL_LIBRARY SDL)
1686 set(SDL_LIBPATH ${SDL}/lib)
1689 set(PNG "${LIBDIR}/png")
1690 set(PNG_INCLUDE_DIR "${PNG}/include")
1691 set(PNG_LIBPATH ${PNG}/lib)
1693 set(JPEG "${LIBDIR}/jpeg")
1694 set(JPEG_INCLUDE_DIR "${JPEG}/include")
1695 set(JPEG_LIBPATH ${JPEG}/lib)
1698 set(TIFF ${LIBDIR}/tiff)
1699 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1700 set(TIFF_LIBRARY tiff)
1701 set(TIFF_LIBPATH ${TIFF}/lib)
1705 # linker needs "-weak_framework 3DconnexionClient"
1709 set(BOOST ${LIBDIR}/boost)
1710 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1711 set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt boost_wave-mt)
1712 if(WITH_INTERNATIONAL)
1713 list(APPEND BOOST_LIBRARIES boost_locale-mt)
1714 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale needs it !
1716 set(BOOST_LIBPATH ${BOOST}/lib)
1717 set(BOOST_DEFINITIONS)
1720 if(WITH_OPENIMAGEIO)
1721 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1722 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1723 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO}/lib/libOpenImageIO.a ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
1724 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
1725 set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
1728 if(WITH_OPENCOLORIO)
1729 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1730 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1731 set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
1732 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1733 set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD")
1737 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1738 set(LLVM_VERSION "3.1" CACHE STRING "Version of LLVM to use")
1739 if(EXISTS "${LLVM_DIRECTORY}/bin/llvm-config")
1740 set(LLVM_CONFIG "${LLVM_DIRECTORY}/bin/llvm-config")
1742 set(LLVM_CONFIG llvm-config)
1744 execute_process(COMMAND ${LLVM_CONFIG} --version
1745 OUTPUT_VARIABLE LLVM_VERSION
1746 OUTPUT_STRIP_TRAILING_WHITESPACE)
1747 execute_process(COMMAND ${LLVM_CONFIG} --prefix
1748 OUTPUT_VARIABLE LLVM_DIRECTORY
1749 OUTPUT_STRIP_TRAILING_WHITESPACE)
1750 execute_process(COMMAND ${LLVM_CONFIG} --libdir
1751 OUTPUT_VARIABLE LLVM_LIBPATH
1752 OUTPUT_STRIP_TRAILING_WHITESPACE)
1753 find_library(LLVM_LIBRARY
1754 NAMES LLVMAnalysis # first of a whole bunch of libs to get
1755 PATHS ${LLVM_LIBPATH})
1757 if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIBPATH)
1759 # if static LLVM libraries were requested, use llvm-config to generate
1760 # the list of what libraries we need, and substitute that in the right
1761 # way for LLVM_LIBRARY.
1762 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
1763 OUTPUT_VARIABLE LLVM_LIBRARY
1764 OUTPUT_STRIP_TRAILING_WHITESPACE)
1765 string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
1768 message(FATAL_ERROR "LLVM not found.")
1773 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1775 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1776 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1777 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1778 # WARNING! depends on correct order of OSL libs linking
1779 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
1780 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1781 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1783 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
1786 message(STATUS "OSL not found")
1790 set(EXETYPE MACOSX_BUNDLE)
1792 set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
1793 set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
1794 if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386")
1795 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
1796 set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
1797 if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
1798 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
1799 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
1802 set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
1803 set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
1806 if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
1807 if(${CMAKE_GENERATOR} MATCHES "Xcode")
1808 if(${XCODE_VERSION} VERSION_EQUAL 5 OR ${XCODE_VERSION} VERSION_GREATER 5)
1809 # Xcode 5 has too low template depth of 128 for libmv
1810 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024")
1816 #-----------------------------------------------------------------------------
1820 if(NOT EXISTS "${LIBDIR}/")
1821 message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'")
1825 if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
1826 message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
1830 if(NOT WITH_OPENIMAGEIO)
1831 message(FATAL_ERROR "Cycles requires WITH_OPENIMAGEIO, the library may not have been found. Configure OIIO or disable WITH_CYCLES")
1834 message(FATAL_ERROR "Cycles requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES")
1839 message(FATAL_ERROR "Cycles OSL requires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL")
1844 if(WITH_INTERNATIONAL)
1846 message(FATAL_ERROR "Internationalization requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL")
1850 # See TEST_SSE_SUPPORT() for how this is defined.
1852 if(WITH_RAYOPTIMIZATION)
1853 if(SUPPORT_SSE_BUILD)
1854 set(PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}")
1855 add_definitions(-D__SSE__ -D__MMX__)
1857 if(SUPPORT_SSE2_BUILD)
1858 set(PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}")
1859 add_definitions(-D__SSE2__)
1860 if(NOT SUPPORT_SSE_BUILD) # dont double up
1861 add_definitions(-D__MMX__)
1867 # set the endian define
1869 # for some reason this fails on msvc
1870 add_definitions(-D__LITTLE_ENDIAN__)
1872 # OSX-Note: as we do crosscompiling with specific set architecture,
1873 # endianess-detection and autosetting is counterproductive
1874 # so we just set endianess according CMAKE_OSX_ARCHITECTURES
1876 elseif(CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
1877 add_definitions(-D__LITTLE_ENDIAN__)
1878 elseif(CMAKE_OSX_ARCHITECTURES MATCHES ppc OR CMAKE_OSX_ARCHITECTURES MATCHES ppc64)
1879 add_definitions(-D__BIG_ENDIAN__)
1882 include(TestBigEndian)
1883 test_big_endian(_SYSTEM_BIG_ENDIAN)
1884 if(_SYSTEM_BIG_ENDIAN)
1885 add_definitions(-D__BIG_ENDIAN__)
1887 add_definitions(-D__LITTLE_ENDIAN__)
1889 unset(_SYSTEM_BIG_ENDIAN)
1893 if(WITH_IMAGE_OPENJPEG)
1894 if(WITH_SYSTEM_OPENJPEG)
1897 set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg")
1898 add_definitions(-DOPJ_STATIC)
1902 if(WITH_IMAGE_REDCODE)
1903 set(REDCODE ${CMAKE_SOURCE_DIR}/extern)
1904 set(REDCODE_INC ${REDCODE})
1908 #-----------------------------------------------------------------------------
1910 find_package(OpenGL)
1911 blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}")
1912 # unset(OPENGL_LIBRARIES CACHE) # not compat with older cmake
1913 # unset(OPENGL_xmesa_INCLUDE_DIR CACHE) # not compat with older cmake
1915 #-----------------------------------------------------------------------------
1918 find_package(OpenMP)
1920 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
1921 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
1923 if(APPLE AND ${CMAKE_GENERATOR} MATCHES "Xcode")
1924 set(CMAKE_XCODE_ATTRIBUTE_ENABLE_OPENMP_SUPPORT "YES")
1927 set(WITH_OPENMP OFF)
1936 #-----------------------------------------------------------------------------
1939 if(WITH_SYSTEM_GLEW)
1943 message(FATAL_ERROR "GLEW is required to build blender, install it or disable WITH_SYSTEM_GLEW")
1951 # set(GLEW_LIBRARY "") # unused
1952 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
1956 #-----------------------------------------------------------------------------
1959 if(WITH_BULLET AND WITH_SYSTEM_BULLET)
1960 find_package(Bullet)
1961 if(NOT BULLET_FOUND)
1962 set(WITH_BULLET OFF)
1965 set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
1966 # set(BULLET_LIBRARIES "")
1969 #-----------------------------------------------------------------------------
1972 if(WITH_PYTHON_MODULE)
1973 add_definitions(-DPy_ENABLE_SHARED)
1976 #-----------------------------------------------------------------------------
1977 # Extra compile flags
1979 if(CMAKE_COMPILER_IS_GNUCC)
1981 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
1982 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_CAST_ALIGN -Wcast-align)
1983 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
1984 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
1985 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
1986 # system headers sometimes do this, disable for now, was: -Werror=strict-prototypes
1987 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
1988 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
1989 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
1990 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
1991 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
1992 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
1993 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_WRITE_STRINGS -Wwrite-strings)
1994 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_LOGICAL_OP -Wlogical-op)
1995 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNDEF -Wundef)
1996 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
1997 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_NULL -Wnonnull) # C only
1998 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
1999 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2000 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_TYPE_LIMITS -Wtype-limits)
2002 # gcc 4.2 gives annoying warnings on every file with this
2003 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2004 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNINITIALIZED -Wuninitialized)
2007 # versions before gcc4.6 give many BLI_math warnings
2008 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.6")
2009 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_REDUNDANT_DECLS -Wredundant-decls)
2010 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_REDUNDANT_DECLS -Wredundant-decls)
2013 # disable because it gives warnings for printf() & friends.
2014 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_DOUBLE_PROMOTION -Wdouble-promotion -Wno-error=double-promotion)
2017 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2020 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2021 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2022 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2023 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_LOGICAL_OP -Wlogical-op)
2024 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2025 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2026 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2027 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_TYPE_LIMITS -Wtype-limits)
2029 # gcc 4.2 gives annoying warnings on every file with this
2030 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2031 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNINITIALIZED -Wuninitialized)
2034 # causes too many warnings
2036 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
2037 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_DECLARATIONS -Wmissing-declarations)
2040 # flags to undo strict flags
2041 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
2042 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2045 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2048 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
2050 # strange, clang complains these are not supported, but then yses them.
2051 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2052 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
2053 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2054 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2055 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2056 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2057 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2058 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2059 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2060 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2062 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2063 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2064 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2065 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2066 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.
2067 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2068 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2070 # gives too many unfixable warnings
2071 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_MACROS -Wunused-macros)
2072 # ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_MACROS -Wunused-macros)
2074 # flags to undo strict flags
2075 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2076 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2078 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_VARIABLE_DECLARATIONS -Wno-missing-variable-declarations)
2079 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_FUNCTION -Wno-unused-function)
2080 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INT_TO_VOID_POINTER_CAST -Wno-int-to-void-pointer-cast)
2081 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_PROTOTYPES -Wno-missing-prototypes)
2082 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DUPLICATE_ENUM -Wno-duplicate-enum)
2083 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNDEF -Wno-undef)
2084 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_NORETURN -Wno-missing-noreturn)
2086 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_PRIVATE_FIELD -Wno-unused-private-field)
2087 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_CXX11_NARROWING -Wno-c++11-narrowing)
2088 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_NON_VIRTUAL_DTOR -Wno-non-virtual-dtor)
2089 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2090 ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_REORDER -Wno-reorder)
2092 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
2094 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2095 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2096 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2098 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2099 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2100 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2102 # disable numbered, false positives
2103 set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556")
2104 set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556")
2108 # ensure python header is found since detection can fail, this could happen
2109 # with _any_ library but since we used a fixed python version this tends to
2110 # be most problematic.
2112 if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/Python.h")
2113 message(FATAL_ERROR "Missing: \"${PYTHON_INCLUDE_DIR}/Python.h\",\n"
2114 "Set the cache entry 'PYTHON_INCLUDE_DIR' to point "
2115 "to a valid python include path. Containing "
2116 "Python.h for python version \"${PYTHON_VERSION}\"")
2119 if(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
2121 # -- disabled until we make numpy bundled with blender - campbell
2122 if((NOT ${PYTHON_NUMPY_PATH} STREQUAL "") AND (NOT ${PYTHON_NUMPY_PATH} MATCHES NOTFOUND))
2123 # if(NOT EXISTS "${PYTHON_NUMPY_PATH}/numpy")
2124 # message(WARNING "PYTHON_NUMPY_PATH is invalid, numpy not found in '${PYTHON_NUMPY_PATH}' "
2125 # "WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
2126 # set(WITH_PYTHON_INSTALL_NUMPY OFF)
2128 # not set, so initialize
2130 string(REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}")
2131 list(GET _PY_VER_SPLIT 0 _PY_VER_MAJOR)
2134 unset(PYTHON_NUMPY_PATH CACHE)
2135 find_path(PYTHON_NUMPY_PATH
2139 "${PYTHON_LIBPATH}/python${PYTHON_VERSION}/"
2140 "${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/"
2147 if(NOT EXISTS "${PYTHON_NUMPY_PATH}")
2148 message(WARNING "'numpy' path could not be found in:\n"
2149 "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/numpy', "
2150 "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/numpy', "
2151 "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/numpy', "
2152 "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/numpy', "
2153 "WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
2154 set(WITH_PYTHON_INSTALL_NUMPY OFF)
2156 message(STATUS "numpy found at '${PYTHON_NUMPY_PATH}'")
2159 unset(_PY_VER_SPLIT)
2160 unset(_PY_VER_MAJOR)
2165 if(WITH_GCC_MUDFLAP)
2166 set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -fmudflapth -funwind-tables")
2167 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lpthread -lmudflapth -rdynamic")
2168 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_MUDFLAP -Wno-error=mudflap)
2169 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_ERROR_MUDFLAP -Wno-error=mudflap)
2172 # Include warnings first, so its possible to disable them with user defined flags
2173 # eg: -Wno-uninitialized
2174 set(CMAKE_C_FLAGS "${C_WARNINGS} ${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}")
2175 set(CMAKE_CXX_FLAGS "${CXX_WARNINGS} ${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}")
2177 # defined above, platform spesific but shared names
2194 #-------------------------------------------------------------------------------
2197 # better not set includes here but this debugging option is off by default.
2198 if(WITH_CXX_GUARDEDALLOC)
2199 include_directories(${CMAKE_SOURCE_DIR}/intern/guardedalloc)
2200 add_definitions(-DWITH_CXX_GUARDEDALLOC)
2203 if(WITH_ASSERT_ABORT)
2204 add_definitions(-DWITH_ASSERT_ABORT)
2207 # message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
2208 # message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
2210 #-----------------------------------------------------------------------------
2213 add_subdirectory(source)
2214 add_subdirectory(intern)
2215 add_subdirectory(extern)
2218 #-----------------------------------------------------------------------------
2219 # Blender Application
2221 add_subdirectory(source/creator)
2225 #-----------------------------------------------------------------------------
2228 add_subdirectory(source/blenderplayer)
2231 #-----------------------------------------------------------------------------
2232 # CPack for generating packages
2233 include(build_files/cmake/packaging.cmake)
2236 #-----------------------------------------------------------------------------
2237 # Print Final Configuration
2240 set(_config_msg "\n* Blender Configuration *")
2241 macro(info_cfg_option
2243 set(_msg " * ${_setting}")
2244 string(LENGTH "${_msg}" _len)
2245 while("32" GREATER "${_len}")
2246 set(_msg "${_msg} ")
2247 math(EXPR _len "${_len} + 1")
2250 set(_config_msg "${_config_msg}\n${_msg}${${_setting}}")
2255 set(_config_msg "${_config_msg}\n\n ${_text}")
2260 info_cfg_text("Build Options:")
2261 info_cfg_option(WITH_GAMEENGINE)
2262 info_cfg_option(WITH_PLAYER)
2263 info_cfg_option(WITH_BULLET)
2264 info_cfg_option(WITH_IK_SOLVER)
2265 info_cfg_option(WITH_IK_ITASC)
2266 info_cfg_option(WITH_OPENCOLLADA)
2267 info_cfg_option(WITH_FFTW3)
2268 info_cfg_option(WITH_INTERNATIONAL)
2269 info_cfg_option(WITH_INPUT_NDOF)
2270 info_cfg_option(WITH_CYCLES)
2271 info_cfg_option(WITH_FREESTYLE)
2272 info_cfg_option(WITH_OPENCOLORIO)
2274 info_cfg_text("Compiler Options:")
2275 info_cfg_option(WITH_BUILDINFO)
2276 info_cfg_option(WITH_OPENMP)
2277 info_cfg_option(WITH_RAYOPTIMIZATION)
2279 info_cfg_text("System Options:")
2280 info_cfg_option(WITH_INSTALL_PORTABLE)
2281 info_cfg_option(WITH_X11_XF86VMODE)
2282 info_cfg_option(WITH_X11_XINPUT)
2283 info_cfg_option(WITH_MEM_JEMALLOC)
2284 info_cfg_option(WITH_SYSTEM_GLEW)
2285 info_cfg_option(WITH_SYSTEM_OPENJPEG)
2287 info_cfg_text("Image Formats:")
2288 info_cfg_option(WITH_IMAGE_CINEON)
2289 info_cfg_option(WITH_IMAGE_DDS)
2290 info_cfg_option(WITH_IMAGE_HDR)
2291 info_cfg_option(WITH_IMAGE_OPENEXR)
2292 info_cfg_option(WITH_IMAGE_OPENJPEG)
2293 info_cfg_option(WITH_IMAGE_REDCODE)
2294 info_cfg_option(WITH_IMAGE_TIFF)
2296 info_cfg_text("Audio:")
2297 info_cfg_option(WITH_OPENAL)
2298 info_cfg_option(WITH_SDL)
2299 info_cfg_option(WITH_JACK)
2300 info_cfg_option(WITH_JACK_DYNLOAD)
2301 info_cfg_option(WITH_CODEC_AVI)
2302 info_cfg_option(WITH_CODEC_FFMPEG)
2303 info_cfg_option(WITH_CODEC_SNDFILE)
2305 info_cfg_text("Compression:")
2306 info_cfg_option(WITH_LZMA)
2307 info_cfg_option(WITH_LZO)
2309 info_cfg_text("Python:")
2310 info_cfg_option(WITH_PYTHON_INSTALL)
2311 info_cfg_option(WITH_PYTHON_INSTALL_NUMPY)
2312 info_cfg_option(WITH_PYTHON_MODULE)
2313 info_cfg_option(WITH_PYTHON_SAFETY)
2315 info_cfg_option(WITH_PYTHON_FRAMEWORK)
2318 info_cfg_text("Modifiers:")
2319 info_cfg_option(WITH_MOD_BOOLEAN)
2320 info_cfg_option(WITH_MOD_REMESH)
2321 info_cfg_option(WITH_MOD_FLUID)
2322 info_cfg_option(WITH_MOD_OCEANSIM)
2325 message(STATUS "HAVE_STDBOOL_H = ${HAVE_STDBOOL_H}")
2329 message("${_config_msg}")