~ubuntu-branches/ubuntu/trusty/blender/trusty-proposed

« back to all changes in this revision

Viewing changes to .pc/0010-fix_FTBFS_on_non-linux_architectures.patch/CMakeLists.txt

  • Committer: Package Import Robot
  • Author(s): Matteo F. Vescovi
  • Date: 2013-08-14 10:43:49 UTC
  • mfrom: (14.2.19 sid)
  • Revision ID: package-import@ubuntu.com-20130814104349-t1d5mtwkphp12dyj
Tags: 2.68a-3
* Upload to unstable
* debian/: python3.3 Depends simplified
  - debian/control: python3.3 Depends dropped
    for blender-data package
  - 0001-blender_thumbnailer.patch refreshed
* debian/control: libavcodec b-dep versioning dropped

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# ***** BEGIN GPL LICENSE BLOCK *****
 
2
#
 
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.
 
7
#
 
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.
 
12
#
 
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.
 
16
#
 
17
# The Original Code is Copyright (C) 2006, Blender Foundation
 
18
# All rights reserved.
 
19
#
 
20
# The Original Code is: all of this file.
 
21
#
 
22
# Contributor(s): Jacques Beaurain.
 
23
#
 
24
# ***** END GPL LICENSE BLOCK *****
 
25
 
 
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.
 
30
 
 
31
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
 
32
        if(NOT DEFINED WITH_IN_SOURCE_BUILD)
 
33
                message(FATAL_ERROR
 
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.:"
 
36
                        "\n "
 
37
                        "\n rm CMakeCache.txt"
 
38
                        "\n cd .."
 
39
                        "\n mkdir cmake-make"
 
40
                        "\n cd cmake-make"
 
41
                        "\n cmake ../blender"
 
42
                        "\n "
 
43
                        "\n Alternately define WITH_IN_SOURCE_BUILD to force this option (not recommended!)"
 
44
                )
 
45
        endif()
 
46
endif()
 
47
 
 
48
cmake_minimum_required(VERSION 2.8)
 
49
 
 
50
if(NOT EXECUTABLE_OUTPUT_PATH)
 
51
        set(FIRST_RUN "TRUE")
 
52
endif()
 
53
 
 
54
# this starts out unset
 
55
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/build_files/cmake/Modules")
 
56
 
 
57
# avoid having empty buildtype
 
58
set(CMAKE_BUILD_TYPE_INIT "Release")
 
59
 
 
60
# quiet output for Makefiles, 'make -s' helps too
 
61
# set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
 
62
 
 
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)
 
68
 
 
69
 
 
70
#-----------------------------------------------------------------------------
 
71
# Set policy
 
72
 
 
73
# see "cmake --help-policy CMP0003"
 
74
# So library linking is more sane
 
75
cmake_policy(SET CMP0003 NEW)
 
76
 
 
77
# So BUILDINFO and BLENDERPATH strings are automatically quoted
 
78
cmake_policy(SET CMP0005 NEW)
 
79
 
 
80
# So syntax problems are errors
 
81
cmake_policy(SET CMP0010 NEW)
 
82
 
 
83
# Input directories must have CMakeLists.txt
 
84
cmake_policy(SET CMP0014 NEW)
 
85
 
 
86
#-----------------------------------------------------------------------------
 
87
# Load some macros.
 
88
include(build_files/cmake/macros.cmake)
 
89
 
 
90
 
 
91
#-----------------------------------------------------------------------------
 
92
# Initialize project.
 
93
 
 
94
blender_project_hack_pre()
 
95
 
 
96
project(Blender)
 
97
 
 
98
blender_project_hack_post()
 
99
 
 
100
enable_testing()
 
101
 
 
102
#-----------------------------------------------------------------------------
 
103
# Redirect output files
 
104
 
 
105
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" FORCE)
 
106
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" FORCE)
 
107
 
 
108
#-----------------------------------------------------------------------------
 
109
# Set default config options
 
110
 
 
111
get_blender_version()
 
112
 
 
113
 
 
114
# Blender internal features
 
115
option(WITH_BLENDER "Build blender (disable to build only the blender player)" ON)
 
116
mark_as_advanced(WITH_BLENDER)
 
117
 
 
118
option(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON)
 
119
 
 
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. 
 
125
 
 
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)
 
128
if(APPLE)
 
129
        option(WITH_PYTHON_FRAMEWORK "Enable building using the Python available in the framework (OSX only)" OFF)
 
130
endif()
 
131
 
 
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)
 
143
 
 
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)
 
147
 
 
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)
 
150
 
 
151
# Misc...
 
152
option(WITH_HEADLESS      "Build without graphical support (renderfarm, server mode only)" OFF)
 
153
mark_as_advanced(WITH_HEADLESS)
 
154
 
 
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)
 
157
 
 
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)
 
160
 
 
161
# (unix defaults to OpenMP On)
 
162
if((UNIX AND NOT APPLE) OR (MINGW))
 
163
        set(PLATFORM_DEFAULT ON)
 
164
else()
 
165
        set(PLATFORM_DEFAULT OFF)
 
166
endif()
 
167
option(WITH_OPENMP        "Enable OpenMP (has to be supported by the compiler)" ${PLATFORM_DEFAULT})
 
168
unset(PLATFORM_DEFAULT)
 
169
 
 
170
 
 
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)
 
175
 
 
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)
 
179
        endif()
 
180
else()
 
181
        # not an option for other OS's
 
182
        set(WITH_SYSTEM_GLEW OFF)
 
183
endif()
 
184
 
 
185
 
 
186
# (unix defaults to System OpenJPEG On)
 
187
if(UNIX AND NOT APPLE)
 
188
        set(PLATFORM_DEFAULT ON)
 
189
else()
 
190
        set(PLATFORM_DEFAULT OFF)
 
191
endif()
 
192
option(WITH_SYSTEM_OPENJPEG "Use the operating systems OpenJPEG library" ${PLATFORM_DEFAULT})
 
193
unset(PLATFORM_DEFAULT)
 
194
 
 
195
 
 
196
# Modifiers
 
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)
 
204
 
 
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)
 
214
 
 
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)
 
218
 
 
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)
 
222
endif()
 
223
 
 
224
# 3D format support
 
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)
 
227
 
 
228
# Sound output
 
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)
 
234
endif()
 
235
 
 
236
# Compression
 
237
option(WITH_LZO           "Enable fast LZO compression (used for pointcache)" ON)
 
238
option(WITH_LZMA          "Enable best LZMA compression, (used for pointcache)" ON)
 
239
 
 
240
# Camera/motion tracking
 
241
option(WITH_LIBMV         "Enable libmv structure from motion library" ON)
 
242
 
 
243
# Freestyle
 
244
option(WITH_FREESTYLE     "Enable Freestyle (advanced edges rendering)" ON)
 
245
 
 
246
# Misc
 
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)
 
252
        if(WITH_STATIC_LIBS)
 
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)
 
255
        endif()
 
256
endif()
 
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)
 
261
 
 
262
# Cycles
 
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)
 
270
 
 
271
# LLVM
 
272
option(WITH_LLVM                                        "Use LLVM" OFF)
 
273
option(LLVM_STATIC                                      "Link with LLVM static libraries" ON)
 
274
mark_as_advanced(LLVM_STATIC)
 
275
 
 
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)
 
279
 
 
280
# Debug
 
281
option(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking (only enable for development)" OFF)
 
282
mark_as_advanced(WITH_CXX_GUARDEDALLOC)
 
283
 
 
284
option(WITH_GUARDEDALLOC "Enable GuardedAlloc (DISABLE AT OWN RISK!)" ON)
 
285
mark_as_advanced(WITH_GUARDEDALLOC)
 
286
 
 
287
option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF)
 
288
mark_as_advanced(WITH_ASSERT_ABORT)
 
289
 
 
290
option(WITH_BOOST                                       "Enable features depending no boost" ON)
 
