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 (recommend to leave off)" OFF)
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.
125 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)
126 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)
128 option(WITH_PYTHON_FRAMEWORK "Enable building using the Python available in the framework (OSX only)" OFF)
131 option(WITH_BUILDINFO "Include extra build details (only disable for development & faster builds)" ON)
132 option(WITH_IK_ITASC "Enable ITASC IK solver (only disable for development & for incompatible C++ compilers)" ON)
133 option(WITH_IK_SOLVER "Enable Legacy IK solver (only disable for development)" ON)
134 option(WITH_FFTW3 "Enable FFTW3 support (Used for smoke and audio effects)" ON)
135 option(WITH_BULLET "Enable Bullet (Physics Engine)" ON)
136 option(WITH_SYSTEM_BULLET "Use the systems bullet library (currently unsupported due to missing features in upstream!)" )
137 mark_as_advanced(WITH_SYSTEM_BULLET)
138 option(WITH_GAMEENGINE "Enable Game Engine" ON)
139 option(WITH_PLAYER "Build Player" OFF)
140 option(WITH_OPENCOLORIO "Enable OpenColorIO color management" ON)
141 option(WITH_COMPOSITOR "Enable the tile based nodal compositor" ON)
143 # GHOST Windowing Library Options
144 option(WITH_GHOST_DEBUG "Enable debugging output for the GHOST library" OFF)
145 mark_as_advanced(WITH_GHOST_DEBUG)
147 option(WITH_GHOST_SDL "Enable building blender against SDL for windowing rather then the native APIs" OFF)
148 mark_as_advanced(WITH_GHOST_SDL)
151 option(WITH_HEADLESS "Build without graphical support (renderfarm, server mode only)" OFF)
152 mark_as_advanced(WITH_HEADLESS)
154 option(WITH_AUDASPACE "Build with blenders audio library (only disable if you know what you're doing!)" ON)
155 mark_as_advanced(WITH_AUDASPACE)
157 option(WITH_BOOL_COMPAT "Continue defining \"TRUE\" and \"FALSE\" until these can be replaced with \"true\" and \"false\" from stdbool.h" ON)
158 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_TEST "Build cycles test application" OFF)
265 option(WITH_CYCLES_OSL "Build Cycles with OSL support" OFF)
266 option(WITH_CYCLES_CUDA_BINARIES "Build cycles CUDA binaries" OFF)
267 set(CYCLES_CUDA_BINARIES_ARCH sm_20 sm_21 sm_30 CACHE STRING "CUDA architectures to build binaries for")
268 mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
269 unset(PLATFORM_DEFAULT)
272 option(WITH_LLVM "Use LLVM" OFF)
274 # disable for now, but plan to support on all platforms eventually
275 option(WITH_MEM_JEMALLOC "Enable malloc replacement (http://www.canonware.com/jemalloc)" OFF)
276 mark_as_advanced(WITH_MEM_JEMALLOC)
279 option(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking (only enable for development)" OFF)
280 mark_as_advanced(WITH_CXX_GUARDEDALLOC)
282 option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF)
283 mark_as_advanced(WITH_ASSERT_ABORT)
285 option(WITH_BOOST "Enable features depending no boost" ON)
287 if(CMAKE_COMPILER_IS_GNUCC)
288 option(WITH_GCC_MUDFLAP "Enable mudflap" OFF)
289 mark_as_advanced(WITH_GCC_MUDFLAP)
293 cmake_minimum_required(VERSION 2.8.8)
294 cmake_policy(VERSION 2.8.8)
296 if(NOT CMAKE_OSX_ARCHITECTURES)
297 set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING
298 "Choose the architecture you want to build Blender for: i386, x86_64 or ppc"
302 execute_process(COMMAND uname -r OUTPUT_VARIABLE MAC_SYS) # check for actual system-version
303 if(${MAC_SYS} MATCHES 12)
305 elseif(${MAC_SYS} MATCHES 11)
307 elseif(${MAC_SYS} MATCHES 10)
309 elseif(${MAC_SYS} MATCHES 9)
312 set(OSX_SYSTEM unsupported)
314 message(STATUS "Detected system-version: " ${OSX_SYSTEM})
316 if(${CMAKE_GENERATOR} MATCHES "Xcode")
318 ##### cmake incompatibility with xcode 4.3 and higher #####
319 if(${XCODE_VERSION} MATCHES '') # cmake fails due looking for xcode in the wrong path, thus will be empty var
320 message(FATAL_ERROR "Xcode 4.3 and higher must be used with cmake 2.8-8 or higher")
322 ### end cmake incompatibility with xcode 4.3 and higher ###
324 if(${XCODE_VERSION} VERSION_EQUAL 4 OR ${XCODE_VERSION} VERSION_GREATER 4 AND ${XCODE_VERSION} VERSION_LESS 4.3)
325 # Xcode 4 defaults to the Apple LLVM Compiler.
326 # Override the default compiler selection because Blender only compiles with gcc up to xcode 4.2
327 set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
328 message(STATUS "Setting compiler to: " ${CMAKE_XCODE_ATTRIBUTE_GCC_VERSION})
330 else() # unix makefile generator does not fill XCODE_VERSION var, so we get it with a command
331 execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERS_BUILD_NR)
332 string(SUBSTRING "${XCODE_VERS_BUILD_NR}" 6 3 XCODE_VERSION) # truncate away build-nr
333 unset(XCODE_VERS_BUILD_NR)
336 message(STATUS "Detected Xcode-version: " ${XCODE_VERSION})
338 if(${XCODE_VERSION} VERSION_LESS 4.3)
339 set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk CACHE PATH "" FORCE) # use guaranteed existing sdk
341 # note: i don't use xcode-select path on purpose, cause also /Applications/Xcode.app would be allowed
342 # absolute pathes are more foolproof here !
343 set(OSX_SYSROOT_PREFIX /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform)
344 set(OSX_DEVELOPER_PREFIX /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk) # use guaranteed existing sdk
345 set(CMAKE_OSX_SYSROOT ${OSX_SYSROOT_PREFIX}/${OSX_DEVELOPER_PREFIX} CACHE PATH "" FORCE)
348 if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
349 set(CMAKE_OSX_DEPLOYMENT_TARGET "10.5" CACHE STRING "" FORCE) # 10.5 is our min. target, if you use higher sdk, weak linking happens
352 if(NOT ${CMAKE_GENERATOR} MATCHES "Xcode")
353 # force CMAKE_OSX_DEPLOYMENT_TARGET for makefiles, will not work else ( cmake bug ? )
354 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
355 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
356 add_definitions ("-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
359 option(WITH_COCOA "Use Cocoa framework instead of deprecated Carbon" ON)
360 option(USE_QTKIT "Use QtKit instead of Carbon quicktime (needed for having partial quicktime for 64bit)" OFF)
361 option(WITH_LIBS10.5 "Use 10.5 libs (needed for 64bit builds)" OFF)
362 if(CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
363 set(USE_QTKIT ON CACHE BOOL "ON" FORCE) # no Quicktime in 64bit
368 #-----------------------------------------------------------------------------
369 # Check for conflicting/unsupported configurations
371 if(NOT WITH_BLENDER AND NOT WITH_PLAYER AND NOT WITH_CYCLES_TEST)
372 message(FATAL_ERROR "At least one of WITH_BLENDER or WITH_PLAYER must be enabled, nothing to do!")
375 if(NOT WITH_GAMEENGINE AND WITH_PLAYER)
376 message(FATAL_ERROR "WITH_PLAYER requires WITH_GAMEENGINE")
379 if(NOT WITH_AUDASPACE)
381 message(FATAL_ERROR "WITH_OPENAL requires WITH_AUDASPACE")
384 message(FATAL_ERROR "WITH_JACK requires WITH_AUDASPACE")
387 message(FATAL_ERROR "WITH_GAMEENGINE requires WITH_AUDASPACE")
391 if(NOT WITH_SDL AND WITH_GHOST_SDL)
392 message(FATAL_ERROR "WITH_GHOST_SDL requires WITH_SDL")
395 if(WITH_IMAGE_REDCODE AND ((NOT WITH_IMAGE_OPENJPEG) OR (NOT WITH_CODEC_FFMPEG)))
396 message(FATAL_ERROR "WITH_IMAGE_REDCODE requires WITH_IMAGE_OPENJPEG and WITH_CODEC_FFMPEG")
399 # python module, needs some different options
400 if(WITH_PYTHON_MODULE AND WITH_PLAYER)
401 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PLAYER to be OFF")
404 if(WITH_PYTHON_MODULE AND WITH_PYTHON_INSTALL)
405 message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PYTHON_INSTALL to be OFF")
409 # may as well build python module without a UI
410 if(WITH_PYTHON_MODULE)
411 set(WITH_HEADLESS ON)
414 # enable boost for cycles, booleans, audaspace or i18n
415 # otherwise if the user disabled
417 # Explicitly disabled. so disable all deps.
419 set(WITH_MOD_BOOLEAN OFF)
420 set(WITH_AUDASPACE OFF)
421 set(WITH_INTERNATIONAL OFF)
423 set(WITH_OPENAL OFF) # depends on AUDASPACE
424 set(WITH_GAMEENGINE OFF) # depends on AUDASPACE
425 elseif(WITH_CYCLES OR WITH_MOD_BOOLEAN OR WITH_AUDASPACE OR WITH_INTERNATIONAL)
428 # Enabled but we don't need it
432 # auto enable openimageio for cycles
434 set(WITH_OPENIMAGEIO ON)
437 # auto enable openimageio linking dependencies
439 set(WITH_IMAGE_OPENEXR ON)
440 set(WITH_IMAGE_TIFF ON)
443 # auto enable llvm for cycles_osl
445 set(WITH_LLVM ON CACHE BOOL "ON" FORCE)
448 # don't store paths to libs for portable distribution
449 if(WITH_INSTALL_PORTABLE)
450 set(CMAKE_SKIP_BUILD_RPATH TRUE)
453 if(WITH_GHOST_SDL OR WITH_HEADLESS)
454 set(WITH_GHOST_XDND OFF)
455 set(WITH_X11_XF86VMODE OFF)
456 set(WITH_X11_XINPUT OFF)
460 if(WITH_CODEC_QUICKTIME)
461 message(FATAL_ERROR "MINGW requires WITH_CODEC_QUICKTIME to be OFF "
462 "because it is currently unsupported, remove this "
463 "line if youre a developer who wants to add support.")
467 TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
469 TEST_STDBOOL_SUPPORT()
471 add_definitions(-DHAVE_STDBOOL_H)
474 add_definitions(-DWITH_BOOL_COMPAT)
477 #-----------------------------------------------------------------------------
478 # Check for valid directories
479 # ... svn extern paths can be missing because of svn-git.
481 if(WITH_INTERNATIONAL)
482 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/datafiles/locale")
483 message(WARNING "Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
484 "This is an 'svn external', which are known not to work with bridges to other version "
485 "control systems, disabling 'WITH_INTERNATIONAL'.")
486 set(WITH_INTERNATIONAL OFF)
491 if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/scripts/addons")
492 message(WARNING "Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
493 "This is an 'svn external', which are known not to work with bridges to other version "
494 "control systems: * CONTINUING WITHOUT ADDONS *")
498 #-----------------------------------------------------------------------------
499 # Initialize un-cached vars, avoid unused warning
501 # linux only, not cached
502 set(WITH_BINRELOC OFF)
504 # MAXOSX only, set to avoid uninitialized
510 # these are added to later on.
514 # for gcc -Wno-blah-blah
515 set(CC_REMOVE_STRICT_FLAGS)
517 # libraries to link the binary with passed to target_link_libraries()
518 # known as LLIBS to scons
519 set(PLATFORM_LINKLIBS "")
521 # Added to linker flags in setup_liblinks
522 # - CMAKE_EXE_LINKER_FLAGS
523 # - CMAKE_EXE_LINKER_FLAGS_DEBUG
524 set(PLATFORM_LINKFLAGS "")
525 set(PLATFORM_LINKFLAGS_DEBUG "")
528 # disabled for now, not supported
529 # option(WITH_WEBPLUGIN "Enable Web Plugin (Unix only)" OFF)
531 # For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
534 # -D PYTHON_VERSION=3.3 \
535 # -D PYTHON_INCLUDE_DIR=/opt/py33/include/python3.3d \
536 # -D PYTHON_LIBRARY=/opt/py33/lib/libpython3.3d.so
540 # -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.3/include/python3.3 \
541 # -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/config \
544 # When changing any of this remember to update the notes in doc/build_systems/cmake.txt
546 #-----------------------------------------------------------------------------
549 if(UNIX AND NOT APPLE)
550 macro(find_package_wrapper)
551 string(TOUPPER ${ARGV0} _NAME_UPPER)
552 if(${WITH_STATIC_LIBS})
553 set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES})
554 set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
556 find_package(${ARGV})
557 if(${WITH_STATIC_LIBS})
558 set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back})
559 unset(_cmake_find_library_suffixes_back)
563 find_package_wrapper(JPEG REQUIRED)
564 find_package_wrapper(PNG REQUIRED)
565 find_package_wrapper(ZLIB REQUIRED)
566 find_package_wrapper(Freetype REQUIRED)
569 # No way to set py33. remove for now.
570 # find_package(PythonLibs)
572 # Use our own instead, since wothout py is such a rare case,
573 # require this package
574 # XXX Linking errors with debian static python :/
575 # find_package_wrapper(PythonLibsUnix REQUIRED)
576 find_package(PythonLibsUnix REQUIRED)
579 if(WITH_IMAGE_OPENEXR)
580 find_package_wrapper(OpenEXR) # our own module
581 if(NOT OPENEXR_FOUND)
582 set(WITH_IMAGE_OPENEXR OFF)
586 if(WITH_IMAGE_OPENJPEG)
587 find_package_wrapper(OpenJPEG)
588 if(NOT OPENJPEG_FOUND)
589 set(WITH_IMAGE_OPENJPEG OFF)
594 # XXX Linking errors with debian static tiff :/
595 # find_package_wrapper(TIFF)
598 set(WITH_IMAGE_TIFF OFF)
604 find_package_wrapper(OpenAL)
611 find_package_wrapper(SDL)
618 # unset(SDLMAIN_LIBRARY CACHE)
625 find_package_wrapper(Jack)
632 if(WITH_CODEC_SNDFILE)
633 find_package_wrapper(SndFile)
634 if(NOT SNDFILE_FOUND)
635 set(WITH_CODEC_SNDFILE OFF)
639 if(WITH_CODEC_FFMPEG)
640 set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
641 set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
643 mark_as_advanced(FFMPEG)
645 # lame, but until we have proper find module for ffmpeg
646 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
647 if(EXISTS "${FFMPEG}/include/ffmpeg/")
648 list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg")
652 mark_as_advanced(FFMPEG_LIBRARIES)
653 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
654 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
658 find_package_wrapper(Fftw3)
665 find_package_wrapper(OpenCOLLADA)
666 if(OPENCOLLADA_FOUND)
667 find_package_wrapper(XML2)
668 find_package_wrapper(PCRE)
670 set(WITH_OPENCOLLADA OFF)
674 if(WITH_MEM_JEMALLOC)
675 find_package_wrapper(JeMalloc)
676 if(NOT JEMALLOC_FOUND)
677 set(WITH_MEM_JEMALLOC OFF)
682 find_package_wrapper(Spacenav)
683 if(NOT SPACENAV_FOUND)
684 set(WITH_INPUT_NDOF OFF)
687 # use generic names within blenders buildsystem.
689 set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
690 set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
695 # uses in build instructions to override include and library variables
697 if(${WITH_STATIC_LIBS})
698 set(Boost_USE_STATIC_LIBS ON)
700 set(Boost_USE_MULTITHREADED ON)
701 set(__boost_packages filesystem regex system thread date_time)
702 if(WITH_INTERNATIONAL)
703 list(APPEND __boost_packages locale)
705 find_package(Boost 1.48 COMPONENTS ${__boost_packages})
706 unset(__boost_packages)
707 if(Boost_USE_STATIC_LIBS AND WITH_BOOST_ICU)
708 find_package(IcuLinux)
710 mark_as_advanced(Boost_DIR) # why doesnt boost do this?
713 set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
714 set(BOOST_LIBRARIES ${Boost_LIBRARIES})
715 set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
716 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
720 find_package_wrapper(OpenImageIO)
722 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES})
723 set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
724 set(OPENIMAGEIO_DEFINITIONS "")
727 list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}")
729 if(WITH_IMAGE_OPENEXR)
730 list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}")
733 if(NOT OPENIMAGEIO_FOUND)
734 set(WITH_OPENIMAGEIO OFF)
735 message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
740 find_package_wrapper(OpenColorIO)
742 set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES})
743 set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
744 set(OPENCOLORIO_DEFINITIONS)
746 if(NOT OPENCOLORIO_FOUND)
747 set(WITH_OPENCOLORIO OFF)
748 message(STATUS "OpenColorIO not found")
752 # XXX Maybe most of this section should go into an llvm module?
754 # Set llvm version if not specified
756 set(LLVM_VERSION "3.0")
760 FIND_PROGRAM(LLVM_CONFIG llvm-config-${LLVM_VERSION} HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
762 FIND_PROGRAM(LLVM_CONFIG llvm-config HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
765 FIND_PROGRAM(LLVM_CONFIG llvm-config-${LLVM_VERSION})
767 FIND_PROGRAM(LLVM_CONFIG llvm-config)
770 execute_process(COMMAND ${LLVM_CONFIG} --version
771 OUTPUT_VARIABLE LLVM_VERSION
772 OUTPUT_STRIP_TRAILING_WHITESPACE)
773 execute_process(COMMAND ${LLVM_CONFIG} --prefix
774 OUTPUT_VARIABLE LLVM_DIRECTORY
775 OUTPUT_STRIP_TRAILING_WHITESPACE)
776 execute_process(COMMAND ${LLVM_CONFIG} --libdir
777 OUTPUT_VARIABLE LLVM_LIB_DIR
778 OUTPUT_STRIP_TRAILING_WHITESPACE)
779 find_library(LLVM_LIBRARY
780 NAMES LLVMAnalysis # first of a whole bunch of libs to get
781 PATHS ${LLVM_LIB_DIR})
782 message(STATUS "LLVM version = ${LLVM_VERSION}")
783 message(STATUS "LLVM dir = ${LLVM_DIRECTORY}")
784 message(STATUS "LLVM lib dir = ${LLVM_LIB_DIR}")
785 set(LLVM_VERSION ${LLVM_VERSION} CACHE STRING "Version of LLVM to use")
786 set(LLVM_DIRECTORY ${LLVM_DIRECTORY} CACHE PATH "Path to the LLVM installation")
788 if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIB_DIR)
790 # if static LLVM libraries were requested, use llvm-config to generate
791 # the list of what libraries we need, and substitute that in the right
792 # way for LLVM_LIBRARY.
793 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
794 OUTPUT_VARIABLE LLVM_LIBRARY
795 OUTPUT_STRIP_TRAILING_WHITESPACE)
796 string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
799 message(FATAL_ERROR "LLVM not found.")
802 # Fix for conflict with Mesa llvmpipe
803 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/source/creator/blender.map")
807 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
809 message(STATUS "CYCLES_OSL = ${CYCLES_OSL}")
811 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
812 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
813 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
814 # Note: --whole-archive is needed to force loading of all symbols in liboslexec,
815 # otherwise LLVM is missing the osl_allocate_closure_component function
816 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -Wl,--whole-archive ${OSL_LIB_EXEC} -Wl,--no-whole-archive ${OSL_LIB_QUERY})
817 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
818 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
820 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
822 message(STATUS "OSL includes = ${OSL_INCLUDES}")
823 message(STATUS "OSL library = ${OSL_LIBRARIES}")
824 message(STATUS "OSL compiler = ${OSL_COMPILER}")
826 message(STATUS "OSL not found")
830 # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
831 set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread -lstdc++")
833 if((NOT WITH_HEADLESS) AND (NOT WITH_GHOST_SDL))
834 find_package(X11 REQUIRED)
835 find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
836 mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
838 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_X11_LIB}")
842 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xinput_LIB}")
844 set(WITH_X11_XINPUT OFF)
848 if(WITH_X11_XF86VMODE)
849 # XXX, why dont cmake make this available?
850 FIND_LIBRARY(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
851 mark_as_advanced(X11_Xxf86vmode_LIB)
852 if(X11_Xxf86vmode_LIB)
853 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xxf86vmode_LIB}")
855 set(WITH_X11_XF86VMODE OFF)
860 if(CMAKE_SYSTEM_NAME MATCHES "Linux")
861 if(NOT WITH_PYTHON_MODULE)
862 # BSD's dont use libdl.so
863 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -ldl")
864 # binreloc is linux only
865 set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include)
866 set(WITH_BINRELOC ON)
870 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -pthread")
872 # lfs on glibc, all compilers should use
873 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
876 if(CMAKE_COMPILER_IS_GNUCC)
877 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
878 # CLang is the same as GCC for now.
879 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
880 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
882 elseif(CMAKE_CXX_COMPILER_ID MATCHES "SunPro")
883 set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
886 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
887 # think these next two are broken
888 find_program(XIAR xiar)
890 set(CMAKE_AR "${XIAR}")
892 mark_as_advanced(XIAR)
894 find_program(XILD xild)
896 set(CMAKE_LINKER "${XILD}")
898 mark_as_advanced(XILD)
900 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
901 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
903 # set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
904 set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
905 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
910 # this file is included anyway when building under Windows with cl.exe
911 # include(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)
913 if(CMAKE_COMPILER_IS_GNUCC)
914 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
915 include(CheckCSourceCompiles)
916 # Setup 64bit and 64bit windows systems
917 CHECK_C_SOURCE_COMPILES("
926 message("Compiling for 64 bit with MinGW-w64.")
927 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
930 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
932 # Setup 64bit and 64bit windows systems
934 message("64 bit compiler detected.")
935 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64)
939 add_definitions(-DWIN32)
941 set(JPEG "${LIBDIR}/jpeg")
942 set(JPEG_INCLUDE_DIR "${JPEG}/include")
943 set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
945 set(WINTAB_INC ${LIBDIR}/wintab/include)
948 set(OPENAL ${LIBDIR}/openal)
949 set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
950 set(OPENAL_LIBRARY wrap_oal)
951 set(OPENAL_LIBPATH ${OPENAL}/lib)
954 if(WITH_CODEC_SNDFILE)
955 set(SNDFILE ${LIBDIR}/sndfile)
956 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
957 set(SNDFILE_LIBRARIES libsndfile-1)
958 set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
962 set(SDL ${LIBDIR}/sdl)
963 set(SDL_INCLUDE_DIR ${SDL}/include)
965 set(SDL_LIBPATH ${SDL}/lib)
968 if(WITH_CODEC_QUICKTIME)
969 set(QUICKTIME ${LIBDIR}/QTDevWin)
970 set(QUICKTIME_INCLUDE_DIRS ${QUICKTIME}/CIncludes)
971 set(QUICKTIME_LIBRARIES qtmlClient)
972 set(QUICKTIME_LIBPATH ${QUICKTIME}/Libraries)
975 if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
976 add_definitions(-D__SSE__ -D__MMX__)
980 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
982 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
983 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
984 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
985 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
986 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
987 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
989 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
992 message(STATUS "OSL not found")
997 set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi)
999 add_definitions(/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_CONSOLE /D_LIB)
1001 set(CMAKE_CXX_FLAGS "/nologo /J /Gd /EHsc" CACHE STRING "MSVC MT C++ flags " FORCE)
1002 set(CMAKE_C_FLAGS "/nologo /J /Gd" CACHE STRING "MSVC MT C++ flags " FORCE)
1005 set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
1007 set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
1009 set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE)
1010 set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE)
1011 set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE)
1013 set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
1015 set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
1017 set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE)
1018 set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE)
1019 set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE)
1021 # most msvc warnings are C & C++
1022 set(_WARNINGS "/W3 /wd4018 /wd4244 /wd4305 /wd4800 /wd4181 /wd4065 /wd4267 /we4013 /wd4200")
1023 set(C_WARNINGS "${_WARNINGS}")
1024 set(CXX_WARNINGS "${_WARNINGS}")
1027 if(WITH_MOD_CLOTH_ELTOPO)
1028 set(LAPACK ${LIBDIR}/lapack)
1029 # set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
1030 set(LAPACK_LIBPATH ${LAPACK}/lib)
1031 set(LAPACK_LIBRARIES
1032 ${LIBDIR}/lapack/lib/libf2c.lib
1033 ${LIBDIR}/lapack/lib/clapack_nowrap.lib
1034 ${LIBDIR}/lapack/lib/BLAS_nowrap.lib
1038 set(PNG_LIBRARIES libpng)
1039 set(JPEG_LIBRARIES libjpeg)
1041 set(PNG "${LIBDIR}/png")
1042 set(PNG_INCLUDE_DIR "${PNG}/include")
1043 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1045 set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
1047 set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz.lib)
1049 set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/zlib.lib)
1052 set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
1053 set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
1055 set(FREETYPE ${LIBDIR}/freetype)
1056 set(FREETYPE_INCLUDE_DIRS
1057 ${LIBDIR}/freetype/include
1058 ${LIBDIR}/freetype/include/freetype2
1060 set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
1063 set(FFTW3 ${LIBDIR}/fftw3)
1064 set(FFTW3_LIBRARIES libfftw)
1065 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1066 set(FFTW3_LIBPATH ${FFTW3}/lib)
1069 if(WITH_OPENCOLLADA)
1070 set(OPENCOLLADA ${LIBDIR}/opencollada)
1072 set(OPENCOLLADA_INCLUDE_DIRS
1073 ${LIBDIR}/opencollada/include/COLLADAStreamWriter/include
1074 ${LIBDIR}/opencollada/include/COLLADABaseUtils/include
1075 ${LIBDIR}/opencollada/include/COLLADAFramework/include
1076 ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader/include
1077 ${LIBDIR}/opencollada/include/GeneratedSaxParser/include
1079 set_lib_path(OPENCOLLADA_LIBPATH "opencollada")
1081 set(OPENCOLLADA_LIBRARIES
1082 ${OPENCOLLADA_LIBPATH}/lib/OpenCOLLADASaxFrameworkLoader.lib
1083 ${OPENCOLLADA_LIBPATH}/lib/OpenCOLLADAFramework.lib
1084 ${OPENCOLLADA_LIBPATH}/lib/OpenCOLLADABaseUtils.lib
1085 ${OPENCOLLADA_LIBPATH}/lib/OpenCOLLADAStreamWriter.lib
1086 ${OPENCOLLADA_LIBPATH}/lib/MathMLSolver.lib
1087 ${OPENCOLLADA_LIBPATH}/lib/GeneratedSaxParser.lib
1088 ${OPENCOLLADA_LIBPATH}/lib/xml2.lib
1089 ${OPENCOLLADA_LIBPATH}/lib/buffer.lib
1090 ${OPENCOLLADA_LIBPATH}/lib/ftoa.lib
1091 ${OPENCOLLADA_LIBPATH}/lib/UTF.lib
1094 ${OPENCOLLADA_LIBPATH}/lib/pcre.lib
1097 unset(OPENCOLLADA_LIBPATH)
1101 if(WITH_CODEC_FFMPEG)
1102 set(FFMPEG_INCLUDE_DIRS
1103 ${LIBDIR}/ffmpeg/include
1104 ${LIBDIR}/ffmpeg/include/msvc
1106 set(FFMPEG_LIBRARIES
1107 ${LIBDIR}/ffmpeg/lib/avcodec-53.lib
1108 ${LIBDIR}/ffmpeg/lib/avformat-53.lib
1109 ${LIBDIR}/ffmpeg/lib/avdevice-53.lib
1110 ${LIBDIR}/ffmpeg/lib/avutil-51.lib
1111 ${LIBDIR}/ffmpeg/lib/swscale-2.lib
1115 if(WITH_IMAGE_OPENEXR)
1116 set_lib_path(OPENEXR "openexr")
1117 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1118 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1119 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1120 set(OPENEXR_LIBRARIES
1121 ${OPENEXR_LIBPATH}/Iex.lib
1122 ${OPENEXR_LIBPATH}/Half.lib
1123 ${OPENEXR_LIBPATH}/IlmImf.lib
1124 ${OPENEXR_LIBPATH}/Imath.lib
1125 ${OPENEXR_LIBPATH}/IlmThread.lib
1130 set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
1131 set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
1135 set(JACK_INCLUDE_DIRS
1136 ${LIBDIR}/jack/include/jack
1137 ${LIBDIR}/jack/include
1139 set(JACK_LIBRARIES ${LIBDIR}/jack/lib/libjack.lib)
1143 # normally cached but not since we include them with blender
1145 set(PYTHON_VERSION 3.3) # CACHE STRING)
1147 set(PYTHON_VERSION 3.3) # CACHE STRING)
1150 set_lib_path(PYTHON "python")
1151 string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1152 # Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs
1153 set(PYTHON_LIBRARY ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.lib)
1154 # set(PYTHON_LIBRARY ${PYTHON}/lib/python${_PYTHON_VERSION_NO_DOTS}.lib) #CACHE FILEPATH
1155 unset(_PYTHON_VERSION_NO_DOTS)
1157 #Shared includes for both vc2008 and vc2010
1158 set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION})
1161 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1162 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1166 set(BOOST ${LIBDIR}/boost)
1167 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1169 set(BOOST_LIBPATH ${BOOST}/vc2010/lib)
1170 set(BOOST_POSTFIX "vc100-mt-s-1_49.lib")
1171 set(BOOST_DEBUG_POSTFIX "vc100-mt-sgd-1_49.lib")
1173 set(BOOST_LIBPATH ${BOOST}/lib)
1174 set(BOOST_POSTFIX "vc90-mt-s-1_49.lib")
1175 set(BOOST_DEBUG_POSTFIX "vc90-mt-sgd-1_49.lib")
1178 optimized libboost_date_time-${BOOST_POSTFIX} optimized libboost_filesystem-${BOOST_POSTFIX}
1179 optimized libboost_regex-${BOOST_POSTFIX}
1180 optimized libboost_system-${BOOST_POSTFIX} optimized libboost_thread-${BOOST_POSTFIX}
1181 debug libboost_date_time-${BOOST_DEBUG_POSTFIX} debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
1182 debug libboost_regex-${BOOST_DEBUG_POSTFIX}
1183 debug libboost_system-${BOOST_DEBUG_POSTFIX} debug libboost_thread-${BOOST_DEBUG_POSTFIX})
1185 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1186 optimized libboost_wave-${BOOST_POSTFIX}
1187 debug libboost_wave-${BOOST_DEBUG_POSTFIX})
1189 if(WITH_INTERNATIONAL)
1190 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1191 optimized libboost_locale-${BOOST_POSTFIX}
1192 debug libboost_locale-${BOOST_DEBUG_POSTFIX})
1194 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1197 if(WITH_OPENIMAGEIO)
1198 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1199 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1200 set(OPENIMAGEIO_LIBRARIES optimized OpenImageIO debug OpenImageIO_d)
1201 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1202 set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0")
1206 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1207 file(GLOB LLVM_LIBRARY ${LLVM_DIRECTORY}/lib/*.lib)
1208 set(LLVM_STATIC YES)
1211 if(WITH_OPENCOLORIO)
1212 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1213 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1214 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1215 set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
1216 set(OPENCOLORIO_DEFINITIONS)
1220 set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
1222 # MSVC only, Mingw doesnt need
1224 set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
1226 set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
1229 set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
1231 # used in many places so include globally, like OpenGL
1232 blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
1234 elseif(CMAKE_COMPILER_IS_GNUCC)
1235 # keep GCC specific stuff here
1236 set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi")
1237 set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
1240 #We need to take care though not to have these on debug builds because they may play funky with gdb
1241 if(CMAKE_BUILD_TYPE MATCHES "Release")
1242 set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmmx -ftree-vectorize")
1244 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
1245 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread")
1247 add_definitions(-DFREE_WINDOWS64 -DMS_WIN64)
1248 #Turn off OpenMP since it causes crashes on render for subsurfed/multiresolution meshes
1249 set(WITH_OPENMP OFF)
1252 add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1254 add_definitions(-DFREE_WINDOWS)
1256 set(PNG "${LIBDIR}/png")
1257 set(PNG_INCLUDE_DIR "${PNG}/include")
1258 set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1261 set(JPEG_LIBRARIES jpeg)
1263 set(JPEG_LIBRARIES libjpeg)
1265 set(PNG_LIBRARIES png)
1267 set(ZLIB ${LIBDIR}/zlib)
1268 set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
1269 set(ZLIB_LIBPATH ${ZLIB}/lib)
1270 set(ZLIB_LIBRARIES z)
1272 #comes with own pthread library
1273 if(NOT WITH_MINGW64)
1274 set(PTHREADS ${LIBDIR}/pthreads)
1275 #set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
1276 set(PTHREADS_LIBPATH ${PTHREADS}/lib)
1277 set(PTHREADS_LIBRARIES pthreadGC2)
1280 set(FREETYPE ${LIBDIR}/freetype)
1281 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1282 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1283 set(FREETYPE_LIBRARY freetype)
1286 set(FFTW3 ${LIBDIR}/fftw3)
1287 set(FFTW3_LIBRARIES fftw3)
1288 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1289 set(FFTW3_LIBPATH ${FFTW3}/lib)
1292 if(WITH_OPENCOLLADA)
1293 set(OPENCOLLADA ${LIBDIR}/opencollada)
1294 set(OPENCOLLADA_INCLUDE_DIRS
1295 ${LIBDIR}/opencollada/include/COLLADAStreamWriter/include
1296 ${LIBDIR}/opencollada/include/COLLADABaseUtils/include
1297 ${LIBDIR}/opencollada/include/COLLADAFramework/include
1298 ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader/include
1299 ${LIBDIR}/opencollada/include/GeneratedSaxParser/include
1301 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib ${OPENCOLLADA}/lib)
1303 set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre buffer ftoa xml)
1305 set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver expat pcre buffer ftoa)
1307 set(PCRE_LIBRARIES pcre)
1310 if(WITH_CODEC_FFMPEG)
1311 set(FFMPEG ${LIBDIR}/ffmpeg)
1312 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1314 set(FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll)
1316 set(FFMPEG_LIBRARIES avcodec-53 avformat-53 avdevice-53 avutil-51 swscale-2)
1318 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1321 if(WITH_IMAGE_OPENEXR)
1322 set(OPENEXR ${LIBDIR}/openexr)
1323 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1324 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1325 set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex)
1326 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1330 set(TIFF ${LIBDIR}/tiff)
1331 set(TIFF_LIBRARY tiff)
1332 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1333 set(TIFF_LIBPATH ${TIFF}/lib)
1337 set(JACK ${LIBDIR}/jack)
1338 set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include)
1339 set(JACK_LIBRARIES jack)
1340 set(JACK_LIBPATH ${JACK}/lib)
1342 # TODO, gives linking errors, force off
1347 # normally cached but not since we include them with blender
1348 set(PYTHON_VERSION 3.3) # CACHE STRING)
1349 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}") # CACHE PATH)
1350 set(PYTHON_LIBRARY "${LIBDIR}/python/lib/python33mw.lib") # CACHE FILEPATH)
1353 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1354 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1358 set(BOOST ${LIBDIR}/boost)
1359 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1361 set(BOOST_POSTFIX "mgw47-mt-s-1_49")
1362 set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
1364 set(BOOST_POSTFIX "mgw46-mt-s-1_49")
1365 set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49")
1368 optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX}
1369 boost_regex-${BOOST_POSTFIX}
1370 boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX}
1371 debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
1372 boost_regex-${BOOST_DEBUG_POSTFIX}
1373 boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
1374 if(WITH_INTERNATIONAL)
1375 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1376 optimized boost_locale-${BOOST_POSTFIX}
1377 debug boost_locale-${BOOST_DEBUG_POSTFIX})
1380 set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1381 optimized boost_wave-${BOOST_POSTFIX}
1382 debug boost_wave-${BOOST_DEBUG_POSTFIX})
1384 set(BOOST_LIBPATH ${BOOST}/lib)
1385 set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
1388 if(WITH_OPENIMAGEIO)
1389 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1390 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1391 set(OPENIMAGEIO_LIBRARIES OpenImageIO)
1392 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1393 set(OPENIMAGEIO_DEFINITIONS "")
1397 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1398 set(LLVM_LIB_DIR ${LLVM_DIRECTORY}/lib)
1399 #Explicitly set llvm lib order.
1400 #---- WARNING ON GCC ORDER OF LIBS IS IMPORTANT, DO NOT CHANGE! ---------
1401 set(LLVM_LIBRARY LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMAnalysis LLVMArchive
1402 LLVMAsmParser LLVMAsmPrinter
1403 LLVMBitReader LLVMBitWriter
1404 LLVMDebugInfo LLVMExecutionEngine
1405 LLVMInstCombine LLVMInstrumentation
1406 LLVMInterpreter LLVMJIT
1408 LLVMMCDisassembler LLVMMCJIT
1409 LLVMMCParser LLVMObject
1412 LLVMTableGen LLVMTarget
1413 LLVMTransformUtils LLVMVectorize
1414 LLVMX86AsmParser LLVMX86AsmPrinter
1415 LLVMX86CodeGen LLVMX86Desc
1416 LLVMX86Disassembler LLVMX86Info
1417 LLVMX86Utils LLVMipa
1419 #imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
1420 set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -limagehlp")
1421 set(LLVM_STATIC YES)
1424 if(WITH_OPENCOLORIO)
1425 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1426 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1427 set(OPENCOLORIO_LIBRARIES OpenColorIO)
1428 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1429 set(OPENCOLORIO_DEFINITIONS)
1432 set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
1434 ## DISABLE - causes linking errors
1435 ## for re-distribution, so users dont need mingw installed
1436 # set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
1442 if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5")
1443 set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/10.7
1447 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
1449 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1450 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
1452 set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
1458 find_package(OpenAL)
1461 set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
1463 set(WITH_OPENAL OFF)
1468 find_library(JACK_FRAMEWORK
1471 set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
1472 if(NOT JACK_FRAMEWORK)
1477 if(WITH_CODEC_SNDFILE)
1478 set(SNDFILE ${LIBDIR}/sndfile)
1479 set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1480 set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
1481 set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) # TODO, deprecate
1485 # we use precompiled libraries for py 3.3 and up by default
1486 set(PYTHON_VERSION 3.3)
1487 if(NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK)
1488 # normally cached but not since we include them with blender
1489 set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
1490 # set(PYTHON_BINARY "${LIBDIR}/python/bin/python${PYTHON_VERSION}") # not used yet
1491 set(PYTHON_LIBRARY python${PYTHON_VERSION}m)
1492 set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
1493 # set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
1495 # module must be compiled against Python framework
1496 set(PYTHON_INCLUDE_DIR "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}m")
1497 set(PYTHON_BINARY "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}")
1498 #set(PYTHON_LIBRARY python${PYTHON_VERSION})
1499 set(PYTHON_LIBPATH "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m")
1500 #set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled
1504 set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1505 set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1509 set(FFTW3 ${LIBDIR}/fftw3)
1510 set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1511 set(FFTW3_LIBRARIES fftw3)
1512 set(FFTW3_LIBPATH ${FFTW3}/lib)
1515 set(PNG_LIBRARIES png)
1516 set(JPEG_LIBRARIES jpeg)
1519 set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
1520 set(ZLIB_LIBRARIES z bz2)
1522 set(FREETYPE ${LIBDIR}/freetype)
1523 set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1524 set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1525 set(FREETYPE_LIBRARY freetype)
1527 if(WITH_IMAGE_OPENEXR)
1528 set(OPENEXR ${LIBDIR}/openexr)
1529 set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1530 set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1531 set(OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread)
1532 set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1535 if(WITH_CODEC_FFMPEG)
1536 set(FFMPEG ${LIBDIR}/ffmpeg)
1537 set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1538 set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
1539 set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1540 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
1543 find_library(SYSTEMSTUBS_LIBRARY
1548 mark_as_advanced(SYSTEMSTUBS_LIBRARY)
1549 if(SYSTEMSTUBS_LIBRARY)
1550 set(PLATFORM_LINKLIBS stdc++ SystemStubs)
1552 set(PLATFORM_LINKLIBS stdc++)
1556 set(PLATFORM_CFLAGS "-pipe -funsigned-char -DGHOST_COCOA")
1557 set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
1559 set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT")
1560 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
1561 if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1562 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
1563 #libSDL still needs 32bit carbon quicktime
1565 elseif(WITH_CODEC_QUICKTIME)
1566 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
1569 # XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
1570 # ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
1572 # This thread it *should* work and check the framework - campbell
1573 # http://www.cmake.org/pipermail/cmake/2005-December/007740.html
1574 find_library(3DCONNEXION_CLIENT_FRAMEWORK
1575 NAMES 3DconnexionClient
1577 if(NOT 3DCONNEXION_CLIENT_FRAMEWORK)
1578 set(WITH_INPUT_NDOF OFF)
1582 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework 3DconnexionClient")
1583 set(NDOF_INCLUDE_DIRS /Library/Frameworks/3DconnexionClient.framework/Headers )
1588 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -weak_framework jackmp")
1592 set(PLATFORM_CFLAGS "-pipe -funsigned-char")
1593 set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime")
1594 set(WITH_INPUT_NDOF OFF) # unsupported
1597 if(WITH_PYTHON_MODULE OR WITH_PYTHON_FRAMEWORK)
1598 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python")# force cmake to link right framework
1601 if(WITH_OPENCOLLADA)
1602 set(OPENCOLLADA ${LIBDIR}/opencollada)
1604 set(OPENCOLLADA_INCLUDE_DIRS
1605 ${LIBDIR}/opencollada/include/COLLADAStreamWriter
1606 ${LIBDIR}/opencollada/include/COLLADABaseUtils
1607 ${LIBDIR}/opencollada/include/COLLADAFramework
1608 ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
1609 ${LIBDIR}/opencollada/include/GeneratedSaxParser
1612 set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
1613 set(OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lUTF -lxml2 -lbuffer -lftoa")
1614 #pcre is bundled with openCollada
1615 #set(PCRE ${LIBDIR}/pcre)
1616 #set(PCRE_LIBPATH ${PCRE}/lib)
1617 set(PCRE_LIBRARIES pcre)
1619 #set(EXPAT ${LIBDIR}/expat)
1620 #set(EXPAT_LIBPATH ${EXPAT}/lib)
1625 set(SDL ${LIBDIR}/sdl)
1626 set(SDL_INCLUDE_DIR ${SDL}/include)
1627 set(SDL_LIBRARY SDL)
1628 set(SDL_LIBPATH ${SDL}/lib)
1631 set(PNG "${LIBDIR}/png")
1632 set(PNG_INCLUDE_DIR "${PNG}/include")
1633 set(PNG_LIBPATH ${PNG}/lib)
1635 set(JPEG "${LIBDIR}/jpeg")
1636 set(JPEG_INCLUDE_DIR "${JPEG}/include")
1637 set(JPEG_LIBPATH ${JPEG}/lib)
1640 set(TIFF ${LIBDIR}/tiff)
1641 set(TIFF_INCLUDE_DIR ${TIFF}/include)
1642 set(TIFF_LIBRARY tiff)
1643 set(TIFF_LIBPATH ${TIFF}/lib)
1647 # linker needs "-weak_framework 3DconnexionClient"
1651 set(BOOST ${LIBDIR}/boost)
1652 set(BOOST_INCLUDE_DIR ${BOOST}/include)
1653 set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt boost_wave-mt)
1654 if(WITH_INTERNATIONAL)
1655 list(APPEND BOOST_LIBRARIES boost_locale-mt)
1656 set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale needs it !
1658 set(BOOST_LIBPATH ${BOOST}/lib)
1659 set(BOOST_DEFINITIONS)
1662 if(WITH_OPENIMAGEIO)
1663 set(OPENIMAGEIO ${LIBDIR}/openimageio)
1664 set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1665 set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO}/lib/libOpenImageIO.a ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
1666 set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
1667 set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
1670 if(WITH_OPENCOLORIO)
1671 set(OPENCOLORIO ${LIBDIR}/opencolorio)
1672 set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1673 set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
1674 set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1675 set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD")
1679 set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1680 set(LLVM_VERSION "3.1" CACHE STRING "Version of LLVM to use")
1681 set(LLVM_STATIC YES)
1682 if(EXISTS "${LLVM_DIRECTORY}/bin/llvm-config")
1683 set(LLVM_CONFIG "${LLVM_DIRECTORY}/bin/llvm-config")
1685 set(LLVM_CONFIG llvm-config)
1687 execute_process(COMMAND ${LLVM_CONFIG} --version
1688 OUTPUT_VARIABLE LLVM_VERSION
1689 OUTPUT_STRIP_TRAILING_WHITESPACE)
1690 execute_process(COMMAND ${LLVM_CONFIG} --prefix
1691 OUTPUT_VARIABLE LLVM_DIRECTORY
1692 OUTPUT_STRIP_TRAILING_WHITESPACE)
1693 execute_process(COMMAND ${LLVM_CONFIG} --libdir
1694 OUTPUT_VARIABLE LLVM_LIB_DIR
1695 OUTPUT_STRIP_TRAILING_WHITESPACE)
1696 find_library(LLVM_LIBRARY
1697 NAMES LLVMAnalysis # first of a whole bunch of libs to get
1698 PATHS ${LLVM_LIB_DIR})
1700 if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIB_DIR)
1702 # if static LLVM libraries were requested, use llvm-config to generate
1703 # the list of what libraries we need, and substitute that in the right
1704 # way for LLVM_LIBRARY.
1705 execute_process(COMMAND ${LLVM_CONFIG} --libfiles
1706 OUTPUT_VARIABLE LLVM_LIBRARY
1707 OUTPUT_STRIP_TRAILING_WHITESPACE)
1708 string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
1711 message(FATAL_ERROR "LLVM not found.")
1716 set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1718 find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1719 find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1720 find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1721 # WARNING! depends on correct order of OSL libs linking
1722 list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
1723 find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1724 find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1726 if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
1729 message(STATUS "OSL not found")
1733 set(EXETYPE MACOSX_BUNDLE)
1735 set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
1736 set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
1737 if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386")
1738 set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
1739 set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
1740 if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
1741 set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
1742 set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
1745 set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
1746 set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
1750 #-----------------------------------------------------------------------------
1754 if(NOT EXISTS "${LIBDIR}/")
1755 message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'")
1759 if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
1760 message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
1764 if(NOT WITH_OPENIMAGEIO)
1765 message(FATAL_ERROR "Cycles reqires WITH_OPENIMAGEIO, the library may not have been found. Configure OIIO or disable WITH_CYCLES")
1768 message(FATAL_ERROR "Cycles reqires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES")
1773 message(FATAL_ERROR "Cycles OSL reqires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL")
1778 if(WITH_INTERNATIONAL)
1780 message(FATAL_ERROR "Internationalization reqires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL")
1784 # See TEST_SSE_SUPPORT() for how this is defined.
1786 if(WITH_RAYOPTIMIZATION)
1787 if(SUPPORT_SSE_BUILD)
1788 set(PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}")
1789 add_definitions(-D__SSE__ -D__MMX__)
1791 if(SUPPORT_SSE2_BUILD)
1792 set(PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}")
1793 add_definitions(-D__SSE2__)
1794 if(NOT SUPPORT_SSE_BUILD) # dont double up
1795 add_definitions(-D__MMX__)
1801 # set the endian define
1803 # for some reason this fails on msvc
1804 add_definitions(-D__LITTLE_ENDIAN__)
1806 # OSX-Note: as we do crosscompiling with specific set architecture,
1807 # endianess-detection and autosetting is counterproductive
1808 # so we just set endianess according CMAKE_OSX_ARCHITECTURES
1810 elseif(CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
1811 add_definitions(-D__LITTLE_ENDIAN__)
1812 elseif(CMAKE_OSX_ARCHITECTURES MATCHES ppc OR CMAKE_OSX_ARCHITECTURES MATCHES ppc64)
1813 add_definitions(-D__BIG_ENDIAN__)
1816 include(TestBigEndian)
1817 test_big_endian(_SYSTEM_BIG_ENDIAN)
1818 if(_SYSTEM_BIG_ENDIAN)
1819 add_definitions(-D__BIG_ENDIAN__)
1821 add_definitions(-D__LITTLE_ENDIAN__)
1823 unset(_SYSTEM_BIG_ENDIAN)
1827 if(WITH_IMAGE_OPENJPEG)
1828 if(WITH_SYSTEM_OPENJPEG)
1831 set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg")
1832 add_definitions(-DOPJ_STATIC)
1836 if(WITH_IMAGE_REDCODE)
1837 set(REDCODE ${CMAKE_SOURCE_DIR}/extern)
1838 set(REDCODE_INC ${REDCODE})
1841 #-----------------------------------------------------------------------------
1845 set(GECKO_DIR "${CMAKE_SOURCE_DIR}/../gecko-sdk/" CACHE PATH "Gecko SDK path")
1846 set(WEBPLUGIN_SANDBOX_MODE "apparmor" CACHE STRING "WEB Plugin sandbox mode, can be apparmor, privsep, none")
1852 #-----------------------------------------------------------------------------
1854 find_package(OpenGL)
1855 blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}")
1856 # unset(OPENGL_LIBRARIES CACHE) # not compat with older cmake
1857 # unset(OPENGL_xmesa_INCLUDE_DIR CACHE) # not compat with older cmake
1859 #-----------------------------------------------------------------------------
1862 find_package(OpenMP)
1864 set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
1865 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
1867 if(APPLE AND ${CMAKE_GENERATOR} MATCHES "Xcode")
1868 set(CMAKE_XCODE_ATTRIBUTE_ENABLE_OPENMP_SUPPORT "YES")
1871 set(WITH_OPENMP OFF)
1880 #-----------------------------------------------------------------------------
1883 if(WITH_SYSTEM_GLEW)
1887 message(FATAL_ERROR "GLEW is required to build blender, install it or disable WITH_SYSTEM_GLEW")
1895 # set(GLEW_LIBRARY "") # unused
1896 set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
1900 #-----------------------------------------------------------------------------
1903 if(WITH_BULLET AND WITH_SYSTEM_BULLET)
1904 find_package(Bullet)
1905 if(NOT BULLET_FOUND)
1906 set(WITH_BULLET OFF)
1909 set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
1910 # set(BULLET_LIBRARIES "")
1913 #-----------------------------------------------------------------------------
1916 if(WITH_PYTHON_MODULE)
1917 add_definitions(-DPy_ENABLE_SHARED)
1920 #-----------------------------------------------------------------------------
1921 # Extra compile flags
1923 if(CMAKE_COMPILER_IS_GNUCC)
1925 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
1926 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_CAST_ALIGN -Wcast-align)
1927 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
1928 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
1929 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
1930 # system headers sometimes do this, disable for now, was: -Werror=strict-prototypes
1931 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
1932 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
1933 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
1934 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
1935 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
1936 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
1937 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_WRITE_STRINGS -Wwrite-strings)
1938 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_LOGICAL_OP -Wlogical-op)
1939 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNDEF -Wundef)
1940 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
1941 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_NULL -Wnonnull) # C only
1942 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
1943 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
1945 # gcc 4.2 gives annoying warnings on every file with this
1946 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
1947 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNINITIALIZED -Wuninitialized)
1950 # versions before gcc4.6 give many BLI_math warnings
1951 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.6")
1952 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_REDUNDANT_DECLS -Wredundant-decls)
1953 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_REDUNDANT_DECLS -Wredundant-decls)
1956 # disable because it gives warnings for printf() & friends.
1957 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_DOUBLE_PROMOTION -Wdouble-promotion -Wno-error=double-promotion)
1960 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
1963 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
1964 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
1965 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
1966 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_LOGICAL_OP -Wlogical-op)
1967 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
1968 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
1969 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
1971 # gcc 4.2 gives annoying warnings on every file with this
1972 if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
1973 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNINITIALIZED -Wuninitialized)
1976 # causes too many warnings
1978 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
1979 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_DECLARATIONS -Wmissing-declarations)
1982 # flags to undo strict flags
1983 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
1984 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
1987 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
1990 elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
1992 # strange, clang complains these are not supported, but then yses them.
1993 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
1994 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
1995 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
1996 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
1997 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
1998 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
1999 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2000 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2001 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2002 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2004 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2005 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2006 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2007 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2008 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.
2009 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2010 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2012 # gives too many unfixable warnings
2013 # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_MACROS -Wunused-macros)
2014 # ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_MACROS -Wunused-macros)
2016 # flags to undo strict flags
2017 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2018 ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2020 elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
2022 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2023 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2024 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2026 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2027 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2028 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2030 # disable numbered, false positives
2031 set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556")
2032 set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556")
2036 # MSVC2010 fails to links C++ libs right
2038 if(WITH_OPENCOLLADA)
2039 message(WARNING "MSVC 2010 does not support OpenCollada, disabling WITH_OPENCOLLADA. To enable support use Use MSVC 2008")
2043 # ensure python header is found since detection can fail, this could happen
2044 # with _any_ library but since we used a fixed python version this tends to
2045 # be most problematic.
2047 if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/Python.h")
2048 message(FATAL_ERROR "Missing: \"${PYTHON_INCLUDE_DIR}/Python.h\",\n"
2049 "Set the cache entry 'PYTHON_INCLUDE_DIR' to point "
2050 "to a valid python include path. Containing "
2051 "Python.h for python version \"${PYTHON_VERSION}\"")
2054 if(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
2056 # -- disabled until we make numpy bundled with blender - campbell
2057 if((NOT ${PYTHON_NUMPY_PATH} STREQUAL "") AND (NOT ${PYTHON_NUMPY_PATH} MATCHES NOTFOUND))
2058 # if(NOT EXISTS "${PYTHON_NUMPY_PATH}/numpy")
2059 # message(WARNING "PYTHON_NUMPY_PATH is invalid, numpy not found in '${PYTHON_NUMPY_PATH}' "
2060 # "WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
2061 # set(WITH_PYTHON_INSTALL_NUMPY OFF)
2063 # not set, so initialize
2065 string(REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}")
2066 list(GET _PY_VER_SPLIT 0 _PY_VER_MAJOR)
2069 unset(PYTHON_NUMPY_PATH CACHE)
2070 find_path(PYTHON_NUMPY_PATH
2074 "${PYTHON_LIBPATH}/python${PYTHON_VERSION}/"
2075 "${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/"
2082 if(NOT EXISTS "${PYTHON_NUMPY_PATH}")
2083 message(WARNING "'numpy' path could not be found in:\n"
2084 "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/numpy', "
2085 "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/numpy', "
2086 "'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/numpy', "
2087 "'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/numpy', "
2088 "WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
2089 set(WITH_PYTHON_INSTALL_NUMPY OFF)
2091 message(STATUS "numpy found at '${PYTHON_NUMPY_PATH}'")
2094 unset(_PY_VER_SPLIT)
2095 unset(_PY_VER_MAJOR)
2100 if(WITH_GCC_MUDFLAP)
2101 set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -fmudflapth -funwind-tables")
2102 set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lpthread -lmudflapth -rdynamic")
2103 ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_MUDFLAP -Wno-error=mudflap)
2104 ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_ERROR_MUDFLAP -Wno-error=mudflap)
2107 # Include warnings first, so its possible to disable them with user defined flags
2108 # eg: -Wno-uninitialized
2109 set(CMAKE_C_FLAGS "${C_WARNINGS} ${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}")
2110 set(CMAKE_CXX_FLAGS "${CXX_WARNINGS} ${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}")
2112 #-------------------------------------------------------------------------------
2115 # better not set includes here but this debugging option is off by default.
2116 if(WITH_CXX_GUARDEDALLOC)
2117 include_directories(${CMAKE_SOURCE_DIR}/intern/guardedalloc)
2118 add_definitions(-DWITH_CXX_GUARDEDALLOC)
2121 if(WITH_ASSERT_ABORT)
2122 add_definitions(-DWITH_ASSERT_ABORT)
2125 # message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
2126 # message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
2128 #-----------------------------------------------------------------------------
2131 add_subdirectory(source)
2132 add_subdirectory(intern)
2133 add_subdirectory(extern)
2136 #-----------------------------------------------------------------------------
2137 # Blender Application
2139 add_subdirectory(source/creator)
2143 #-----------------------------------------------------------------------------
2146 add_subdirectory(source/blenderplayer)
2149 #-----------------------------------------------------------------------------
2150 # CPack for generating packages
2151 include(build_files/cmake/packaging.cmake)
2154 #-----------------------------------------------------------------------------
2155 # Print Final Configuration
2158 set(_config_msg "\n* Blender Configuration *")
2159 macro(info_cfg_option
2161 set(_msg " * ${_setting}")
2162 string(LENGTH "${_msg}" _len)
2163 while("32" GREATER "${_len}")
2164 set(_msg "${_msg} ")
2165 math(EXPR _len "${_len} + 1")
2168 set(_config_msg "${_config_msg}\n${_msg}${${_setting}}")
2173 set(_config_msg "${_config_msg}\n\n ${_text}")
2178 info_cfg_text("Build Options:")
2179 info_cfg_option(WITH_GAMEENGINE)
2180 info_cfg_option(WITH_PLAYER)
2181 info_cfg_option(WITH_BULLET)
2182 info_cfg_option(WITH_IK_SOLVER)
2183 info_cfg_option(WITH_IK_ITASC)
2184 info_cfg_option(WITH_OPENCOLLADA)
2185 info_cfg_option(WITH_FFTW3)
2186 info_cfg_option(WITH_INTERNATIONAL)
2187 info_cfg_option(WITH_INPUT_NDOF)
2188 info_cfg_option(WITH_CYCLES)
2189 info_cfg_option(WITH_OPENCOLORIO)
2191 info_cfg_text("Compiler Options:")
2192 info_cfg_option(WITH_BUILDINFO)
2193 info_cfg_option(WITH_OPENMP)
2194 info_cfg_option(WITH_RAYOPTIMIZATION)
2196 info_cfg_text("System Options:")
2197 info_cfg_option(WITH_INSTALL_PORTABLE)
2198 info_cfg_option(WITH_X11_XF86VMODE)
2199 info_cfg_option(WITH_X11_XINPUT)
2200 info_cfg_option(WITH_MEM_JEMALLOC)
2201 info_cfg_option(WITH_SYSTEM_GLEW)
2202 info_cfg_option(WITH_SYSTEM_OPENJPEG)
2204 info_cfg_text("Image Formats:")
2205 info_cfg_option(WITH_IMAGE_CINEON)
2206 info_cfg_option(WITH_IMAGE_DDS)
2207 info_cfg_option(WITH_IMAGE_HDR)
2208 info_cfg_option(WITH_IMAGE_OPENEXR)
2209 info_cfg_option(WITH_IMAGE_OPENJPEG)
2210 info_cfg_option(WITH_IMAGE_REDCODE)
2211 info_cfg_option(WITH_IMAGE_TIFF)
2213 info_cfg_text("Audio:")
2214 info_cfg_option(WITH_OPENAL)
2215 info_cfg_option(WITH_SDL)
2216 info_cfg_option(WITH_JACK)
2217 info_cfg_option(WITH_JACK_DYNLOAD)
2218 info_cfg_option(WITH_CODEC_AVI)
2219 info_cfg_option(WITH_CODEC_FFMPEG)
2220 info_cfg_option(WITH_CODEC_SNDFILE)
2222 info_cfg_text("Compression:")
2223 info_cfg_option(WITH_LZMA)
2224 info_cfg_option(WITH_LZO)
2226 info_cfg_text("Python:")
2227 info_cfg_option(WITH_PYTHON_INSTALL)
2228 info_cfg_option(WITH_PYTHON_INSTALL_NUMPY)
2229 info_cfg_option(WITH_PYTHON_MODULE)
2230 info_cfg_option(WITH_PYTHON_SAFETY)
2232 info_cfg_option(WITH_PYTHON_FRAMEWORK)
2235 info_cfg_text("Modifiers:")
2236 info_cfg_option(WITH_MOD_BOOLEAN)
2237 info_cfg_option(WITH_MOD_REMESH)
2238 info_cfg_option(WITH_MOD_FLUID)
2239 info_cfg_option(WITH_MOD_OCEANSIM)
2242 message(STATUS "HAVE_STDBOOL_H = ${HAVE_STDBOOL_H}")
2246 message("${_config_msg}")