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)
127
option(WITH_BUILDINFO "Include extra build details (only disable for development & faster builds)" ON)
128
option(WITH_IK_ITASC "Enable ITASC IK solver (only disable for development & for incompatible C++ compilers)" ON)
129
option(WITH_IK_SOLVER "Enable Legacy IK solver (only disable for development)" ON)
130
option(WITH_FFTW3 "Enable FFTW3 support (Used for smoke and audio effects)" ON)
131
option(WITH_BULLET "Enable Bullet (Physics Engine)" ON)
132
option(WITH_SYSTEM_BULLET "Use the systems bullet library (currently unsupported due to missing features in upstream!)" )
133
mark_as_advanced(WITH_SYSTEM_BULLET)
134
option(WITH_GAMEENGINE "Enable Game Engine" ON)
135
option(WITH_PLAYER "Build Player" OFF)
136
option(WITH_OPENCOLORIO "Enable OpenColorIO color management" ON)
137
option(WITH_COMPOSITOR "Enable the tile based nodal compositor" ON)
139
# GHOST Windowing Library Options
140
option(WITH_GHOST_DEBUG "Enable debugging output for the GHOST library" OFF)
141
mark_as_advanced(WITH_GHOST_DEBUG)
143
option(WITH_GHOST_SDL "Enable building blender against SDL for windowing rather then the native APIs" OFF)
144
mark_as_advanced(WITH_GHOST_SDL)
147
option(WITH_HEADLESS "Build without graphical support (renderfarm, server mode only)" OFF)
148
mark_as_advanced(WITH_HEADLESS)
150
option(WITH_AUDASPACE "Build with blenders audio library (only disable if you know what you're doing!)" ON)
151
mark_as_advanced(WITH_AUDASPACE)
153
option(WITH_BOOL_COMPAT "Continue defining \"TRUE\" and \"FALSE\" until these can be replaced with \"true\" and \"false\" from stdbool.h" ON)
154
mark_as_advanced(WITH_BOOL_COMPAT)
157
# (unix defaults to OpenMP On)
158
if((UNIX AND NOT APPLE) OR (MINGW))
159
set(PLATFORM_DEFAULT ON)
161
set(PLATFORM_DEFAULT OFF)
163
option(WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" ${PLATFORM_DEFAULT})
164
unset(PLATFORM_DEFAULT)
167
if(UNIX AND NOT APPLE)
168
option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)" ON)
169
option(WITH_X11_XF86VMODE "Enable X11 video mode switching" ON)
170
option(WITH_SYSTEM_GLEW "Use GLEW OpenGL wrapper library provided by the operating system" ON)
172
# freebsd doesn't seems to support XDND
173
if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
174
option(WITH_GHOST_XDND "Enable drag'n'drop support on Linux using XDND protocol" ON)
177
# not an option for other OS's
178
set(WITH_SYSTEM_GLEW OFF)
182
# (unix defaults to System OpenJPEG On)
183
if(UNIX AND NOT APPLE)
184
set(PLATFORM_DEFAULT ON)
186
set(PLATFORM_DEFAULT OFF)
188
option(WITH_SYSTEM_OPENJPEG "Use the operating systems OpenJPEG library" ${PLATFORM_DEFAULT})
189
unset(PLATFORM_DEFAULT)
193
option(WITH_MOD_FLUID "Enable Elbeem Modifier (Fluid Simulation)" ON)
194
option(WITH_MOD_SMOKE "Enable Smoke Modifier (Smoke Simulation)" ON)
195
option(WITH_MOD_BOOLEAN "Enable Boolean Modifier" ON)
196
option(WITH_MOD_REMESH "Enable Remesh Modifier" ON)
197
# option(WITH_MOD_CLOTH_ELTOPO "Enable Experimental cloth solver" OFF) # this is now only available in a branch
198
# mark_as_advanced(WITH_MOD_CLOTH_ELTOPO)
199
option(WITH_MOD_OCEANSIM "Enable Ocean Modifier" OFF)
201
# Image format support
202
option(WITH_IMAGE_OPENEXR "Enable OpenEXR Support (http://www.openexr.com)" ON)
203
option(WITH_IMAGE_OPENJPEG "Enable OpenJpeg Support (http://www.openjpeg.org)" ON)
204
option(WITH_IMAGE_TIFF "Enable LibTIFF Support" ON)
205
option(WITH_IMAGE_DDS "Enable DDS Image Support" ON)
206
option(WITH_IMAGE_CINEON "Enable CINEON and DPX Image Support" ON)
207
option(WITH_IMAGE_HDR "Enable HDR Image Support" ON)
208
option(WITH_IMAGE_REDCODE "Enable RedCode Image Support" OFF)
209
option(WITH_IMAGE_FRAMESERVER "Enable image FrameServer Support for rendering" ON)
211
# Audio/Video format support
212
option(WITH_CODEC_AVI "Enable Blenders own AVI file support (raw/jpeg)" ON)
213
option(WITH_CODEC_FFMPEG "Enable FFMPeg Support (http://ffmpeg.org)" OFF)
215
option(WITH_CODEC_SNDFILE "Enable libsndfile Support (http://www.mega-nerd.com/libsndfile)" OFF)
216
if(APPLE OR (WIN32 AND NOT UNIX))
217
option(WITH_CODEC_QUICKTIME "Enable Quicktime Support" OFF)
221
# disable opencollada on non-apple unix because opencollada has no package for debian
222
option(WITH_OPENCOLLADA "Enable OpenCollada Support (http://www.opencollada.org)" OFF)
225
option(WITH_SDL "Enable SDL for sound and joystick support" ON)
226
option(WITH_OPENAL "Enable OpenAL Support (http://www.openal.org)" ON)
227
option(WITH_JACK "Enable Jack Support (http://www.jackaudio.org)" OFF)
230
option(WITH_LZO "Enable fast LZO compression (used for pointcache)" ON)
231
option(WITH_LZMA "Enable best LZMA compression, (used for pointcache)" ON)
233
# Camera/motion tracking
234
option(WITH_LIBMV "Enable libmv structure from motion library" ON)
237
option(WITH_INPUT_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ON)
238
option(WITH_RAYOPTIMIZATION "Enable use of SIMD (SSE) optimizations for the raytracer" ON)
239
if(UNIX AND NOT APPLE)
240
option(WITH_INSTALL_PORTABLE "Install redistributeable runtime, otherwise install into CMAKE_INSTALL_PREFIX" ON)
241
option(WITH_STATIC_LIBS "Try to link with static libraries, as much as possible, to make blender more portable across distributions" OFF)
243
option(WITH_PYTHON_INSTALL "Copy system python into the blender install folder" ON)
244
option(WITH_PYTHON_INSTALL_NUMPY "Copy system numpy into the blender install folder" ON)
245
set(PYTHON_NUMPY_PATH "" CACHE PATH "Python to python site-packages or dist-packages containing 'numpy' module")
246
mark_as_advanced(PYTHON_NUMPY_PATH)
249
option(WITH_CYCLES "Enable cycles Render Engine" ON)
250
option(WITH_CYCLES_TEST "Build cycles test application" OFF)
251
option(WITH_CYCLES_OSL "Build Cycles with OSL support" OFF)
252
option(WITH_CYCLES_CUDA_BINARIES "Build cycles CUDA binaries" OFF)
253
set(CYCLES_CUDA_BINARIES_ARCH sm_13 sm_20 sm_21 sm_30 CACHE STRING "CUDA architectures to build binaries for")
254
mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
255
unset(PLATFORM_DEFAULT)
258
option(WITH_LLVM "Use LLVM" OFF)
260
# disable for now, but plan to support on all platforms eventually
261
option(WITH_MEM_JEMALLOC "Enable malloc replacement (http://www.canonware.com/jemalloc)" OFF)
262
mark_as_advanced(WITH_MEM_JEMALLOC)
265
option(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking (only enable for development)" OFF)
266
mark_as_advanced(WITH_CXX_GUARDEDALLOC)
268
option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF)
269
mark_as_advanced(WITH_ASSERT_ABORT)
271
option(WITH_BOOST "Enable features depending no boost" ON)
275
cmake_minimum_required(VERSION 2.8.8)
276
cmake_policy(VERSION 2.8.8)
278
if(NOT CMAKE_OSX_ARCHITECTURES)
279
set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING
280
"Choose the architecture you want to build Blender for: i386, x86_64 or ppc"
284
execute_process(COMMAND uname -r OUTPUT_VARIABLE MAC_SYS) # check for actual system-version
285
if (${MAC_SYS} MATCHES 12)
287
elseif (${MAC_SYS} MATCHES 11)
289
elseif(${MAC_SYS} MATCHES 10)
291
elseif(${MAC_SYS} MATCHES 9)
294
set(OSX_SYSTEM unsupported)
296
message(STATUS "Detected system-version: " ${OSX_SYSTEM})
298
if(${CMAKE_GENERATOR} MATCHES "Xcode")
300
##### cmake incompatibility with xcode 4.3 and higher #####
301
if(${XCODE_VERSION} MATCHES '') # cmake fails due looking for xcode in the wrong path, thus will be empty var
302
message(FATAL_ERROR "Xcode 4.3 and higher must be used with cmake 2.8-8 or higher")
304
### end cmake incompatibility with xcode 4.3 and higher ###
306
if(${XCODE_VERSION} VERSION_EQUAL 4 OR ${XCODE_VERSION} VERSION_GREATER 4 AND ${XCODE_VERSION} VERSION_LESS 4.3)
307
# Xcode 4 defaults to the Apple LLVM Compiler.
308
# Override the default compiler selection because Blender only compiles with gcc up to xcode 4.2
309
set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
310
message(STATUS "Setting compiler to: " ${CMAKE_XCODE_ATTRIBUTE_GCC_VERSION})
312
else() # unix makefile generator does not fill XCODE_VERSION var, so we get it with a command
313
execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERS_BUILD_NR)
314
string(SUBSTRING "${XCODE_VERS_BUILD_NR}" 6 3 XCODE_VERSION) # truncate away build-nr
315
unset(XCODE_VERS_BUILD_NR)
318
message(STATUS "Detected Xcode-version: " ${XCODE_VERSION})
320
if(${XCODE_VERSION} VERSION_LESS 4.3)
321
set(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk CACHE PATH "" FORCE) # use guaranteed existing sdk
323
# note: i don't use xcode-select path on purpose, cause also /Applications/Xcode.app would be allowed
324
# absolute pathes are more foolproof here !
325
set(OSX_SYSROOT_PREFIX /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform)
326
set(OSX_DEVELOPER_PREFIX /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk) # use guaranteed existing sdk
327
set(CMAKE_OSX_SYSROOT ${OSX_SYSROOT_PREFIX}/${OSX_DEVELOPER_PREFIX} CACHE PATH "" FORCE)
330
if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
331
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.5" CACHE STRING "" FORCE) # 10.5 is our min. target, if you use higher sdk, weak linking happens
334
if(NOT ${CMAKE_GENERATOR} MATCHES "Xcode")
335
# force CMAKE_OSX_DEPLOYMENT_TARGET for makefiles, will not work else ( cmake bug ? )
336
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
337
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}")
338
add_definitions ("-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}")
341
option(WITH_COCOA "Use Cocoa framework instead of deprecated Carbon" ON)
342
option(USE_QTKIT "Use QtKit instead of Carbon quicktime (needed for having partial quicktime for 64bit)" OFF)
343
option(WITH_LIBS10.5 "Use 10.5 libs (needed for 64bit builds)" OFF)
344
if(CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
345
set(USE_QTKIT ON CACHE BOOL "ON" FORCE) # no Quicktime in 64bit
350
#-----------------------------------------------------------------------------
351
# Check for conflicting/unsupported configurations
353
if(NOT WITH_BLENDER AND NOT WITH_PLAYER AND NOT WITH_CYCLES_TEST)
354
message(FATAL_ERROR "At least one of WITH_BLENDER or WITH_PLAYER must be enabled, nothing to do!")
357
if(NOT WITH_GAMEENGINE AND WITH_PLAYER)
358
message(FATAL_ERROR "WITH_PLAYER requires WITH_GAMEENGINE")
361
if(NOT WITH_AUDASPACE)
363
message(FATAL_ERROR "WITH_OPENAL requires WITH_AUDASPACE")
366
message(FATAL_ERROR "WITH_JACK requires WITH_AUDASPACE")
369
message(FATAL_ERROR "WITH_GAMEENGINE requires WITH_AUDASPACE")
373
if(NOT WITH_SDL AND WITH_GHOST_SDL)
374
message(FATAL_ERROR "WITH_GHOST_SDL requires WITH_SDL")
377
if(WITH_IMAGE_REDCODE AND ((NOT WITH_IMAGE_OPENJPEG) OR (NOT WITH_CODEC_FFMPEG)))
378
message(FATAL_ERROR "WITH_IMAGE_REDCODE requires WITH_IMAGE_OPENJPEG and WITH_CODEC_FFMPEG")
381
# python module, needs some different options
382
if(WITH_PYTHON_MODULE AND WITH_PLAYER)
383
message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PLAYER to be OFF")
386
if(WITH_PYTHON_MODULE AND WITH_PYTHON_INSTALL)
387
message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PYTHON_INSTALL to be OFF")
391
# may as well build python module without a UI
392
if(WITH_PYTHON_MODULE)
393
set(WITH_HEADLESS ON)
396
# auto enable openimageio for cycles
398
set(WITH_OPENIMAGEIO ON)
401
# enable boost for cycles, booleans, audaspace or i18n
402
# otherwise if the user disabled
404
# Explicitly disabled. so disable all deps.
406
set(WITH_MOD_BOOLEAN OFF)
407
set(WITH_AUDASPACE OFF)
408
set(WITH_INTERNATIONAL OFF)
410
set(WITH_OPENAL OFF) # depends on AUDASPACE
411
set(WITH_GAMEENGINE OFF) # depends on AUDASPACE
412
elseif(WITH_CYCLES OR WITH_MOD_BOOLEAN OR WITH_AUDASPACE OR WITH_INTERNATIONAL)
415
# Enabled but we don't need it
419
# auto enable llvm for cycles_osl
421
set(WITH_LLVM ON CACHE BOOL "ON" FORCE)
424
# don't store paths to libs for portable distribution
425
if(WITH_INSTALL_PORTABLE)
426
set(CMAKE_SKIP_BUILD_RPATH TRUE)
429
if(WITH_GHOST_SDL OR WITH_HEADLESS)
430
set(WITH_GHOST_XDND OFF)
431
set(WITH_X11_XF86VMODE OFF)
432
set(WITH_X11_XINPUT OFF)
436
if(WITH_CODEC_QUICKTIME)
437
message(FATAL_ERROR "MINGW requires WITH_CODEC_QUICKTIME to be OFF "
438
"because it is currently unsupported, remove this "
439
"line if youre a developer who wants to add support.")
443
TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
445
TEST_STDBOOL_SUPPORT()
447
add_definitions(-DHAVE_STDBOOL_H)
450
add_definitions(-DWITH_BOOL_COMPAT)
453
#-----------------------------------------------------------------------------
454
# Check for valid directories
455
# ... svn extern paths can be missing because of svn-git.
457
if(WITH_INTERNATIONAL)
458
if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/datafiles/locale")
459
message(WARNING "Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
460
"This is an 'svn external', which are known not to work with bridges to other version "
461
"control systems, disabling 'WITH_INTERNATIONAL'.")
462
set(WITH_INTERNATIONAL OFF)
467
if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/scripts/addons")
468
message(WARNING "Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
469
"This is an 'svn external', which are known not to work with bridges to other version "
470
"control systems: * CONTINUING WITHOUT ADDONS *")
474
#-----------------------------------------------------------------------------
475
# Initialize un-cached vars, avoid unused warning
477
# linux only, not cached
478
set(WITH_BINRELOC OFF)
480
# MAXOSX only, set to avoid uninitialized
486
# these are added to later on.
490
# for gcc -Wno-blah-blah
491
set(CC_REMOVE_STRICT_FLAGS)
493
# libraries to link the binary with passed to target_link_libraries()
494
# known as LLIBS to scons
495
set(PLATFORM_LINKLIBS "")
497
# Added to linker flags in setup_liblinks
498
# - CMAKE_EXE_LINKER_FLAGS
499
# - CMAKE_EXE_LINKER_FLAGS_DEBUG
500
set(PLATFORM_LINKFLAGS "")
501
set(PLATFORM_LINKFLAGS_DEBUG "")
504
# disabled for now, not supported
505
# option(WITH_WEBPLUGIN "Enable Web Plugin (Unix only)" OFF)
507
# For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
510
# -D PYTHON_VERSION=3.3 \
511
# -D PYTHON_INCLUDE_DIR=/opt/py33/include/python3.3d \
512
# -D PYTHON_LIBRARY=/opt/py33/lib/libpython3.3d.so
516
# -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.3/include/python3.3 \
517
# -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/config \
520
# When changing any of this remember to update the notes in doc/build_systems/cmake.txt
522
#-----------------------------------------------------------------------------
525
if(UNIX AND NOT APPLE)
526
macro(find_package_wrapper)
527
STRING(TOUPPER ${ARGV0} _NAME_UPPER)
528
if(${WITH_STATIC_LIBS})
529
set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES})
530
set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
532
find_package(${ARGV})
533
if(${WITH_STATIC_LIBS})
534
set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back})
535
unset(_cmake_find_library_suffixes_back)
539
find_package_wrapper(JPEG REQUIRED)
540
find_package_wrapper(PNG REQUIRED)
541
find_package_wrapper(ZLIB REQUIRED)
542
find_package_wrapper(Freetype REQUIRED)
545
# No way to set py33. remove for now.
546
# find_package(PythonLibs)
548
# Use our own instead, since wothout py is such a rare case,
549
# require this package
550
# XXX Linking errors with debian static python :/
551
# find_package_wrapper(PythonLibsUnix REQUIRED)
552
find_package(PythonLibsUnix REQUIRED)
555
if(WITH_IMAGE_OPENEXR)
556
find_package_wrapper(OpenEXR) # our own module
557
if(NOT OPENEXR_FOUND)
558
set(WITH_IMAGE_OPENEXR OFF)
562
if(WITH_IMAGE_OPENJPEG)
563
find_package_wrapper(OpenJPEG)
564
if(NOT OPENJPEG_FOUND)
565
set(WITH_IMAGE_OPENJPEG OFF)
570
# XXX Linking errors with debian static tiff :/
571
# find_package_wrapper(TIFF)
574
set(WITH_IMAGE_TIFF OFF)
580
find_package_wrapper(OpenAL)
587
find_package_wrapper(SDL)
594
# unset(SDLMAIN_LIBRARY CACHE)
601
find_package_wrapper(Jack)
608
if(WITH_CODEC_SNDFILE)
609
find_package_wrapper(SndFile)
610
if(NOT SNDFILE_FOUND)
611
set(WITH_CODEC_SNDFILE OFF)
615
if(WITH_CODEC_FFMPEG)
616
set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
617
set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
619
mark_as_advanced(FFMPEG)
621
# lame, but until we have proper find module for ffmpeg
622
set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
623
if(EXISTS "${FFMPEG}/include/ffmpeg/")
624
list(APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg")
628
mark_as_advanced(FFMPEG_LIBRARIES)
629
set(FFMPEG_LIBPATH ${FFMPEG}/lib)
630
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
634
find_package_wrapper(Fftw3)
641
find_package_wrapper(OpenCOLLADA)
642
if(OPENCOLLADA_FOUND)
643
find_package_wrapper(XML2)
644
find_package_wrapper(PCRE)
646
set(WITH_OPENCOLLADA OFF)
650
if(WITH_MEM_JEMALLOC)
651
find_package_wrapper(JeMalloc)
652
if(NOT JEMALLOC_FOUND)
653
set(WITH_MEM_JEMALLOC OFF)
658
find_package_wrapper(Spacenav)
659
if(NOT SPACENAV_FOUND)
660
set(WITH_INPUT_NDOF OFF)
663
# use generic names within blenders buildsystem.
665
set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
666
set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
671
# uses in build instructions to override include and library variables
673
if(${WITH_STATIC_LIBS})
674
set(Boost_USE_STATIC_LIBS ON)
676
set(Boost_USE_MULTITHREADED ON)
677
set(__boost_packages filesystem regex system thread date_time)
678
if (WITH_INTERNATIONAL)
679
list(APPEND __boost_packages locale)
681
find_package(Boost 1.48 COMPONENTS ${__boost_packages})
682
if(Boost_USE_STATIC_LIBS AND Boost_USE_ICU)
683
find_package(IcuLinux)
685
mark_as_advanced(Boost_DIR) # why doesnt boost do this?
688
set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
689
set(BOOST_LIBRARIES ${Boost_LIBRARIES})
690
set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
691
set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
695
find_package_wrapper(OpenImageIO)
697
set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES})
698
set(OPENIMAGEIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
699
set(OPENIMAGEIO_DEFINITIONS)
702
list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}")
704
if(WITH_IMAGE_OPENEXR)
705
list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}")
708
if(NOT OPENIMAGEIO_FOUND)
709
set(WITH_OPENIMAGEIO OFF)
710
message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
715
find_package_wrapper(OpenColorIO)
717
set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES})
718
set(OPENCOLORIO_LIBPATH) # TODO, remove and reference the absolute path everywhere
719
set(OPENCOLORIO_DEFINITIONS)
721
if(NOT OPENCOLORIO_FOUND)
722
set(WITH_OPENCOLORIO OFF)
723
message(STATUS "OpenColorIO not found")
727
# XXX Maybe most of this section should go into an llvm module?
729
# Set llvm version if not specified
731
set(LLVM_VERSION "3.0")
735
FIND_PROGRAM(LLVM_CONFIG llvm-config-${LLVM_VERSION} HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
737
FIND_PROGRAM(LLVM_CONFIG llvm-config HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
740
FIND_PROGRAM(LLVM_CONFIG llvm-config-${LLVM_VERSION})
742
FIND_PROGRAM(LLVM_CONFIG llvm-config)
745
execute_process(COMMAND ${LLVM_CONFIG} --version
746
OUTPUT_VARIABLE LLVM_VERSION
747
OUTPUT_STRIP_TRAILING_WHITESPACE)
748
execute_process(COMMAND ${LLVM_CONFIG} --prefix
749
OUTPUT_VARIABLE LLVM_DIRECTORY
750
OUTPUT_STRIP_TRAILING_WHITESPACE)
751
execute_process(COMMAND ${LLVM_CONFIG} --libdir
752
OUTPUT_VARIABLE LLVM_LIB_DIR
753
OUTPUT_STRIP_TRAILING_WHITESPACE)
754
find_library(LLVM_LIBRARY
755
NAMES LLVMAnalysis # first of a whole bunch of libs to get
756
PATHS ${LLVM_LIB_DIR})
757
message(STATUS "LLVM version = ${LLVM_VERSION}")
758
message(STATUS "LLVM dir = ${LLVM_DIRECTORY}")
759
message(STATUS "LLVM lib dir = ${LLVM_LIB_DIR}")
760
set(LLVM_VERSION ${LLVM_VERSION} CACHE STRING "Version of LLVM to use")
761
set(LLVM_DIRECTORY ${LLVM_DIRECTORY} CACHE PATH "Path to the LLVM installation")
763
if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIB_DIR)
765
# if static LLVM libraries were requested, use llvm-config to generate
766
# the list of what libraries we need, and substitute that in the right
767
# way for LLVM_LIBRARY.
768
execute_process(COMMAND ${LLVM_CONFIG} --libfiles
769
OUTPUT_VARIABLE LLVM_LIBRARY
770
OUTPUT_STRIP_TRAILING_WHITESPACE)
771
string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
774
message(FATAL_ERROR "LLVM not found.")
777
# Fix for conflict with Mesa llvmpipe
778
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/source/creator/blender.map")
782
set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
784
message(STATUS "CYCLES_OSL = ${CYCLES_OSL}")
786
find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
787
find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
788
find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
789
# Note: --whole-archive is needed to force loading of all symbols in liboslexec,
790
# otherwise LLVM is missing the osl_allocate_closure_component function
791
list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -Wl,--whole-archive ${OSL_LIB_EXEC} -Wl,--no-whole-archive ${OSL_LIB_QUERY})
792
find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
793
find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
795
if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
797
message(STATUS "OSL includes = ${OSL_INCLUDES}")
798
message(STATUS "OSL library = ${OSL_LIBRARIES}")
799
message(STATUS "OSL compiler = ${OSL_COMPILER}")
801
message(STATUS "OSL not found")
805
# OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
806
set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread -lstdc++")
808
if((NOT WITH_HEADLESS) AND (NOT WITH_GHOST_SDL))
809
find_package(X11 REQUIRED)
810
find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
811
mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
813
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_X11_LIB}")
817
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xinput_LIB}")
819
set(WITH_X11_XINPUT OFF)
823
if(WITH_X11_XF86VMODE)
824
# XXX, why dont cmake make this available?
825
FIND_LIBRARY(X11_Xxf86vmode_LIB Xxf86vm ${X11_LIB_SEARCH_PATH})
826
mark_as_advanced(X11_Xxf86vmode_LIB)
827
if(X11_Xxf86vmode_LIB)
828
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xxf86vmode_LIB}")
830
set(WITH_X11_XF86VMODE OFF)
835
if(CMAKE_SYSTEM_NAME MATCHES "Linux")
836
if(NOT WITH_PYTHON_MODULE)
837
# BSD's dont use libdl.so
838
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -ldl")
839
# binreloc is linux only
840
set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include)
841
set(WITH_BINRELOC ON)
845
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -pthread")
847
# lfs on glibc, all compilers should use
848
add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
851
if(CMAKE_COMPILER_IS_GNUCC)
852
set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
853
# CLang is the same as GCC for now.
854
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
855
set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
857
elseif(CMAKE_CXX_COMPILER_ID MATCHES "SunPro")
858
set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
861
elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
862
# think these next two are broken
863
find_program(XIAR xiar)
865
set(CMAKE_AR "${XIAR}")
867
mark_as_advanced(XIAR)
869
find_program(XILD xild)
871
set(CMAKE_LINKER "${XILD}")
873
mark_as_advanced(XILD)
875
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
876
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
878
# set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
879
set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
880
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
885
# this file is included anyway when building under Windows with cl.exe
886
# include(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)
888
if(CMAKE_COMPILER_IS_GNUCC)
889
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
890
INCLUDE (CheckCSourceCompiles)
891
# Setup 64bit and 64bit windows systems
892
CHECK_C_SOURCE_COMPILES("
901
message("Compiling for 64 bit with MinGW-w64.")
902
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
905
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
907
# Setup 64bit and 64bit windows systems
909
message("64 bit compiler detected.")
910
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64)
914
add_definitions(-DWIN32)
916
set(JPEG "${LIBDIR}/jpeg")
917
set(JPEG_INCLUDE_DIR "${JPEG}/include")
918
set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
920
set(WINTAB_INC ${LIBDIR}/wintab/include)
923
set(OPENAL ${LIBDIR}/openal)
924
set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
925
set(OPENAL_LIBRARY wrap_oal)
926
set(OPENAL_LIBPATH ${OPENAL}/lib)
929
if(WITH_CODEC_SNDFILE)
930
set(SNDFILE ${LIBDIR}/sndfile)
931
set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
932
set(SNDFILE_LIBRARIES libsndfile-1)
933
set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
937
set(SDL ${LIBDIR}/sdl)
938
set(SDL_INCLUDE_DIR ${SDL}/include)
940
set(SDL_LIBPATH ${SDL}/lib)
943
if(WITH_CODEC_QUICKTIME)
944
set(QUICKTIME ${LIBDIR}/QTDevWin)
945
set(QUICKTIME_INCLUDE_DIRS ${QUICKTIME}/CIncludes)
946
set(QUICKTIME_LIBRARIES qtmlClient)
947
set(QUICKTIME_LIBPATH ${QUICKTIME}/Libraries)
950
if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
951
add_definitions(-D__SSE__ -D__MMX__)
955
set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
957
find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
958
find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
959
find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
960
list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
961
find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
962
find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
964
if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
967
message(STATUS "OSL not found")
972
set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi)
974
add_definitions(/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_CONSOLE /D_LIB)
976
set(CMAKE_CXX_FLAGS "/nologo /J /Gd /EHsc" CACHE STRING "MSVC MT C++ flags " FORCE)
977
set(CMAKE_C_FLAGS "/nologo /J /Gd" CACHE STRING "MSVC MT C++ flags " FORCE)
980
set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
982
set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
984
set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE)
985
set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE)
986
set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE)
988
set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
990
set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
992
set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT" CACHE STRING "MSVC MT flags " FORCE)
993
set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /MT" CACHE STRING "MSVC MT flags " FORCE)
994
set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi" CACHE STRING "MSVC MT flags " FORCE)
996
# most msvc warnings are C & C++
997
set(_WARNINGS "/W3 /wd4018 /wd4244 /wd4305 /wd4800 /wd4181 /wd4065 /wd4267 /we4013 /wd4200")
998
set(C_WARNINGS "${_WARNINGS}")
999
set(CXX_WARNINGS "${_WARNINGS}")
1002
if(WITH_MOD_CLOTH_ELTOPO)
1003
set(LAPACK ${LIBDIR}/lapack)
1004
# set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
1005
set(LAPACK_LIBPATH ${LAPACK}/lib)
1006
set(LAPACK_LIBRARIES
1007
${LIBDIR}/lapack/lib/libf2c.lib
1008
${LIBDIR}/lapack/lib/clapack_nowrap.lib
1009
${LIBDIR}/lapack/lib/BLAS_nowrap.lib
1013
set(PNG_LIBRARIES libpng)
1014
set(JPEG_LIBRARIES libjpeg)
1016
set(PNG "${LIBDIR}/png")
1017
set(PNG_INCLUDE_DIR "${PNG}/include")
1018
set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1020
set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
1022
set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz.lib)
1024
set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/zlib.lib)
1027
set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
1028
set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
1030
set(FREETYPE ${LIBDIR}/freetype)
1031
set(FREETYPE_INCLUDE_DIRS
1032
${LIBDIR}/freetype/include
1033
${LIBDIR}/freetype/include/freetype2
1035
set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
1038
set(FFTW3 ${LIBDIR}/fftw3)
1039
set(FFTW3_LIBRARIES libfftw)
1040
set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1041
set(FFTW3_LIBPATH ${FFTW3}/lib)
1044
if(WITH_OPENCOLLADA)
1045
set(OPENCOLLADA ${LIBDIR}/opencollada)
1047
set(OPENCOLLADA_INCLUDE_DIRS
1048
${LIBDIR}/opencollada/include/COLLADAStreamWriter/include
1049
${LIBDIR}/opencollada/include/COLLADABaseUtils/include
1050
${LIBDIR}/opencollada/include/COLLADAFramework/include
1051
${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader/include
1052
${LIBDIR}/opencollada/include/GeneratedSaxParser/include
1054
set_lib_path(OPENCOLLADA_LIBPATH "opencollada")
1056
set(OPENCOLLADA_LIBRARIES
1057
${OPENCOLLADA_LIBPATH}/lib/OpenCOLLADASaxFrameworkLoader.lib
1058
${OPENCOLLADA_LIBPATH}/lib/OpenCOLLADAFramework.lib
1059
${OPENCOLLADA_LIBPATH}/lib/OpenCOLLADABaseUtils.lib
1060
${OPENCOLLADA_LIBPATH}/lib/OpenCOLLADAStreamWriter.lib
1061
${OPENCOLLADA_LIBPATH}/lib/MathMLSolver.lib
1062
${OPENCOLLADA_LIBPATH}/lib/GeneratedSaxParser.lib
1063
${OPENCOLLADA_LIBPATH}/lib/xml2.lib
1064
${OPENCOLLADA_LIBPATH}/lib/buffer.lib
1065
${OPENCOLLADA_LIBPATH}/lib/ftoa.lib
1066
${OPENCOLLADA_LIBPATH}/lib/UTF.lib
1069
${OPENCOLLADA_LIBPATH}/lib/pcre.lib
1072
unset(OPENCOLLADA_LIBPATH)
1076
if(WITH_CODEC_FFMPEG)
1077
set(FFMPEG_INCLUDE_DIRS
1078
${LIBDIR}/ffmpeg/include
1079
${LIBDIR}/ffmpeg/include/msvc
1081
set(FFMPEG_LIBRARIES
1082
${LIBDIR}/ffmpeg/lib/avcodec-53.lib
1083
${LIBDIR}/ffmpeg/lib/avformat-53.lib
1084
${LIBDIR}/ffmpeg/lib/avdevice-53.lib
1085
${LIBDIR}/ffmpeg/lib/avutil-51.lib
1086
${LIBDIR}/ffmpeg/lib/swscale-2.lib
1090
if(WITH_IMAGE_OPENEXR)
1091
set_lib_path(OPENEXR "openexr")
1092
set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1093
set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1094
set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1095
set(OPENEXR_LIBRARIES
1096
${OPENEXR_LIBPATH}/Iex.lib
1097
${OPENEXR_LIBPATH}/Half.lib
1098
${OPENEXR_LIBPATH}/IlmImf.lib
1099
${OPENEXR_LIBPATH}/Imath.lib
1100
${OPENEXR_LIBPATH}/IlmThread.lib
1105
set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
1106
set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
1110
set(JACK_INCLUDE_DIRS
1111
${LIBDIR}/jack/include/jack
1112
${LIBDIR}/jack/include
1114
set(JACK_LIBRARIES ${LIBDIR}/jack/lib/libjack.lib)
1118
# normally cached but not since we include them with blender
1120
set(PYTHON_VERSION 3.3) # CACHE STRING)
1122
set(PYTHON_VERSION 3.3) # CACHE STRING)
1125
set_lib_path(PYTHON "python")
1126
STRING(REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${PYTHON_VERSION})
1127
# Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs
1128
set(PYTHON_LIBRARY ${LIBDIR}/python/lib/python${_PYTHON_VERSION_NO_DOTS}.lib)
1129
# set(PYTHON_LIBRARY ${PYTHON}/lib/python${_PYTHON_VERSION_NO_DOTS}.lib) #CACHE FILEPATH
1130
unset(_PYTHON_VERSION_NO_DOTS)
1132
#Shared includes for both vc2008 and vc2010
1133
set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION})
1136
set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1137
set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1141
set(BOOST ${LIBDIR}/boost)
1142
set(BOOST_INCLUDE_DIR ${BOOST}/include)
1144
set(BOOST_LIBPATH ${BOOST}/vc2010/lib)
1145
set(BOOST_POSTFIX "vc100-mt-s-1_49.lib")
1146
set(BOOST_DEBUG_POSTFIX "vc100-mt-sgd-1_49.lib")
1148
set(BOOST_LIBPATH ${BOOST}/lib)
1149
set(BOOST_POSTFIX "vc90-mt-s-1_49.lib")
1150
set(BOOST_DEBUG_POSTFIX "vc90-mt-sgd-1_49.lib")
1153
optimized libboost_date_time-${BOOST_POSTFIX} optimized libboost_filesystem-${BOOST_POSTFIX}
1154
optimized libboost_regex-${BOOST_POSTFIX}
1155
optimized libboost_system-${BOOST_POSTFIX} optimized libboost_thread-${BOOST_POSTFIX}
1156
debug libboost_date_time-${BOOST_DEBUG_POSTFIX} debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
1157
debug libboost_regex-${BOOST_DEBUG_POSTFIX}
1158
debug libboost_system-${BOOST_DEBUG_POSTFIX} debug libboost_thread-${BOOST_DEBUG_POSTFIX})
1160
set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1161
optimized libboost_wave-${BOOST_POSTFIX}
1162
debug libboost_wave-${BOOST_DEBUG_POSTFIX})
1164
if(WITH_INTERNATIONAL)
1165
set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1166
optimized libboost_locale-${BOOST_POSTFIX}
1167
debug libboost_locale-${BOOST_DEBUG_POSTFIX})
1169
set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
1172
if(WITH_OPENIMAGEIO)
1173
set(OPENIMAGEIO ${LIBDIR}/openimageio)
1174
set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1175
set(OPENIMAGEIO_LIBRARIES optimized OpenImageIO debug OpenImageIO_d)
1176
set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1177
set(OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0")
1181
set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1182
file(GLOB LLVM_LIBRARY ${LLVM_DIRECTORY}/lib/*.lib)
1183
set(LLVM_STATIC YES)
1186
if(WITH_OPENCOLORIO)
1187
set(OPENCOLORIO ${LIBDIR}/opencolorio)
1188
set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1189
set(OPENCOLORIO_LIBRARIES OpenColorIO)
1190
set(OPENCOLORIO_LIBPATH ${LIBDIR}/opencolorio/lib)
1191
set(OPENCOLORIO_DEFINITIONS)
1195
set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
1197
# MSVC only, Mingw doesnt need
1199
set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
1201
set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
1204
set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
1206
# used in many places so include globally, like OpenGL
1207
blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
1209
elseif(CMAKE_COMPILER_IS_GNUCC)
1210
# keep GCC specific stuff here
1211
set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi")
1212
set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
1215
#We need to take care though not to have these on debug builds because they may play funky with gdb
1216
if(CMAKE_BUILD_TYPE MATCHES "Release")
1217
set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmmx -ftree-vectorize")
1219
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
1220
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread")
1222
add_definitions(-DFREE_WINDOWS64 -DMS_WIN64)
1223
#Turn off OpenMP since it causes crashes on render for subsurfed/multiresolution meshes
1224
set(WITH_OPENMP OFF)
1227
add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
1229
add_definitions(-DFREE_WINDOWS)
1231
set(PNG "${LIBDIR}/png")
1232
set(PNG_INCLUDE_DIR "${PNG}/include")
1233
set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
1236
set(JPEG_LIBRARIES jpeg)
1238
set(JPEG_LIBRARIES libjpeg)
1240
set(PNG_LIBRARIES png)
1242
set(ZLIB ${LIBDIR}/zlib)
1243
set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
1244
set(ZLIB_LIBPATH ${ZLIB}/lib)
1245
set(ZLIB_LIBRARIES z)
1247
#comes with own pthread library
1248
if(NOT WITH_MINGW64)
1249
set(PTHREADS ${LIBDIR}/pthreads)
1250
#set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
1251
set(PTHREADS_LIBPATH ${PTHREADS}/lib)
1252
set(PTHREADS_LIBRARIES pthreadGC2)
1255
set(FREETYPE ${LIBDIR}/freetype)
1256
set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1257
set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1258
set(FREETYPE_LIBRARY freetype)
1261
set(FFTW3 ${LIBDIR}/fftw3)
1262
set(FFTW3_LIBRARIES fftw3)
1263
set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1264
set(FFTW3_LIBPATH ${FFTW3}/lib)
1267
if(WITH_OPENCOLLADA)
1268
set(OPENCOLLADA ${LIBDIR}/opencollada)
1269
set(OPENCOLLADA_INCLUDE_DIRS
1270
${LIBDIR}/opencollada/include/COLLADAStreamWriter/include
1271
${LIBDIR}/opencollada/include/COLLADABaseUtils/include
1272
${LIBDIR}/opencollada/include/COLLADAFramework/include
1273
${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader/include
1274
${LIBDIR}/opencollada/include/GeneratedSaxParser/include
1276
set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib ${OPENCOLLADA}/lib)
1278
set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre buffer ftoa xml)
1280
set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver expat pcre buffer ftoa)
1282
set(PCRE_LIBRARIES pcre)
1285
if(WITH_CODEC_FFMPEG)
1286
set(FFMPEG ${LIBDIR}/ffmpeg)
1287
set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1289
set(FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll)
1291
set(FFMPEG_LIBRARIES avcodec-53 avformat-53 avdevice-53 avutil-51 swscale-2)
1293
set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1296
if(WITH_IMAGE_OPENEXR)
1297
set(OPENEXR ${LIBDIR}/openexr)
1298
set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1299
set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1300
set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex)
1301
set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1305
set(TIFF ${LIBDIR}/tiff)
1306
set(TIFF_LIBRARY tiff)
1307
set(TIFF_INCLUDE_DIR ${TIFF}/include)
1308
set(TIFF_LIBPATH ${TIFF}/lib)
1312
set(JACK ${LIBDIR}/jack)
1313
set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include)
1314
set(JACK_LIBRARIES jack)
1315
set(JACK_LIBPATH ${JACK}/lib)
1317
# TODO, gives linking errors, force off
1322
# normally cached but not since we include them with blender
1323
set(PYTHON_VERSION 3.3) # CACHE STRING)
1324
set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}") # CACHE PATH)
1325
set(PYTHON_LIBRARY "${LIBDIR}/python/lib/python33mw.lib") # CACHE FILEPATH)
1328
set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1329
set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1333
set(BOOST ${LIBDIR}/boost)
1334
set(BOOST_INCLUDE_DIR ${BOOST}/include)
1336
set(BOOST_POSTFIX "mgw47-mt-s-1_49")
1337
set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
1339
set(BOOST_POSTFIX "mgw46-mt-s-1_49")
1340
set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49")
1343
optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX}
1344
boost_regex-${BOOST_POSTFIX}
1345
boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX}
1346
debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
1347
boost_regex-${BOOST_DEBUG_POSTFIX}
1348
boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
1349
if(WITH_INTERNATIONAL)
1350
set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1351
optimized boost_locale-${BOOST_POSTFIX}
1352
debug boost_locale-${BOOST_DEBUG_POSTFIX})
1355
set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
1356
optimized boost_wave-${BOOST_POSTFIX}
1357
debug boost_wave-${BOOST_DEBUG_POSTFIX})
1359
set(BOOST_LIBPATH ${BOOST}/lib)
1360
set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
1363
if(WITH_OPENIMAGEIO)
1364
set(OPENIMAGEIO ${LIBDIR}/openimageio)
1365
set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1366
set(OPENIMAGEIO_LIBRARIES OpenImageIO)
1367
set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
1368
set(OPENIMAGEIO_DEFINITIONS)
1372
set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1373
set(LLVM_LIB_DIR ${LLVM_DIRECTORY}/lib)
1374
#Explicitly set llvm lib order.
1375
#---- WARNING ON GCC ORDER OF LIBS IS IMPORTANT, DO NOT CHANGE! ---------
1376
set(LLVM_LIBRARY LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMAnalysis LLVMArchive
1377
LLVMAsmParser LLVMAsmPrinter
1378
LLVMBitReader LLVMBitWriter
1379
LLVMDebugInfo LLVMExecutionEngine
1380
LLVMInstCombine LLVMInstrumentation
1381
LLVMInterpreter LLVMJIT
1383
LLVMMCDisassembler LLVMMCJIT
1384
LLVMMCParser LLVMObject
1387
LLVMTableGen LLVMTarget
1388
LLVMTransformUtils LLVMVectorize
1389
LLVMX86AsmParser LLVMX86AsmPrinter
1390
LLVMX86CodeGen LLVMX86Desc
1391
LLVMX86Disassembler LLVMX86Info
1392
LLVMX86Utils LLVMipa
1394
#imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
1395
set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -limagehlp")
1396
set(LLVM_STATIC YES)
1399
if(WITH_OPENCOLORIO)
1400
set(OPENCOLORIO ${LIBDIR}/opencolorio)
1401
set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1402
set(OPENCOLORIO_LIBRARIES OpenColorIO)
1403
set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1404
set(OPENCOLORIO_DEFINITIONS)
1407
set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
1409
## DISABLE - causes linking errors
1410
## for re-distribution, so users dont need mingw installed
1411
# set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
1417
if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5")
1418
set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/10.7
1422
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
1424
if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1425
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
1427
set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
1433
find_package(OpenAL)
1436
set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
1438
set(WITH_OPENAL OFF)
1443
find_library(JACK_FRAMEWORK
1446
set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
1447
if(NOT JACK_FRAMEWORK)
1452
if(WITH_CODEC_SNDFILE)
1453
set(SNDFILE ${LIBDIR}/sndfile)
1454
set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
1455
set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
1456
set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib) # TODO, deprecate
1460
if(NOT WITH_PYTHON_MODULE)
1461
# we use precompiled libraries for py 3.3 and up by default
1463
# normally cached but not since we include them with blender
1464
set(PYTHON_VERSION 3.3)
1465
set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m")
1466
# set(PYTHON_BINARY "${LIBDIR}/python/bin/python${PYTHON_VERSION}") # not used yet
1467
set(PYTHON_LIBRARY python${PYTHON_VERSION}m)
1468
set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
1469
# set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
1471
# module must be compiled against Python framework
1473
# normally cached but not since we include them with blender
1474
set(PYTHON_VERSION 3.3)
1475
set(PYTHON_INCLUDE_DIR "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}m")
1476
set(PYTHON_BINARY "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}")
1477
#set(PYTHON_LIBRARY python${PYTHON_VERSION})
1478
set(PYTHON_LIBPATH "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m")
1479
#set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled
1483
set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
1484
set(PYTHON_LIBRARIES "${PYTHON_LIBRARY}")
1488
set(FFTW3 ${LIBDIR}/fftw3)
1489
set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
1490
set(FFTW3_LIBRARIES fftw3)
1491
set(FFTW3_LIBPATH ${FFTW3}/lib)
1494
set(PNG_LIBRARIES png)
1495
set(JPEG_LIBRARIES jpeg)
1498
set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
1499
set(ZLIB_LIBRARIES z bz2)
1501
set(FREETYPE ${LIBDIR}/freetype)
1502
set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
1503
set(FREETYPE_LIBPATH ${FREETYPE}/lib)
1504
set(FREETYPE_LIBRARY freetype)
1506
if(WITH_IMAGE_OPENEXR)
1507
set(OPENEXR ${LIBDIR}/openexr)
1508
set(OPENEXR_INCLUDE_DIR ${OPENEXR}/include)
1509
set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
1510
set(OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread)
1511
set(OPENEXR_LIBPATH ${OPENEXR}/lib)
1514
if(WITH_CODEC_FFMPEG)
1515
set(FFMPEG ${LIBDIR}/ffmpeg)
1516
set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
1517
set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
1518
set(FFMPEG_LIBPATH ${FFMPEG}/lib)
1519
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
1522
find_library(SYSTEMSTUBS_LIBRARY
1527
mark_as_advanced(SYSTEMSTUBS_LIBRARY)
1528
if(SYSTEMSTUBS_LIBRARY)
1529
set(PLATFORM_LINKLIBS stdc++ SystemStubs)
1531
set(PLATFORM_LINKLIBS stdc++)
1535
set(PLATFORM_CFLAGS "-pipe -funsigned-char -DGHOST_COCOA")
1536
set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
1538
set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT")
1539
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
1540
if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
1541
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
1542
#libSDL still needs 32bit carbon quicktime
1544
elseif(WITH_CODEC_QUICKTIME)
1545
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
1548
# XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
1549
# ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
1551
# This thread it *should* work and check the framework - campbell
1552
# http://www.cmake.org/pipermail/cmake/2005-December/007740.html
1553
find_library(3DCONNEXION_CLIENT_FRAMEWORK
1554
NAMES 3DconnexionClient
1556
if(NOT 3DCONNEXION_CLIENT_FRAMEWORK)
1557
set(WITH_INPUT_NDOF OFF)
1561
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework 3DconnexionClient")
1562
set(NDOF_INCLUDE_DIRS /Library/Frameworks/3DconnexionClient.framework/Headers )
1567
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -weak_framework jackmp")
1571
set(PLATFORM_CFLAGS "-pipe -funsigned-char")
1572
set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime")
1573
set(WITH_INPUT_NDOF OFF) # unsupported
1576
if(WITH_PYTHON_MODULE)
1577
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/python")# force cmake to link right framework
1580
if(WITH_OPENCOLLADA)
1581
set(OPENCOLLADA ${LIBDIR}/opencollada)
1583
set(OPENCOLLADA_INCLUDE_DIRS
1584
${LIBDIR}/opencollada/include/COLLADAStreamWriter
1585
${LIBDIR}/opencollada/include/COLLADABaseUtils
1586
${LIBDIR}/opencollada/include/COLLADAFramework
1587
${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
1588
${LIBDIR}/opencollada/include/GeneratedSaxParser
1591
set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
1592
set(OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lUTF -lxml2 -lbuffer -lftoa")
1593
#pcre is bundled with openCollada
1594
#set(PCRE ${LIBDIR}/pcre)
1595
#set(PCRE_LIBPATH ${PCRE}/lib)
1596
set(PCRE_LIBRARIES pcre)
1598
#set(EXPAT ${LIBDIR}/expat)
1599
#set(EXPAT_LIBPATH ${EXPAT}/lib)
1604
set(SDL ${LIBDIR}/sdl)
1605
set(SDL_INCLUDE_DIR ${SDL}/include)
1606
set(SDL_LIBRARY SDL)
1607
set(SDL_LIBPATH ${SDL}/lib)
1610
set(PNG "${LIBDIR}/png")
1611
set(PNG_INCLUDE_DIR "${PNG}/include")
1612
set(PNG_LIBPATH ${PNG}/lib)
1614
set(JPEG "${LIBDIR}/jpeg")
1615
set(JPEG_INCLUDE_DIR "${JPEG}/include")
1616
set(JPEG_LIBPATH ${JPEG}/lib)
1619
set(TIFF ${LIBDIR}/tiff)
1620
set(TIFF_INCLUDE_DIR ${TIFF}/include)
1621
set(TIFF_LIBRARY tiff)
1622
set(TIFF_LIBPATH ${TIFF}/lib)
1625
if (WITH_INPUT_NDOF)
1626
# linker needs "-weak_framework 3DconnexionClient"
1630
set(BOOST ${LIBDIR}/boost)
1631
set(BOOST_INCLUDE_DIR ${BOOST}/include)
1632
set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt boost_wave-mt)
1633
if (WITH_INTERNATIONAL)
1634
list(APPEND BOOST_LIBRARIES boost_locale-mt)
1635
set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv") # boost_locale needs it !
1637
set(BOOST_LIBPATH ${BOOST}/lib)
1638
set(BOOST_DEFINITIONS)
1641
if(WITH_OPENIMAGEIO)
1642
set(OPENIMAGEIO ${LIBDIR}/openimageio)
1643
set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
1644
set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO}/lib/libOpenImageIO.a ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
1645
set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
1646
set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
1649
if(WITH_OPENCOLORIO)
1650
set(OPENCOLORIO ${LIBDIR}/opencolorio)
1651
set(OPENCOLORIO_INCLUDE_DIRS ${OPENCOLORIO}/include)
1652
set(OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp)
1653
set(OPENCOLORIO_LIBPATH ${OPENCOLORIO}/lib)
1654
set(OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD")
1658
set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH "Path to the LLVM installation")
1659
set(LLVM_VERSION "3.1" CACHE STRING "Version of LLVM to use")
1660
set(LLVM_STATIC YES)
1661
if(EXISTS "${LLVM_DIRECTORY}/bin/llvm-config")
1662
set(LLVM_CONFIG "${LLVM_DIRECTORY}/bin/llvm-config")
1664
set(LLVM_CONFIG llvm-config)
1666
execute_process(COMMAND ${LLVM_CONFIG} --version
1667
OUTPUT_VARIABLE LLVM_VERSION
1668
OUTPUT_STRIP_TRAILING_WHITESPACE)
1669
execute_process(COMMAND ${LLVM_CONFIG} --prefix
1670
OUTPUT_VARIABLE LLVM_DIRECTORY
1671
OUTPUT_STRIP_TRAILING_WHITESPACE)
1672
execute_process(COMMAND ${LLVM_CONFIG} --libdir
1673
OUTPUT_VARIABLE LLVM_LIB_DIR
1674
OUTPUT_STRIP_TRAILING_WHITESPACE)
1675
find_library(LLVM_LIBRARY
1676
NAMES LLVMAnalysis # first of a whole bunch of libs to get
1677
PATHS ${LLVM_LIB_DIR})
1679
if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIB_DIR)
1681
# if static LLVM libraries were requested, use llvm-config to generate
1682
# the list of what libraries we need, and substitute that in the right
1683
# way for LLVM_LIBRARY.
1684
execute_process(COMMAND ${LLVM_CONFIG} --libfiles
1685
OUTPUT_VARIABLE LLVM_LIBRARY
1686
OUTPUT_STRIP_TRAILING_WHITESPACE)
1687
string(REPLACE " " ";" LLVM_LIBRARY ${LLVM_LIBRARY})
1690
message(FATAL_ERROR "LLVM not found.")
1695
set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
1697
find_library(OSL_LIB_EXEC NAMES oslexec PATHS ${CYCLES_OSL}/lib)
1698
find_library(OSL_LIB_COMP NAMES oslcomp PATHS ${CYCLES_OSL}/lib)
1699
find_library(OSL_LIB_QUERY NAMES oslquery PATHS ${CYCLES_OSL}/lib)
1700
# WARNING! depends on correct order of OSL libs linking
1701
list(APPEND OSL_LIBRARIES ${OSL_LIB_COMP} -force_load ${OSL_LIB_EXEC} ${OSL_LIB_QUERY})
1702
find_path(OSL_INCLUDES OSL/oslclosure.h PATHS ${CYCLES_OSL}/include)
1703
find_program(OSL_COMPILER NAMES oslc PATHS ${CYCLES_OSL}/bin)
1705
if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
1708
message(STATUS "OSL not found")
1712
set(EXETYPE MACOSX_BUNDLE)
1714
set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
1715
set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
1716
if(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386")
1717
set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
1718
set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3")
1719
if(NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
1720
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
1721
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller")
1724
set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
1725
set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
1729
#-----------------------------------------------------------------------------
1733
if(NOT EXISTS "${LIBDIR}/")
1734
message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'")
1738
if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
1739
message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
1743
if(NOT WITH_OPENIMAGEIO)
1744
message(FATAL_ERROR "Cycles reqires WITH_OPENIMAGEIO, the library may not have been found. Configure OIIO or disable WITH_CYCLES")
1747
message(FATAL_ERROR "Cycles reqires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES")
1752
message(FATAL_ERROR "Cycles OSL reqires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL")
1757
if(WITH_INTERNATIONAL)
1759
message(FATAL_ERROR "Internationalization reqires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL")
1763
# See TEST_SSE_SUPPORT() for how this is defined.
1765
if(WITH_RAYOPTIMIZATION)
1766
if(SUPPORT_SSE_BUILD)
1767
set(PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}")
1768
add_definitions(-D__SSE__ -D__MMX__)
1770
if(SUPPORT_SSE2_BUILD)
1771
set(PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}")
1772
add_definitions(-D__SSE2__)
1773
if(NOT SUPPORT_SSE_BUILD) # dont double up
1774
add_definitions(-D__MMX__)
1780
# set the endian define
1782
# for some reason this fails on msvc
1783
add_definitions(-D__LITTLE_ENDIAN__)
1785
# OSX-Note: as we do crosscompiling with specific set architecture,
1786
# endianess-detection and autosetting is counterproductive
1787
# so we just set endianess according CMAKE_OSX_ARCHITECTURES
1789
elseif(CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64)
1790
add_definitions(-D__LITTLE_ENDIAN__)
1791
elseif(CMAKE_OSX_ARCHITECTURES MATCHES ppc OR CMAKE_OSX_ARCHITECTURES MATCHES ppc64)
1792
add_definitions(-D__BIG_ENDIAN__)
1795
include(TestBigEndian)
1796
test_big_endian(_SYSTEM_BIG_ENDIAN)
1797
if(_SYSTEM_BIG_ENDIAN)
1798
add_definitions(-D__BIG_ENDIAN__)
1800
add_definitions(-D__LITTLE_ENDIAN__)
1802
unset(_SYSTEM_BIG_ENDIAN)
1806
if(WITH_IMAGE_OPENJPEG)
1807
if(WITH_SYSTEM_OPENJPEG)
1810
set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg")
1811
add_definitions(-DOPJ_STATIC)
1815
if(WITH_IMAGE_REDCODE)
1816
set(REDCODE ${CMAKE_SOURCE_DIR}/extern)
1817
set(REDCODE_INC ${REDCODE})
1820
#-----------------------------------------------------------------------------
1824
set(GECKO_DIR "${CMAKE_SOURCE_DIR}/../gecko-sdk/" CACHE PATH "Gecko SDK path")
1825
set(WEBPLUGIN_SANDBOX_MODE "apparmor" CACHE STRING "WEB Plugin sandbox mode, can be apparmor, privsep, none")
1831
#-----------------------------------------------------------------------------
1833
find_package(OpenGL)
1834
blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}")
1835
# unset(OPENGL_LIBRARIES CACHE) # not compat with older cmake
1836
# unset(OPENGL_xmesa_INCLUDE_DIR CACHE) # not compat with older cmake
1838
#-----------------------------------------------------------------------------
1841
find_package(OpenMP)
1843
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
1844
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
1846
if(APPLE AND ${CMAKE_GENERATOR} MATCHES "Xcode")
1847
set(CMAKE_XCODE_ATTRIBUTE_ENABLE_OPENMP_SUPPORT "YES")
1850
set(WITH_OPENMP OFF)
1859
#-----------------------------------------------------------------------------
1862
if(WITH_SYSTEM_GLEW)
1866
message(FATAL_ERROR "GLEW is required to build blender, install it or disable WITH_SYSTEM_GLEW")
1874
# set(GLEW_LIBRARY "") # unused
1875
set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
1879
#-----------------------------------------------------------------------------
1882
if(WITH_BULLET AND WITH_SYSTEM_BULLET)
1883
find_package(Bullet)
1884
if(NOT BULLET_FOUND)
1885
set(WITH_BULLET OFF)
1888
set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
1889
# set(BULLET_LIBRARIES "")
1892
#-----------------------------------------------------------------------------
1895
if(WITH_PYTHON_MODULE)
1896
add_definitions(-DPy_ENABLE_SHARED)
1899
#-----------------------------------------------------------------------------
1900
# Extra compile flags
1902
if(CMAKE_COMPILER_IS_GNUCC)
1904
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
1905
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_CAST_ALIGN -Wcast-align)
1906
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
1907
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
1908
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
1909
# system headers sometimes do this, disable for now, was: -Werror=strict-prototypes
1910
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
1911
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
1912
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
1913
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
1914
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
1915
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
1916
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_WRITE_STRINGS -Wwrite-strings)
1917
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_LOGICAL_OP -Wlogical-op)
1918
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNDEF -Wundef)
1919
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
1920
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_NULL -Wnonnull) # C only
1921
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
1922
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
1924
# gcc 4.2 gives annoying warnings on every file with this
1925
if (NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
1926
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNINITIALIZED -Wuninitialized)
1929
# disable because it gives warnings for printf() & friends.
1930
# ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_DOUBLE_PROMOTION -Wdouble-promotion -Wno-error=double-promotion)
1933
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
1936
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
1937
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
1938
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
1939
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_LOGICAL_OP -Wlogical-op)
1940
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_INIT_SELF -Winit-self) # needs -Wuninitialized
1941
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs)
1942
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero)
1944
# gcc 4.2 gives annoying warnings on every file with this
1945
if (NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3")
1946
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNINITIALIZED -Wuninitialized)
1949
# causes too many warnings
1951
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEF -Wundef)
1952
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_MISSING_DECLARATIONS -Wmissing-declarations)
1955
# flags to undo strict flags
1956
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
1957
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter)
1960
ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
1963
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
1965
# strange, clang complains these are not supported, but then yses them.
1966
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
1967
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
1968
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
1969
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
1970
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
1971
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes)
1972
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_MACROS -Wunused-macros)
1974
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
1975
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare)
1976
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
1977
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
1978
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.
1979
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
1980
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_MACROS -Wunused-macros)
1982
elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
1984
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
1985
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
1986
ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
1988
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
1989
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
1990
ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
1992
# disable numbered, false positives
1993
set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556")
1994
set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556")
1998
# MSVC2010 fails to links C++ libs right
2000
if(WITH_OPENCOLLADA)
2001
message(WARNING "MSVC 2010 does not support OpenCollada, disabling WITH_OPENCOLLADA. To enable support use Use MSVC 2008")
2005
# ensure python header is found since detection can fail, this could happen
2006
# with _any_ library but since we used a fixed python version this tends to
2007
# be most problematic.
2009
if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/Python.h")
2010
message(FATAL_ERROR "Missing: \"${PYTHON_INCLUDE_DIR}/Python.h\",\n"
2011
"Set the cache entry 'PYTHON_INCLUDE_DIR' to point "
2012
"to a valid python include path. Containing "
2013
"Python.h for python version \"${PYTHON_VERSION}\"")
2016
if(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
2018
# -- disabled until we make numpy bundled with blender - campbell
2019
if((NOT ${PYTHON_NUMPY_PATH} STREQUAL "") AND (NOT ${PYTHON_NUMPY_PATH} MATCHES NOTFOUND))
2020
# if(NOT EXISTS "${PYTHON_NUMPY_PATH}/numpy")
2021
# message(WARNING "PYTHON_NUMPY_PATH is invalid, numpy not found in '${PYTHON_NUMPY_PATH}' "
2022
# "WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
2023
# set(WITH_PYTHON_INSTALL_NUMPY OFF)
2025
# not set, so initialize
2027
string(REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}")
2028
list(GET _PY_VER_SPLIT 0 _PY_VER_MAJOR)
2031
unset(PYTHON_NUMPY_PATH CACHE)
2032
find_path(PYTHON_NUMPY_PATH
2036
"${PYTHON_LIBPATH}/python${PYTHON_VERSION}/"
2037
"${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/"
2044
if(NOT EXISTS "${PYTHON_NUMPY_PATH}")
2045
message(WARNING "'numpy' path could not be found in:\n"
2046
"'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/site-packages/numpy', "
2047
"'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/site-packages/numpy', "
2048
"'${PYTHON_LIBPATH}/python${PYTHON_VERSION}/dist-packages/numpy', "
2049
"'${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/dist-packages/numpy', "
2050
"WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
2051
set(WITH_PYTHON_INSTALL_NUMPY OFF)
2053
message(STATUS "numpy found at '${PYTHON_NUMPY_PATH}'")
2056
unset(_PY_VER_SPLIT)
2057
unset(_PY_VER_MAJOR)
2062
# Include warnings first, so its possible to disable them with user defined flags
2063
# eg: -Wno-uninitialized
2064
set(CMAKE_C_FLAGS "${C_WARNINGS} ${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}")
2065
set(CMAKE_CXX_FLAGS "${CXX_WARNINGS} ${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}")
2067
#-------------------------------------------------------------------------------
2070
# better not set includes here but this debugging option is off by default.
2071
if(WITH_CXX_GUARDEDALLOC)
2072
include_directories(${CMAKE_SOURCE_DIR}/intern/guardedalloc)
2073
add_definitions(-DWITH_CXX_GUARDEDALLOC)
2076
if(WITH_ASSERT_ABORT)
2077
add_definitions(-DWITH_ASSERT_ABORT)
2080
# message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
2081
# message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
2083
#-----------------------------------------------------------------------------
2086
add_subdirectory(source)
2087
add_subdirectory(intern)
2088
add_subdirectory(extern)
2091
#-----------------------------------------------------------------------------
2092
# Blender Application
2094
add_subdirectory(source/creator)
2098
#-----------------------------------------------------------------------------
2101
add_subdirectory(source/blenderplayer)
2104
#-----------------------------------------------------------------------------
2105
# CPack for generating packages
2106
include(build_files/cmake/packaging.cmake)
2109
#-----------------------------------------------------------------------------
2110
# Print Final Configuration
2113
set(_config_msg "\n* Blender Configuration *")
2114
macro(info_cfg_option
2116
set(_msg " * ${_setting}")
2117
string(LENGTH "${_msg}" _len)
2118
while("32" GREATER "${_len}")
2119
set(_msg "${_msg} ")
2120
math(EXPR _len "${_len} + 1")
2123
set(_config_msg "${_config_msg}\n${_msg}${${_setting}}")
2128
set(_config_msg "${_config_msg}\n\n ${_text}")
2133
info_cfg_text("Build Options:")
2134
info_cfg_option(WITH_GAMEENGINE)
2135
info_cfg_option(WITH_PLAYER)
2136
info_cfg_option(WITH_BULLET)
2137
info_cfg_option(WITH_IK_SOLVER)
2138
info_cfg_option(WITH_IK_ITASC)
2139
info_cfg_option(WITH_OPENCOLLADA)
2140
info_cfg_option(WITH_FFTW3)
2141
info_cfg_option(WITH_INTERNATIONAL)
2142
info_cfg_option(WITH_INPUT_NDOF)
2143
info_cfg_option(WITH_CYCLES)
2144
info_cfg_option(WITH_OPENCOLORIO)
2146
info_cfg_text("Compiler Options:")
2147
info_cfg_option(WITH_BUILDINFO)
2148
info_cfg_option(WITH_OPENMP)
2149
info_cfg_option(WITH_RAYOPTIMIZATION)
2151
info_cfg_text("System Options:")
2152
info_cfg_option(WITH_INSTALL_PORTABLE)
2153
info_cfg_option(WITH_X11_XF86VMODE)
2154
info_cfg_option(WITH_X11_XINPUT)
2155
info_cfg_option(WITH_MEM_JEMALLOC)
2156
info_cfg_option(WITH_SYSTEM_GLEW)
2157
info_cfg_option(WITH_SYSTEM_OPENJPEG)
2159
info_cfg_text("Image Formats:")
2160
info_cfg_option(WITH_IMAGE_CINEON)
2161
info_cfg_option(WITH_IMAGE_DDS)
2162
info_cfg_option(WITH_IMAGE_HDR)
2163
info_cfg_option(WITH_IMAGE_OPENEXR)
2164
info_cfg_option(WITH_IMAGE_OPENJPEG)
2165
info_cfg_option(WITH_IMAGE_REDCODE)
2166
info_cfg_option(WITH_IMAGE_TIFF)
2168
info_cfg_text("Audio:")
2169
info_cfg_option(WITH_OPENAL)
2170
info_cfg_option(WITH_SDL)
2171
info_cfg_option(WITH_JACK)
2172
info_cfg_option(WITH_CODEC_AVI)
2173
info_cfg_option(WITH_CODEC_FFMPEG)
2174
info_cfg_option(WITH_CODEC_SNDFILE)
2176
info_cfg_text("Compression:")
2177
info_cfg_option(WITH_LZMA)
2178
info_cfg_option(WITH_LZO)
2180
info_cfg_text("Python:")
2181
info_cfg_option(WITH_PYTHON_INSTALL)
2182
info_cfg_option(WITH_PYTHON_INSTALL_NUMPY)
2183
info_cfg_option(WITH_PYTHON_MODULE)
2184
info_cfg_option(WITH_PYTHON_SAFETY)
2186
info_cfg_text("Modifiers:")
2187
info_cfg_option(WITH_MOD_BOOLEAN)
2188
info_cfg_option(WITH_MOD_REMESH)
2189
info_cfg_option(WITH_MOD_FLUID)
2190
info_cfg_option(WITH_MOD_OCEANSIM)
2193
message(STATUS "HAVE_STDBOOL_H = ${HAVE_STDBOOL_H}")
2197
message("${_config_msg}")