291
 
 
292
if(CMAKE_COMPILER_IS_GNUCC)
 
293
        option(WITH_GCC_MUDFLAP                 "Enable mudflap" OFF)
 
294
        mark_as_advanced(WITH_GCC_MUDFLAP)
 
295
endif()
 
296
 
 
297
if(APPLE)
 
298
        cmake_minimum_required(VERSION 2.8.8)
 
299
        cmake_policy(VERSION 2.8.8)
 
300
 
 
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"
 
304
                FORCE)
 
305
        endif()
 
306
        
 
307
        execute_process(COMMAND uname -r OUTPUT_VARIABLE MAC_SYS) # check for actual system-version
 
308
        if(${MAC_SYS} MATCHES 12)
 
309
                set(OSX_SYSTEM 10.8)
 
310
        elseif(${MAC_SYS} MATCHES 11)
 
311
                set(OSX_SYSTEM 10.7)
 
312
        elseif(${MAC_SYS} MATCHES 10)
 
313
                set(OSX_SYSTEM 10.6)
 
314
        elseif(${MAC_SYS} MATCHES 9)
 
315
                set(OSX_SYSTEM 10.5)
 
316
        else()
 
317
                set(OSX_SYSTEM unsupported)
 
318
        endif()
 
319
        message(STATUS "Detected system-version: " ${OSX_SYSTEM})
 
320
 
 
321
        if(${CMAKE_GENERATOR} MATCHES "Xcode")
 
322
        
 
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")
 
326
                endif()
 
327
                ### end cmake incompatibility with xcode 4.3 and higher ###
 
328
                
 
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})
 
334
                endif()
 
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)
 
339
        endif()
 
340
        
 
341
        message(STATUS "Detected Xcode-version: " ${XCODE_VERSION})
 
342
 
 
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
 
345
        else()
 
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)
 
351
        endif()
 
352
        
 
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
 
355
        endif()
 
356
        
 
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}")
 
362
        endif()
 
363
 
 
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
 
369
        endif()
 
370
endif()
 
371
 
 
372
 
 
373
#-----------------------------------------------------------------------------
 
374
# Check for conflicting/unsupported configurations
 
375
 
 
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!")
 
378
endif()
 
379
 
 
380
if(NOT WITH_GAMEENGINE AND WITH_PLAYER)
 
381
        message(FATAL_ERROR "WITH_PLAYER requires WITH_GAMEENGINE")
 
382
endif()
 
383
 
 
384
if(NOT WITH_AUDASPACE)
 
385
        if(WITH_OPENAL)
 
386
                message(FATAL_ERROR "WITH_OPENAL requires WITH_AUDASPACE")
 
387
        endif()
 
388
        if(WITH_JACK)
 
389
                message(FATAL_ERROR "WITH_JACK requires WITH_AUDASPACE")
 
390
        endif()
 
391
        if(WITH_GAMEENGINE)
 
392
                message(FATAL_ERROR "WITH_GAMEENGINE requires WITH_AUDASPACE")
 
393
        endif()
 
394
endif()
 
395
 
 
396
if(NOT WITH_SDL AND WITH_GHOST_SDL)
 
397
        message(FATAL_ERROR "WITH_GHOST_SDL requires WITH_SDL")
 
398
endif()
 
399
 
 
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")
 
402
endif()
 
403
 
 
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")
 
407
endif()
 
408
 
 
409
if(WITH_PYTHON_MODULE AND WITH_PYTHON_INSTALL)
 
410
        message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PYTHON_INSTALL to be OFF")
 
411
endif()
 
412
 
 
413
 
 
414
# may as well build python module without a UI
 
415
if(WITH_PYTHON_MODULE)
 
416
        set(WITH_HEADLESS ON)
 
417
endif()
 
418
 
 
419
# enable boost for cycles, booleans, audaspace or i18n
 
420
# otherwise if the user disabled
 
421
if(NOT WITH_BOOST)
 
422
        # Explicitly disabled. so disable all deps.
 
423
        macro(set_and_warn
 
424
                _setting _val)
 
425
                if(${${_setting}})
 
426
                        message(STATUS "'WITH_BOOST' is disabled: forceing 'set(${_setting} ${_val})'")
 
427
                endif()
 
428
                set(${_setting} ${_val})
 
429
        endmacro()
 
430
 
 
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)
 
435
 
 
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)
 
439
        # Keep enabled
 
440
else()
 
441
        # Enabled but we don't need it
 
442
        set(WITH_BOOST OFF)
 
443
endif()
 
444
 
 
445
# auto enable openimageio for cycles
 
446
if(WITH_CYCLES)
 
447
        set(WITH_OPENIMAGEIO ON)
 
448
endif()
 
449
 
 
450
# auto enable openimageio linking dependencies
 
451
if(WITH_OPENIMAGEIO)
 
452
        set(WITH_IMAGE_OPENEXR ON)
 
453
        set(WITH_IMAGE_TIFF ON)
 
454
endif()
 
455
 
 
456
# auto enable llvm for cycles_osl
 
457
if(WITH_CYCLES_OSL)
 
458
        set(WITH_LLVM ON CACHE BOOL "ON" FORCE)
 
459
endif()
 
460
 
 
461
# don't store paths to libs for portable distribution
 
462
if(WITH_INSTALL_PORTABLE)
 
463
        set(CMAKE_SKIP_BUILD_RPATH TRUE)
 
464
endif()
 
465
 
 
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)
 
470
endif()
 
471
 
 
472
if(MINGW)
 
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.")
 
477
        endif()
 
478
endif()
 
479
 
 
480
TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
 
481
 
 
482
TEST_STDBOOL_SUPPORT()
 
483
if(HAVE_STDBOOL_H)
 
484
        add_definitions(-DHAVE_STDBOOL_H)
 
485
endif()
 
486
if(WITH_BOOL_COMPAT)
 
487
        add_definitions(-DWITH_BOOL_COMPAT)
 
488
endif()
 
489
 
 
490
#-----------------------------------------------------------------------------
 
491
# Check for valid directories
 
492
# ... svn extern paths can be missing because of svn-git.
 
493
 
 
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)
 
500
        endif()
 
501
endif()
 
502
 
 
503
if(WITH_PYTHON)
 
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 *")
 
508
        endif()
 
509
endif()
 
510
 
 
511
#-----------------------------------------------------------------------------
 
512
# Initialize un-cached vars, avoid unused warning
 
513
 
 
514
# linux only, not cached
 
515
set(WITH_BINRELOC OFF)
 
516
 
 
517
# MAXOSX only, set to avoid uninitialized
 
518
set(EXETYPE "")
 
519
 
 
520
# C/C++ flags
 
521
set(PLATFORM_CFLAGS)
 
522
 
 
523
# these are added to later on.
 
524
set(C_WARNINGS)
 
525
set(CXX_WARNINGS)
 
526
 
 
527
# for gcc -Wno-blah-blah
 
528
set(CC_REMOVE_STRICT_FLAGS)
 
529
 
 
530
# libraries to link the binary with passed to target_link_libraries()
 
531
# known as LLIBS to scons
 
532
set(PLATFORM_LINKLIBS "")
 
533
 
 
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 "")
 
539
 
 
540
 
 
541
# disabled for now, not supported
 
542
# option(WITH_WEBPLUGIN     "Enable Web Plugin (Unix only)" OFF)
 
543
 
 
544
# For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
 
545
# On Unix:
 
546
#   cmake ../blender \
 
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
 
550
#
 
551
# On Macs:
 
552
#   cmake ../blender \
 
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 \
 
555
#         -G Xcode
 
556
#
 
557
# When changing any of this remember to update the notes in doc/build_systems/cmake.txt
 
558
 
 
559
#-----------------------------------------------------------------------------
 
560
#Platform specifics
 
561
 
 
562
if(UNIX AND NOT APPLE)
 
