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_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 sm_35 CACHE STRING "CUDA architectures to build binaries for")
268
mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
269
unset(PLATFORM_DEFAULT)
272
option(WITH_LLVM "Use LLVM" OFF)
273
option(LLVM_STATIC "Link with LLVM static libraries" ON)
274
mark_as_advanced(LLVM_STATIC)
276
# disable for now, but plan to support on all platforms eventually
277
option(WITH_MEM_JEMALLOC "Enable malloc replacement (http://www.canonware.com/jemalloc)" OFF)
278
mark_as_advanced(WITH_MEM_JEMALLOC)
281
option(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking (only enable for development)" OFF)
282
mark_as_advanced(WITH_CXX_GUARDEDALLOC)
284
option(WITH_GUARDEDALLOC "Enable GuardedAlloc (DISABLE AT OWN RISK!)" ON)
285
mark_as_advanced(WITH_GUARDEDALLOC)
287
option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF)
288
mark_as_advanced(WITH_ASSERT_ABORT)
290
option(WITH_BOOST "Enable features depending no boost" ON)
292
if(CMAKE_COMPILER_IS_GNUCC)
293
option(WITH_GCC_MUDFLAP "Enable mudflap" OFF)
294
mark_as_advanced(WITH_GCC_MUDFLAP)
298
cmake_minimum_required(VERSION 2.8.8)
299
cmake_policy(VERSION 2.8.8)
301
if(NOT CMAKE_OSX_ARCHITECTURES)
302
set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING
303
"Choose the architecture you want to build Blender for: i386, x86_64 or ppc"
307
execute_process(COMMAND uname -r OUTPUT_VARIABLE MAC_SYS) # check for actual system-version
308
if(${MAC_SYS} MATCHES 12)
310
elseif(${MAC_SYS} MATCHES 11)
312
elseif(${MAC_SYS} MATCHES 10)
314
elseif(${MAC_SYS} MATCHES 9)
317
set(OSX_SYSTEM unsupported)
319
message(STATUS "Detected system-version: " ${OSX_SYSTEM})
321
if(${CMAKE_GENERATOR} MATCHES "Xcode")
323
##### cmake incompatibility with xcode 4.3 and higher #####
324
if(${XCODE_VERSION} MATCHES '') # cmake fails due looking for xcode in the wrong path, thus will be empty var
325
message(FATAL_ERROR "Xcode 4.3 and higher must be used with cmake 2.8-8 or higher")
327
### end cmake incompatibility with xcode 4.3 and higher ###
329
if(${XCODE_VERSION} VERSION_EQUAL 4 OR ${XCODE_VERSION} VERSION_GREATER 4 AND ${XCODE_VERSION} VERSION_LESS 4.3)
330
# Xcode 4 defaults to the Apple LLVM Compiler.
331
# Override the default compiler selection because Blender only compiles with gcc up to xcode 4.2
332
set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
333
message(STATUS "Setting compiler to: " ${CMAKE_XCODE_ATTRIBUTE_GCC_VERSION})
335
else() # unix makefile generator does not fill XCODE_VERSION var, so we get it with a command
336
execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERS_BUILD_NR)
337
string(SUBSTRING "${XCODE_VERS_BUILD_NR}" 6 3 XCODE_VERSION) # truncate away build-nr
338
unset(XCODE_VERS_BUILD_NR)
341
message(STATUS "Detected Xcode-version: " ${XCODE_VERSION})
343
if(${XCODE_VERSION} VERSION_LESS 4.3)
344
set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk CACHE PATH "" FORCE) # use guaranteed existing sdk
346
# note: i don't use xcode-select path on purpose, cause also /Applications/Xcode.app would be allowed
347
# absolute pathes are more foolproof here !
348
set(OSX_SYSROOT_PREFIX /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform)
349
set(OSX_DEVELOPER_PREFIX /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk) # use guaranteed existing sdk
350
set(CMAKE_OSX_SYSROOT ${OSX_SYSROOT_PREFIX}/${OSX_DEVELOPER_PREFIX} CACHE PATH "" FORCE)
353
if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
354
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.5" CACHE STRING "" FORCE) # 10.5 is our min. target, if you use higher sdk, weak linking happens
357
if(NOT ${CMAKE_GENERATOR} MATCHES "Xcode")
358
# force CMAKE_OSX_DEPLOYMENT_TARGET for makefiles, will not work else ( cmake bug ? )
359
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
360
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
361
add_definitions("-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
364
option(WITH_COCOA "Use Cocoa framework instead of deprecated Carbon" ON)
365
option(USE_QTKIT "Use QtKit instead of Carbon quicktime (needed for having partial quicktime for 64bit)" OFF)
366
option(WITH_LIBS10.5 "Use 10.5 libs (needed for 64bit builds)" OFF)
367
if(CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
368
set(USE_QTKIT ON CACHE BOOL "ON" FORCE) # no Quicktime in 64bit
373
#-----------------------------------------------------------------------------
374
# Check for conflicting/unsupported configurations
376
if(NOT WITH_BLENDER AND NOT WITH_PLAYER AND NOT WITH_CYCLES_TEST)
377
message(FATAL_ERROR "At least one of WITH_BLENDER or WITH_PLAYER must be enabled, nothing to do!")
380
if(NOT WITH_GAMEENGINE AND WITH_PLAYER)
381
message(FATAL_ERROR "WITH_PLAYER requires WITH_GAMEENGINE")
384
if(NOT WITH_AUDASPACE)
386
message(FATAL_ERROR "WITH_OPENAL requires WITH_AUDASPACE")
389
message(FATAL_ERROR "WITH_JACK requires WITH_AUDASPACE")
392
message(FATAL_ERROR "WITH_GAMEENGINE requires WITH_AUDASPACE")
396
if(NOT WITH_SDL AND WITH_GHOST_SDL)
397
message(FATAL_ERROR "WITH_GHOST_SDL requires WITH_SDL")
400
if(WITH_IMAGE_REDCODE AND ((NOT WITH_IMAGE_OPENJPEG) OR (NOT WITH_CODEC_FFMPEG)))
401
message(FATAL_ERROR "WITH_IMAGE_REDCODE requires WITH_IMAGE_OPENJPEG and WITH_CODEC_FFMPEG")
404
# python module, needs some different options
405
if(WITH_PYTHON_MODULE AND WITH_PLAYER)
406
message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PLAYER to be OFF")
409
if(WITH_PYTHON_MODULE AND WITH_PYTHON_INSTALL)
410
message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PYTHON_INSTALL to be OFF")
414
# may as well build python module without a UI
415
if(WITH_PYTHON_MODULE)
416
set(WITH_HEADLESS ON)
419
# enable boost for cycles, booleans, audaspace or i18n
420
# otherwise if the user disabled
422
# Explicitly disabled. so disable all deps.
426
message(STATUS "'WITH_BOOST' is disabled: forceing 'set(${_setting} ${_val})'")
428
set(${_setting} ${_val})
431
set_and_warn(WITH_CYCLES OFF)
432
set_and_warn(WITH_MOD_BOOLEAN OFF)
433
set_and_warn(WITH_AUDASPACE OFF)
434
set_and_warn(WITH_INTERNATIONAL OFF)
436
set_and_warn(WITH_OPENAL OFF) # depends on AUDASPACE
437
set_and_warn(WITH_GAMEENGINE OFF) # depends on AUDASPACE
438
elseif(WITH_CYCLES OR WITH_MOD_BOOLEAN OR WITH_AUDASPACE OR WITH_INTERNATIONAL)
441
# Enabled but we don't need it
445
# auto enable openimageio for cycles
447
set(WITH_OPENIMAGEIO ON)
450
# auto enable openimageio linking dependencies
452
set(WITH_IMAGE_OPENEXR ON)
453
set(WITH_IMAGE_TIFF ON)
456
# auto enable llvm for cycles_osl
458
set(WITH_LLVM ON CACHE BOOL "ON" FORCE)
461
# don't store paths to libs for portable distribution
462
if(WITH_INSTALL_PORTABLE)
463
set(CMAKE_SKIP_BUILD_RPATH TRUE)
466
if(WITH_GHOST_SDL OR WITH_HEADLESS)
467
set(WITH_GHOST_XDND OFF)
468
set(WITH_X11_XF86VMODE OFF)
469
set(WITH_X11_XINPUT OFF)
473
if(WITH_CODEC_QUICKTIME)
474
message(FATAL_ERROR "MINGW requires WITH_CODEC_QUICKTIME to be OFF "
475
"because it is currently unsupported, remove this "
476
"line if youre a developer who wants to add support.")
480
TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
482
TEST_STDBOOL_SUPPORT()
484
add_definitions(-DHAVE_STDBOOL_H)
487
add_definitions(-DWITH_BOOL_COMPAT)
490
#-----------------------------------------------------------------------------
491
# Check for valid directories
492
# ... svn extern paths can be missing because of svn-git.
494
if(WITH_INTERNATIONAL)
495
if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/datafiles/locale")
496
message(WARNING "Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
497
"This is an 'svn external', which are known not to work with bridges to other version "
498
"control systems, disabling 'WITH_INTERNATIONAL'.")
499
set(WITH_INTERNATIONAL OFF)
504
if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/scripts/addons")
505
message(WARNING "Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
506
"This is an 'svn external', which are known not to work with bridges to other version "
507
"control systems: * CONTINUING WITHOUT ADDONS *")
511
#-----------------------------------------------------------------------------
512
# Initialize un-cached vars, avoid unused warning
514
# linux only, not cached
515
set(WITH_BINRELOC OFF)
517
# MAXOSX only, set to avoid uninitialized
523
# these are added to later on.
527
# for gcc -Wno-blah-blah
528
set(CC_REMOVE_STRICT_FLAGS)
530
# libraries to link the binary with passed to target_link_libraries()
531
# known as LLIBS to scons
532
set(PLATFORM_LINKLIBS "")
534
# Added to linker flags in setup_liblinks
535
# - CMAKE_EXE_LINKER_FLAGS
536
# - CMAKE_EXE_LINKER_FLAGS_DEBUG
537
set(PLATFORM_LINKFLAGS "")
538
set(PLATFORM_LINKFLAGS_DEBUG "")
541
# disabled for now, not supported
542
# option(WITH_WEBPLUGIN "Enable Web Plugin (Unix only)" OFF)
544
# For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
547
# -D PYTHON_VERSION=3.3 \
548
# -D PYTHON_INCLUDE_DIR=/opt/py33/include/python3.3d \
549
# -D PYTHON_LIBRARY=/opt/py33/lib/libpython3.3d.so
553
# -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.3/include/python3.3 \
554
# -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/config \
557
# When changing any of this remember to update the notes in doc/build_systems/cmake.txt
559
#-----------------------------------------------------------------------------
562
if(UNIX AND NOT APPLE)
563
macro(find_package_wrapper)
564
string(TOUPPER ${ARGV0} _NAME_UPPER)
566
set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES})
567
set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
569
find_package(${ARGV})
571
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back})
572
unset(_cmake_find_library_suffixes_back)
576
find_package_wrapper(JPEG REQUIRED)
577
find_package_wrapper(PNG REQUIRED)
578
find_package_wrapper(ZLIB REQUIRED)
579
find_package_wrapper(Freetype REQUIRED)
582
# No way to set py33. remove for now.
583
# find_package(PythonLibs)
585
# Use our own instead, since wothout py is such a rare case,
586
# require this package
587
# XXX Linking errors with debian static python :/
588
# find_package_wrapper(PythonLibsUnix REQUIRED)
589
find_package(PythonLibsUnix REQUIRED)
592
if(WITH_IMAGE_OPENEXR)
593
find_package_wrapper(OpenEXR) # our own module
594
if(NOT OPENEXR_FOUND)
595
set(WITH_IMAGE_OPENEXR OFF)
599
if(WITH_IMAGE_OPENJPEG)
600
find_package_wrapper(OpenJPEG)
601
if(NOT OPENJPEG_FOUND)
602
set(WITH_IMAGE_OPENJPEG OFF)
607
# XXX Linking errors with debian static tiff :/
608
# find_package_wrapper(TIFF)
611
set(WITH_IMAGE_TIFF OFF)
617
find_package_wrapper(OpenAL)
624
find_package_wrapper(SDL)
631
# unset(SDLMAIN_LIBRARY CACHE)
638
find_package_wrapper(Jack)
645
find_package(Fontconfig)
646
if(NOT FONTCONFIG_FOUND)
647
set(WITH_FONTCONFIG OFF)
652
if(WITH_CODEC_SNDFILE)
653
find_package_wrapper(SndFile)
654
if(NOT SNDFILE_FOUND)
655
set(WITH_CODEC_SNDFILE OFF)
659
if(WITH_CODEC_FFMPEG)
660
set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
661
set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
663
mark_as_advanced(FFMPEG)
665
# lame, but until we have proper find module for ffmpeg
666
set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
667
if(EXISTS "${FFMPEG}/include/ffmpeg/")
668
list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg")
672
mark_as_advanced(FFMPEG_LIBRARIES)
673
set(FFMPEG_LIBPATH ${FFMPEG}/lib)
674
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
678
find_package_wrapper(Fftw3)
685
find_package_wrapper(OpenCOLLADA)
686
if(OPENCOLLADA_FOUND)
687
find_package_wrapper(XML2)
688
find_package_wrapper(PCRE)
690
set(WITH_OPENCOLLADA OFF)
694
if(WITH_MEM_JEMALLOC)
695
find_package_wrapper(JeMalloc)
696
if(NOT JEMALLOC_FOUND)
697
set(WITH_MEM_JEMALLOC OFF)
702
find_package_wrapper(Spacenav)
703
if(NOT SPACENAV_FOUND)
704
set(WITH_INPUT_NDOF OFF)
707
# use generic names within blenders buildsystem.
709
set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
710
set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
715
# uses in build instructions to override include and library variables
718
set(Boost_USE_STATIC_LIBS ON)
720
set(Boost_USE_MULTITHREADED ON)
721
set(__boost_packages filesystem regex system thread date_time)
722
if(WITH_INTERNATIONAL)
723
list(APPEND __boost_packages locale)
725
find_package(Boost 1.48 COMPONENTS ${__boost_packages})
726
unset(__boost_packages)
727
if(Boost_USE_STATIC_LIBS AND WITH_BOOST_ICU)
728
find_package(IcuLinux)
730
mark_as_advanced(Boost_DIR) # why doesnt boost do this?
733
set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
734
set(BOOST_LIBRARIES ${Boost_LIBRARIES})
735
set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
736
set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
740
find_package_wrapper(OpenImageIO)
742
set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES})
743
set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
744
set(OPENIMAGEIO_DEFINITIONS "")
747
list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}")
749
if(WITH_IMAGE_OPENEXR)
750
list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}")
753
if(NOT OPENIMAGEIO_FOUND)
754
set(WITH_OPENIMAGEIO OFF)
755
message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
760
find_package_wrapper(OpenColorIO)
762
set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES})
763
set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
764
set(OPENCOLORIO_DEFINITIONS)
766
if(NOT OPENCOLORIO_FOUND)
767
set(WITH_OPENCOLORIO OFF)
768
message(STATUS "OpenColorIO not found")
772
# XXX Maybe most of this section should go into an llvm module?
774
# Set llvm version if not specified
776
set(LLVM_VERSION "3.0")
780
FIND_PROGRAM(LLVM_CONFIG llvm-config-${LLVM_VERSION} HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
782
FIND_PROGRAM(LLVM_CONFIG llvm-config HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
785
FIND_PROGRAM(LLVM_CONFIG llvm-config-${LLVM_VERSION})
787
FIND_PROGRAM(LLVM_CONFIG llvm-config)
790
execute_process(COMMAND ${LLVM_CONFIG} --version
791
OUTPUT_VARIABLE LLVM_VERSION
792
OUTPUT_STRIP_TRAILING_WHITESPACE)
793
execute_process(COMMAND ${LLVM_CONFIG} --prefix
794
OUTPUT_VARIABLE LLVM_DIRECTORY
795
OUTPUT_STRIP_TRAILING_WHITESPACE)
796
execute_process(COMMAND ${LLVM_CONFIG} --libdir
797
OUTPUT_VARIABLE LLVM_LIB_DIR
798
OUTPUT_STRIP_TRAILING_WHITESPACE)
801
find_library(LLVM_LIBRARY
802
NAMES LLVMAnalysis # first of a whole bunch of libs to get
803
PATHS ${LLVM_LIB_DIR})
805
find_library(LLVM_LIBRARY
806
NAMES LLVM-${LLVM_VERSION}
807
PATHS ${LLVM_LIB_DIR})
810
message(STATUS "LLVM version = ${LLVM_VERSION}")
811
message(STATUS "LLVM dir = ${LLVM_DIRECTORY}")
812
message(STATUS "LLVM lib dir = ${LLVM_LIB_DIR}")
813
set(LLVM_VERSION ${LLVM_VERSION} CACHE STRING "Version of LLVM to use")
814
set(LLVM_DIRECTORY ${LLVM_DIRECTORY} CACHE PATH "Path to the LLVM installation")
816
if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIB_DIR)
818
# if static LLVM libraries were requested, use llvm-config to generate
819
# the list of what libraries we need, and substitute that in the right
820
# way for LLVM_LIBRARY.
821
execute_process(COMMAND ${LLVM_CONFIG} --libfiles
822
OUTPUT_VARIABLE LLVM_LIBRARY
823
OUTPUT_STRIP_TRAILING_WHITESPACE)
824
string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
827
message(FATAL_ERROR "LLVM not found.")
830
# Fix for conflict with Mesa llvmpipe
831
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/source/creator/blender.map")
835
set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
837
message(STATUS "CYCLES_OSL = ${CYCLES_OSL}")
839
find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
840
find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
841
find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
842
# Note: --whole-archive is needed to force loading of all symbols in liboslexec,
843
# otherwise LLVM is missing the osl_allocate_closure_component function
844
list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -Wl,--whole-archive ${OSL_LIB_EXEC} -Wl,--no-whole-archive ${OSL_LIB_QUERY})
845
find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
846
find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
848
if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
850
message(STATUS "OSL includes = ${OSL_INCLUDES}")
851
message(STATUS "OSL library = ${OSL_LIBRARIES}")
852
message(STATUS "OSL compiler = ${OSL_COMPILER}")
854
message(STATUS "OSL not found")
858
# OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
859
set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread -lstdc++")
861
if((NOT WITH_HEADLESS) AND (NOT WITH_GHOST_SDL))
862
find_package(X11 REQUIRED)
863
find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
864
mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
866
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_X11_LIB}")
870
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xinput_LIB}")
872
set(WITH_X11_XINPUT OFF)
876
if(WITH_X11_XF86VMODE)
877
# XXX, why dont cmake make this available?
878
FIND_LIBRARY(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
879
mark_as_advanced(X11_Xxf86vmode_LIB)
880
if(X11_Xxf86vmode_LIB)
881
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xxf86vmode_LIB}")
883
set(WITH_X11_XF86VMODE OFF)
888
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
889
if(NOT WITH_PYTHON_MODULE)
890
# BSD's dont use libdl.so
891
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -ldl")
892
# binreloc is linux only
893
set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include)
894
set(WITH_BINRELOC ON)
898
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -pthread")
900
# lfs on glibc, all compilers should use
901
add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
904
if(CMAKE_COMPILER_IS_GNUCC)
905
set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
906
# CLang is the same as GCC for now.
907
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
908
set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
910
elseif(CMAKE_CXX_COMPILER_ID MATCHES "SunPro")
911
set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
914
elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
915
# think these next two are broken
916
find_program(XIAR xiar)
918
set(CMAKE_AR "${XIAR}")
920
mark_as_advanced(XIAR)
922
find_program(XILD xild)
924
set(CMAKE_LINKER "${XILD}")
926
mark_as_advanced(XILD)
928
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
929
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
931
# set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
932
set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
933
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
938
# this file is included anyway when building under Windows with cl.exe
939
# include(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)
941
if(CMAKE_COMPILER_IS_GNUCC)
942
include(CheckCSourceCompiles)
943
# Setup 64bit and 64bit windows systems
944
CHECK_C_SOURCE_COMPILES("
948
int main(void) { return 0; }
953
message(STATUS "Compiling for 64 bit with MinGW-w64.")
954
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
956
message(STATUS "Compiling for 32 bit with MinGW-w32.")
957
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
959
if(WITH_RAYOPTIMIZATION)
960
message(WARNING "MinGW-w32 is known to be unstable with 'WITH_RAYOPTIMIZATION' option enabled.")
964
# Setup 64bit and 64bit windows systems
966
message(STATUS "64 bit compiler detected.")
968
message(STATUS "Visual C++ 2012 detected.")
969
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64_vc11)
971
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64)
974
# Setup 32bit windows systems
976
message(STATUS "Visual C++ 2012 detected.")
977
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows_vc11)
979
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
984
add_definitions(-DWIN32)
986
set(JPEG "${LIBDIR}/jpeg")
987
set(JPEG_INCLUDE_DIR "${JPEG}/include")
988
set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
990
set(WINTAB_INC ${LIBDIR}/wintab/include)
993
set(OPENAL ${LIBDIR}/openal)
994
set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
996
set(OPENAL_LIBRARY openal32)
998
set(OPENAL_LIBRARY wrap_oal)
1000
set(OPENAL_LIBPATH ${OPENAL}/lib)
1003
if(WITH_CODEC_SNDFILE)
1004
set(SNDFILE ${LIBDIR}/sndfile)
1005
set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1006
set(SNDFILE_LIBRARIES libsndfile-1)
1007
set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
1011
set(SDL ${LIBDIR}/sdl)
1012
set(SDL_INCLUDE_DIR ${SDL}/include)
1013
set(SDL_LIBRARY SDL)
1014
set(SDL_LIBPATH ${SDL}/lib)
1017
if(WITH_CODEC_QUICKTIME)
1018
set(QUICKTIME ${LIBDIR}/QTDevWin)
1019
set(QUICKTIME_INCLUDE_DIRS ${QUICKTIME}/CIncludes)
1020
set(QUICKTIME_LIBRARIES qtmlClient)
1021
set(QUICKTIME_LIBPATH ${QUICKTIME}/Libraries)
1024
if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
1025
add_definitions(-D__SSE__ -D__MMX__)
1029
set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1031
find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1032
find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1033
find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1034
list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
1035
find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1036
find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1038
if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
1041
message(STATUS "OSL not found")
1046
set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi)
1048
# MSVC11 SDL is not hard linked to dxguid.lib
1049
if(MSVC11 AND WITH_SDL)
1050
set(PLATFORM_LINKLIBS ${PLATFORM_LINKLIBS} dxguid)
1053
add_definitions(/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_CONSOLE /D_LIB)
1055
# MSVC11 needs _ALLOW_KEYWORD_MACROS to build
1057
add_definitions(/D_ALLOW_KEYWORD_MACROS)
1060
set(CMAKE_CXX_FLAGS "/nologo /J /Gd /EHsc" CACHE STRING "MSVC MT C++ flags " FORCE)
1061
set(CMAKE_C_FLAGS "/nologo /J /Gd" CACHE STRING "MSVC MT C++ flags " FORCE)
1064
set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
1066
set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
1068
set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE)
1069
set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE)
1070
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE)
1072
set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
1074
set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
1076
set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE)
1077
set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE)
1078
set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE)
1080
# most msvc warnings are C & C++
1081
set(_WARNINGS "/W3 /wd4018 /wd4244 /wd4305 /wd4800 /wd4181 /wd4065 /wd4267 /we4013 /wd4200")
1082
set(C_WARNINGS "${_WARNINGS}")
1083
set(CXX_WARNINGS "${_WARNINGS}")
1086
if(WITH_MOD_CLOTH_ELTOPO)
1087
set(LAPACK ${LIBDIR}/lapack)
1088
# set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
1089
set(LAPACK_LIBPATH ${LAPACK}/lib)
1090
set(LAPACK_LIBRARIES
1091
${LIBDIR}/lapack/lib/libf2c.lib
1092
${LIBDIR}/lapack/lib/clapack_nowrap.lib
1093
${LIBDIR}/lapack/lib/BLAS_nowrap.lib
1097
set(PNG_LIBRARIES libpng)
1098
set(JPEG_LIBRARIES libjpeg)
1100
set(PNG "${LIBDIR}/png")
1101
set(PNG_INCLUDE_DIR "${PNG}/include")
1102
set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1104
set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
1105
set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz_st.lib)
1107
set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
1108
set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
1110
set(FREETYPE ${LIBDIR}/freetype)
1111
set(FREETYPE_INCLUDE_DIRS
1112
${LIBDIR}/freetype/include
1113
${LIBDIR}/freetype/include/freetype2
1115
set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
1118
set(FFTW3 ${LIBDIR}/fftw3)
1119
set(FFTW3_LIBRARIES libfftw)
1120
set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1121
set(FFTW3_LIBPATH ${FFTW3}/lib)
1124
if(WITH_OPENCOLLADA)
1125
set(OPENCOLLADA ${LIBDIR}/opencollada)
1127
set(OPENCOLLADA_INCLUDE_DIRS
1128
${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1129
${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1130
${OPENCOLLADA}/include/opencollada/COLLADAFramework
1131
${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1132
${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1135
set(OPENCOLLADA_LIBRARIES
1136
${OPENCOLLADA}/lib/opencollada/OpenCOLLADASaxFrameworkLoader.lib
1137
${OPENCOLLADA}/lib/opencollada/OpenCOLLADAFramework.lib
1138
${OPENCOLLADA}/lib/opencollada/OpenCOLLADABaseUtils.lib
1139
${OPENCOLLADA}/lib/opencollada/OpenCOLLADAStreamWriter.lib
1140
${OPENCOLLADA}/lib/opencollada/MathMLSolver.lib
1141
${OPENCOLLADA}/lib/opencollada/GeneratedSaxParser.lib
1142
${OPENCOLLADA}/lib/opencollada/xml.lib
1143
${OPENCOLLADA}/lib/opencollada/buffer.lib
1144
${OPENCOLLADA}/lib/opencollada/ftoa.lib
1145
${OPENCOLLADA}/lib/opencollada/UTF.lib
1148
${OPENCOLLADA}/lib/opencollada/pcre.lib
1152
if(WITH_CODEC_FFMPEG)
1153
set(FFMPEG_INCLUDE_DIRS
1154
${LIBDIR}/ffmpeg/include
1155
${LIBDIR}/ffmpeg/include/msvc
1157
# MSVC11 FFMPEG libs are newer
1159
set(FFMPEG_LIBRARIES
1160
${LIBDIR}/ffmpeg/lib/avcodec-54.lib
1161
${LIBDIR}/ffmpeg/lib/avformat-54.lib
1162
${LIBDIR}/ffmpeg/lib/avdevice-54.lib
1163
${LIBDIR}/ffmpeg/lib/avutil-52.lib
1164
${LIBDIR}/ffmpeg/lib/swscale-2.lib
1167
set(FFMPEG_LIBRARIES
1168
${LIBDIR}/ffmpeg/lib/avcodec-53.lib
1169
${LIBDIR}/ffmpeg/lib/avformat-53.lib
1170
${LIBDIR}/ffmpeg/lib/avdevice-53.lib
1171
${LIBDIR}/ffmpeg/lib/avutil-51.lib
1172
${LIBDIR}/ffmpeg/lib/swscale-2.lib
1177
if(WITH_IMAGE_OPENEXR)
1178
set(OPENEXR ${LIBDIR}/openexr)
1179
set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1180
set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1181
set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1182
set(OPENEXR_LIBRARIES
1183
${OPENEXR_LIBPATH}/Iex.lib
1184
${OPENEXR_LIBPATH}/Half.lib
1185
${OPENEXR_LIBPATH}/IlmImf.lib
1186
${OPENEXR_LIBPATH}/Imath.lib
1187
${OPENEXR_LIBPATH}/IlmThread.lib
1192
set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
1193
set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
1197
set(JACK_INCLUDE_DIRS
1198
${LIBDIR}/jack/include/jack
1199
${LIBDIR}/jack/include
1201
set(JACK_LIBRARIES ${LIBDIR}/jack/lib/libjack.lib)
1205
set(PYTHON_VERSION 3.3) # CACHE STRING)
1207
string(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1208
# Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs
1209
set(PYTHON_LIBRARY ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.lib)
1210
unset(_PYTHON_VERSION_NO_DOTS)
1212
# Shared includes for both vc2008 and vc2010
1213
set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION})
1216
set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1217
set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1221
set(BOOST ${LIBDIR}/boost)
1222
set(BOOST_INCLUDE_DIR ${BOOST}/include)
1224
set(BOOST_LIBPATH ${BOOST}/lib)
1225
set(BOOST_POSTFIX "vc110-mt-s-1_53.lib")
1226
set(BOOST_DEBUG_POSTFIX "vc110-mt-sgd-1_53.lib")
1228
set(BOOST_LIBPATH ${BOOST}/lib)
1229
set(BOOST_POSTFIX "vc90-mt-s-1_49.lib")
1230
set(BOOST_DEBUG_POSTFIX "vc90-mt-sgd-1_49.lib")
1233
optimized libboost_date_time-${BOOST_POSTFIX} optimized libboost_filesystem-${BOOST_POSTFIX}
1234
optimized libboost_regex-${BOOST_POSTFIX}
1235
optimized libboost_system-${BOOST_POSTFIX} optimized libboost_thread-${BOOST_POSTFIX}
1236
debug libboost_date_time-${BOOST_DEBUG_POSTFIX} debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
1237
debug libboost_regex-${BOOST_DEBUG_POSTFIX}
1238
debug libboost_system-${BOOST_DEBUG_POSTFIX} debug libboost_thread-${BOOST_DEBUG_POSTFIX})
1240
set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1241
optimized libboost_wave-${BOOST_POSTFIX}
1242
debug libboost_wave-${BOOST_DEBUG_POSTFIX})
1244
if(WITH_INTERNATIONAL)
1245
set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1246
optimized libboost_locale-${BOOST_POSTFIX}
1247
debug libboost_locale-${BOOST_DEBUG_POSTFIX})
1249
set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1252
if(WITH_OPENIMAGEIO)
1253
set(OPENIMAGEIO ${LIBDIR}/openimageio)
1254
set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1255
set(OPENIMAGEIO_LIBRARIES optimized OpenImageIO debug OpenImageIO_d)
1256
set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1257
set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0")
1261
set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1262
file(GLOB LLVM_LIBRARY ${LLVM_DIRECTORY}/lib/*.lib)
1265
if(WITH_OPENCOLORIO)
1266
set(OPENCOLORIO ${LIBDIR}/opencolorio)
1267
set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1268
set(OPENCOLORIO_LIBRARIES OpenColorIO)
1269
set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
1270
set(OPENCOLORIO_DEFINITIONS)
1273
set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
1275
# MSVC only, Mingw doesnt need
1277
set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
1279
set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
1282
set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
1284
# used in many places so include globally, like OpenGL
1285
blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
1287
elseif(CMAKE_COMPILER_IS_GNUCC)
1288
# keep GCC specific stuff here
1289
set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi")
1290
set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
1293
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
1294
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread")
1296
add_definitions(-DFREE_WINDOWS64 -DMS_WIN64)
1297
# Turn off OpenMP since it causes crashes on render for subsurfed/multiresolution meshes
1298
set(WITH_OPENMP OFF)
1301
add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1303
add_definitions(-DFREE_WINDOWS)
1305
set(PNG "${LIBDIR}/png")
1306
set(PNG_INCLUDE_DIR "${PNG}/include")
1307
set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1310
set(JPEG_LIBRARIES jpeg)
1312
set(JPEG_LIBRARIES libjpeg)
1314
set(PNG_LIBRARIES png)
1316
set(ZLIB ${LIBDIR}/zlib)
1317
set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
1318
set(ZLIB_LIBPATH ${ZLIB}/lib)
1319
set(ZLIB_LIBRARIES z)
1321
# comes with own pthread library
1322
if(NOT WITH_MINGW64)
1323
set(PTHREADS ${LIBDIR}/pthreads)
1324
#set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
1325
set(PTHREADS_LIBPATH ${PTHREADS}/lib)
1326
set(PTHREADS_LIBRARIES pthreadGC2)
1329
set(FREETYPE ${LIBDIR}/freetype)
1330
set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1331
set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1332
set(FREETYPE_LIBRARY freetype)
1335
set(FFTW3 ${LIBDIR}/fftw3)
1336
set(FFTW3_LIBRARIES fftw3)
1337
set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1338
set(FFTW3_LIBPATH ${FFTW3}/lib)
1341
if(WITH_OPENCOLLADA)
1342
set(OPENCOLLADA ${LIBDIR}/opencollada)
1343
set(OPENCOLLADA_INCLUDE_DIRS
1344
${OPENCOLLADA}/include/opencollada/COLLADAStreamWriter
1345
${OPENCOLLADA}/include/opencollada/COLLADABaseUtils
1346
${OPENCOLLADA}/include/opencollada/COLLADAFramework
1347
${OPENCOLLADA}/include/opencollada/COLLADASaxFrameworkLoader
1348
${OPENCOLLADA}/include/opencollada/GeneratedSaxParser
1350
set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib/opencollada)
1351
set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver buffer ftoa xml)
1352
set(PCRE_LIBRARIES pcre)
1355
if(WITH_CODEC_FFMPEG)
1356
set(FFMPEG ${LIBDIR}/ffmpeg)
1357
set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1359
set(FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll)
1361
set(FFMPEG_LIBRARIES avcodec-53 avformat-53 avdevice-53 avutil-51 swscale-2)
1363
set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1366
if(WITH_IMAGE_OPENEXR)
1367
set(OPENEXR ${LIBDIR}/openexr)
1368
set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1369
set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1370
set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex)
1371
set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1375
set(TIFF ${LIBDIR}/tiff)
1376
set(TIFF_LIBRARY tiff)
1377
set(TIFF_INCLUDE_DIR ${TIFF}/include)
1378
set(TIFF_LIBPATH ${TIFF}/lib)
1382
set(JACK ${LIBDIR}/jack)
1383
set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include)
1384
set(JACK_LIBRARIES jack)
1385
set(JACK_LIBPATH ${JACK}/lib)
1387
# TODO, gives linking errors, force off
1392
# normally cached but not since we include them with blender
1393
set(PYTHON_VERSION 3.3) # CACHE STRING)
1394
set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}") # CACHE PATH)
1395
set(PYTHON_LIBRARY "${LIBDIR}/python/lib/python33mw.lib") # CACHE FILEPATH)
1398
set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1399
set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1403
set(BOOST ${LIBDIR}/boost)
1404
set(BOOST_INCLUDE_DIR ${BOOST}/include)
1406
set(BOOST_POSTFIX "mgw47-mt-s-1_49")
1407
set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
1409
set(BOOST_POSTFIX "mgw46-mt-s-1_49")
1410
set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49")
1413
optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX}
1414
boost_regex-${BOOST_POSTFIX}
1415
boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX}
1416
debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
1417
boost_regex-${BOOST_DEBUG_POSTFIX}
1418
boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
1419
if(WITH_INTERNATIONAL)
1420
set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1421
optimized boost_locale-${BOOST_POSTFIX}
1422
debug boost_locale-${BOOST_DEBUG_POSTFIX})
1425
set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1426
optimized boost_wave-${BOOST_POSTFIX}
1427
debug boost_wave-${BOOST_DEBUG_POSTFIX})
1429
set(BOOST_LIBPATH ${BOOST}/lib)
1430
set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
1433
if(WITH_OPENIMAGEIO)
1434
set(OPENIMAGEIO ${LIBDIR}/openimageio)
1435
set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1436
set(OPENIMAGEIO_LIBRARIES OpenImageIO)
1437
set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1438
set(OPENIMAGEIO_DEFINITIONS "")
1442
set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1443
set(LLVM_LIB_DIR ${LLVM_DIRECTORY}/lib)
1444
# Explicitly set llvm lib order.
1445
#---- WARNING ON GCC ORDER OF LIBS IS IMPORTANT, DO NOT CHANGE! ---------
1446
set(LLVM_LIBRARY LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMAnalysis LLVMArchive
1447
LLVMAsmParser LLVMAsmPrinter
1448
LLVMBitReader LLVMBitWriter
1449
LLVMDebugInfo LLVMExecutionEngine
1450
LLVMInstCombine LLVMInstrumentation
1451
LLVMInterpreter LLVMJIT
1453
LLVMMCDisassembler LLVMMCJIT
1454
LLVMMCParser LLVMObject
1457
LLVMTableGen LLVMTarget
1458
LLVMTransformUtils LLVMVectorize
1459
LLVMX86AsmParser LLVMX86AsmPrinter
1460
LLVMX86CodeGen LLVMX86Desc
1461
LLVMX86Disassembler LLVMX86Info
1462
LLVMX86Utils LLVMipa
1464
# imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
1465
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -limagehlp")
1468
if(WITH_OPENCOLORIO)
1469
set(OPENCOLORIO ${LIBDIR}/opencolorio)
1470
set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1471
set(OPENCOLORIO_LIBRARIES OpenColorIO)
1472
set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1473
set(OPENCOLORIO_DEFINITIONS)
1476
set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
1478
## DISABLE - causes linking errors
1479
## for re-distribution, so users dont need mingw installed
1480
# set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
1486
if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5")
1487
set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/10.7
1491
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
1493
if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1494
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
1496
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
1502
find_package(OpenAL)
1505
set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
1507
set(WITH_OPENAL OFF)
1512
find_library(JACK_FRAMEWORK
1515
set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
1516
if(NOT JACK_FRAMEWORK)
1521
if(WITH_CODEC_SNDFILE)
1522
set(SNDFILE ${LIBDIR}/sndfile)
1523
set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1524
set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
1525
set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) # TODO, deprecate
1529
# we use precompiled libraries for py 3.3 and up by default
1530
set(PYTHON_VERSION 3.3)
1531
if(NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK)
1532
# normally cached but not since we include them with blender
1533
set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
1534
# set(PYTHON_BINARY "${LIBDIR}/python/bin/python${PYTHON_VERSION}") # not used yet
1535
set(PYTHON_LIBRARY python${PYTHON_VERSION}m)
1536
set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
1537
# set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
1539
# module must be compiled against Python framework
1540
set(PYTHON_INCLUDE_DIR "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}m")
1541
set(PYTHON_BINARY "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}")
1542
#set(PYTHON_LIBRARY python${PYTHON_VERSION})
1543
set(PYTHON_LIBPATH "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m")
1544
#set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled
1548
set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1549
set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1553
set(FFTW3 ${LIBDIR}/fftw3)
1554
set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1555
set(FFTW3_LIBRARIES fftw3)
1556
set(FFTW3_LIBPATH ${FFTW3}/lib)
1559
set(PNG_LIBRARIES png)
1560
set(JPEG_LIBRARIES jpeg)
1563
set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
1564
set(ZLIB_LIBRARIES z bz2)
1566
set(FREETYPE ${LIBDIR}/freetype)
1567
set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1568
set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1569
set(FREETYPE_LIBRARY freetype)
1571
if(WITH_IMAGE_OPENEXR)
1572
set(OPENEXR ${LIBDIR}/openexr)
1573
set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1574
set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1575
set(OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread)
1576
set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1579
if(WITH_CODEC_FFMPEG)
1580
set(FFMPEG ${LIBDIR}/ffmpeg)
1581
set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1582
set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
1583
set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1584
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
1587
find_library(SYSTEMSTUBS_LIBRARY
1592
mark_as_advanced(SYSTEMSTUBS_LIBRARY)
1593
if(SYSTEMSTUBS_LIBRARY)
1594
set(PLATFORM_LINKLIBS stdc++ SystemStubs)
1596
set(PLATFORM_LINKLIBS stdc++)
1600
set(PLATFORM_CFLAGS "-pipe -funsigned-char -DGHOST_COCOA")
1601
set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
1603
set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT")
1604
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
1605
if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1606
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
1607
# libSDL still needs 32bit carbon quicktime
1609
elseif(WITH_CODEC_QUICKTIME)
1610
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
1613
# XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
1614
# ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
1616
# This thread it *should* work and check the framework - campbell
1617
# http://www.cmake.org/pipermail/cmake/2005-December/007740.html
1618
find_library(3DCONNEXION_CLIENT_FRAMEWORK
1619
NAMES 3DconnexionClient
1621
if(NOT 3DCONNEXION_CLIENT_FRAMEWORK)
1622
set(WITH_INPUT_NDOF OFF)
1626
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework 3DconnexionClient")
1627
set(NDOF_INCLUDE_DIRS /Library/Frameworks/3DconnexionClient.framework/Headers )
1632
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -weak_framework jackmp")
1636
set(PLATFORM_CFLAGS "-pipe -funsigned-char")
1637
set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime")
1638
set(WITH_INPUT_NDOF OFF) # unsupported
1641
if(WITH_PYTHON_MODULE OR WITH_PYTHON_FRAMEWORK)
1642
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python")# force cmake to link right framework
1645
if(WITH_OPENCOLLADA)
1646
set(OPENCOLLADA ${LIBDIR}/opencollada)
1648
set(OPENCOLLADA_INCLUDE_DIRS
1649
${LIBDIR}/opencollada/include/COLLADAStreamWriter
1650
${LIBDIR}/opencollada/include/COLLADABaseUtils
1651
${LIBDIR}/opencollada/include/COLLADAFramework
1652
${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
1653
${LIBDIR}/opencollada/include/GeneratedSaxParser
1656
set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
1657
set(OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lUTF -lxml2 -lbuffer -lftoa")
1658
# pcre is bundled with openCollada
1659
#set(PCRE ${LIBDIR}/pcre)
1660
#set(PCRE_LIBPATH ${PCRE}/lib)
1661
set(PCRE_LIBRARIES pcre)
1663
#set(EXPAT ${LIBDIR}/expat)
1664
#set(EXPAT_LIBPATH ${EXPAT}/lib)
1669
set(SDL ${LIBDIR}/sdl)
1670
set(SDL_INCLUDE_DIR ${SDL}/include)
1671
set(SDL_LIBRARY SDL)
1672
set(SDL_LIBPATH ${SDL}/lib)
1675
set(PNG "${LIBDIR}/png")
1676
set(PNG_INCLUDE_DIR "${PNG}/include")
1677
set(PNG_LIBPATH ${PNG}/lib)
1679
set(JPEG "${LIBDIR}/jpeg")
1680
set(JPEG_INCLUDE_DIR "${JPEG}/include")
1681
set(JPEG_LIBPATH ${JPEG}/lib)
1684
set(TIFF ${LIBDIR}/tiff)
1685
set(TIFF_INCLUDE_DIR ${TIFF}/include)
1686
set(TIFF_LIBRARY tiff)
1687
set(TIFF_LIBPATH ${TIFF}/lib)
1691
# linker needs "-weak_framework 3DconnexionClient"
1695
set(BOOST ${LIBDIR}/boost)
1696
set(BOOST_INCLUDE_DIR ${BOOST}/include)
1697
set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt boost_wave-mt)
1698
if(WITH_INTERNATIONAL)
1699
list(APPEND BOOST_LIBRARIES boost_locale-mt)
1700
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale needs it !
1702
set(BOOST_LIBPATH ${BOOST}/lib)
1703
set(BOOST_DEFINITIONS)
1706
if(WITH_OPENIMAGEIO)
1707
set(OPENIMAGEIO ${LIBDIR}/openimageio)
1708
set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1709
set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO}/lib/libOpenImageIO.a ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
1710
set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
1711
set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
1714
if(WITH_OPENCOLORIO)
1715
set(OPENCOLORIO ${LIBDIR}/opencolorio)
1716
set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1717
set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
1718
set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1719
set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD")
1723
set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1724
set(LLVM_VERSION "3.1" CACHE STRING "Version of LLVM to use")
1725
if(EXISTS "${LLVM_DIRECTORY}/bin/llvm-config")
1726
set(LLVM_CONFIG "${LLVM_DIRECTORY}/bin/llvm-config")
1728
set(LLVM_CONFIG llvm-config)
1730
execute_process(COMMAND ${LLVM_CONFIG} --version
1731
OUTPUT_VARIABLE LLVM_VERSION
1732
OUTPUT_STRIP_TRAILING_WHITESPACE)
1733
execute_process(COMMAND ${LLVM_CONFIG} --prefix
1734
OUTPUT_VARIABLE LLVM_DIRECTORY
1735
OUTPUT_STRIP_TRAILING_WHITESPACE)
1736
execute_process(COMMAND ${LLVM_CONFIG} --libdir
1737
OUTPUT_VARIABLE LLVM_LIB_DIR
1738
OUTPUT_STRIP_TRAILING_WHITESPACE)
1739
find_library(LLVM_LIBRARY
1740
NAMES LLVMAnalysis # first of a whole bunch of libs to get
1741
PATHS ${LLVM_LIB_DIR})
1743
if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIB_DIR)
1745
# if static LLVM libraries were requested, use llvm-config to generate
1746
# the list of what libraries we need, and substitute that in the right
1747
# way for LLVM_LIBRARY.
1748
execute_process(COMMAND ${LLVM_CONFIG} --libfiles
1749
OUTPUT_VARIABLE LLVM_LIBRARY
1750
OUTPUT_STRIP_TRAILING_WHITESPACE)
1751
string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
1754
message(FATAL_ERROR "LLVM not found.")
1759
set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1761
find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1762
find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1763
find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1764
# WARNING! depends on correct order of OSL libs linking
1765
list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
1766
find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1767
find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1769
if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
1772
message(STATUS "OSL not found")
1776
set(EXETYPE MACOSX_BUNDLE)
1778
set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
1779
set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
1780
if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386")
1781
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
1782
set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
1783
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
1784
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
1785
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
1788
set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
1789
set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
1793
#-----------------------------------------------------------------------------
1797
if(NOT EXISTS "${LIBDIR}/")
1798
message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'")
1802
if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
1803
message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
1807
if(NOT WITH_OPENIMAGEIO)
1808
message(FATAL_ERROR "Cycles reqires WITH_OPENIMAGEIO, the library may not have been found. Configure OIIO or disable WITH_CYCLES")
1811
message(FATAL_ERROR "Cycles reqires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES")
1816
message(FATAL_ERROR "Cycles OSL reqires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL")
1821
if(WITH_INTERNATIONAL)
1823
message(FATAL_ERROR "Internationalization reqires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL")
1827
# See TEST_SSE_SUPPORT() for how this is defined.
1829
if(WITH_RAYOPTIMIZATION)
1830
if(SUPPORT_SSE_BUILD)
1831
set(PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}")
1832
add_definitions(-D__SSE__ -D__MMX__)
1834
if(SUPPORT_SSE2_BUILD)
1835
set(PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}")
1836
add_definitions(-D__SSE2__)
1837
if(NOT SUPPORT_SSE_BUILD) # dont double up
1838
add_definitions(-D__MMX__)
1844
# set the endian define
1846
# for some reason this fails on msvc
1847
add_definitions(-D__LITTLE_ENDIAN__)
1849
# OSX-Note: as we do crosscompiling with specific set architecture,
1850
# endianess-detection and autosetting is counterproductive
1851
# so we just set endianess according CMAKE_OSX_ARCHITECTURES
1853
elseif(CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
1854
add_definitions(-D__LITTLE_ENDIAN__)
1855
elseif(CMAKE_OSX_ARCHITECTURES MATCHES ppc OR CMAKE_OSX_ARCHITECTURES MATCHES ppc64)
1856
add_definitions(-D__BIG_ENDIAN__)
1859
include(TestBigEndian)
1860
test_big_endian(_SYSTEM_BIG_ENDIAN)
1861
if(_SYSTEM_BIG_ENDIAN)
1862
add_definitions(-D__BIG_ENDIAN__)
1864
add_definitions(-D__LITTLE_ENDIAN__)
1866
unset(_SYSTEM_BIG_ENDIAN)
1870
if(WITH_IMAGE_OPENJPEG)
1871
if(WITH_SYSTEM_OPENJPEG)
1874
set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg")
1875
add_definitions(-DOPJ_STATIC)
1879
if(WITH_IMAGE_REDCODE)
1880
set(REDCODE ${CMAKE_SOURCE_DIR}/extern)
1881
set(REDCODE_INC ${REDCODE})
1884
#-----------------------------------------------------------------------------
1888
set(GECKO_DIR "${CMAKE_SOURCE_DIR}/../gecko-sdk/" CACHE PATH "Gecko SDK path")
1889
set(WEBPLUGIN_SANDBOX_MODE "apparmor" CACHE STRING "WEB Plugin sandbox mode, can be apparmor, privsep, none")
1895
#-----------------------------------------------------------------------------
1897
find_package(OpenGL)
1898
blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}")
1899
# unset(OPENGL_LIBRARIES CACHE) # not compat with older cmake
1900
# unset(OPENGL_xmesa_INCLUDE_DIR CACHE) # not compat with older cmake
1902
#-----------------------------------------------------------------------------
1905
find_package(OpenMP)
1907
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
1908
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
1910
if(APPLE AND ${CMAKE_GENERATOR} MATCHES "Xcode")
1911
set(CMAKE_XCODE_ATTRIBUTE_ENABLE_OPENMP_SUPPORT "YES")
1914
set(WITH_OPENMP OFF)
1923
#-----------------------------------------------------------------------------
1926
if(WITH_SYSTEM_GLEW)
1930
message(FATAL_ERROR "GLEW is required to build blender, install it or disable WITH_SYSTEM_GLEW")
1938
# set(GLEW_LIBRARY "") # unused
1939
set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
1943
#-----------------------------------------------------------------------------
1946
if(WITH_BULLET AND WITH_SYSTEM_BULLET)
1947
find_package(Bullet)
1948
if(NOT BULLET_FOUND)
1949
set(WITH_BULLET OFF)
1952
set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
1953
# set(BULLET_LIBRARIES "")
1956
#-----------------------------------------------------------------------------
1959
if(WITH_PYTHON_MODULE)
1960
add_definitions(-DPy_ENABLE_SHARED)
1963
#-----------------------------------------------------------------------------
1964
# Extra compile flags
1966
if(CMAKE_COMPILER_IS_GNUCC)
1968
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
1969
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_CAST_ALIGN -Wcast-align)
1970
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
1971
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
1972
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
1973
# system headers sometimes do this, disable for now, was: -Werror=strict-prototypes
1974
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
1975
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
1976
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
1977
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
1978
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
1979
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
1980
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_WRITE_STRINGS -Wwrite-strings)
1981
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_LOGICAL_OP -Wlogical-op)
1982
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNDEF -Wundef)
1983
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
1984
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_NULL -Wnonnull) # C only
1985
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
1986
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
1988
# gcc 4.2 gives annoying warnings on every file with this
1989
if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
1990
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNINITIALIZED -Wuninitialized)
1993
# versions before gcc4.6 give many BLI_math warnings
1994
if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.6")
1995
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_REDUNDANT_DECLS -Wredundant-decls)
1996
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_REDUNDANT_DECLS -Wredundant-decls)
1999
# disable because it gives warnings for printf() & friends.
2000
# ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_DOUBLE_PROMOTION -Wdouble-promotion -Wno-error=double-promotion)
2003
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2006
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2007
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2008
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2009
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_LOGICAL_OP -Wlogical-op)
2010
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
2011
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
2012
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
2014
# gcc 4.2 gives annoying warnings on every file with this
2015
if(NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
2016
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNINITIALIZED -Wuninitialized)
2019
# causes too many warnings
2021
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
2022
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_DECLARATIONS -Wmissing-declarations)
2025
# flags to undo strict flags
2026
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
2027
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2030
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
2033
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
2035
# strange, clang complains these are not supported, but then yses them.
2036
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2037
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
2038
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
2039
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
2040
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2041
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2042
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2043
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
2044
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
2045
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
2047
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2048
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
2049
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2050
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
2051
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.
2052
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2053
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2055
# gives too many unfixable warnings
2056
# ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_MACROS -Wunused-macros)
2057
# ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_MACROS -Wunused-macros)
2059
# flags to undo strict flags
2060
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
2061
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2063
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_VARIABLE_DECLARATIONS -Wno-missing-variable-declarations)
2064
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_FUNCTION -Wno-unused-function)
2065
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_INT_TO_VOID_POINTER_CAST -Wno-int-to-void-pointer-cast)
2066
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_PROTOTYPES -Wno-missing-prototypes)
2067
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DUPLICATE_ENUM -Wno-duplicate-enum)
2068
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNDEF -Wno-undef)
2069
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_NORETURN -Wno-missing-noreturn)
2071
ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_PRIVATE_FIELD -Wno-unused-private-field)
2072
ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_CXX11_NARROWING -Wno-c++11-narrowing)
2073
ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_NON_VIRTUAL_DTOR -Wno-non-virtual-dtor)
2074
ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_MACROS -Wno-unused-macros)
2075
ADD_CHECK_CXX_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_REORDER -Wno-reorder)
2077
elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
2079
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
2080
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
2081
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
2083
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
2084
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
2085
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
2087
# disable numbered, false positives
2088
set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556")
2089
set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556")
2093
# ensure python header is found since detection can fail, this could happen
2094
# with _any_ library but since we used a fixed python version this tends to
2095
# be most problematic.
2097
if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/Python.h")
2098
message(FATAL_ERROR "Missing: \"${PYTHON_INCLUDE_DIR}/Python.h\",\n"
2099
"Set the cache entry 'PYTHON_INCLUDE_DIR' to point "
2100
"to a valid python include path. Containing "
2101
"Python.h for python version \"${PYTHON_VERSION}\"")
2104
if(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
2106
# -- disabled until we make numpy bundled with blender - campbell
2107
if((NOT ${PYTHON_NUMPY_PATH} STREQUAL "") AND (NOT ${PYTHON_NUMPY_PATH} MATCHES NOTFOUND))
2108
# if(NOT EXISTS "${PYTHON_NUMPY_PATH}/numpy")
2109
# message(WARNING "PYTHON_NUMPY_PATH is invalid, numpy not found in '${PYTHON_NUMPY_PATH}' "
2110
# "WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
2111
# set(WITH_PYTHON_INSTALL_NUMPY OFF)
2113
# not set, so initialize
2115
string(REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}")
2116
list(GET _PY_VER_SPLIT 0 _PY_VER_MAJOR)
2119
unset(PYTHON_NUMPY_PATH CACHE)
2120
find_path(PYTHON_NUMPY_PATH
2124
"${PYTHON_LIBPATH}/python${PYTHON_VERSION}/"
2125
"${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/"
2132
if(NOT EXISTS "${PYTHON_NUMPY_PATH}")
2133
message(WARNING "'numpy' path could not be found in:\n"
2134
"'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/numpy', "
2135
"'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/numpy', "
2136
"'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/numpy', "
2137
"'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/numpy', "
2138
"WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
2139
set(WITH_PYTHON_INSTALL_NUMPY OFF)
2141
message(STATUS "numpy found at '${PYTHON_NUMPY_PATH}'")
2144
unset(_PY_VER_SPLIT)
2145
unset(_PY_VER_MAJOR)
2150
if(WITH_GCC_MUDFLAP)
2151
set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -fmudflapth -funwind-tables")
2152
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lpthread -lmudflapth -rdynamic")
2153
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_MUDFLAP -Wno-error=mudflap)
2154
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_ERROR_MUDFLAP -Wno-error=mudflap)
2157
# Include warnings first, so its possible to disable them with user defined flags
2158
# eg: -Wno-uninitialized
2159
set(CMAKE_C_FLAGS "${C_WARNINGS} ${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}")
2160
set(CMAKE_CXX_FLAGS "${CXX_WARNINGS} ${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}")
2162
#-------------------------------------------------------------------------------
2165
# better not set includes here but this debugging option is off by default.
2166
if(WITH_CXX_GUARDEDALLOC)
2167
include_directories(${CMAKE_SOURCE_DIR}/intern/guardedalloc)
2168
add_definitions(-DWITH_CXX_GUARDEDALLOC)
2171
if(WITH_ASSERT_ABORT)
2172
add_definitions(-DWITH_ASSERT_ABORT)
2175
# message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
2176
# message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
2178
#-----------------------------------------------------------------------------
2181
add_subdirectory(source)
2182
add_subdirectory(intern)
2183
add_subdirectory(extern)
2186
#-----------------------------------------------------------------------------
2187
# Blender Application
2189
add_subdirectory(source/creator)
2193
#-----------------------------------------------------------------------------
2196
add_subdirectory(source/blenderplayer)
2199
#-----------------------------------------------------------------------------
2200
# CPack for generating packages
2201
include(build_files/cmake/packaging.cmake)
2204
#-----------------------------------------------------------------------------
2205
# Print Final Configuration
2208
set(_config_msg "\n* Blender Configuration *")
2209
macro(info_cfg_option
2211
set(_msg " * ${_setting}")
2212
string(LENGTH "${_msg}" _len)
2213
while("32" GREATER "${_len}")
2214
set(_msg "${_msg} ")
2215
math(EXPR _len "${_len} + 1")
2218
set(_config_msg "${_config_msg}\n${_msg}${${_setting}}")
2223
set(_config_msg "${_config_msg}\n\n ${_text}")
2228
info_cfg_text("Build Options:")
2229
info_cfg_option(WITH_GAMEENGINE)
2230
info_cfg_option(WITH_PLAYER)
2231
info_cfg_option(WITH_BULLET)
2232
info_cfg_option(WITH_IK_SOLVER)
2233
info_cfg_option(WITH_IK_ITASC)
2234
info_cfg_option(WITH_OPENCOLLADA)
2235
info_cfg_option(WITH_FFTW3)
2236
info_cfg_option(WITH_INTERNATIONAL)
2237
info_cfg_option(WITH_INPUT_NDOF)
2238
info_cfg_option(WITH_CYCLES)
2239
info_cfg_option(WITH_FREESTYLE)
2240
info_cfg_option(WITH_OPENCOLORIO)
2242
info_cfg_text("Compiler Options:")
2243
info_cfg_option(WITH_BUILDINFO)
2244
info_cfg_option(WITH_OPENMP)
2245
info_cfg_option(WITH_RAYOPTIMIZATION)
2247
info_cfg_text("System Options:")
2248
info_cfg_option(WITH_INSTALL_PORTABLE)
2249
info_cfg_option(WITH_X11_XF86VMODE)
2250
info_cfg_option(WITH_X11_XINPUT)
2251
info_cfg_option(WITH_MEM_JEMALLOC)
2252
info_cfg_option(WITH_SYSTEM_GLEW)
2253
info_cfg_option(WITH_SYSTEM_OPENJPEG)
2255
info_cfg_text("Image Formats:")
2256
info_cfg_option(WITH_IMAGE_CINEON)
2257
info_cfg_option(WITH_IMAGE_DDS)
2258
info_cfg_option(WITH_IMAGE_HDR)
2259
info_cfg_option(WITH_IMAGE_OPENEXR)
2260
info_cfg_option(WITH_IMAGE_OPENJPEG)
2261
info_cfg_option(WITH_IMAGE_REDCODE)
2262
info_cfg_option(WITH_IMAGE_TIFF)
2264
info_cfg_text("Audio:")
2265
info_cfg_option(WITH_OPENAL)
2266
info_cfg_option(WITH_SDL)
2267
info_cfg_option(WITH_JACK)
2268
info_cfg_option(WITH_JACK_DYNLOAD)
2269
info_cfg_option(WITH_CODEC_AVI)
2270
info_cfg_option(WITH_CODEC_FFMPEG)
2271
info_cfg_option(WITH_CODEC_SNDFILE)
2273
info_cfg_text("Compression:")
2274
info_cfg_option(WITH_LZMA)
2275
info_cfg_option(WITH_LZO)
2277
info_cfg_text("Python:")
2278
info_cfg_option(WITH_PYTHON_INSTALL)
2279
info_cfg_option(WITH_PYTHON_INSTALL_NUMPY)
2280
info_cfg_option(WITH_PYTHON_MODULE)
2281
info_cfg_option(WITH_PYTHON_SAFETY)
2283
info_cfg_option(WITH_PYTHON_FRAMEWORK)
2286
info_cfg_text("Modifiers:")
2287
info_cfg_option(WITH_MOD_BOOLEAN)
2288
info_cfg_option(WITH_MOD_REMESH)
2289
info_cfg_option(WITH_MOD_FLUID)
2290
info_cfg_option(WITH_MOD_OCEANSIM)
2293
message(STATUS "HAVE_STDBOOL_H = ${HAVE_STDBOOL_H}")
2297
message("${_config_msg}")