563
        macro(find_package_wrapper)
 
564
                string(TOUPPER ${ARGV0} _NAME_UPPER)
 
565
                if(WITH_STATIC_LIBS)
 
566
                        set(_cmake_find_library_suffixes_back ${CMAKE_FIND_LIBRARY_SUFFIXES})
 
567
                        set(CMAKE_FIND_LIBRARY_SUFFIXES .a ${CMAKE_FIND_LIBRARY_SUFFIXES})
 
568
                endif()
 
569
                find_package(${ARGV})
 
570
                if(WITH_STATIC_LIBS)
 
571
                        set(CMAKE_FIND_LIBRARY_SUFFIXES ${_cmake_find_library_suffixes_back})
 
572
                        unset(_cmake_find_library_suffixes_back)
 
573
                endif()
 
574
        endmacro()
 
575
 
 
576
        find_package_wrapper(JPEG REQUIRED)
 
577
        find_package_wrapper(PNG REQUIRED)
 
578
        find_package_wrapper(ZLIB REQUIRED)
 
579
        find_package_wrapper(Freetype REQUIRED)
 
580
 
 
581
        if(WITH_PYTHON)
 
582
                # No way to set py33. remove for now.
 
583
                # find_package(PythonLibs)
 
584
 
 
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)
 
590
        endif()
 
591
 
 
592
        if(WITH_IMAGE_OPENEXR)
 
593
                find_package_wrapper(OpenEXR)  # our own module
 
594
                if(NOT OPENEXR_FOUND)
 
595
                        set(WITH_IMAGE_OPENEXR OFF)
 
596
                endif()
 
597
        endif()
 
598
 
 
599
        if(WITH_IMAGE_OPENJPEG)
 
600
                find_package_wrapper(OpenJPEG)
 
601
                if(NOT OPENJPEG_FOUND)
 
602
                        set(WITH_IMAGE_OPENJPEG OFF)
 
603
                endif()
 
604
        endif()
 
605
 
 
606
        if(WITH_IMAGE_TIFF)
 
607
                # XXX Linking errors with debian static tiff :/
 
608
#               find_package_wrapper(TIFF)
 
609
                find_package(TIFF)
 
610
                if(NOT TIFF_FOUND)
 
611
                        set(WITH_IMAGE_TIFF OFF)
 
612
                endif()
 
613
        endif()
 
614
 
 
615
        # Audio IO
 
616
        if(WITH_OPENAL)
 
617
                find_package_wrapper(OpenAL)
 
618
                if(NOT OPENAL_FOUND)
 
619
                        set(WITH_OPENAL OFF)
 
620
                endif()
 
621
        endif()
 
622
 
 
623
        if(WITH_SDL)
 
624
                find_package_wrapper(SDL)
 
625
                mark_as_advanced(
 
626
                        SDLMAIN_LIBRARY
 
627
                        SDL_INCLUDE_DIR
 
628
                        SDL_LIBRARY
 
629
                        SDL_LIBRARY_TEMP
 
630
                )
 
631
                # unset(SDLMAIN_LIBRARY CACHE)
 
632
                if(NOT SDL_FOUND)
 
633
                        set(WITH_SDL OFF)
 
634
                endif()
 
635
        endif()
 
636
 
 
637
        if(WITH_JACK)
 
638
                find_package_wrapper(Jack)
 
639
                if(NOT JACK_FOUND)
 
640
                        set(WITH_JACK OFF)
 
641
                endif()
 
642
        endif()
 
643
 
 
644
        if(WITH_FONTCONFIG)
 
645
                find_package(Fontconfig)
 
646
                if(NOT FONTCONFIG_FOUND)
 
647
                        set(WITH_FONTCONFIG OFF)
 
648
                endif()
 
649
        endif()
 
650
 
 
651
        # Codecs
 
652
        if(WITH_CODEC_SNDFILE)
 
653
                find_package_wrapper(SndFile)
 
654
                if(NOT SNDFILE_FOUND)
 
655
                        set(WITH_CODEC_SNDFILE OFF)
 
656
                endif()
 
657
        endif()
 
658
 
 
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")
 
662
 
 
663
                mark_as_advanced(FFMPEG)
 
664
 
 
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")
 
669
                endif()
 
670
                # end lameness
 
671
 
 
672
                mark_as_advanced(FFMPEG_LIBRARIES)
 
673
                set(FFMPEG_LIBPATH ${FFMPEG}/lib)
 
674
                set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
 
675
        endif()
 
676
 
 
677
        if(WITH_FFTW3)
 
678
                find_package_wrapper(Fftw3)
 
679
                if(NOT FFTW3_FOUND)
 
680
                        set(WITH_FFTW3 OFF)
 
681
                endif()
 
682
        endif()
 
683
 
 
684
        if(WITH_OPENCOLLADA)
 
685
                find_package_wrapper(OpenCOLLADA)
 
686
                if(OPENCOLLADA_FOUND)
 
687
                        find_package_wrapper(XML2)
 
688
                        find_package_wrapper(PCRE)
 
689
                else()
 
690
                        set(WITH_OPENCOLLADA OFF)
 
691
                endif()
 
692
        endif()
 
693
 
 
694
        if(WITH_MEM_JEMALLOC)
 
695
                find_package_wrapper(JeMalloc)
 
696
                if(NOT JEMALLOC_FOUND)
 
697
                        set(WITH_MEM_JEMALLOC OFF)
 
698
                endif()
 
699
        endif()
 
700
 
 
701
        if(WITH_INPUT_NDOF)
 
702
                find_package_wrapper(Spacenav)
 
703
                if(NOT SPACENAV_FOUND)
 
704
                        set(WITH_INPUT_NDOF OFF)
 
705
                endif()
 
706
 
 
707
                # use generic names within blenders buildsystem.
 
708
                if(SPACENAV_FOUND)
 
709
                        set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
 
710
                        set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
 
711
                endif()
 
712
        endif()
 
713
 
 
714
        if(WITH_BOOST)
 
715
                # uses in build instructions to override include and library variables
 
716
                if(NOT BOOST_CUSTOM)
 
717
                        if(WITH_STATIC_LIBS)
 
718
                                set(Boost_USE_STATIC_LIBS ON)
 
719
                        endif()
 
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)
 
724
                        endif()
 
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)
 
729
                        endif()
 
730
                        mark_as_advanced(Boost_DIR)  # why doesnt boost do this?
 
731
                endif()
 
732
 
 
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")
 
737
        endif()
 
738
 
 
739
        if(WITH_OPENIMAGEIO)
 
740
                find_package_wrapper(OpenImageIO)
 
741
 
 
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 "")
 
745
 
 
746
                if(WITH_IMAGE_TIFF)
 
747
                        list(APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}")
 
748
                endif()
 
749
                if(WITH_IMAGE_OPENEXR)
 
750
                        list(APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}")
 
751
                endif()
 
752
 
 
753
                if(NOT OPENIMAGEIO_FOUND)
 
754
                        set(WITH_OPENIMAGEIO OFF)
 
755
                        message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
 
756
                endif()
 
757
        endif()
 
758
 
 
759
        if(WITH_OPENCOLORIO)
 
760
                find_package_wrapper(OpenColorIO)
 
761
 
 
762
                set(OPENCOLORIO_LIBRARIES ${OPENCOLORIO_LIBRARIES})
 
763
                set(OPENCOLORIO_LIBPATH)  # TODO, remove and reference the absolute path everywhere
 
764
                set(OPENCOLORIO_DEFINITIONS)
 
765
 
 
766
                if(NOT OPENCOLORIO_FOUND)
 
767
                        set(WITH_OPENCOLORIO OFF)
 
768
                        message(STATUS "OpenColorIO not found")
 
769
                endif()
 
770
        endif()
 
771
 
 
772
        # XXX Maybe most of this section should go into an llvm module?
 
773
        if(WITH_LLVM)
 
774
                # Set llvm version if not specified
 
775
                if(NOT LLVM_VERSION)
 
776
                        set(LLVM_VERSION "3.0")
 
777
                endif()
 
778
 
 
779
                if(LLVM_DIRECTORY)
 
780
                        FIND_PROGRAM(LLVM_CONFIG llvm-config-${LLVM_VERSION} HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
 
781
                        if(NOT LLVM_CONFIG)
 
782
                                FIND_PROGRAM(LLVM_CONFIG llvm-config HINTS ${LLVM_DIRECTORY}/bin NO_CMAKE_PATH)
 
783
                        endif()
 
784
                else()
 
785
                        FIND_PROGRAM(LLVM_CONFIG llvm-config-${LLVM_VERSION})
 
786
                        if(NOT LLVM_CONFIG)
 
787
                                FIND_PROGRAM(LLVM_CONFIG llvm-config)
 
788
                        endif()
 
789
                endif()
 
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)
 
799
 
 
800
                if(LLVM_STATIC)
 
801
                        find_library(LLVM_LIBRARY
 
802
                                     NAMES LLVMAnalysis # first of a whole bunch of libs to get
 
803
                                     PATHS ${LLVM_LIB_DIR})
 
804
                else()
 
805
                        find_library(LLVM_LIBRARY
 
806
                                     NAMES LLVM-${LLVM_VERSION}
 
807
                                     PATHS ${LLVM_LIB_DIR})
 
808
                endif()
 
809
 
 
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")
 
815
 
 
816
                if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIB_DIR)
 
817
                        if(LLVM_STATIC)
 
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})
 
825
                        endif()
 
826
                else()
 
827
                        message(FATAL_ERROR "LLVM not found.")
 
828
                endif()
 
829
 
 
830
                # Fix for conflict with Mesa llvmpipe
 
831
                set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/source/creator/blender.map")
 
832
        endif()
 
833
 
 
834
        if(WITH_CYCLES_OSL)
 
835
                set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
 
836
        
 
837
                message(STATUS "CYCLES_OSL = ${CYCLES_OSL}")
 
838
        
 
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)
 
847
        
 
848
                if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
 
849
                        set(OSL_FOUND TRUE)
 
850
                        message(STATUS "OSL includes = ${OSL_INCLUDES}")
 
851
                        message(STATUS "OSL library = ${OSL_LIBRARIES}")
 
852
                        message(STATUS "OSL compiler = ${OSL_COMPILER}")
 
853
                else()
 
854
                        message(STATUS "OSL not found")
 
855
                endif()
 
856
        endif()
 
857
 
 
858
        # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
 
859
        set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread -lstdc++")
 
860
 
 
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)
 
865
 
 
866
                set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_X11_LIB}")
 
867
 
 
868
                if(WITH_X11_XINPUT)
 
869
                        if(X11_Xinput_LIB)
 
870
                                set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xinput_LIB}")
 
871
                        else()
 
872
                                set(WITH_X11_XINPUT OFF)
 
873
                        endif()
 
874
                endif()
 
875
 
 
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}")
 
882
                        else()
 
883
                                set(WITH_X11_XF86VMODE OFF)
 
884
                        endif()
 
885
                endif()
 
886
        endif()
 
887
 
 
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)
 
895
                endif()
 
896
        endif()
 
897
 
 
898
        set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -pthread")
 
899
 
 
900
        # lfs on glibc, all compilers should use
 
901
        add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
 
902
 
 
903
        # GNU Compiler
 
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")
 
909
        # Solaris CC
 
910
        elseif(CMAKE_CXX_COMPILER_ID MATCHES "SunPro")
 
911
                set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
 
912
                
 
913
        # Intel C++ Compiler
 
914
        elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
 
915
                # think these next two are broken
 
916
                find_program(XIAR xiar)
 
917
                if(XIAR)
 
918
                        set(CMAKE_AR "${XIAR}")
 
919
                endif()
 
920
                mark_as_advanced(XIAR)
 
921
 
 
922
                find_program(XILD xild)
 
923
                if(XILD)
 
924
                        set(CMAKE_LINKER "${XILD}")
 
925
                endif()
 
926
                mark_as_advanced(XILD)
 
927
 
 
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")
 
930
 
 
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")
 
934
        endif()
 
935
 
 
936
elseif(WIN32)
 
937
 
 
938
        # this file is included anyway when building under Windows with cl.exe
 
939
        #  include(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)
 
940
 
 
941
        if(CMAKE_COMPILER_IS_GNUCC)
 
942
                include(CheckCSourceCompiles)
 
943
                # Setup 64bit and 64bit windows systems
 
944
                CHECK_C_SOURCE_COMPILES("
 
945
                        #ifndef __MINGW64__
 
946
                        #error
 
947
                        #endif
 
948
                        int main(void) { return 0; }
 
949
                        " 
 
950
                        WITH_MINGW64)
 
951
                
 
952
                if(WITH_MINGW64)
 
953
                        message(STATUS "Compiling for 64 bit with MinGW-w64.")
 
954
                        set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
 
955
                else()
 
956
                        message(STATUS "Compiling for 32 bit with MinGW-w32.")
 
957
                        set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
 
958
                        
 
959
                        if(WITH_RAYOPTIMIZATION)
 
960
                                message(WARNING "MinGW-w32 is known to be unstable with 'WITH_RAYOPTIMIZATION' option enabled.")
 
961
                        endif()
 
962
                endif()
 
963
        else()
 
964
                # Setup 64bit and 64bit windows systems
 
965
                if(CMAKE_CL_64)
 
966
                        message(STATUS "64 bit compiler detected.")
 
967
                        if(MSVC11)
 
968
                                message(STATUS "Visual C++ 2012 detected.")
 
969
                                set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64_vc11)
 
970
                        else()
 
971
                                set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64)
 
972
                        endif()
 
973
                else()
 
974
                # Setup 32bit windows systems
 
975
                        if(MSVC11)
 
976
                                message(STATUS "Visual C++ 2012 detected.")
 
977
                                set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows_vc11)
 
978
                        else()
 
979
                                set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
 
980
                        endif()
 
981
                endif()
 
982
        endif()
 
983
                
 
984
        add_definitions(-DWIN32)
 
985
 
 
986
        set(JPEG "${LIBDIR}/jpeg")
 
987
        set(JPEG_INCLUDE_DIR "${JPEG}/include")
 
988
        set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
 
989
 
 
990
        set(WINTAB_INC ${LIBDIR}/wintab/include)
 
991
 
 
992
        if(WITH_OPENAL)
 
993
                set(OPENAL ${LIBDIR}/openal)
 
994
                set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
 
995
                if(MSVC11)
 
996
                        set(OPENAL_LIBRARY openal32)
 
997
                else()
 
998
                        set(OPENAL_LIBRARY wrap_oal)
 
999
                endif()
 
1000
                set(OPENAL_LIBPATH ${OPENAL}/lib)
 
1001
        endif()
 
1002
 
 
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
 
1008
        endif()
 
1009
 
 
1010
        if(WITH_SDL)
 
1011
                set(SDL ${LIBDIR}/sdl)
 
1012
                set(SDL_INCLUDE_DIR ${SDL}/include)
 
1013
                set(SDL_LIBRARY SDL)
 
1014
                set(SDL_LIBPATH ${SDL}/lib)
 
1015
        endif()
 
1016
 
 
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)
 
1022
        endif()
 
1023
 
 
1024
        if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
 
1025
                add_definitions(-D__SSE__ -D__MMX__)
 
1026
        endif()
 
1027
 
 
1028
        if(WITH_CYCLES_OSL)
 
1029
                set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
 
1030
        
 
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)
 
1037
        
 
1038
                if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
 
1039
                        set(OSL_FOUND TRUE)
 
1040
                else()
 
1041
                        message(STATUS "OSL not found")
 
1042
                endif()
 
1043
        endif()
 
1044
 
 
1045
        if(MSVC)
 
1046
                set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi)
 
1047
 
 
1048
                # MSVC11 SDL is not hard linked to dxguid.lib
 
1049
                if(MSVC11 AND WITH_SDL)
 
1050
                        set(PLATFORM_LINKLIBS ${PLATFORM_LINKLIBS} dxguid)
 
1051
                endif()
 
1052
 
 
1053
                add_definitions(/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_CONSOLE /D_LIB)
 
1054
 
 
1055
                # MSVC11 needs _ALLOW_KEYWORD_MACROS to build
 
1056
                if(MSVC11)
 
1057
                        add_definitions(/D_ALLOW_KEYWORD_MACROS)
 
1058
                endif()
 
1059
 
 
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)
 
1062
 
 
1063
                if(CMAKE_CL_64)
 
1064
                        set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
 
1065
                else()
 
1066
                        set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
 
1067
                endif()
 
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)
 
1071
                if(CMAKE_CL_64)
 
1072
                        set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /Zi" CACHE STRING "MSVC MT flags " FORCE)
 
1073
                else()
 
1074
                        set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /RTC1 /MTd /ZI" CACHE STRING "MSVC MT flags " FORCE)
 
1075
                endif()
 
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)
 
1079
 
 
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}")
 
1084
                unset(_WARNINGS)
 
1085
 
 
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
 
1094
                        )
 
1095
                endif()
 
1096
 
 
1097
                set(PNG_LIBRARIES libpng)
 
1098
                set(JPEG_LIBRARIES libjpeg)
 
1099
                
 
1100
                set(PNG "${LIBDIR}/png")
 
1101
                set(PNG_INCLUDE_DIR "${PNG}/include")
 
1102
                set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
 
1103
 
 
1104
                set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
 
1105
                set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz_st.lib)
 
1106
 
 
1107
                set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
 
1108
                set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
 
1109
 
 
1110
                set(FREETYPE ${LIBDIR}/freetype)
 
1111
                set(FREETYPE_INCLUDE_DIRS
 
1112
                        ${LIBDIR}/freetype/include
 
1113
                        ${LIBDIR}/freetype/include/freetype2
 
1114
                )
 
1115
                set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
 
1116
 
 
1117
                if(WITH_FFTW3)
 
1118
                        set(FFTW3 ${LIBDIR}/fftw3)
 
1119
                        set(FFTW3_LIBRARIES libfftw)
 
1120
                        set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
 
1121
                        set(FFTW3_LIBPATH ${FFTW3}/lib)
 
1122
                endif()
 
1123
 
 
1124
                if(WITH_OPENCOLLADA)
 
1125
                        set(OPENCOLLADA ${LIBDIR}/opencollada)
 
1126
 
 
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
 
1133
                        )
 
1134
 
 
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
 
1146
                        )
 
1147
                        set(PCRE_LIBRARIES
 
1148
                                ${OPENCOLLADA}/lib/opencollada/pcre.lib
 
1149
                        )
 
1150
                endif()
 
1151
 
 
1152
                if(WITH_CODEC_FFMPEG)
 
1153
                        set(FFMPEG_INCLUDE_DIRS
 
1154
                                ${LIBDIR}/ffmpeg/include
 
1155
                                ${LIBDIR}/ffmpeg/include/msvc
 
1156
                        )
 
1157
                        # MSVC11 FFMPEG libs are newer
 
1158
                        if(MSVC11)
 
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
 
1165
                                )
 
1166
                        else()
 
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
 
1173
                                )
 
1174
                        endif()
 
1175
                endif()
 
1176
 
 
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
 
1188
                        )
 
1189
                endif()
 
1190
 
 
1191
                if(WITH_IMAGE_TIFF)
 
1192
                        set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
 
1193
                        set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
 
1194
                endif()
 
1195
 
 
1196
                if(WITH_JACK)
 
1197
                        set(JACK_INCLUDE_DIRS
 
1198
                                ${LIBDIR}/jack/include/jack
 
1199
                                ${LIBDIR}/jack/include
 
1200
                        )
 
1201
                        set(JACK_LIBRARIES ${LIBDIR}/jack/lib/libjack.lib)
 
1202
                endif()
 
1203
 
 
1204
                if(WITH_PYTHON)
 
1205
                        set(PYTHON_VERSION 3.3) # CACHE STRING)
 
1206
 
 
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)
 
1211
 
 
1212
                        # Shared includes for both vc2008 and vc2010
 
1213
                        set(PYTHON_INCLUDE_DIR ${LIBDIR}/python/include/python${PYTHON_VERSION})
 
1214
 
 
1215
                        # uncached vars
 
1216
                        set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
 
1217
                        set(PYTHON_LIBRARIES  "${PYTHON_LIBRARY}")
 
1218
                endif()
 
1219
 
 
1220
                if(WITH_BOOST)
 
1221
                        set(BOOST ${LIBDIR}/boost)
 
1222
                        set(BOOST_INCLUDE_DIR ${BOOST}/include)
 
1223
                        if(MSVC11)
 
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")
 
1227
                        else()
 
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")
 
1231
                        endif()
 
1232
                        set(BOOST_LIBRARIES
 
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})
 
1239
                        if(WITH_CYCLES_OSL)
 
1240
                                set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
 
1241
                                        optimized libboost_wave-${BOOST_POSTFIX}
 
1242
                                        debug libboost_wave-${BOOST_DEBUG_POSTFIX})
 
1243
                        endif()
 
1244
                        if(WITH_INTERNATIONAL)
 
1245
                                set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
 
1246
                                        optimized libboost_locale-${BOOST_POSTFIX}
 
1247
                                        debug libboost_locale-${BOOST_DEBUG_POSTFIX})
 
1248
                        endif()
 
1249
                        set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
 
1250
                endif()
 
1251
                        
 
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")
 
1258
                endif()
 
1259
 
 
1260
                if(WITH_LLVM)
 
1261
                        set(LLVM_DIRECTORY ${LIBDIR}/llvm CACHE PATH    "Path to the LLVM installation")
 
1262
                        file(GLOB LLVM_LIBRARY ${LLVM_DIRECTORY}/lib/*.lib)
 
1263
                endif()
 
1264
        
 
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)
 
1271
                endif()
 
1272
 
 
1273
                set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
 
1274
 
 
1275
                # MSVC only, Mingw doesnt need
 
1276
                if(CMAKE_CL_64)
 
1277
                        set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
 
1278
                else()
 
1279
                        set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
 
1280
                endif()
 
1281
 
 
1282
                set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
 
1283
 
 
1284
                # used in many places so include globally, like OpenGL
 
1285
                blender_include_dirs_sys("${PTHREADS_INCLUDE_DIRS}")
 
1286
 
 
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")
 
1291
 
 
1292
                if(WITH_MINGW64)
 
1293
                        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
 
1294
                        set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread")
 
1295
                        
 
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)
 
1299
                endif()
 
1300
 
 
1301
                add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
 
1302
 
 
1303
                add_definitions(-DFREE_WINDOWS)
 
1304
 
 
1305
                set(PNG "${LIBDIR}/png")
 
1306
                set(PNG_INCLUDE_DIR "${PNG}/include")
 
1307
                set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
 
1308
 
 
1309
                if(WITH_MINGW64)
 
1310
                        set(JPEG_LIBRARIES jpeg)
 
1311
                else()
 
1312
                        set(JPEG_LIBRARIES libjpeg)
 
1313
                endif()
 
1314
                set(PNG_LIBRARIES png)
 
1315
 
 
1316
                set(ZLIB ${LIBDIR}/zlib)
 
1317
                set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
 
1318
                set(ZLIB_LIBPATH ${ZLIB}/lib)
 
1319
                set(ZLIB_LIBRARIES z)
 
1320
 
 
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)
 
1327
                endif()
 
1328
                
 
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)
 
1333
 
 
1334
                if(WITH_FFTW3)
 
1335
                        set(FFTW3 ${LIBDIR}/fftw3)
 
1336
                        set(FFTW3_LIBRARIES fftw3)
 
1337
                        set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
 
1338
                        set(FFTW3_LIBPATH ${FFTW3}/lib)
 
1339
                endif()
 
1340
 
 
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
 
1349
                        )
 
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)
 
1353
                endif()
 
1354
 
 
1355
                if(WITH_CODEC_FFMPEG)
 
1356
                        set(FFMPEG ${LIBDIR}/ffmpeg)
 
1357
                        set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
 
1358
                        if(WITH_MINGW64)
 
1359
                                set(FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll)
 
1360
                        else()
 
1361
                                set(FFMPEG_LIBRARIES avcodec-53 avformat-53 avdevice-53 avutil-51 swscale-2)
 
1362
                        endif()
 
1363
                        set(FFMPEG_LIBPATH ${FFMPEG}/lib)
 
1364
                endif()
 
1365
 
 
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)
 
1372
                endif()
 
1373
 
 
1374
                if(WITH_IMAGE_TIFF)
 
1375
                        set(TIFF ${LIBDIR}/tiff)
 
1376
                        set(TIFF_LIBRARY tiff)
 
1377
                        set(TIFF_INCLUDE_DIR ${TIFF}/include)
 
1378
                        set(TIFF_LIBPATH ${TIFF}/lib)
 
1379
                endif()
 
1380
 
 
1381
                if(WITH_JACK)
 
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)
 
1386
 
 
1387
                        # TODO, gives linking errors, force off
 
1388
                        set(WITH_JACK OFF)
 
1389
                endif()
 
1390
 
 
1391
                if(WITH_PYTHON)
 
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)
 
1396
 
 
1397
                        # uncached vars
 
1398
                        set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
 
1399
                        set(PYTHON_LIBRARIES  "${PYTHON_LIBRARY}")
 
1400
                endif()
 
1401
 
 
1402
                if(WITH_BOOST)
 
1403
                        set(BOOST ${LIBDIR}/boost)
 
1404
                        set(BOOST_INCLUDE_DIR ${BOOST}/include)
 
1405
                        if(WITH_MINGW64)
 
1406
                                set(BOOST_POSTFIX "mgw47-mt-s-1_49")
 
1407
                                set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
 
1408
                        else()
 
1409
                                set(BOOST_POSTFIX "mgw46-mt-s-1_49")
 
1410
                                set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49")
 
1411
                        endif()
 
1412
                        set(BOOST_LIBRARIES
 
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}) 
 
1423
                        endif()
 
1424
                        if(WITH_CYCLES_OSL)
 
1425
                                set(BOOST_LIBRARIES ${BOOST_LIBRARIES}
 
1426
                                        optimized boost_wave-${BOOST_POSTFIX}
 
1427
                                        debug boost_wave-${BOOST_DEBUG_POSTFIX}) 
 
1428
                        endif()
 
1429
                        set(BOOST_LIBPATH ${BOOST}/lib)
 
1430
                        set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
 
1431
                endif()
 
1432
                        
 
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 "")
 
1439
                endif()
 
1440
                
 
1441
                if(WITH_LLVM)
 
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
 
1452
                                LLVMLinker LLVMMC
 
1453
                                LLVMMCDisassembler LLVMMCJIT
 
1454
                                LLVMMCParser LLVMObject
 
1455
                                LLVMRuntimeDyld 
 
1456
                                LLVMSupport
 
1457
                                LLVMTableGen LLVMTarget
 
1458
                                LLVMTransformUtils LLVMVectorize
 
1459
                                LLVMX86AsmParser LLVMX86AsmPrinter
 
1460
                                LLVMX86CodeGen LLVMX86Desc
 
1461
                                LLVMX86Disassembler LLVMX86Info
 
1462
                                LLVMX86Utils LLVMipa
 
1463
                                LLVMipo LLVMCore)
 
1464
                        # imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
 
1465
                        set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -limagehlp")
 
1466
                endif()
 
1467
                
 
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)
 
1474
                endif()
 
1475
 
 
1476
                set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
 
1477
 
 
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++")
 
1481
 
 
1482
        endif()
 
1483
 
 
1484
elseif(APPLE)
 
1485
 
 
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
 
1488
        endif()
 
1489
 
 
1490
        if(WITH_LIBS10.5)
 
1491
                set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
 
1492
        else()
 
1493
                if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
 
1494
                        set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
 
1495
                else()
 
1496
                        set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
 
1497
                endif()
 
1498
        endif()
 
1499
 
 
1500
 
 
1501
        if(WITH_OPENAL)
 
1502
                find_package(OpenAL)
 
1503
                if(OPENAL_FOUND)
 
1504
                        set(WITH_OPENAL ON)
 
1505
                        set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
 
1506
                else()
 
1507
                        set(WITH_OPENAL OFF)
 
1508
                endif()
 
1509
        endif()
 
1510
 
 
1511
        if(WITH_JACK)
 
1512
                find_library(JACK_FRAMEWORK
 
1513
                        NAMES jackmp
 
1514
                )
 
1515
                set(JACK_INCLUDE_DIRS ${JACK_FRAMEWORK}/headers)
 
1516
                if(NOT JACK_FRAMEWORK)
 
1517
                        set(WITH_JACK OFF)
 
1518
                endif()
 
1519
        endif()
 
1520
 
 
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
 
1526
        endif()
 
1527
 
 
1528
        if(WITH_PYTHON)
 
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
 
1538
                else()
 
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
 
1545
                endif()
 
1546
                
 
1547
                # uncached vars
 
1548
                set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
 
1549
                set(PYTHON_LIBRARIES  "${PYTHON_LIBRARY}")
 
1550
        endif()
 
1551
 
 
1552
        if(WITH_FFTW3)
 
1553
                set(FFTW3 ${LIBDIR}/fftw3)
 
1554
                set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
 
1555
                set(FFTW3_LIBRARIES fftw3)
 
1556
                set(FFTW3_LIBPATH ${FFTW3}/lib)
 
1557
        endif()
 
1558
 
 
1559
        set(PNG_LIBRARIES png)
 
1560
        set(JPEG_LIBRARIES jpeg)
 
1561
 
 
1562
        set(ZLIB /usr)
 
1563
        set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
 
1564
        set(ZLIB_LIBRARIES z bz2)
 
1565
 
 
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)
 
1570
 
 
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)
 
1577
        endif()
 
1578
 
 
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")
 
1585
        endif()
 
1586
 
 
1587
        find_library(SYSTEMSTUBS_LIBRARY
 
1588
                NAMES
 
1589
                SystemStubs
 
1590
                PATHS
 
1591
        )
 
1592
        mark_as_advanced(SYSTEMSTUBS_LIBRARY)
 
1593
        if(SYSTEMSTUBS_LIBRARY)
 
1594
                set(PLATFORM_LINKLIBS stdc++ SystemStubs)
 
1595
        else()
 
1596
                set(PLATFORM_LINKLIBS stdc++)
 
1597
        endif()
 
1598
 
 
1599
        if(WITH_COCOA)
 
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")
 
1602
                if(USE_QTKIT)
 
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
 
1608
                        endif()
 
1609
                elseif(WITH_CODEC_QUICKTIME)
 
1610
                        set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
 
1611
                endif()
 
1612
 
 
1613
                # XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
 
1614
                # ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
 
1615
                if(WITH_INPUT_NDOF)
 
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
 
1620
                        )
 
1621
                        if(NOT 3DCONNEXION_CLIENT_FRAMEWORK)
 
1622
                                set(WITH_INPUT_NDOF OFF)
 
1623
                        endif()
 
1624
 
 
1625
                        if(WITH_INPUT_NDOF)
 
1626
                                set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework 3DconnexionClient")
 
1627
                                set(NDOF_INCLUDE_DIRS /Library/Frameworks/3DconnexionClient.framework/Headers )
 
1628
                        endif()
 
1629
                endif()
 
1630
 
 
1631
        if(WITH_JACK)
 
1632
                set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -weak_framework jackmp")
 
1633
        endif()
 
1634
 
 
1635
        else()
 
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
 
1639
        endif()
 
1640
        
 
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
 
1643
        endif()
 
1644
        
 
1645
        if(WITH_OPENCOLLADA)
 
1646
                set(OPENCOLLADA ${LIBDIR}/opencollada)
 
1647
 
 
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
 
1654
                )
 
1655
 
 
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)
 
1662
                #libxml2 is used
 
1663
                #set(EXPAT ${LIBDIR}/expat)
 
1664
                #set(EXPAT_LIBPATH ${EXPAT}/lib)
 
1665
                set(EXPAT_LIB)
 
1666
        endif()
 
1667
 
 
1668
        if(WITH_SDL)
 
1669
                set(SDL ${LIBDIR}/sdl)
 
1670
                set(SDL_INCLUDE_DIR ${SDL}/include)
 
1671
                set(SDL_LIBRARY SDL)
 
1672
                set(SDL_LIBPATH ${SDL}/lib)
 
1673
        endif()
 
1674
 
 
1675
        set(PNG "${LIBDIR}/png")
 
1676
        set(PNG_INCLUDE_DIR "${PNG}/include")
 
1677
        set(PNG_LIBPATH ${PNG}/lib)
 
1678
 
 
1679
        set(JPEG "${LIBDIR}/jpeg")
 
1680
        set(JPEG_INCLUDE_DIR "${JPEG}/include")
 
1681
        set(JPEG_LIBPATH ${JPEG}/lib)
 
1682
 
 
1683
        if(WITH_IMAGE_TIFF)
 
1684
                set(TIFF ${LIBDIR}/tiff)
 
1685
                set(TIFF_INCLUDE_DIR ${TIFF}/include)
 
1686
                set(TIFF_LIBRARY tiff)
 
1687
                set(TIFF_LIBPATH ${TIFF}/lib)
 
1688
        endif()
 
1689
 
 
1690
        if(WITH_INPUT_NDOF)
 
1691
                # linker needs "-weak_framework 3DconnexionClient"
 
1692
        endif()
 
1693
 
 
1694
        if(WITH_BOOST)
 
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 !
 
1701
                endif()
 
1702
                set(BOOST_LIBPATH ${BOOST}/lib)
 
1703
                set(BOOST_DEFINITIONS)
 
1704
        endif()
 
1705
 
 
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")
 
1712
        endif()
 
1713
 
 
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")
 
1720
        endif()
 
1721
 
 
1722
        if(WITH_LLVM)
 
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")
 
1727
                else()
 
1728
                        set(LLVM_CONFIG llvm-config)
 
1729
                endif()
 
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})
 
1742
 
 
1743
                if(LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIB_DIR)
 
1744
                        if(LLVM_STATIC)
 
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})
 
1752
                        endif()
 
1753
                else()
 
1754
                        message(FATAL_ERROR "LLVM not found.")
 
1755
                endif()
 
1756
        endif()
 
1757
 
 
1758
        if(WITH_CYCLES_OSL)
 
1759
                set(CYCLES_OSL ${LIBDIR}/osl CACHE PATH "Path to OpenShadingLanguage installation")
 
1760
        
 
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)
 
1768
        
 
1769
                if(OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER)
 
1770
                        set(OSL_FOUND TRUE)
 
1771
                else()
 
1772
                        message(STATUS "OSL not found")
 
1773
                endif()
 
1774
        endif()
 
1775
 
 
1776
        set(EXETYPE MACOSX_BUNDLE)
 
1777
 
 
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")
 
1786
                endif()
 
1787
        else()
 
1788
                set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
 
1789
                set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
 
1790
        endif()
 
1791
endif()
 
1792
 
 
1793
#-----------------------------------------------------------------------------
 
1794
# Common.
 
1795
 
 
1796
if(APPLE OR WIN32)
 
1797
        if(NOT EXISTS "${LIBDIR}/")
 
1798
                message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'")
 
1799
        endif()
 
1800
endif()
 
1801
 
 
1802
if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
 
1803
        message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
 
1804
endif()
 
1805
 
 
1806
if(WITH_CYCLES)
 
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")
 
1809
        endif()
 
1810
        if(NOT WITH_BOOST)
 
1811
                message(FATAL_ERROR "Cycles reqires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES")
 
1812
        endif()
 
1813
 
 
1814
        if(WITH_CYCLES_OSL)
 
1815
                if(NOT WITH_LLVM)
 
1816
                        message(FATAL_ERROR "Cycles OSL reqires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL")
 
1817
                endif()
 
1818
        endif()
 
1819
endif()
 
1820
 
 
1821
if(WITH_INTERNATIONAL)
 
1822
        if(NOT WITH_BOOST)
 
1823
                message(FATAL_ERROR "Internationalization reqires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL")
 
1824
        endif()
 
1825
endif()
 
1826
 
 
1827
# See TEST_SSE_SUPPORT() for how this is defined.
 
1828
 
 
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__)
 
1833
        endif()
 
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__)
 
1839
                endif()
 
1840
        endif()
 
1841
endif()
 
1842
 
 
1843
 
 
1844
# set the endian define
 
1845
if(MSVC)
 
1846
        # for some reason this fails on msvc
 
1847
        add_definitions(-D__LITTLE_ENDIAN__)
 
1848
        
 
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
 
1852
 
 
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__)
 
1857
        
 
1858
else()
 
1859
        include(TestBigEndian)
 
1860
        test_big_endian(_SYSTEM_BIG_ENDIAN)
 
1861
        if(_SYSTEM_BIG_ENDIAN)
 
1862
                add_definitions(-D__BIG_ENDIAN__)
 
1863
        else()
 
1864
                add_definitions(-D__LITTLE_ENDIAN__)
 
1865
        endif()
 
1866
        unset(_SYSTEM_BIG_ENDIAN)
 
1867
endif()
 
1868
 
 
1869
 
 
1870
if(WITH_IMAGE_OPENJPEG)
 
1871
        if(WITH_SYSTEM_OPENJPEG)
 
1872
                # dealt with above
 
1873
        else()
 
1874
                set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg")
 
1875
                add_definitions(-DOPJ_STATIC)
 
1876
        endif()
 
1877
endif()
 
1878
 
 
1879
if(WITH_IMAGE_REDCODE)
 
1880
        set(REDCODE ${CMAKE_SOURCE_DIR}/extern)
 
1881
        set(REDCODE_INC ${REDCODE})
 
1882
endif()
 
1883
 
 
1884
#-----------------------------------------------------------------------------
 
1885
# Blender WebPlugin
 
1886
 
 
1887
if(WITH_WEBPLUGIN)
 
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")
 
1890
 
 
1891
        set(WITH_PLAYER ON)
 
1892
endif()
 
1893
 
 
1894
 
 
1895
#-----------------------------------------------------------------------------
 
1896
# Configure OpenGL.
 
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
 
1901
 
 
1902
#-----------------------------------------------------------------------------
 
1903
# Configure OpenMP.
 
1904
if(WITH_OPENMP)
 
1905
        find_package(OpenMP)
 
1906
        if(OPENMP_FOUND)
 
1907
                set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
 
1908
                set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
 
1909
 
 
1910
                if(APPLE AND ${CMAKE_GENERATOR} MATCHES "Xcode")
 
1911
                        set(CMAKE_XCODE_ATTRIBUTE_ENABLE_OPENMP_SUPPORT "YES")
 
1912
                endif()
 
1913
        else()
 
1914
                set(WITH_OPENMP OFF)
 
1915
        endif()
 
1916
 
 
1917
        mark_as_advanced(
 
1918
                OpenMP_C_FLAGS
 
1919
                OpenMP_CXX_FLAGS
 
1920
        )
 
1921
endif()
 
1922
 
 
1923
#-----------------------------------------------------------------------------
 
1924
# Configure GLEW
 
1925
 
 
1926
if(WITH_SYSTEM_GLEW)
 
1927
        find_package(GLEW)
 
1928
 
 
1929
        if(NOT GLEW_FOUND)
 
1930
                message(FATAL_ERROR "GLEW is required to build blender, install it or disable WITH_SYSTEM_GLEW")
 
1931
        endif()
 
1932
 
 
1933
        mark_as_advanced(
 
1934
                GLEW_LIBRARY
 
1935
                GLEW_INCLUDE_PATH
 
1936
        )
 
1937
else()
 
1938
        # set(GLEW_LIBRARY "")  # unused
 
1939
        set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
 
1940
endif()
 
1941
 
 
1942
 
 
1943
#-----------------------------------------------------------------------------
 
1944
# Configure Bullet
 
1945
 
 
1946
if(WITH_BULLET AND WITH_SYSTEM_BULLET)
 
1947
        find_package(Bullet)
 
1948
        if(NOT BULLET_FOUND)
 
1949
                set(WITH_BULLET OFF)
 
1950
        endif()
 
1951
else()
 
1952
        set(BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src")
 
1953
        # set(BULLET_LIBRARIES "")
 
1954
endif()
 
1955
 
 
1956
#-----------------------------------------------------------------------------
 
1957
# Configure Python.
 
1958
 
 
1959
if(WITH_PYTHON_MODULE)
 
1960
        add_definitions(-DPy_ENABLE_SHARED)
 
1961
endif()
 
1962
 
 
1963
#-----------------------------------------------------------------------------
 
1964
# Extra compile flags
 
1965
 
 
1966
if(CMAKE_COMPILER_IS_GNUCC)
 
1967
 
 
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)
 
1987
 
 
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)
 
1991
        endif()
 
1992
 
 
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)
 
1997
        endif()
 
1998
 
 
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)
 
2001
 
 
2002
        if(NOT APPLE)
 
2003
                ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
 
2004
        endif()
 
2005
 
 
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)
 
2013
 
 
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)
 
2017
        endif()
 
2018
 
 
2019
        # causes too many warnings
 
2020
        if(NOT APPLE)
 
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)
 
2023
        endif()
 
2024
 
 
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)
 
2028
 
 
2029
        if(NOT APPLE)
 
2030
                ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
 
2031
        endif()
 
2032
 
 
2033
elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
 
2034
 
 
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)
 
2046
 
 
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)
 
2054
 
 
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)
 
2058
 
 
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)
 
2062
 
 
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)
 
2070
 
 
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)
 
2076
 
 
2077
elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
 
2078
 
 
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)
 
2082
 
 
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)
 
2086
 
 
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")
 
2090
 
 
2091
endif()
 
2092
 
 
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.
 
2096
if(WITH_PYTHON)
 
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}\"")
 
2102
        endif()
 
2103
 
 
2104
        if(WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY)
 
2105
                # set but invalid
 
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)
 
2112
#                       endif()
 
2113
                # not set, so initialize
 
2114
                else()
 
2115
                        string(REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}")
 
2116
                        list(GET _PY_VER_SPLIT 0 _PY_VER_MAJOR)
 
2117
 
 
2118
                        # re-cache
 
2119
                        unset(PYTHON_NUMPY_PATH CACHE)
 
2120
                        find_path(PYTHON_NUMPY_PATH
 
2121
                          NAMES
 
2122
                            numpy
 
2123
                          HINTS
 
2124
                            "${PYTHON_LIBPATH}/python${PYTHON_VERSION}/"
 
2125
                            "${PYTHON_LIBPATH}/python${_PY_VER_MAJOR}/"
 
2126
                          PATH_SUFFIXES
 
2127
                            site-packages
 
2128
                            dist-packages
 
2129
                           NO_DEFAULT_PATH
 
2130
                        )
 
2131
 
 
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)
 
2140
                        else()
 
2141
                                message(STATUS "numpy found at '${PYTHON_NUMPY_PATH}'")
 
2142
                        endif()
 
2143
 
 
2144
                        unset(_PY_VER_SPLIT)
 
2145
                        unset(_PY_VER_MAJOR)
 
2146
                endif()
 
2147
        endif()
 
2148
endif()
 
2149
 
 
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)
 
2155
endif()
 
2156
 
 
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}")
 
2161
 
 
2162
#-------------------------------------------------------------------------------
 
2163
# Global Defines
 
2164
 
 
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)
 
2169
endif()
 
2170
 
 
2171
if(WITH_ASSERT_ABORT)
 
2172
        add_definitions(-DWITH_ASSERT_ABORT)
 
2173
endif()
 
2174
 
 
2175
# message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
 
2176
# message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
 
2177
 
 
2178
#-----------------------------------------------------------------------------
 
2179
# Libraries
 
2180
 
 
2181
add_subdirectory(source)
 
2182
add_subdirectory(intern)
 
2183
add_subdirectory(extern)
 
2184
 
 
2185
 
 
2186
#-----------------------------------------------------------------------------
 
2187
# Blender Application
 
2188
if(WITH_BLENDER)
 
2189
        add_subdirectory(source/creator)
 
2190
endif()
 
2191
 
 
2192
 
 
2193
#-----------------------------------------------------------------------------
 
2194
# Blender Player
 
2195
if(WITH_PLAYER)
 
2196
        add_subdirectory(source/blenderplayer)
 
2197
endif()
 
2198
 
 
2199
#-----------------------------------------------------------------------------
 
2200
# CPack for generating packages
 
2201
include(build_files/cmake/packaging.cmake)
 
2202
 
 
2203
 
 
2204
#-----------------------------------------------------------------------------
 
2205
# Print Final Configuration
 
2206
 
 
2207
if(FIRST_RUN)
 
2208
        set(_config_msg "\n* Blender Configuration *")
 
2209
        macro(info_cfg_option
 
2210
                _setting)
 
2211
                set(_msg "   * ${_setting}")
 
2212
                string(LENGTH "${_msg}" _len)
 
2213
                while("32" GREATER "${_len}")
 
2214
                        set(_msg "${_msg} ")
 
2215
                         math(EXPR _len "${_len} + 1")
 
2216
                endwhile()
 
2217
 
 
2218
                set(_config_msg "${_config_msg}\n${_msg}${${_setting}}")
 
2219
        endmacro()
 
2220
 
 
2221
        macro(info_cfg_text
 
2222
                _text)
 
2223
                set(_config_msg "${_config_msg}\n\n  ${_text}")
 
2224
 
 
2225
 
 
2226
        endmacro()
 
2227
 
 
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)
 
2241
 
 
2242
        info_cfg_text("Compiler Options:")
 
2243
        info_cfg_option(WITH_BUILDINFO)
 
2244
        info_cfg_option(WITH_OPENMP)
 
2245
        info_cfg_option(WITH_RAYOPTIMIZATION)
 
2246
 
 
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)
 
2254
 
 
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)
 
2263
 
 
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)
 
2272
 
 
2273
        info_cfg_text("Compression:")
 
2274
        info_cfg_option(WITH_LZMA)
 
2275
        info_cfg_option(WITH_LZO)
 
2276
 
 
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)
 
2282
        if(APPLE)
 
2283
                info_cfg_option(WITH_PYTHON_FRAMEWORK)
 
2284
        endif()
 
2285
 
 
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)
 
2291
 
 
2292
        # debug
 
2293
        message(STATUS "HAVE_STDBOOL_H = ${HAVE_STDBOOL_H}")
 
2294
 
 
2295
        info_cfg_text("")
 
2296
 
 
2297
        message("${_config_msg}")
 
2298
endif()