~siretart/ubuntu/utopic/blender/libav10

« back to all changes in this revision

Viewing changes to CMakeLists.txt

  • Committer: Package Import Robot
  • Author(s): Matteo F. Vescovi
  • Date: 2012-07-23 08:54:18 UTC
  • mfrom: (14.2.16 sid)
  • mto: (14.2.19 sid)
  • mto: This revision was merged to the branch mainline in revision 42.
  • Revision ID: package-import@ubuntu.com-20120723085418-9foz30v6afaf5ffs
Tags: 2.63a-2
* debian/: Cycles support added (Closes: #658075)
  For now, this top feature has been enabled only
  on [any-amd64 any-i386] architectures because
  of OpenImageIO failing on all others
* debian/: scripts installation path changed
  from /usr/lib to /usr/share:
  + debian/patches/: patchset re-worked for path changing
  + debian/control: "Breaks" field added on yafaray-exporter

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# $Id: CMakeLists.txt 30345 2010-07-14 20:26:46Z campbellbarton $
 
1
# -*- mode: cmake; indent-tabs-mode: t; -*-
2
2
# ***** BEGIN GPL LICENSE BLOCK *****
3
3
#
4
4
# This program is free software; you can redistribute it and/or
25
25
# ***** END GPL LICENSE BLOCK *****
26
26
 
27
27
#-----------------------------------------------------------------------------
28
 
# We don't allow in-source builds. This causes no end of troubles because 
29
 
# all out-of-source builds will use the CMakeCache.txt file there and even 
30
 
# build the libs and objects in it. It will also conflict with the current 
31
 
# Makefile system for Blender
32
 
 
33
 
IF(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
34
 
MESSAGE(FATAL_ERROR "CMake generation for blender is not allowed within the source directory! 
35
 
Remove the CMakeCache.txt file and try again from another folder, e.g.: 
36
 
 
37
 
        rm CMakeCache.txt 
38
 
        cd ..
39
 
        mkdir cmake-make 
40
 
        cd cmake-make
41
 
        cmake -G \"Unix Makefiles\" ../blender
42
 
")
43
 
ENDIF(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
44
 
 
45
 
CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
 
28
# We don't allow in-source builds. This causes no end of troubles because
 
29
# all out-of-source builds will use the CMakeCache.txt file there and even
 
30
# build the libs and objects in it.
 
31
 
 
32
if(${CMAKE_SOURCE_DIR} STREQUAL ${CMAKE_BINARY_DIR})
 
33
        if(NOT DEFINED WITH_IN_SOURCE_BUILD)
 
34
                message(FATAL_ERROR
 
35
                        "CMake generation for blender is not allowed within the source directory!"
 
36
                        "\n Remove the CMakeCache.txt file and try again from another folder, e.g.:"
 
37
                        "\n "
 
38
                        "\n rm CMakeCache.txt"
 
39
                        "\n cd .."
 
40
                        "\n mkdir cmake-make"
 
41
                        "\n cd cmake-make"
 
42
                        "\n cmake ../blender"
 
43
                        "\n "
 
44
                        "\n Alternately define WITH_IN_SOURCE_BUILD to force this option (not recommended!)"
 
45
                )
 
46
        endif()
 
47
endif()
 
48
 
 
49
cmake_minimum_required(VERSION 2.8)
 
50
 
 
51
if(NOT EXECUTABLE_OUTPUT_PATH)
 
52
        set(FIRST_RUN "TRUE")
 
53
endif()
 
54
 
 
55
# this starts out unset
 
56
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/build_files/cmake/Modules")
 
57
 
 
58
# avoid having empty buildtype
 
59
set(CMAKE_BUILD_TYPE_INIT "Release")
46
60
 
47
61
# quiet output for Makefiles, 'make -s' helps too
48
 
# SET_PROPERTY(GLOBAL PROPERTY RULE_MESSAGES OFF)
49
 
 
50
 
PROJECT(Blender)
 
62
# set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
 
63
 
 
64
# global compile definitions since add_definitions() adds for all.
 
65
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG           DEBUG _DEBUG)
 
66
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE         NDEBUG)
 
67
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_MINSIZEREL      NDEBUG)
 
68
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO  NDEBUG)
 
69
 
 
70
 
 
71
#-----------------------------------------------------------------------------
 
72
# Set policy
 
73
 
 
74
# see "cmake --help-policy CMP0003"
 
75
# So library linking is more sane
 
76
cmake_policy(SET CMP0003 NEW)
 
77
 
 
78
# So BUILDINFO and BLENDERPATH strings are automatically quoted
 
79
cmake_policy(SET CMP0005 NEW)
 
80
 
 
81
# So syntax problems are errors
 
82
cmake_policy(SET CMP0010 NEW)
 
83
 
 
84
# Input directories must have CMakeLists.txt
 
85
cmake_policy(SET CMP0014 NEW)
 
86
 
 
87
#-----------------------------------------------------------------------------
 
88
# Load some macros.
 
89
include(build_files/cmake/macros.cmake)
 
90
 
 
91
 
 
92
#-----------------------------------------------------------------------------
 
93
# Initialize project.
 
94
 
 
95
blender_project_hack_pre()
 
96
 
 
97
project(Blender)
 
98
 
 
99
blender_project_hack_post()
 
100
 
 
101
enable_testing()
51
102
 
52
103
#-----------------------------------------------------------------------------
53
104
# Redirect output files
54
105
 
55
 
SET(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin)
56
 
SET(LIBRARY_OUTPUT_PATH  ${CMAKE_BINARY_DIR}/lib)
57
 
 
58
 
#-----------------------------------------------------------------------------
59
 
# Load some macros.
60
 
INCLUDE(build_files/cmake/macros.cmake)
 
106
set(EXECUTABLE_OUTPUT_PATH ${CMAKE_BINARY_DIR}/bin CACHE INTERNAL "" FORCE )
 
107
set(LIBRARY_OUTPUT_PATH ${CMAKE_BINARY_DIR}/lib CACHE INTERNAL "" FORCE )
61
108
 
62
109
#-----------------------------------------------------------------------------
63
110
# Set default config options
64
111
 
65
 
GET_BLENDER_VERSION()
 
112
get_blender_version()
 
113
 
66
114
 
67
115
# Blender internal features
68
 
OPTION(WITH_INTERNATIONAL "Enable I18N   (International fonts and text)" ON)
69
 
OPTION(WITH_LCMS          "Enable color correction with lcms" OFF)
70
 
OPTION(WITH_PYTHON        "Enable Embedded Python API" ON)
71
 
OPTION(WITH_BUILDINFO     "Include extra build details" ON)
72
 
OPTION(WITH_ELBEEM        "Enable Elbeem (Fluid Simulation)" ON)
73
 
OPTION(WITH_FFTW3         "Enable FFTW3 support (Used for smoke and audio effects)" OFF)
74
 
OPTION(WITH_BULLET        "Enable Bullet (Physics Engine)" ON)
75
 
OPTION(WITH_GAMEENGINE    "Enable Game Engine" ON)
76
 
OPTION(WITH_PLAYER        "Build Player" OFF)
 
116
option(WITH_BLENDER "Build blender (disable to build only the blender player)" ON)
 
117
mark_as_advanced(WITH_BLENDER)
 
118
 
 
119
option(WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON)
 
120
if(UNIX AND NOT APPLE)
 
121
    option(WITH_FONTCONFIG "Enable Fontconfig (discovering fonts installed on linux)" OFF)
 
122
endif()
 
123
 
 
124
option(WITH_PYTHON        "Enable Embedded Python API  (only disable for development)" ON)
 
125
option(WITH_PYTHON_SECURITY "Disables execution of scripts within blend files by default (recommend to leave off)" OFF)
 
126
mark_as_advanced(WITH_PYTHON)  # dont want people disabling this unless they really know what they are doing.
 
127
mark_as_advanced(WITH_PYTHON_SECURITY)  # some distrobutions see this as a security issue, rather than have them patch it, make a build option.
 
128
 
 
129
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)
 
130
option(WITH_PYTHON_MODULE "Enable building as a python module (experimental, only enable for development)" OFF)
 
131
option(WITH_BUILDINFO     "Include extra build details (only disable for development & faster builds)" ON)
 
132
option(WITH_IK_ITASC      "Enable ITASC IK solver (only disable for development & for incompatible C++ compilers)" ON)
 
133
option(WITH_FFTW3         "Enable FFTW3 support (Used for smoke and audio effects)" OFF)
 
134
option(WITH_BULLET        "Enable Bullet (Physics Engine)" ON)
 
135
option(WITH_GAMEENGINE    "Enable Game Engine" ON)
 
136
option(WITH_PLAYER        "Build Player" OFF)
 
137
 
 
138
# GHOST Windowing Library Options
 
139
option(WITH_GHOST_DEBUG   "Enable debugging output for the GHOST library" OFF)
 
140
mark_as_advanced(WITH_GHOST_DEBUG)
 
141
 
 
142
option(WITH_GHOST_SDL    "Enable building blender against SDL for windowing rather then the native APIs" OFF)
 
143
mark_as_advanced(WITH_GHOST_SDL)
 
144
 
 
145
# Misc...
 
146
option(WITH_HEADLESS      "Build without graphical support (renderfarm, server mode only)" OFF)
 
147
mark_as_advanced(WITH_HEADLESS)
 
148
 
 
149
option(WITH_AUDASPACE    "Build with blenders audio library (only disable if you know what you're doing!)" ON)
 
150
mark_as_advanced(WITH_AUDASPACE)
 
151
 
 
152
 
77
153
# (unix defaults to OpenMP On)
78
 
IF(UNIX AND NOT APPLE)
79
 
        OPTION(WITH_OPENMP        "Enable OpenMP (has to be supported by the compiler)" ON)
80
 
ELSE()
81
 
        OPTION(WITH_OPENMP        "Enable OpenMP (has to be supported by the compiler)" OFF)
82
 
ENDIF()
 
154
if(UNIX AND NOT APPLE)
 
155
        set(PLATFORM_DEFAULT ON)
 
156
else()
 
157
        set(PLATFORM_DEFAULT OFF)
 
158
endif()
 
159
option(WITH_OPENMP        "Enable OpenMP (has to be supported by the compiler)" ${PLATFORM_DEFAULT})
 
160
unset(PLATFORM_DEFAULT)
 
161
 
 
162
 
 
163
if(UNIX AND NOT APPLE)
 
164
        option(WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)"   ON)
 
165
        option(WITH_X11_XF86VMODE "Enable X11 video mode switching"     ON)
 
166
        option(WITH_BUILTIN_GLEW "Use GLEW OpenGL wrapper library bundled with blender" ON)
 
167
        option(WITH_XDG_USER_DIRS    "Build with XDG Base Directory Specification (only config and documents for now)" OFF)
 
168
        mark_as_advanced(WITH_XDG_USER_DIRS)
 
169
 
 
170
        # freebsd doesn't seems to support XDND
 
171
        if(NOT ${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
 
172
                option(WITH_GHOST_XDND   "Enable drag'n'drop support on Linux using XDND protocol" ON)
 
173
        endif()
 
174
else()
 
175
        # not an option for other OS's
 
176
        set(WITH_BUILTIN_GLEW ON)
 
177
endif()
 
178
 
 
179
# Modifiers
 
180
option(WITH_MOD_FLUID           "Enable Elbeem Modifier (Fluid Simulation)" ON)
 
181
option(WITH_MOD_SMOKE           "Enable Smoke Modifier (Smoke Simulation)" ON)
 
182
option(WITH_MOD_DECIMATE        "Enable Decimate Modifier" ON)
 
183
option(WITH_MOD_BOOLEAN         "Enable Boolean Modifier" ON)
 
184
option(WITH_MOD_REMESH          "Enable Remesh Modifier" ON)
 
185
option(WITH_MOD_CLOTH_ELTOPO    "Enable Experimental cloth solver" OFF)
 
186
mark_as_advanced(WITH_MOD_CLOTH_ELTOPO)
 
187
option(WITH_MOD_OCEANSIM        "Enable Ocean Modifier" OFF)
83
188
 
84
189
# Image format support
85
 
OPTION(WITH_OPENEXR       "Enable OpenEXR Support (http://www.openexr.com)" ON)
86
 
OPTION(WITH_OPENJPEG      "Enable OpenJpeg Support (http://www.openjpeg.org/)" OFF)
87
 
OPTION(WITH_TIFF          "Enable LibTIFF Support" ON)
88
 
OPTION(WITH_DDS           "Enable DDS Support" ON)
89
 
 
90
 
# Audio format support
91
 
OPTION(WITH_FFMPEG        "Enable FFMPeg Support (http://ffmpeg.mplayerhq.hu/)" OFF)
92
 
OPTION(WITH_SNDFILE       "Enable libsndfile Support (http://www.mega-nerd.com/libsndfile)" OFF)
93
 
IF(APPLE OR WIN32)
94
 
        OPTION(WITH_QUICKTIME     "Enable Quicktime Support" OFF)
95
 
ENDIF(APPLE OR WIN32)
 
190
option(WITH_IMAGE_OPENEXR       "Enable OpenEXR Support (http://www.openexr.com)" ON)
 
191
option(WITH_IMAGE_OPENJPEG      "Enable OpenJpeg Support (http://www.openjpeg.org)" ON)
 
192
option(WITH_IMAGE_TIFF          "Enable LibTIFF Support" ON)
 
193
option(WITH_IMAGE_DDS           "Enable DDS Image Support" ON)
 
194
option(WITH_IMAGE_CINEON        "Enable CINEON and DPX Image Support" ON)
 
195
option(WITH_IMAGE_HDR           "Enable HDR Image Support" ON)
 
196
option(WITH_IMAGE_REDCODE       "Enable RedCode Image Support" OFF)
 
197
option(WITH_IMAGE_FRAMESERVER   "Enable image FrameServer Support for rendering" ON)
 
198
 
 
199
# Audio/Video format support
 
200
option(WITH_CODEC_FFMPEG        "Enable FFMPeg Support (http://ffmpeg.org)" OFF)
 
201
unset(PLATFORM_DEFAULT)
 
202
 
 
203
option(WITH_CODEC_SNDFILE       "Enable libsndfile Support (http://www.mega-nerd.com/libsndfile)" OFF)
 
204
if(APPLE OR (WIN32 AND NOT UNIX))
 
205
        option(WITH_CODEC_QUICKTIME     "Enable Quicktime Support" OFF)
 
206
endif()
96
207
 
97
208
# 3D format support
98
209
# disable opencollada on non-apple unix because opencollada has no package for debian
99
 
IF(UNIX AND NOT APPLE)
100
 
        OPTION(WITH_OPENCOLLADA         "Enable OpenCollada Support (http://www.opencollada.org/)"      OFF)
101
 
ELSE()
102
 
        OPTION(WITH_OPENCOLLADA         "Enable OpenCollada Support (http://www.opencollada.org/)"      OFF)
103
 
ENDIF()
 
210
option(WITH_OPENCOLLADA         "Enable OpenCollada Support (http://www.opencollada.org)"       OFF)
104
211
 
105
212
# Sound output
106
 
OPTION(WITH_SDL           "Enable SDL for sound and joystick support" ON)
107
 
OPTION(WITH_OPENAL        "Enable OpenAL Support (http://www.openal.org)" ON)
108
 
OPTION(WITH_JACK          "Enable Jack Support (http://www.jackaudio.org)" OFF)
 
213
option(WITH_SDL           "Enable SDL for sound and joystick support" ON)
 
214
option(WITH_OPENAL        "Enable OpenAL Support (http://www.openal.org)" ON)
 
215
option(WITH_JACK          "Enable Jack Support (http://www.jackaudio.org)" OFF)
109
216
 
110
217
# Compression
111
 
OPTION(WITH_LZO           "Enable fast LZO compression (used for pointcache)" ON)
112
 
OPTION(WITH_LZMA          "Enable best LZMA compression, (used for pointcache)" ON)
 
218
option(WITH_LZO           "Enable fast LZO compression (used for pointcache)" ON)
 
219
option(WITH_LZMA          "Enable best LZMA compression, (used for pointcache)" ON)
 
220
 
 
221
# Camera/motion tracking
 
222
option(WITH_LIBMV         "Enable libmv structure from motion library" ON)
 
223
 
 
224
# Mesh boolean lib
 
225
option(WITH_CARVE         "Enable Carve library to handle mesh boolean operations" ON)
113
226
 
114
227
# Misc
115
 
OPTION(WITH_RAYOPTIMIZATION     "Enable use of SIMD (SSE) optimizations for the raytracer" ON) 
116
 
OPTION(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking" OFF)
117
 
OPTION(WITH_INSTALL       "Install accompanying scripts and language files needed to run blender" ON)
118
 
 
119
 
IF(APPLE)
120
 
        OPTION(WITH_COCOA         "Use Cocoa framework instead of deprecated Carbon" ON)
121
 
        OPTION(USE_QTKIT          "Use QtKit instead of Carbon quicktime (needed for having partial quicktime for 64bit)" OFF)
122
 
        OPTION(WITH_LIBS10.5  "Use 10.5 libs (needed for 64bit builds)" OFF)
123
 
ENDIF(APPLE)
124
 
 
125
 
IF(NOT WITH_BULLET AND WITH_GAMEENGINE)
126
 
        MESSAGE("WARNING: WITH_GAMEENGINE needs WITH_BULLET")
127
 
ENDIF(NOT WITH_BULLET AND WITH_GAMEENGINE)
128
 
 
129
 
IF(NOT WITH_GAMEENGINE AND WITH_PLAYER)
130
 
        MESSAGE("WARNING: WITH_PLAYER needs WITH_GAMEENGINE")
131
 
ENDIF(NOT WITH_GAMEENGINE AND WITH_PLAYER)
132
 
 
133
 
TEST_SSE_SUPPORT()
 
228
option(WITH_INPUT_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ON)
 
229
option(WITH_RAYOPTIMIZATION     "Enable use of SIMD (SSE) optimizations for the raytracer" ON)
 
230
if(UNIX AND NOT APPLE)
 
231
        option(WITH_INSTALL_PORTABLE "Install redistributeable runtime, otherwise install into CMAKE_INSTALL_PREFIX" ON)
 
232
endif()
 
233
option(WITH_PYTHON_INSTALL       "Copy system python into the blender install folder" ON)
 
234
option(WITH_MINGW64                   "Use the 64-bit version of MinGW" OFF)
 
235
mark_as_advanced(WITH_MINGW64)
 
236
 
 
237
# Cycles
 
238
option(WITH_CYCLES                                      "Enable cycles Render Engine" ON)
 
239
option(WITH_CYCLES_TEST                         "Build cycles test application" OFF)
 
240
option(WITH_CYCLES_CUDA_BINARIES        "Build cycles CUDA binaries" OFF)
 
241
set(CYCLES_CUDA_BINARIES_ARCH           sm_13 sm_20 sm_21 CACHE STRING "CUDA architectures to build binaries for")
 
242
mark_as_advanced(CYCLES_CUDA_BINARIES_ARCH)
 
243
 
 
244
# disable for now, but plan to support on all platforms eventually
 
245
option(WITH_MEM_JEMALLOC   "Enable malloc replacement (http://www.canonware.com/jemalloc)" OFF)
 
246
mark_as_advanced(WITH_MEM_JEMALLOC)
 
247
 
 
248
# Debug
 
249
option(WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking (only enable for development)" OFF)
 
250
mark_as_advanced(WITH_CXX_GUARDEDALLOC)
 
251
 
 
252
option(WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF)
 
253
mark_as_advanced(WITH_ASSERT_ABORT)
 
254
 
 
255
 
 
256
if(APPLE)
 
257
        if(NOT CMAKE_OSX_ARCHITECTURES)
 
258
                set(CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING
 
259
                "Choose the architecture you want to build Blender for: i386, x86_64 or ppc"
 
260
                FORCE)
 
261
        endif()
 
262
        
 
263
        execute_process(COMMAND uname -r OUTPUT_VARIABLE MAC_SYS) # check for actual system-version
 
264
        if (${MAC_SYS} MATCHES 11)
 
265
                set(OSX_SYSTEM 10.7)
 
266
        elseif(${MAC_SYS} MATCHES 10)
 
267
                set(OSX_SYSTEM 10.6)
 
268
        elseif(${MAC_SYS} MATCHES 9)
 
269
                set(OSX_SYSTEM 10.5)
 
270
        else()
 
271
                set(OSX_SYSTEM unsupported)
 
272
        endif()
 
273
        message(STATUS "Detected system-version: " ${OSX_SYSTEM})
 
274
        
 
275
        if(NOT CMAKE_OSX_DEPLOYMENT_TARGET)
 
276
                        set(CMAKE_OSX_DEPLOYMENT_TARGET "10.5" CACHE STRING "" FORCE) # 10.5 is our minimum target, if you have higher sdk, weak linking happens
 
277
        endif()
 
278
 
 
279
        if(${CMAKE_GENERATOR} MATCHES "Xcode")
 
280
        
 
281
                ##### workaround for actual official cmake incompatibility with xcode 4.3 ##### 
 
282
                if(${XCODE_VERSION} MATCHES '') # cmake fails due looking for xcode in the wrong path, thus will be empty var
 
283
                        message("Official cmake does not yet support Xcode 4.3, get a patched version here: http://www.jensverwiebe.de/Blender/CMake%202.8-7patched.zip")
 
284
                endif()
 
285
                ### end workaround for actual official cmake incompatibility with xcode 4.3 ### 
 
286
                
 
287
                if(${XCODE_VERSION} VERSION_EQUAL 4 OR ${XCODE_VERSION} VERSION_GREATER 4 AND ${XCODE_VERSION} VERSION_LESS 4.3)
 
288
                        # Xcode 4 defaults to the Apple LLVM Compiler.
 
289
                        # Override the default compiler selection because Blender only compiles with gcc up to xcode 4.2
 
290
                        set(CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42")
 
291
                        message(STATUS "Setting compiler to: " ${CMAKE_XCODE_ATTRIBUTE_GCC_VERSION})
 
292
                endif()
 
293
        else() # unix makefile generator does not fill XCODE_VERSION var, so we get it with a command
 
294
                execute_process(COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERS_BUILDNR )
 
295
                STRING(SUBSTRING ${XCODE_VERS_BUILDNR} 6 3 XCODE_VERSION) # truncate away build-nr
 
296
        endif()
 
297
        
 
298
        message(STATUS "Detected Xcode-version: " ${XCODE_VERSION})
 
299
        
 
300
        option(WITH_COCOA         "Use Cocoa framework instead of deprecated Carbon" ON)
 
301
        option(USE_QTKIT          "Use QtKit instead of Carbon quicktime (needed for having partial quicktime for 64bit)" OFF)
 
302
        option(WITH_LIBS10.5  "Use 10.5 libs (needed for 64bit builds)" OFF)
 
303
endif()
 
304
 
 
305
 
 
306
#-----------------------------------------------------------------------------
 
307
# Check for conflicting/unsupported configurations
 
308
 
 
309
if(NOT WITH_BLENDER AND NOT WITH_PLAYER)
 
310
        message(FATAL_ERROR "At least one of WITH_BLENDER or WITH_PLAYER must be enabled, nothing to do!")
 
311
endif()
 
312
 
 
313
if(NOT WITH_GAMEENGINE AND WITH_PLAYER)
 
314
        message(FATAL_ERROR "WITH_PLAYER requires WITH_GAMEENGINE")
 
315
endif()
 
316
 
 
317
if(NOT WITH_AUDASPACE AND (WITH_OPENAL OR WITH_SDL OR WITH_JACK OR WITH_GAMEENGINE))
 
318
        message(FATAL_ERROR "WITH_OPENAL/WITH_SDL/WITH_JACK/WITH_CODEC_FFMPEG/WITH_GAMEENGINE require WITH_AUDASPACE")
 
319
endif()
 
320
 
 
321
if(NOT WITH_SDL AND WITH_GHOST_SDL)
 
322
        message(FATAL_ERROR "WITH_GHOST_SDL requires WITH_SDL to be ON")
 
323
endif()
 
324
 
 
325
if(WITH_IMAGE_REDCODE AND ((NOT WITH_IMAGE_OPENJPEG) OR (NOT WITH_CODEC_FFMPEG)))
 
326
        message(FATAL_ERROR "WITH_IMAGE_REDCODE requires WITH_IMAGE_OPENJPEG and WITH_CODEC_FFMPEG")
 
327
endif()
 
328
 
 
329
# python module, needs some different options
 
330
if(WITH_PYTHON_MODULE AND WITH_PLAYER)
 
331
        message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PLAYER to be OFF")
 
332
endif()
 
333
 
 
334
if(WITH_PYTHON_MODULE AND WITH_PYTHON_INSTALL)
 
335
        message(FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PYTHON_INSTALL to be OFF")
 
336
endif()
 
337
 
 
338
 
 
339
if(NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM)
 
340
        message(FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON")
 
341
endif()
 
342
 
 
343
# may as well build python module without a UI
 
344
if(WITH_PYTHON_MODULE)
 
345
        set(WITH_HEADLESS ON)
 
346
endif()
 
347
 
 
348
# auto enable openimageio for cycles
 
349
if(WITH_CYCLES)
 
350
        set(WITH_OPENIMAGEIO ON)
 
351
endif()
 
352
 
 
353
# auto enable boost for cycles and carve
 
354
if(WITH_CYCLES OR WITH_CARVE)
 
355
        set(WITH_BOOST ON)
 
356
endif()
 
357
 
 
358
# don't store paths to libs for portable distrobution
 
359
if(WITH_INSTALL_PORTABLE)
 
360
        set(CMAKE_SKIP_BUILD_RPATH TRUE)
 
361
endif()
 
362
 
 
363
if(WITH_GHOST_SDL OR WITH_HEADLESS)
 
364
        set(WITH_GHOST_XDND OFF)
 
365
endif()
 
366
 
 
367
if(MINGW)
 
368
        if(WITH_CODEC_QUICKTIME)
 
369
                message(FATAL_ERROR "MINGW requires WITH_CODEC_QUICKTIME to be OFF "
 
370
                                    "because it is currently unsupported, remove this "
 
371
                                    "line if youre a developer who wants to add support.")
 
372
        endif()
 
373
        
 
374
        if((WITH_MINGW64) AND (WITH_OPENCOLLADA OR WITH_CODEC_FFMPEG))
 
375
                message(FATAL_ERROR "MINGW64 still doesn't support: WITH_OPENCOLLADA/WITH_CODEC_FFMPEG")
 
376
        endif()
 
377
endif()
 
378
 
 
379
TEST_SSE_SUPPORT(COMPILER_SSE_FLAG COMPILER_SSE2_FLAG)
 
380
 
 
381
 
 
382
#-----------------------------------------------------------------------------
 
383
# Check for valid directories
 
384
# ... svn extern paths can be missing because of svn-git.
 
385
 
 
386
if(WITH_INTERNATIONAL)
 
387
        if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/datafiles/locale")
 
388
                message(WARNING "Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
 
389
                                                "This is an 'svn external', which are known not to work with bridges to other version "
 
390
                                                "control systems, disabling 'WITH_INTERNATIONAL'.")
 
391
                set(WITH_INTERNATIONAL OFF)
 
392
        endif()
 
393
endif()
 
394
 
 
395
if(WITH_PYTHON)
 
396
        if(NOT EXISTS "${CMAKE_SOURCE_DIR}/release/scripts/addons")
 
397
                message(WARNING "Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
 
398
                                                "This is an 'svn external', which are known not to work with bridges to other version "
 
399
                                                "control systems: * CONTINUING WITHOUT ADDONS *")
 
400
        endif()
 
401
endif()
 
402
 
 
403
#-----------------------------------------------------------------------------
 
404
# Initialize un-cached vars, avoid unused warning
 
405
 
 
406
# linux only, not cached
 
407
set(WITH_BINRELOC OFF)
 
408
 
 
409
# MAXOSX only, set to avoid uninitialized
 
410
set(EXETYPE "")
 
411
 
 
412
# C/C++ flags
 
413
set(PLATFORM_CFLAGS)
 
414
 
 
415
# these are added to later on.
 
416
set(C_WARNINGS)
 
417
set(CXX_WARNINGS)
 
418
 
 
419
# for gcc -Wno-blah-blah
 
420
set(CC_REMOVE_STRICT_FLAGS)
 
421
 
 
422
# libraries to link the binary with passed to target_link_libraries()
 
423
# known as LLIBS to scons
 
424
set(PLATFORM_LINKLIBS "")
 
425
 
 
426
# Added to linker flags in setup_liblinks
 
427
# - CMAKE_EXE_LINKER_FLAGS
 
428
# - CMAKE_EXE_LINKER_FLAGS_DEBUG
 
429
set(PLATFORM_LINKFLAGS "")
 
430
set(PLATFORM_LINKFLAGS_DEBUG "")
 
431
 
134
432
 
135
433
# disabled for now, not supported
136
 
# OPTION(WITH_WEBPLUGIN     "Enable Web Plugin (Unix only)" OFF)
 
434
# option(WITH_WEBPLUGIN     "Enable Web Plugin (Unix only)" OFF)
137
435
 
138
436
# For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
139
 
# On Unix: 
140
 
#   cmake -D PYTHON_LIB=/usr/local/lib/python3.1/config/libpython3.1.so -D PYTHON_INC=/usr/local/include/python3.1 -G "Unix Makefiles" ../blender
141
 
# On Macs: 
142
 
#   cmake -D PYTHON_INC=/System/Library/Frameworks/Python.framework/Versions/3.1/include/python3.1 -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.1/lib/python3.1/config -G Xcode ../blender
143
 
#
144
 
# When changing any of this remember to update the notes in doc/blender-cmake.txt
 
437
# On Unix:
 
438
#   cmake ../blender \
 
439
#         -D PYTHON_VERSION=3.2 \
 
440
#         -D PYTHON_INCLUDE_DIR=/opt/py32/include/python3.2d \
 
441
#         -D PYTHON_LIBRARY=/opt/py32/lib/libpython3.2d.so
 
442
#
 
443
# On Macs:
 
444
#   cmake ../blender \
 
445
#         -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.2/include/python3.2 \
 
446
#         -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/config \
 
447
#         -G Xcode
 
448
#
 
449
# When changing any of this remember to update the notes in doc/build_systems/cmake.txt
145
450
 
146
451
#-----------------------------------------------------------------------------
147
452
#Platform specifics
148
453
 
149
 
IF(UNIX AND NOT APPLE)
150
 
 
151
 
        IF(WITH_OPENAL)
152
 
                FIND_PACKAGE(OpenAL)
153
 
                IF(NOT OPENAL_FOUND)
154
 
                        SET(WITH_OPENAL OFF)
155
 
                ENDIF(NOT OPENAL_FOUND)
156
 
        ENDIF(WITH_OPENAL)
157
 
 
158
 
        IF(WITH_JACK)
159
 
                SET(JACK /usr)
160
 
                SET(JACK_INC ${JACK}/include/jack)
161
 
                SET(JACK_LIB jack)
162
 
                SET(JACK_LIBPATH ${JACK}/lib)
163
 
        ENDIF(WITH_JACK)
164
 
 
165
 
        IF(WITH_SNDFILE)
166
 
        SET(SNDFILE /usr)
167
 
        SET(SNDFILE_INC ${SNDFILE}/include)
168
 
        SET(SNDFILE_LIB sndfile)
169
 
        SET(SNDFILE_LIBPATH ${SNDFILE}/lib)
170
 
        ENDIF(WITH_SNDFILE)
171
 
 
172
 
        IF(WITH_INTERNATIONAL)
173
 
                FIND_LIBRARY(INTL_LIBRARY
 
454
if(UNIX AND NOT APPLE)
 
455
 
 
456
        # needed for ubuntu 11.04
 
457
        if(EXISTS "/usr/lib/x86_64-linux-gnu")
 
458
                set(CMAKE_LIBRARY_PATH "/usr/lib/x86_64-linux-gnu;${CMAKE_LIBRARY_PATH}")
 
459
        endif()
 
460
 
 
461
        # set lib directory if it exists
 
462
        if(CMAKE_SYSTEM_NAME MATCHES "Linux")
 
463
                if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
 
464
                        set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/linux64)
 
465
                else()
 
466
                        set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/linux)
 
467
                endif()
 
468
 
 
469
                if(NOT EXISTS ${LIBDIR})
 
470
                        unset(LIBDIR)
 
471
                endif()
 
472
        endif()
 
473
 
 
474
        find_package(JPEG REQUIRED)
 
475
        find_package(PNG REQUIRED)
 
476
        find_package(ZLIB REQUIRED)
 
477
        find_package(Freetype REQUIRED)
 
478
 
 
479
        if(WITH_PYTHON)
 
480
                # No way to set py32. remove for now.
 
481
                # find_package(PythonLibs)
 
482
 
 
483
                # Use our own instead, since wothout py is such a rare case,
 
484
                # require this package
 
485
                find_package(PythonLibsUnix REQUIRED)
 
486
        endif()
 
487
 
 
488
 
 
489
        if(WITH_IMAGE_OPENEXR)
 
490
                find_package(OpenEXR)  # our own module
 
491
                if(NOT OPENEXR_FOUND)
 
492
                        set(WITH_IMAGE_OPENEXR OFF)
 
493
                endif()
 
494
        endif()
 
495
 
 
496
        if(WITH_IMAGE_OPENJPEG)
 
497
                find_package(OpenJPEG)
 
498
                if(NOT OPENJPEG_FOUND)
 
499
                        set(WITH_IMAGE_OPENJPEG OFF)
 
500
                endif()
 
501
        endif()
 
502
 
 
503
        if(WITH_IMAGE_TIFF)
 
504
                find_package(TIFF)
 
505
                if(NOT TIFF_FOUND)
 
506
                        set(WITH_IMAGE_TIFF OFF)
 
507
                endif()
 
508
        endif()
 
509
 
 
510
        # Audio IO
 
511
        if(WITH_OPENAL)
 
512
                find_package(OpenAL)
 
513
                if(NOT OPENAL_FOUND)
 
514
                        set(WITH_OPENAL OFF)
 
515
                endif()
 
516
        endif()
 
517
 
 
518
        if(WITH_SDL)
 
519
                find_package(SDL)
 
520
                mark_as_advanced(
 
521
                        SDLMAIN_LIBRARY
 
522
                        SDL_INCLUDE_DIR
 
523
                        SDL_LIBRARY
 
524
                        SDL_LIBRARY_TEMP
 
525
                )
 
526
                # unset(SDLMAIN_LIBRARY CACHE)
 
527
                if(NOT SDL_FOUND)
 
528
                        set(WITH_SDL OFF)
 
529
                endif()
 
530
        endif()
 
531
 
 
532
        if(WITH_JACK)
 
533
                find_package(Jack)
 
534
                if(NOT JACK_FOUND)
 
535
                        set(WITH_JACK OFF)
 
536
                endif()
 
537
        endif()
 
538
 
 
539
        # Codecs
 
540
        if(WITH_CODEC_SNDFILE)
 
541
                find_package(SndFile)
 
542
                if(NOT SNDFILE_FOUND)
 
543
                        set(WITH_CODEC_SNDFILE OFF)
 
544
                endif()
 
545
        endif()
 
546
 
 
547
        if(WITH_CODEC_FFMPEG)
 
548
                # use lib dir if available and nothing else specified
 
549
                if(LIBDIR AND NOT FFMPEG)
 
550
                        set(FFMPEG ${LIBDIR}/ffmpeg CACHE PATH "FFMPEG Directory")
 
551
                        # XXX, some distros might need 'theoraenc theoradec' too
 
552
                        set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale dirac_encoder mp3lame ogg orc-0.4 schroedinger-1.0 theora vorbis vorbisenc vpx x264 xvidcore faad asound CACHE STRING "FFMPEG Libraries")
 
553
                else()
 
554
                        set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
 
555
                        set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
 
556
                endif()
 
557
 
 
558
                mark_as_advanced(FFMPEG)
 
559
                set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
 
560
                mark_as_advanced(FFMPEG_LIBRARIES)
 
561
                set(FFMPEG_LIBPATH ${FFMPEG}/lib)
 
562
                set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
 
563
        endif()
 
564
 
 
565
        if(WITH_INTERNATIONAL)
 
566
                find_library(INTL_LIBRARY
174
567
                        NAMES intl
175
568
                        PATHS
176
569
                        /sw/lib
177
570
                )
178
571
 
179
 
                FIND_LIBRARY(ICONV_LIBRARY
 
572
                find_library(ICONV_LIBRARY
180
573
                        NAMES iconv
181
574
                        PATHS
182
575
                        /sw/lib
183
576
                )
184
 
 
185
 
                IF(INTL_LIBRARY AND ICONV_LIBRARY)
186
 
                        SET(GETTEXT_LIB ${INTL_LIBRARY} ${ICONV_LIBRARY})
187
 
                ENDIF(INTL_LIBRARY AND ICONV_LIBRARY)
188
 
        ENDIF(WITH_INTERNATIONAL)
189
 
 
190
 
        FIND_PACKAGE(Freetype)
191
 
        # UNSET(FREETYPE_INCLUDE_DIRS CACHE) # cant use
192
 
 
193
 
 
194
 
        IF(WITH_PYTHON)
195
 
                # No way to set py31. remove for now.
196
 
                # FIND_PACKAGE(PythonLibs)
197
 
                SET(PYTHON /usr)
198
 
                SET(PYTHON_VERSION 3.1)
199
 
                SET(PYTHON_INC "${PYTHON}/include/python${PYTHON_VERSION}" CACHE STRING "")
200
 
                # SET(PYTHON_BINARY python) # not used yet
201
 
                SET(PYTHON_LIB python${PYTHON_VERSION} CACHE STRING "")
202
 
                SET(PYTHON_LIBPATH ${PYTHON}/lib CACHE STRING "")
203
 
        
204
 
                # FIND_PACKAGE(PythonInterp) # not used yet
205
 
                # SET(PYTHON_BINARY ${PYTHON_EXECUTABLE} CACHE STRING "")
206
 
 
207
 
                SET(PYTHON_LINKFLAGS "-Xlinker -export-dynamic")
208
 
        ENDIF(WITH_PYTHON)
209
 
 
210
 
        IF(WITH_SDL)
211
 
                FIND_PACKAGE(SDL)
212
 
                # UNSET(SDLMAIN_LIBRARY CACHE)
213
 
                IF(NOT SDL_FOUND)
214
 
                        SET(WITH_SDL OFF)
215
 
                ENDIF(NOT SDL_FOUND)
216
 
        ENDIF(WITH_SDL)
217
 
 
218
 
        IF(WITH_OPENEXR)
219
 
                SET(OPENEXR /usr CACHE FILEPATH "OPENEXR Directory")
220
 
                FIND_PATH(OPENEXR_INC
221
 
                        ImfXdr.h
222
 
                        PATHS
223
 
                        ${OPENEXR}/include/OpenEXR
224
 
                        /usr/local/include/OpenEXR
225
 
                        /sw/include/OpenEXR
226
 
                        /opt/local/include/OpenEXR
227
 
                        /opt/csw/include/OpenEXR
228
 
                        /opt/include/OpenEXR
 
577
                mark_as_advanced(
 
578
                        ICONV_LIBRARY
 
579
                        INTL_LIBRARY
229
580
                )
230
 
                SET(OPENEXR_LIB Half IlmImf Iex Imath)
 
581
 
 
582
                if(INTL_LIBRARY AND ICONV_LIBRARY)
 
583
                        set(GETTEXT_LIBRARIES ${INTL_LIBRARY} ${ICONV_LIBRARY})
 
584
                endif()
 
585
        endif()
 
586
 
 
587
        if(WITH_FONTCONFIG)
 
588
                find_package(Fontconfig)
 
589
                if(NOT FONTCONFIG_FOUND)
 
590
                        set(WITH_FONTCONFIG OFF)
 
591
                endif()
 
592
        endif()
 
593
 
 
594
        if(WITH_FFTW3)
 
595
                find_package(Fftw3)
 
596
                if(NOT FFTW3_FOUND)
 
597
                        set(WITH_FFTW3 OFF)
 
598
                endif()
 
599
        endif()
 
600
 
 
601
        if(WITH_OPENCOLLADA)
 
602
                find_package(OpenCOLLADA)
 
603
                if(OPENCOLLADA_FOUND)
 
604
                        find_package(XML2)
 
605
                        find_package(PCRE)
 
606
                else()
 
607
                        set(WITH_OPENCOLLADA OFF)
 
608
                endif()
 
609
        endif()
 
610
 
 
611
        if(WITH_MEM_JEMALLOC)
 
612
                find_package(JeMalloc)
 
613
                if(NOT JEMALLOC_FOUND)
 
614
                        set(WITH_MEM_JEMALLOC OFF)
 
615
                endif()
 
616
        endif()
 
617
 
 
618
        if (WITH_INPUT_NDOF)
 
619
                find_package(Spacenav)
 
620
                if(NOT SPACENAV_FOUND)
 
621
                        set(WITH_INPUT_NDOF OFF)
 
622
                endif()
 
623
 
 
624
                # use generic names within blenders buildsystem.
 
625
                if(SPACENAV_FOUND)
 
626
                        set(NDOF_INCLUDE_DIRS ${SPACENAV_INCLUDE_DIRS})
 
627
                        set(NDOF_LIBRARIES ${SPACENAV_LIBRARIES})
 
628
                endif()
 
629
        endif()
 
630
 
 
631
        if(WITH_BOOST)
 
632
                # uses in build instructions to override include and library variables
 
633
                if(NOT BOOST_CUSTOM)
 
634
                        # use lib dir if available and nothing else specified
 
635
                        if(LIBDIR AND NOT BOOST_ROOT)
 
636
                                set(BOOST_ROOT ${LIBDIR}/boost)
 
637
                                set(Boost_USE_MULTITHREADED OFF)
 
638
                        else()
 
639
                                set(Boost_USE_MULTITHREADED ON)
 
640
                        endif()
 
641
                        find_package(Boost 1.34 COMPONENTS filesystem regex system thread)
 
642
                        mark_as_advanced(Boost_DIR)  # why doesnt boost do this?
 
643
                endif()
 
644
 
 
645
                set(BOOST_INCLUDE_DIR ${Boost_INCLUDE_DIRS})
 
646
                set(BOOST_LIBRARIES ${Boost_LIBRARIES})
 
647
                set(BOOST_LIBPATH ${Boost_LIBRARY_DIRS})
 
648
                set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
 
649
        endif()
 
650
 
 
651
        if(WITH_OPENIMAGEIO)
 
652
                # use lib dir if available and nothing else specified
 
653
                if(LIBDIR AND NOT OPENIMAGEIO_ROOT_DIR)
 
654
                        set(OPENIMAGEIO_ROOT_DIR ${LIBDIR}/oiio)
 
655
                endif()
 
656
 
 
657
                find_package(OpenImageIO)
 
658
 
 
659
                set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES})
 
660
                set(OPENIMAGEIO_LIBPATH)  # TODO, remove and reference the absolute path everywhere
 
661
                set(OPENIMAGEIO_DEFINITIONS)
 
662
 
 
663
                if(NOT OPENIMAGEIO_FOUND)
 
664
                        set(WITH_OPENIMAGEIO OFF)
 
665
                        set(WITH_CYCLES OFF)
 
666
                        message(STATUS "OpenImageIO not found, disabling WITH_CYCLES")
 
667
                endif()
 
668
        endif()
 
669
 
 
670
        # OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
 
671
        set(PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread -lstdc++")
 
672
 
 
673
        if((NOT WITH_HEADLESS) AND (NOT WITH_GHOST_SDL))
 
674
                find_package(X11 REQUIRED)
 
675
                find_path(X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${X11_INC_SEARCH_PATH})
 
676
                mark_as_advanced(X11_XF86keysym_INCLUDE_PATH)
 
677
 
 
678
                set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_X11_LIB}")
 
679
 
 
680
                if(WITH_X11_XINPUT)
 
681
                        set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xinput_LIB}")
 
682
                endif()
 
683
 
 
684
                if(WITH_X11_XF86VMODE)
 
685
                        # XXX, why dont cmake make this available?
 
686
                        FIND_LIBRARY(X11_Xxf86vmode_LIB Xxf86vm   ${X11_LIB_SEARCH_PATH})
 
687
                        mark_as_advanced(X11_Xxf86vmode_LIB)
 
688
                        if(X11_Xxf86vmode_LIB)
 
689
                                set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xxf86vmode_LIB}")
 
690
                        else()
 
691
                                set(WITH_X11_XF86VMODE OFF)
 
692
                        endif()
 
693
                endif()
 
694
        endif()
 
695
 
 
696
        if(CMAKE_SYSTEM_NAME MATCHES "Linux")
 
697
                if(NOT WITH_PYTHON_MODULE)
 
698
                        # BSD's dont use libdl.so
 
699
                set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -ldl")
 
700
                        # binreloc is linux only
 
701
                        set(BINRELOC_INCLUDE_DIRS ${CMAKE_SOURCE_DIR}/extern/binreloc/include)
 
702
                        set(WITH_BINRELOC ON)
 
703
                endif()
 
704
        endif()
 
705
 
 
706
        set(PLATFORM_LINKFLAGS "-pthread")
 
707
 
 
708
        # lfs on glibc, all compilers should use
 
709
        add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
 
710
 
 
711
        # GNU Compiler
 
712
        if(CMAKE_COMPILER_IS_GNUCC)
 
713
                set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
 
714
        # CLang is the same as GCC for now.
 
715
        elseif(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
 
716
                set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
 
717
        # Solaris CC
 
718
        elseif(CMAKE_CXX_COMPILER_ID MATCHES "SunPro") 
 
719
                set(PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__")
231
720
                
232
 
                IF(NOT OPENEXR_INC)
233
 
                        SET(WITH_OPENEXR OFF)
234
 
                ENDIF(NOT OPENEXR_INC)
235
 
        ENDIF(WITH_OPENEXR)
236
 
 
237
 
        IF(WITH_TIFF)
238
 
                FIND_PACKAGE(TIFF)
239
 
                IF(NOT TIFF_FOUND)
240
 
                        SET(WITH_TIFF OFF)
241
 
                ENDIF(NOT TIFF_FOUND)
242
 
        ENDIF(WITH_TIFF)
243
 
 
244
 
        FIND_PACKAGE(JPEG REQUIRED)
245
 
 
246
 
        FIND_PACKAGE(PNG REQUIRED)
247
 
 
248
 
        FIND_PACKAGE(ZLIB REQUIRED)
249
 
 
250
 
        IF(WITH_LCMS)
251
 
                SET(LCMS /usr CACHE FILEPATH "LCMS directory")
252
 
                SET(LCMS_INCLUDE_DIR ${LCMS}/include)
253
 
                SET(LCMS_LIBRARY lcms)
254
 
                SET(LCMS_LIBPATH ${LCMS}/lib)
255
 
        ENDIF(WITH_LCMS)
256
 
 
257
 
        IF(WITH_FFMPEG)
258
 
                SET(FFMPEG /usr CACHE FILEPATH "FFMPEG Directory")
259
 
                SET(FFMPEG_INC ${FFMPEG}/include)
260
 
                SET(FFMPEG_LIB avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
261
 
                SET(FFMPEG_LIBPATH ${FFMPEG}/lib)
262
 
                SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
263
 
        ENDIF(WITH_FFMPEG)
264
 
 
265
 
        IF(WITH_FFTW3)
266
 
                SET(FFTW3 /usr)
267
 
                SET(FFTW3_INC ${FFTW3}/include)
268
 
                SET(FFTW3_LIB fftw3)
269
 
                SET(FFTW3_LIBPATH ${FFTW3}/lib)
270
 
        ENDIF(WITH_FFTW3)
271
 
 
272
 
        SET(LIBSAMPLERATE /usr)
273
 
        SET(LIBSAMPLERATE_INC ${LIBSAMPLERATE}/include)
274
 
        SET(LIBSAMPLERATE_LIB samplerate)
275
 
        SET(LIBSAMPLERATE_LIBPATH ${LIBSAMPLERATE}/lib)
276
 
 
277
 
        IF (WITH_OPENCOLLADA)
278
 
                SET(OPENCOLLADA /usr/local/opencollada CACHE FILEPATH "OpenCollada Directory")
279
 
                SET(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
280
 
                SET(OPENCOLLADA_LIB OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver pcre ftoa buffer)
281
 
                SET(OPENCOLLADA_INC ${OPENCOLLADA})
282
 
                SET(PCRE /usr CACHE FILEPATH "PCRE Directory")
283
 
                SET(PCRE_LIBPATH ${PCRE}/lib)
284
 
                SET(PCRE_LIB pcre)
285
 
                SET(EXPAT /usr CACHE FILEPATH "Expat Directory")
286
 
                SET(EXPAT_LIBPATH ${EXPAT}/lib)
287
 
                SET(EXPAT_LIB expat)
288
 
        ENDIF (WITH_OPENCOLLADA)
289
 
 
290
 
 
291
 
        # Could use ${X11_Xinput_LIB} ${X11_X11_LIB} too
292
 
        SET(LLIBS "-lXi -lutil -lc -lm -lpthread -lX11")
293
 
 
294
 
        IF(CMAKE_SYSTEM_NAME MATCHES "Linux")
295
 
                # BSD's dont use libdl.so
296
 
                SET(LLIBS "${LLIBS} -ldl")
297
 
 
298
 
                # binreloc is linux only
299
 
                SET(BINRELOC ${CMAKE_SOURCE_DIR}/extern/binreloc)
300
 
                SET(BINRELOC_INC ${BINRELOC}/include)
301
 
        ENDIF(CMAKE_SYSTEM_NAME MATCHES "Linux")
302
 
 
303
 
        IF(WITH_OPENMP)
304
 
                SET(LLIBS "${LLIBS} -lgomp")
305
 
                SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
306
 
                SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
307
 
        ENDIF(WITH_OPENMP)
308
 
 
309
 
        # Use system-wide GLEW:
310
 
        SET(LLIBS "${LLIBS} -lGLEW")
311
 
        SET(LLIBS "${LLIBS} -lopenjpeg")
312
 
 
313
 
        ADD_DEFINITIONS(-DWITH_OPENJPEG)
314
 
 
315
 
        SET(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing -Wno-char-subscripts")
316
 
 
317
 
        IF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
318
 
                SET(PLATFORM_CFLAGS " -msse -msse2 ${PLATFORM_CFLAGS}")
319
 
                ADD_DEFINITIONS(-D__SSE__)
320
 
                ADD_DEFINITIONS(-D__MMX__)
321
 
        ENDIF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
322
 
 
323
 
        SET(PLATFORM_LINKFLAGS "-pthread")
324
 
 
325
 
        # Better warnings
326
 
        SET(C_WARNINGS "-Wall -Wno-char-subscripts -Wpointer-arith -Wcast-align -Wdeclaration-after-statement -Wno-unknown-pragmas")
327
 
        SET(CXX_WARNINGS "-Wall -Wno-invalid-offsetof -Wno-sign-compare")
328
 
 
329
 
        INCLUDE_DIRECTORIES(${JPEG_INCLUDE_DIR} ${PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} )
330
 
ENDIF(UNIX AND NOT APPLE)
331
 
 
332
 
 
333
 
IF(WIN32)
 
721
        # Intel C++ Compiler
 
722
        elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
 
723
                # think these next two are broken
 
724
                find_program(XIAR xiar)
 
725
                if(XIAR)
 
726
                        set(CMAKE_AR "${XIAR}")
 
727
                endif()
 
728
                mark_as_advanced(XIAR)
 
729
 
 
730
                find_program(XILD xild)
 
731
                if(XILD)
 
732
                        set(CMAKE_LINKER "${XILD}")
 
733
                endif()
 
734
                mark_as_advanced(XILD)
 
735
 
 
736
                set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel")
 
737
                set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel")
 
738
 
 
739
                # set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
 
740
                set(PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing")
 
741
                set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel")
 
742
        endif()
 
743
 
 
744
elseif(WIN32)
334
745
 
335
746
        # this file is included anyway when building under Windows with cl.exe
336
 
        #  INCLUDE(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)
337
 
  
338
 
        SET(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
339
 
 
340
 
        # Setup 64bit and 64bit windows systems
341
 
        IF(CMAKE_CL_64)
342
 
                message("64 bit compiler detected.")
343
 
                SET(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64)
344
 
        ENDIF(CMAKE_CL_64)
345
 
        
346
 
        ADD_DEFINITIONS(-DWIN32)
347
 
 
348
 
        IF(WITH_INTERNATIONAL)
349
 
                SET(ICONV ${LIBDIR}/iconv)
350
 
                SET(ICONV_INC ${ICONV}/include)
351
 
                SET(ICONV_LIB iconv)
352
 
                SET(ICONV_LIBPATH ${ICONV}/lib)
353
 
        ENDIF(WITH_INTERNATIONAL)
354
 
 
355
 
        SET(LIBSAMPLERATE ${LIBDIR}/samplerate)
356
 
        SET(LIBSAMPLERATE_INC ${LIBSAMPLERATE}/include)
357
 
        SET(LIBSAMPLERATE_LIB libsamplerate)
358
 
        SET(LIBSAMPLERATE_LIBPATH ${LIBSAMPLERATE}/lib)
359
 
 
360
 
        SET(PNG "${LIBDIR}/png")
361
 
        SET(PNG_INC "${PNG}/include")
362
 
        SET(PNG_LIBPATH ${PNG}/lib)
363
 
 
364
 
        SET(JPEG "${LIBDIR}/jpeg")
365
 
        SET(JPEG_INC "${JPEG}/include")
366
 
        SET(JPEG_LIBPATH ${JPEG}/lib)
367
 
 
368
 
        SET(WINTAB_INC ${LIBDIR}/wintab/include) 
369
 
 
370
 
        IF(WITH_PYTHON)
371
 
                SET(PYTHON ${LIBDIR}/python)
372
 
                SET(PYTHON_VERSION 3.1)
373
 
                SET(PYTHON_INC "${PYTHON}/include/python${PYTHON_VERSION}")
374
 
                # SET(PYTHON_BINARY python) # not used yet
375
 
                SET(PYTHON_LIB python31)
376
 
                SET(PYTHON_LIBPATH ${PYTHON}/lib)
377
 
        ENDIF(WITH_PYTHON)
378
 
 
379
 
        IF(WITH_OPENAL)
380
 
                SET(OPENAL ${LIBDIR}/openal)
381
 
                SET(OPENAL_INCLUDE_DIR ${OPENAL}/include)
382
 
                SET(OPENAL_LIBRARY wrap_oal)
383
 
                SET(OPENAL_LIBPATH ${OPENAL}/lib)
384
 
        ENDIF(WITH_OPENAL)
385
 
 
386
 
        IF(WITH_SNDFILE)
387
 
                SET(SNDFILE ${LIBDIR}/sndfile)
388
 
                SET(SNDFILE_INC ${SNDFILE}/include)
389
 
                SET(SNDFILE_LIB libsndfile-1)
390
 
                SET(SNDFILE_LIBPATH ${SNDFILE}/lib)
391
 
        ENDIF(WITH_SNDFILE)
392
 
 
393
 
        IF(WITH_SDL)
394
 
                SET(SDL ${LIBDIR}/sdl)
395
 
                SET(SDL_INCLUDE_DIR ${SDL}/include)
396
 
                SET(SDL_LIBRARY SDL)
397
 
                SET(SDL_LIBPATH ${SDL}/lib)
398
 
        ENDIF(WITH_SDL)
399
 
 
400
 
        IF(WITH_QUICKTIME)
401
 
                SET(QUICKTIME ${LIBDIR}/QTDevWin)
402
 
                SET(QUICKTIME_INC ${QUICKTIME}/CIncludes)
403
 
                SET(QUICKTIME_LIB qtmlClient)
404
 
                SET(QUICKTIME_LIBPATH ${QUICKTIME}/Libraries)
405
 
        ENDIF(WITH_QUICKTIME)
406
 
 
407
 
        IF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
408
 
                ADD_DEFINITIONS(-D__SSE__)
409
 
                ADD_DEFINITIONS(-D__MMX__)
410
 
        ENDIF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
411
 
 
412
 
        IF(MSVC)
413
 
                IF(CMAKE_CL_64)
414
 
                        SET(LLIBS kernel32 user32 vfw32 winmm ws2_32 )
415
 
                ELSE(CMAKE_CL_64)
416
 
                        SET(LLIBS kernel32 user32 gdi32 comdlg32 advapi32 shell32 ole32 oleaut32 uuid ws2_32 vfw32 winmm)
417
 
                ENDIF(CMAKE_CL_64)
418
 
                
419
 
                SET(CMAKE_CXX_FLAGS "/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /wd4800 /wd4244 /wd4305" CACHE STRING "MSVC MT C++ flags " FORCE)
420
 
                SET(CMAKE_C_FLAGS   "/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /wd4800 /wd4244 /wd4305" CACHE STRING "MSVC MT C++ flags " FORCE)
421
 
 
422
 
                SET(CMAKE_CXX_FLAGS_DEBUG "/D_DEBUG /Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /ZI /J" CACHE STRING "MSVC MT flags " FORCE)
423
 
                SET(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /DNDEBUG /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
424
 
                SET(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /DNDEBUG /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
425
 
                SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /DNDEBUG /EHsc /MT /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
426
 
                SET(CMAKE_C_FLAGS_DEBUG "/D_DEBUG /Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /ZI /J" CACHE STRING "MSVC MT flags " FORCE)
427
 
                SET(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /DNDEBUG /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
428
 
                SET(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /DNDEBUG /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
429
 
                SET(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /DNDEBUG /EHsc /MT /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
430
 
                
431
 
                IF(WITH_OPENMP)
432
 
                        SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} /openmp ")
433
 
                        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /openmp ")
434
 
                ENDIF(WITH_OPENMP)
435
 
                
436
 
                IF(WITH_INTERNATIONAL)
437
 
                        SET(GETTEXT ${LIBDIR}/gettext)
438
 
                        SET(GETTEXT_INC ${GETTEXT}/include)
439
 
                        SET(GETTEXT_LIBPATH ${GETTEXT}/lib)
440
 
                        IF(CMAKE_CL_64)
441
 
                                SET(GETTEXT_LIB gettext)
442
 
                        ELSE(CMAKE_CL_64)
443
 
                                SET(GETTEXT_LIB gnu_gettext)
444
 
                        ENDIF(CMAKE_CL_64)
445
 
                ENDIF(WITH_INTERNATIONAL)
446
 
 
447
 
                IF(CMAKE_CL_64)
448
 
                        SET(PNG_LIBRARIES libpng)
449
 
                ELSE(CMAKE_CL_64)
450
 
                        SET(PNG_LIBRARIES libpng_st)
451
 
                ENDIF(CMAKE_CL_64)
452
 
                SET(JPEG_LIBRARY libjpeg)
453
 
 
454
 
                SET(ZLIB ${LIBDIR}/zlib)
455
 
                SET(ZLIB_INC ${ZLIB}/include)
456
 
                SET(ZLIB_LIBPATH ${ZLIB}/lib)
457
 
                IF(CMAKE_CL_64)
458
 
                        SET(ZLIB_LIBRARIES libz)
459
 
                ELSE(CMAKE_CL_64)
460
 
                        SET(ZLIB_LIBRARIES zlib)
461
 
                ENDIF(CMAKE_CL_64)
462
 
 
463
 
                SET(PTHREADS ${LIBDIR}/pthreads)
464
 
                SET(PTHREADS_INC ${PTHREADS}/include)
465
 
                SET(PTHREADS_LIBPATH ${PTHREADS}/lib)
466
 
                SET(PTHREADS_LIB pthreadVC2)
467
 
                
468
 
                SET(FREETYPE ${LIBDIR}/freetype)
469
 
                SET(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
470
 
                SET(FREETYPE_LIBPATH ${FREETYPE}/lib)
471
 
                SET(FREETYPE_LIBRARY freetype2ST)
472
 
 
473
 
                IF(WITH_FFTW3)
474
 
                        SET(FFTW3 ${LIBDIR}/fftw3)
475
 
                        SET(FFTW3_LIB libfftw)
476
 
                        SET(FFTW3_INC ${FFTW3}/include)
477
 
                        SET(FFTW3_LIBPATH ${FFTW3}/lib)
478
 
                ENDIF(WITH_FFTW3)
479
 
 
480
 
                IF(WITH_OPENCOLLADA)
481
 
                        SET(OPENCOLLADA ${LIBDIR}/opencollada)
482
 
                        SET(OPENCOLLADA_INC ${OPENCOLLADA}/include)
483
 
                        SET(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
484
 
                        SET(OPENCOLLADA_LIB OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils OpenCOLLADAStreamWriter MathMLSolver GeneratedSaxParser xml2 buffer ftoa)
485
 
                        #pcre is bundled with openCollada
486
 
                        #SET(PCRE ${LIBDIR}/pcre)
487
 
                        #SET(PCRE_LIBPATH ${PCRE}/lib)
488
 
                        SET(PCRE_LIB pcre)
489
 
                ENDIF(WITH_OPENCOLLADA)
490
 
                
491
 
                # TODO: IF(WITH_LCMS)
492
 
        
493
 
                IF(WITH_FFMPEG)
494
 
                        SET(FFMPEG ${LIBDIR}/ffmpeg)
495
 
                        SET(FFMPEG_INC ${FFMPEG}/include ${FFMPEG}/include/msvc)
496
 
                        SET(FFMPEG_LIB avcodec-52 avformat-52 avdevice-52 avutil-50 swscale-0)
497
 
                        SET(FFMPEG_LIBPATH ${FFMPEG}/lib)
498
 
                ENDIF(WITH_FFMPEG)
499
 
 
500
 
                IF(WITH_OPENEXR)
501
 
                        SET(OPENEXR ${LIBDIR}/openexr)
502
 
                        SET(OPENEXR_INC ${OPENEXR}/include ${OPENEXR}/include/IlmImf ${OPENEXR}/include/Iex ${OPENEXR}/include/Imath)
503
 
                        SET(OPENEXR_LIB Iex Half IlmImf Imath IlmThread)
504
 
                        IF (MSVC80)
505
 
                                SET(OPENEXR_LIBPATH ${OPENEXR}/lib_vs2005)
506
 
                        ELSE (MSVC80)
507
 
                                SET(OPENEXR_LIBPATH ${OPENEXR}/lib_msvc)
508
 
                        ENDIF(MSVC80)
509
 
                        IF (MSVC90)
510
 
                                SET(OPENEXR_LIBPATH ${OPENEXR}/lib_vs2008)
511
 
                        ENDIF(MSVC90)
512
 
                ENDIF(WITH_OPENEXR)
513
 
 
514
 
                IF(WITH_TIFF)
515
 
                        SET(TIFF ${LIBDIR}/tiff)
516
 
                        SET(TIFF_LIBRARY libtiff)
517
 
                        SET(TIFF_INCLUDE_DIR ${TIFF}/include)
518
 
                        SET(TIFF_LIBPATH ${TIFF}/lib)
519
 
                ENDIF(WITH_TIFF)
520
 
 
521
 
                IF(WITH_JACK)
522
 
                        SET(JACK ${LIBDIR}/jack)
523
 
                        SET(JACK_INC ${JACK}/include/jack ${JACK}/include)
524
 
                        SET(JACK_LIB libjack)
525
 
                        SET(JACK_LIBPATH ${JACK}/lib)
526
 
                ENDIF(WITH_JACK)
 
747
        #  include(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)
 
748
 
 
749
        if(CMAKE_COMPILER_IS_GNUCC)
 
750
                set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw32)
 
751
 
 
752
                # Setup 64bit and 64bit windows systems         
 
753
                if(WITH_MINGW64)
 
754
                        message("Set 64 bit compiler for MinGW.")
 
755
                        set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/mingw64)
 
756
                endif()
 
757
        else()
 
758
                set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/windows)
 
759
 
 
760
                # Setup 64bit and 64bit windows systems
 
761
                if(CMAKE_CL_64)
 
762
                        message("64 bit compiler detected.")
 
763
                        set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/win64)
 
764
                endif()
 
765
        endif()
 
766
                
 
767
        add_definitions(-DWIN32)
 
768
 
 
769
        if(WITH_INTERNATIONAL)
 
770
                set(ICONV ${LIBDIR}/iconv)
 
771
                set(ICONV_INCLUDE_DIRS ${ICONV}/include)
 
772
                set(ICONV_LIBRARIES iconv)
 
773
                set(ICONV_LIBPATH ${ICONV}/lib)
 
774
        endif()
 
775
 
 
776
        set(JPEG "${LIBDIR}/jpeg")
 
777
        set(JPEG_INCLUDE_DIR "${JPEG}/include")
 
778
        set(JPEG_LIBPATH ${JPEG}/lib) # not cmake defined
 
779
 
 
780
        set(WINTAB_INC ${LIBDIR}/wintab/include)
 
781
 
 
782
        if(WITH_OPENAL)
 
783
                set(OPENAL ${LIBDIR}/openal)
 
784
                set(OPENAL_INCLUDE_DIR ${OPENAL}/include)
 
785
                set(OPENAL_LIBRARY wrap_oal)
 
786
                set(OPENAL_LIBPATH ${OPENAL}/lib)
 
787
        endif()
 
788
 
 
789
        if(WITH_CODEC_SNDFILE)
 
790
                set(SNDFILE ${LIBDIR}/sndfile)
 
791
                set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
 
792
                set(SNDFILE_LIBRARIES libsndfile-1)
 
793
                set(SNDFILE_LIBPATH ${SNDFILE}/lib) # TODO, deprecate
 
794
        endif()
 
795
 
 
796
        if(WITH_SDL)
 
797
                set(SDL ${LIBDIR}/sdl)
 
798
                set(SDL_INCLUDE_DIR ${SDL}/include)
 
799
                set(SDL_LIBRARY SDL)
 
800
                set(SDL_LIBPATH ${SDL}/lib)
 
801
        endif()
 
802
 
 
803
        if(WITH_CODEC_QUICKTIME)
 
804
                set(QUICKTIME ${LIBDIR}/QTDevWin)
 
805
                set(QUICKTIME_INCLUDE_DIRS ${QUICKTIME}/CIncludes)
 
806
                set(QUICKTIME_LIBRARIES qtmlClient)
 
807
                set(QUICKTIME_LIBPATH ${QUICKTIME}/Libraries)
 
808
        endif()
 
809
 
 
810
        if(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
 
811
                add_definitions(-D__SSE__ -D__MMX__)
 
812
        endif()
 
813
 
 
814
        if(MSVC)
 
815
                if(CMAKE_CL_64)
 
816
                        set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid)
 
817
                else()
 
818
                        set(PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid)
 
819
                endif()
 
820
 
 
821
                add_definitions(/D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_CONSOLE /D_LIB)
 
822
 
 
823
                set(CMAKE_CXX_FLAGS "/nologo /J /W1 /Gd /wd4018 /wd4244 /wd4305 /wd4800 /wd4065 /wd4267 /we4013" CACHE STRING "MSVC MT C++ flags " FORCE)
 
824
                set(CMAKE_C_FLAGS   "/nologo /J /W1 /Gd /wd4018 /wd4244 /wd4305 /wd4800 /wd4065 /wd4267 /we4013 /EHsc" CACHE STRING "MSVC MT C++ flags " FORCE)
 
825
 
 
826
                if(CMAKE_CL_64)
 
827
                        set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
 
828
                else()
 
829
                        set(CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /ZI /J" CACHE STRING "MSVC MT flags " FORCE)
 
830
                endif()
 
831
                set(CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
 
832
                set(CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
 
833
                set(CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /EHsc /MT /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
 
834
                if(CMAKE_CL_64)
 
835
                        set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
 
836
                else()
 
837
                        set(CMAKE_C_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /ZI /J" CACHE STRING "MSVC MT flags " FORCE)
 
838
                endif()
 
839
                set(CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
 
840
                set(CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE)
 
841
                set(CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /EHsc /MT /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE)
 
842
 
 
843
                if(WITH_INTERNATIONAL)
 
844
                        set(GETTEXT ${LIBDIR}/gettext)
 
845
                        set(GETTEXT_INCLUDE_DIRS ${GETTEXT}/include)
 
846
                        set(GETTEXT_LIBPATH ${GETTEXT}/lib)
 
847
                        set(GETTEXT_LIBRARIES gnu_gettext)
 
848
                endif()
 
849
 
 
850
                set(PNG_LIBRARIES libpng)
 
851
                set(JPEG_LIBRARIES libjpeg)
 
852
                
 
853
                set(PNG "${LIBDIR}/png")
 
854
                set(PNG_INCLUDE_DIR "${PNG}/include")
 
855
                set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
 
856
 
 
857
                set(ZLIB_INCLUDE_DIRS ${LIBDIR}/zlib/include)
 
858
                if(CMAKE_CL_64)
 
859
                        set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/libz.lib)
 
860
                else()
 
861
                        set(ZLIB_LIBRARIES ${LIBDIR}/zlib/lib/zlib.lib)
 
862
                endif()
 
863
 
 
864
                set(PTHREADS_INCLUDE_DIRS ${LIBDIR}/pthreads/include)
 
865
                set(PTHREADS_LIBRARIES ${LIBDIR}/pthreads/lib/pthreadVC2.lib)
 
866
 
 
867
                set(FREETYPE ${LIBDIR}/freetype)
 
868
                set(FREETYPE_INCLUDE_DIRS
 
869
                        ${LIBDIR}/freetype/include
 
870
                        ${LIBDIR}/freetype/include/freetype2
 
871
                )
 
872
                set(FREETYPE_LIBRARY ${LIBDIR}/freetype/lib/freetype2ST.lib)
 
873
 
 
874
                if(WITH_FFTW3)
 
875
                        set(FFTW3 ${LIBDIR}/fftw3)
 
876
                        set(FFTW3_LIBRARIES libfftw)
 
877
                        set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
 
878
                        set(FFTW3_LIBPATH ${FFTW3}/lib)
 
879
                endif()
 
880
 
 
881
                if(WITH_OPENCOLLADA)
 
882
 
 
883
                        set(OPENCOLLADA_INCLUDE_DIRS
 
884
                                ${LIBDIR}/opencollada/include/COLLADAStreamWriter/include
 
885
                                ${LIBDIR}/opencollada/include/COLLADABaseUtils/include
 
886
                                ${LIBDIR}/opencollada/include/COLLADAFramework/include
 
887
                                ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader/include
 
888
                                ${LIBDIR}/opencollada/include/GeneratedSaxParser/include
 
889
                        )
 
890
                        
 
891
                        set_lib_path(OPENCOLLADA_LIBPATH "opencollada/lib")
 
892
 
 
893
                        set(OPENCOLLADA_LIBRARIES
 
894
                                ${OPENCOLLADA_LIBPATH}/OpenCOLLADASaxFrameworkLoader.lib
 
895
                                ${OPENCOLLADA_LIBPATH}/OpenCOLLADAFramework.lib
 
896
                                ${OPENCOLLADA_LIBPATH}/OpenCOLLADABaseUtils.lib
 
897
                                ${OPENCOLLADA_LIBPATH}/OpenCOLLADAStreamWriter.lib
 
898
                                ${OPENCOLLADA_LIBPATH}/MathMLSolver.lib
 
899
                                ${OPENCOLLADA_LIBPATH}/GeneratedSaxParser.lib
 
900
                                ${OPENCOLLADA_LIBPATH}/xml2.lib
 
901
                                ${OPENCOLLADA_LIBPATH}/buffer.lib
 
902
                                ${OPENCOLLADA_LIBPATH}/ftoa.lib
 
903
                                ${OPENCOLLADA_LIBPATH}/UTF.lib
 
904
                        )
 
905
                        set(PCRE_LIBRARIES
 
906
                                ${OPENCOLLADA_LIBPATH}/pcre.lib
 
907
                        )
 
908
                        
 
909
                        unset(OPENCOLLADA_LIBPATH)
 
910
                        
 
911
                endif()
 
912
 
 
913
                if(WITH_CODEC_FFMPEG)
 
914
                        set(FFMPEG_INCLUDE_DIRS
 
915
                                ${LIBDIR}/ffmpeg/include
 
916
                                ${LIBDIR}/ffmpeg/include/msvc
 
917
                        )
 
918
                        set(FFMPEG_LIBRARIES
 
919
                                ${LIBDIR}/ffmpeg/lib/avcodec-53.lib
 
920
                                ${LIBDIR}/ffmpeg/lib/avformat-53.lib
 
921
                                ${LIBDIR}/ffmpeg/lib/avdevice-53.lib
 
922
                                ${LIBDIR}/ffmpeg/lib/avutil-51.lib
 
923
                                ${LIBDIR}/ffmpeg/lib/swscale-2.lib
 
924
                        )
 
925
                endif()
 
926
 
 
927
                if(WITH_IMAGE_OPENEXR)
 
928
                        set_lib_path(OPENEXR "openexr")
 
929
                        set_lib_path(OPENEXR_LIBPATH "openexr/lib")
 
930
                        set(OPENEXR_LIBRARIES
 
931
                                ${OPENEXR_LIBPATH}/Iex.lib
 
932
                                ${OPENEXR_LIBPATH}/Half.lib
 
933
                                ${OPENEXR_LIBPATH}/IlmImf.lib
 
934
                                ${OPENEXR_LIBPATH}/Imath.lib
 
935
                                ${OPENEXR_LIBPATH}/IlmThread.lib
 
936
                        )
 
937
                        set_lib_path(OPENEXR_INCUDE "openexr/include")
 
938
                        set(OPENEXR_INCLUDE_DIRS
 
939
                                ${OPENEXR_INCUDE}
 
940
                                ${OPENEXR_INCUDE}/IlmImf
 
941
                                ${OPENEXR_INCUDE}/Iex
 
942
                                ${OPENEXR_INCUDE}/Imath
 
943
                        )
 
944
                        unset(OPENEXR_INCUDE)
 
945
                        unset(OPENEXR_LIBPATH)
 
946
                endif()
 
947
 
 
948
                if(WITH_IMAGE_TIFF)
 
949
                        set(TIFF_LIBRARY ${LIBDIR}/tiff/lib/libtiff.lib)
 
950
                        set(TIFF_INCLUDE_DIR ${LIBDIR}/tiff/include)
 
951
                endif()
 
952
 
 
953
                if(WITH_JACK)
 
954
                        set(JACK_INCLUDE_DIRS
 
955
                                ${LIBDIR}/jack/include/jack
 
956
                                ${LIBDIR}/jack/include
 
957
                        )
 
958
                        set(JACK_LIBRARIES ${LIBDIR}/jack/lib/libjack.lib)
 
959
                endif()
 
960
 
 
961
                if(WITH_PYTHON)
 
962
                        # normally cached but not since we include them with blender
 
963
                        set(PYTHON_VERSION 3.2) # CACHE STRING)
 
964
                        set_lib_path(PYTHON_INCLUDE_DIR "python/include/python${PYTHON_VERSION}")
 
965
                        set_lib_path(PYTHON_LIBRARY "python/lib/python32.lib") #CACHE FILEPATH)
 
966
                        
 
967
                        # uncached vars
 
968
                        set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
 
969
                        set(PYTHON_LIBRARIES  "${PYTHON_LIBRARY}")
 
970
                endif()
 
971
 
 
972
                if(WITH_BOOST)
 
973
                        set(BOOST ${LIBDIR}/boost)
 
974
                        set(BOOST_INCLUDE_DIR ${BOOST}/include)
 
975
                        if(MSVC10)
 
976
                                set(BOOST_POSTFIX "vc100-mt-s-1_47.lib")
 
977
                                set(BOOST_DEBUG_POSTFIX "vc100-mt-sgd-1_47.lib")
 
978
                        else()
 
979
                                set(BOOST_POSTFIX "vc90-mt-s-1_47.lib")
 
980
                                set(BOOST_DEBUG_POSTFIX "vc90-mt-sgd-1_47.lib")                                 
 
981
                        endif()
 
982
                        set(BOOST_LIBRARIES
 
983
                                optimized libboost_date_time-${BOOST_POSTFIX} optimized libboost_filesystem-${BOOST_POSTFIX}
 
984
                                optimized libboost_regex-${BOOST_POSTFIX} optimized libboost_system-${BOOST_POSTFIX} optimized libboost_thread-${BOOST_POSTFIX}
 
985
                                debug libboost_date_time-${BOOST_DEBUG_POSTFIX} debug libboost_filesystem-${BOOST_DEBUG_POSTFIX}
 
986
                                debug libboost_regex-${BOOST_DEBUG_POSTFIX} debug libboost_system-${BOOST_DEBUG_POSTFIX} debug libboost_thread-${BOOST_DEBUG_POSTFIX})
 
987
                        if(MSVC10)
 
988
                                set(BOOST_LIBPATH ${BOOST}/lib/vc_10)
 
989
                        else()
 
990
                                set(BOOST_LIBPATH ${BOOST}/lib)
 
991
                        endif()
 
992
                        set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB")
 
993
                endif()
 
994
                        
 
995
                if(WITH_OPENIMAGEIO)
 
996
                        set(OPENIMAGEIO ${LIBDIR}/openimageio)
 
997
                        set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
 
998
                        set(OPENIMAGEIO_LIBRARIES OpenImageIO)
 
999
                        set_lib_path(OPENIMAGEIO_LIBPATH "openimageio/lib")
 
1000
                        set(OPENIMAGEIO_DEFINITIONS)
 
1001
                endif()
 
1002
 
 
1003
                set(PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib")
527
1004
 
528
1005
                # MSVC only, Mingw doesnt need
529
 
                IF(CMAKE_CL_64)
530
 
                        SET(PLATFORM_LINKFLAGS "/MACHINE:X64 /NODEFAULTLIB:libc.lib;MSVCRT.lib ")
531
 
                ELSE(CMAKE_CL_64)
532
 
                        SET(PLATFORM_LINKFLAGS "/NODEFAULTLIB:libc.lib ")
533
 
                ENDIF(CMAKE_CL_64)
534
 
          
535
 
                SET(CMAKE_EXE_LINKER_FLAGS_DEBUG "${CMAKE_EXE_LINKER_FLAGS_DEBUG} /NODEFAULTLIB:libcmt.lib;libc.lib ")
536
 
 
537
 
        ELSE(MSVC) # MINGW
538
 
                SET(LLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid")
539
 
 
540
 
                SET(CMAKE_CXX_FLAGS                "-pipe -funsigned-char -fno-strict-aliasing" CACHE STRING "Mingw C++ flags ")
541
 
                SET(CMAKE_C_FLAGS                  "-pipe -funsigned-char -fno-strict-aliasing" CACHE STRING "Mingw C flags ")
542
 
 
543
 
                SET(CMAKE_CXX_FLAGS_DEBUG          "-O0 -g" CACHE STRING "Mingw debug C++ flags ")
544
 
                SET(CMAKE_CXX_FLAGS_RELEASE        "   -O2" CACHE STRING "Mingw release C++ flags ")
545
 
                SET(CMAKE_CXX_FLAGS_MINSIZEREL     "   -Os" CACHE STRING "Mingw minsize release C++ flags ")
546
 
                SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "-O2 -g" CACHE STRING "Mingw release, debug C++ flags ")
547
 
 
548
 
                SET(CMAKE_C_FLAGS_DEBUG            "-O0 -g" CACHE STRING "Mingw debug C flags ")
549
 
                SET(CMAKE_C_FLAGS_RELEASE          "-O2"    CACHE STRING "Mingw release C flags ")
550
 
                SET(CMAKE_C_FLAGS_MINSIZEREL       "-Os"    CACHE STRING "Mingw minsize release C flags ")
551
 
                SET(CMAKE_C_FLAGS_RELWITHDEBINFO   "-O2 -g" CACHE STRING "Mingw release, debug C++ flags ")
552
 
                ADD_DEFINITIONS(-DFREE_WINDOWS)
553
 
                
554
 
                IF(WITH_OPENMP)
555
 
                        SET(LLIBS "${LLIBS} -lgomp")
556
 
                        SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
557
 
                        SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
558
 
                ENDIF(WITH_OPENMP)
559
 
 
560
 
                IF(WITH_INTERNATIONAL)
561
 
                        SET(GETTEXT ${LIBDIR}/gcc/gettext)
562
 
                        SET(GETTEXT_INC ${GETTEXT}/include)
563
 
                        SET(GETTEXT_LIBPATH ${GETTEXT}/lib)
564
 
                        SET(GETTEXT_LIB intl)
565
 
                ENDIF(WITH_INTERNATIONAL)
566
 
 
567
 
                SET(JPEG_LIBRARY libjpeg)
568
 
                SET(PNG_LIBRARIES png)
569
 
 
570
 
                SET(ZLIB ${LIBDIR}/zlib)
571
 
                SET(ZLIB_INC ${ZLIB}/include)
572
 
                SET(ZLIB_LIBPATH ${ZLIB}/lib)
573
 
                SET(ZLIB_LIBRARIES z)
574
 
 
575
 
                SET(PTHREADS ${LIBDIR}/pthreads)
576
 
                SET(PTHREADS_INC ${PTHREADS}/include)
577
 
                SET(PTHREADS_LIBPATH ${PTHREADS}/lib)
578
 
                SET(PTHREADS_LIB pthreadGC2)
579
 
                
580
 
                SET(FREETYPE ${LIBDIR}/gcc/freetype)
581
 
                SET(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
582
 
                SET(FREETYPE_LIBPATH ${FREETYPE}/lib)
583
 
                SET(FREETYPE_LIBRARY freetype)
584
 
 
585
 
                IF(WITH_FFTW3)
586
 
                        SET(FFTW3 ${LIBDIR}/gcc/fftw3)
587
 
                        SET(FFTW3_LIB fftw3)
588
 
                        SET(FFTW3_INC ${FFTW3}/include)
589
 
                        SET(FFTW3_LIBPATH ${FFTW3}/lib)
590
 
                ENDIF(WITH_FFTW3)
591
 
 
592
 
                IF(WITH_OPENCOLLADA)
593
 
                        SET(OPENCOLLADA ${LIBDIR}/gcc/opencollada)
594
 
                        SET(OPENCOLLADA_INC ${OPENCOLLADA}/include)
595
 
                        SET(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib ${OPENCOLLADA}/lib)
596
 
                        SET(OPENCOLLADA_LIB OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver expat pcre buffer ftoa)
597
 
                        #pcre is bundled with openCollada
598
 
                        #SET(PCRE ${LIBDIR}/pcre)
599
 
                        #SET(PCRE_LIBPATH ${PCRE}/lib)
600
 
                        SET(PCRE_LIB pcre)
601
 
                ENDIF(WITH_OPENCOLLADA)
602
 
                
603
 
                IF(WITH_FFMPEG)
604
 
                        SET(FFMPEG ${LIBDIR}/ffmpeg)
605
 
                        SET(FFMPEG_INC ${FFMPEG}/include ${FFMPEG}/include)
606
 
                        SET(FFMPEG_LIB avcodec-52 avformat-52 avdevice-52 avutil-50 swscale-0)
607
 
                        SET(FFMPEG_LIBPATH ${FFMPEG}/lib)
608
 
                ENDIF(WITH_FFMPEG)
609
 
 
610
 
                IF(WITH_OPENEXR)
611
 
                        SET(OPENEXR ${LIBDIR}/gcc/openexr)
612
 
                        SET(OPENEXR_INC ${OPENEXR}/include ${OPENEXR}/include/OpenEXR)
613
 
                        SET(OPENEXR_LIB Half IlmImf Imath IlmThread)
614
 
                        SET(OPENEXR_LIBPATH ${OPENEXR}/lib)
615
 
                ENDIF(WITH_OPENEXR)
616
 
 
617
 
                IF(WITH_TIFF)
618
 
                        SET(TIFF ${LIBDIR}/gcc/tiff)
619
 
                        SET(TIFF_LIBRARY tiff)
620
 
                        SET(TIFF_INCLUDE_DIR ${TIFF}/include)
621
 
                        SET(TIFF_LIBPATH ${TIFF}/lib)
622
 
                ENDIF(WITH_TIFF)
623
 
 
624
 
                IF(WITH_JACK)
625
 
                        SET(JACK ${LIBDIR}/jack)
626
 
                        SET(JACK_INC ${JACK}/include/jack ${JACK}/include)
627
 
                        SET(JACK_LIB jack)
628
 
                        SET(JACK_LIBPATH ${JACK}/lib)
 
1006
                if(CMAKE_CL_64)
 
1007
                        set(PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}")
 
1008
                else()
 
1009
                        set(PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}")
 
1010
                endif()
 
1011
 
 
1012
                set(PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib")
 
1013
 
 
1014
                # used in many places so include globally, like OpenGL
 
1015
                blender_include_dirs("${PTHREADS_INCLUDE_DIRS}")
 
1016
 
 
1017
        elseif(CMAKE_COMPILER_IS_GNUCC)
 
1018
        # keep GCC specific stuff here          
 
1019
                set(PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi")
 
1020
                set(PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing")
 
1021
 
 
1022
                if(WITH_MINGW64)
 
1023
                        #Yes, the point for MinGW64 is moar optimization by default :)
 
1024
                        set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -mmmx -msse -msse2 -ftree-vectorize")
 
1025
                        set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive")
 
1026
                        set(PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread")
629
1027
                        
 
1028
                        add_definitions(-DFREE_WINDOWS64 -DMS_WIN64)
 
1029
                endif()
 
1030
 
 
1031
                add_definitions(-D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE)
 
1032
 
 
1033
 
 
1034
                add_definitions(-DFREE_WINDOWS)
 
1035
 
 
1036
                if(WITH_INTERNATIONAL)
 
1037
                        set(GETTEXT ${LIBDIR}/gettext)
 
1038
                        set(GETTEXT_INCLUDE_DIRS ${GETTEXT}/include)
 
1039
                        set(GETTEXT_LIBPATH ${GETTEXT}/lib)
 
1040
                        set(GETTEXT_LIBRARIES intl)
 
1041
                endif()
 
1042
                
 
1043
                set(PNG "${LIBDIR}/png")
 
1044
                set(PNG_INCLUDE_DIR "${PNG}/include")
 
1045
                set(PNG_LIBPATH ${PNG}/lib) # not cmake defined
 
1046
 
 
1047
                if(WITH_MINGW64)
 
1048
                        set(JPEG_LIBRARIES jpeg)
 
1049
                else()
 
1050
                        set(JPEG_LIBRARIES libjpeg)
 
1051
                endif()
 
1052
                set(PNG_LIBRARIES png)
 
1053
 
 
1054
                set(ZLIB ${LIBDIR}/zlib)
 
1055
                set(ZLIB_INCLUDE_DIRS ${ZLIB}/include)
 
1056
                set(ZLIB_LIBPATH ${ZLIB}/lib)
 
1057
                set(ZLIB_LIBRARIES z)
 
1058
 
 
1059
                #comes with own pthread library
 
1060
                if(NOT WITH_MINGW64)
 
1061
                        set(PTHREADS ${LIBDIR}/pthreads)
 
1062
                        set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
 
1063
                        set(PTHREADS_LIBPATH ${PTHREADS}/lib)
 
1064
                        set(PTHREADS_LIBRARIES pthreadGC2)
 
1065
                endif()
 
1066
                
 
1067
                set(FREETYPE ${LIBDIR}/freetype)
 
1068
                set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
 
1069
                set(FREETYPE_LIBPATH ${FREETYPE}/lib)
 
1070
                set(FREETYPE_LIBRARY freetype)
 
1071
 
 
1072
                if(WITH_FFTW3)
 
1073
                        set(FFTW3 ${LIBDIR}/fftw3)
 
1074
                        set(FFTW3_LIBRARIES fftw3)
 
1075
                        set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
 
1076
                        set(FFTW3_LIBPATH ${FFTW3}/lib)
 
1077
                endif()
 
1078
 
 
1079
                if(WITH_OPENCOLLADA)
 
1080
                        set(OPENCOLLADA ${LIBDIR}/opencollada)
 
1081
                        set(OPENCOLLADA_INCLUDE_DIRS
 
1082
                                ${LIBDIR}/opencollada/include/COLLADAStreamWriter/include
 
1083
                                ${LIBDIR}/opencollada/include/COLLADABaseUtils/include
 
1084
                                ${LIBDIR}/opencollada/include/COLLADAFramework/include
 
1085
                                ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader/include
 
1086
                                ${LIBDIR}/opencollada/include/GeneratedSaxParser/include
 
1087
                        )
 
1088
                        set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib ${OPENCOLLADA}/lib)
 
1089
                        set(OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver expat pcre buffer ftoa)
 
1090
                        set(PCRE_LIBRARIES pcre)
 
1091
                endif()
 
1092
 
 
1093
                if(WITH_CODEC_FFMPEG)
 
1094
                        set(FFMPEG ${LIBDIR}/ffmpeg)
 
1095
                        set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include ${FFMPEG}/include)
 
1096
                        set(FFMPEG_LIBRARIES avcodec-53 avformat-53 avdevice-53 avutil-51 swscale-2)
 
1097
                        set(FFMPEG_LIBPATH ${FFMPEG}/lib)
 
1098
                endif()
 
1099
 
 
1100
                if(WITH_IMAGE_OPENEXR)
 
1101
                        set(OPENEXR ${LIBDIR}/openexr)
 
1102
                        set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
 
1103
                        set(OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex)
 
1104
                        set(OPENEXR_LIBPATH ${OPENEXR}/lib)
 
1105
                endif()
 
1106
 
 
1107
                if(WITH_IMAGE_TIFF)
 
1108
                        set(TIFF ${LIBDIR}/tiff)
 
1109
                        set(TIFF_LIBRARY tiff)
 
1110
                        set(TIFF_INCLUDE_DIR ${TIFF}/include)
 
1111
                        set(TIFF_LIBPATH ${TIFF}/lib)
 
1112
                endif()
 
1113
 
 
1114
                if(WITH_JACK)
 
1115
                        set(JACK ${LIBDIR}/jack)
 
1116
                        set(JACK_INCLUDE_DIRS ${JACK}/include/jack ${JACK}/include)
 
1117
                        set(JACK_LIBRARIES jack)
 
1118
                        set(JACK_LIBPATH ${JACK}/lib)
 
1119
 
630
1120
                        # TODO, gives linking errors, force off
631
 
                        SET(WITH_JACK OFF)
632
 
                ENDIF(WITH_JACK)
633
 
 
634
 
                IF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
635
 
                        SET(PLATFORM_CFLAGS " -msse -msse2 ${PLATFORM_CFLAGS}")
636
 
                        ADD_DEFINITIONS(-D__SSE__)
637
 
                        ADD_DEFINITIONS(-D__MMX__)
638
 
                ENDIF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
639
 
 
640
 
        ENDIF(MSVC)
641
 
 
642
 
ENDIF(WIN32)
643
 
 
644
 
 
645
 
IF(APPLE)
646
 
        IF(WITH_LIBS10.5)
647
 
                SET(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
648
 
        ELSE(WITH_LIBS10.5)
649
 
                IF(CMAKE_OSX_ARCHITECTURES MATCHES i386)
650
 
                        SET(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
651
 
                ELSE(CMAKE_OSX_ARCHITECTURES MATCHES i386)
652
 
                        SET(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
653
 
                ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES i386)
654
 
        ENDIF(WITH_LIBS10.5)
655
 
        
656
 
 
657
 
        IF(WITH_OPENAL)
658
 
                FIND_PACKAGE(OpenAL)
659
 
                IF(OPENAL_FOUND)
660
 
                        SET(WITH_OPENAL ON)
661
 
                        SET(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
662
 
                ELSE(OPENAL_FOUND)
663
 
                        SET(WITH_OPENAL OFF)
664
 
                ENDIF(OPENAL_FOUND)
665
 
        ENDIF(WITH_OPENAL)
666
 
 
667
 
        IF(WITH_JACK)
668
 
                SET(JACK /usr)
669
 
                SET(JACK_INC ${JACK}/include/jack)
670
 
                SET(JACK_LIB jack)
671
 
                SET(JACK_LIBPATH ${JACK}/lib)
672
 
        ENDIF(WITH_JACK)
673
 
 
674
 
        IF(WITH_SNDFILE)
675
 
                SET(SNDFILE ${LIBDIR}/sndfile)
676
 
                SET(SNDFILE_INC ${SNDFILE}/include)
677
 
                SET(SNDFILE_LIB sndfile FLAC ogg vorbis vorbisenc)
678
 
                SET(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib)
679
 
        ENDIF(WITH_SNDFILE)
680
 
 
681
 
        SET(PYTHON_VERSION 3.1)
682
 
 
683
 
        IF(PYTHON_VERSION MATCHES 3.1)
684
 
                # we use precompiled libraries for py 3.1 and up by default
685
 
 
686
 
                SET(PYTHON ${LIBDIR}/python)
687
 
                SET(PYTHON_INC "${PYTHON}/include/python${PYTHON_VERSION}")
688
 
                # SET(PYTHON_BINARY "${PYTHON}/bin/python${PYTHON_VERSION}") # not used yet
689
 
                SET(PYTHON_LIB python${PYTHON_VERSION})
690
 
                SET(PYTHON_LIBPATH "${PYTHON}/lib/python${PYTHON_VERSION}")
691
 
                # SET(PYTHON_LINKFLAGS "-u _PyMac_Error")  # won't  build with this enabled
692
 
        ELSE(PYTHON_VERSION MATCHES 3.1)
693
 
                # otherwise, use custom system framework
694
 
 
695
 
                SET(PYTHON /System/Library/Frameworks/Python.framework/Versions/)
696
 
                SET(PYTHON_VERSION 3.1)
697
 
                SET(PYTHON_INC "${PYTHON}${PYTHON_VERSION}/include/python${PYTHON_VERSION}")
698
 
                # SET(PYTHON_BINARY ${PYTHON}${PYTHON_VERSION}/bin/python${PYTHON_VERSION}) # not used yet
699
 
                SET(PYTHON_LIB "")
700
 
                SET(PYTHON_LIBPATH ${PYTHON}${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config)
701
 
                SET(PYTHON_LINKFLAGS "-u _PyMac_Error -framework System -framework Python")
702
 
        ENDIF(PYTHON_VERSION MATCHES 3.1)
703
 
 
704
 
        IF(WITH_INTERNATIONAL)
705
 
                SET(GETTEXT ${LIBDIR}/gettext)
706
 
                SET(GETTEXT_INC "${GETTEXT}/include")
707
 
                SET(GETTEXT_LIB intl iconv)
708
 
                SET(GETTEXT_LIBPATH ${GETTEXT}/lib)
709
 
        ENDIF(WITH_INTERNATIONAL)
710
 
  
711
 
        IF(WITH_FFTW3)
712
 
                SET(FFTW3 ${LIBDIR}/fftw3)
713
 
                SET(FFTW3_INC ${FFTW3}/include)
714
 
                SET(FFTW3_LIB fftw3)
715
 
                SET(FFTW3_LIBPATH ${FFTW3}/lib)
716
 
        ENDIF(WITH_FFTW3)
717
 
 
718
 
        SET(PNG_LIBRARIES png)
719
 
        SET(JPEG_LIBRARY jpeg)
720
 
 
721
 
        SET(ZLIB /usr)
722
 
        SET(ZLIB_INC "${ZLIB}/include")
723
 
        SET(ZLIB_LIBRARIES z bz2)
724
 
 
725
 
        SET(FREETYPE ${LIBDIR}/freetype)
726
 
        SET(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
727
 
        SET(FREETYPE_LIBPATH ${FREETYPE}/lib)
728
 
        SET(FREETYPE_LIBRARY freetype)
729
 
 
730
 
        IF(WITH_OPENEXR)
731
 
                SET(OPENEXR ${LIBDIR}/openexr)
732
 
                SET(OPENEXR_INC ${OPENEXR}/include/OpenEXR ${OPENEXR}/include)
733
 
                SET(OPENEXR_LIB Iex Half IlmImf Imath IlmThread)
734
 
                SET(OPENEXR_LIBPATH ${OPENEXR}/lib)
735
 
        ENDIF(WITH_OPENEXR)
736
 
 
737
 
        IF(WITH_LCMS)
738
 
                SET(LCMS ${LIBDIR}/lcms)
739
 
                SET(LCMS_INCLUDE_DIR ${LCMS}/include)
740
 
                SET(LCMS_LIBRARY lcms)
741
 
                SET(LCMS_LIBPATH ${LCMS}/lib)
742
 
        ENDIF(WITH_LCMS)
743
 
 
744
 
        IF(WITH_FFMPEG)
745
 
                SET(FFMPEG ${LIBDIR}/ffmpeg)
746
 
                SET(FFMPEG_INC ${FFMPEG}/include)
747
 
                SET(FFMPEG_LIB avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
748
 
                SET(FFMPEG_LIBPATH ${FFMPEG}/lib)
749
 
                SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
750
 
        ENDIF(WITH_FFMPEG)
751
 
 
752
 
        SET(LIBSAMPLERATE ${LIBDIR}/samplerate)
753
 
        SET(LIBSAMPLERATE_INC ${LIBSAMPLERATE}/include)
754
 
        SET(LIBSAMPLERATE_LIB samplerate)
755
 
        SET(LIBSAMPLERATE_LIBPATH ${LIBSAMPLERATE}/lib)
756
 
 
757
 
        SET(LLIBS stdc++ SystemStubs)
758
 
 
759
 
        IF (WITH_COCOA)
760
 
                SET(PLATFORM_CFLAGS "-pipe -funsigned-char -DGHOST_COCOA")
761
 
                SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
762
 
                IF(USE_QTKIT)
763
 
                        SET(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT")
764
 
                        SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
765
 
                        IF(CMAKE_OSX_ARCHITECTURES MATCHES i386)
766
 
                                SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
767
 
                                #libSDL still needs 32bit carbon quicktime 
768
 
                        ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES i386)
769
 
                ELSEIF(WITH_QUICKTIME)
770
 
                        SET(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
771
 
                ENDIF(USE_QTKIT)
772
 
        ELSE (WITH_COCOA)
773
 
                SET(PLATFORM_CFLAGS "-pipe -funsigned-char")
774
 
                SET(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime")
775
 
        ENDIF (WITH_COCOA)
776
 
 
777
 
        IF(WITH_OPENMP)
778
 
                SET(LLIBS "${LLIBS} -lgomp")
779
 
                SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fopenmp")
780
 
                SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fopenmp")
781
 
        ENDIF(WITH_OPENMP)
782
 
 
783
 
        IF (WITH_OPENCOLLADA)
784
 
                SET(OPENCOLLADA ${LIBDIR}/opencollada)
785
 
                SET(OPENCOLLADA_INC ${OPENCOLLADA}/include)
786
 
                SET(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
787
 
                SET(OPENCOLLADA_LIB "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lUTF -lxml2 -lbuffer -lftoa" )
 
1121
                        set(WITH_JACK OFF)
 
1122
                endif()
 
1123
 
 
1124
                if(WITH_PYTHON)
 
1125
                        # normally cached but not since we include them with blender
 
1126
                        set(PYTHON_VERSION 3.2) #  CACHE STRING)
 
1127
                        set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}")  # CACHE PATH)
 
1128
                        set(PYTHON_LIBRARY "${LIBDIR}/python/lib/python32mw.lib")  # CACHE FILEPATH)
 
1129
 
 
1130
                        # uncached vars
 
1131
                        set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
 
1132
                        set(PYTHON_LIBRARIES  "${PYTHON_LIBRARY}")
 
1133
                endif()
 
1134
 
 
1135
                if(WITH_BOOST)
 
1136
                        set(BOOST ${LIBDIR}/boost)
 
1137
                        set(BOOST_INCLUDE_DIR ${BOOST}/include)
 
1138
                        if(WITH_MINGW64)
 
1139
                                set(BOOST_POSTFIX "mgw47-mt-s-1_49")
 
1140
                                set(BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49")
 
1141
                        else()
 
1142
                                set(BOOST_POSTFIX "mgw46-mt-s-1_47")
 
1143
                                set(BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_47")
 
1144
                        endif()         
 
1145
                        set(BOOST_LIBRARIES
 
1146
                                optimized boost_date_time-${BOOST_POSTFIX} boost_filesystem-${BOOST_POSTFIX}
 
1147
                                boost_regex-${BOOST_POSTFIX} boost_system-${BOOST_POSTFIX} boost_thread-${BOOST_POSTFIX}
 
1148
                                debug boost_date_time-${BOOST_DEBUG_POSTFIX} boost_filesystem-${BOOST_DEBUG_POSTFIX}
 
1149
                                boost_regex-${BOOST_DEBUG_POSTFIX} boost_system-${BOOST_DEBUG_POSTFIX} boost_thread-${BOOST_DEBUG_POSTFIX})
 
1150
                        set(BOOST_LIBPATH ${BOOST}/lib)
 
1151
                        set(BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB ")
 
1152
                endif()
 
1153
                        
 
1154
                if(WITH_OPENIMAGEIO)
 
1155
                        set(OPENIMAGEIO ${LIBDIR}/openimageio)
 
1156
                        set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
 
1157
                        set(OPENIMAGEIO_LIBRARIES OpenImageIO)
 
1158
                        set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib)
 
1159
                        set(OPENIMAGEIO_DEFINITIONS)
 
1160
                endif()
 
1161
                
 
1162
                set(PLATFORM_LINKFLAGS "-Xlinker --stack=2097152")
 
1163
 
 
1164
                ## DISABLE - causes linking errors 
 
1165
                ## for re-distrobution, so users dont need mingw installed
 
1166
                # set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
 
1167
 
 
1168
        endif()
 
1169
 
 
1170
elseif(APPLE)
 
1171
 
 
1172
        if(${CMAKE_OSX_DEPLOYMENT_TARGET} STREQUAL "10.5" OR ${CMAKE_OSX_DEPLOYMENT_TARGET} STRGREATER "10.5")
 
1173
                set(WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE) # valid also for 10.6/10.7
 
1174
        endif()
 
1175
 
 
1176
        if(${XCODE_VERSION} VERSION_LESS 4.3)
 
1177
                SET(CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk CACHE PATH "" FORCE ) # use guaranteed existing sdk
 
1178
        else()
 
1179
                # note: i don't use xcode-select path on purpose, cause also /Applications/Xcode.app would be allowed
 
1180
                # absolute pathes are more foolproof here !
 
1181
                SET(OSX_SYSROOT_PREFIX /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform)
 
1182
                SET(OSX_DEVELOPER_PREFIX /Developer/SDKs/MacOSX${OSX_SYSTEM}.sdk) # use guaranteed existing sdk
 
1183
                SET(CMAKE_OSX_SYSROOT ${OSX_SYSROOT_PREFIX}/${OSX_DEVELOPER_PREFIX} CACHE PATH "" FORCE)
 
1184
        endif() 
 
1185
        
 
1186
        if(WITH_LIBS10.5)
 
1187
                set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-9.x.universal)
 
1188
        else()
 
1189
                if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
 
1190
                        set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.x.i386)
 
1191
                else()
 
1192
                        set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/darwin-8.0.0-powerpc)
 
1193
                endif()
 
1194
        endif()
 
1195
 
 
1196
 
 
1197
        if(WITH_OPENAL)
 
1198
                find_package(OpenAL)
 
1199
                if(OPENAL_FOUND)
 
1200
                        set(WITH_OPENAL ON)
 
1201
                        set(OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include")
 
1202
                else()
 
1203
                        set(WITH_OPENAL OFF)
 
1204
                endif()
 
1205
        endif()
 
1206
 
 
1207
        if(WITH_JACK)
 
1208
                set(JACK /usr)
 
1209
                set(JACK_INCLUDE_DIRS ${JACK}/include/jack)
 
1210
                set(JACK_LIBRARIES jack)
 
1211
                set(JACK_LIBPATH ${JACK}/lib)
 
1212
        endif()
 
1213
 
 
1214
        if(WITH_CODEC_SNDFILE)
 
1215
                set(SNDFILE ${LIBDIR}/sndfile)
 
1216
                set(SNDFILE_INCLUDE_DIRS ${SNDFILE}/include)
 
1217
                set(SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc)
 
1218
                set(SNDFILE_LIBPATH ${SNDFILE}/lib ${FFMPEG}/lib)  # TODO, deprecate
 
1219
        endif()
 
1220
 
 
1221
        if(WITH_PYTHON)
 
1222
                if(NOT WITH_PYTHON_MODULE)
 
1223
                        # we use precompiled libraries for py 3.2 and up by default
 
1224
 
 
1225
                        # normally cached but not since we include them with blender
 
1226
                        set(PYTHON_VERSION 3.2)
 
1227
                        set(PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}")
 
1228
                        # set(PYTHON_BINARY "${LIBDIR}/python/bin/python${PYTHON_VERSION}") # not used yet
 
1229
                        set(PYTHON_LIBRARY python${PYTHON_VERSION})
 
1230
                        set(PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}")
 
1231
                        # set(PYTHON_LINKFLAGS "-u _PyMac_Error")  # won't  build with this enabled
 
1232
                else()
 
1233
                        # module must be compiled against Python framework
 
1234
 
 
1235
                        # normally cached but not since we include them with blender
 
1236
                        set(PYTHON_VERSION 3.2)
 
1237
                        set(PYTHON_INCLUDE_DIR "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}m")
 
1238
                        set(PYTHON_BINARY "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}")
 
1239
                        #set(PYTHON_LIBRARY python${PYTHON_VERSION})
 
1240
                        set(PYTHON_LIBPATH "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config-3.2m")
 
1241
                        #set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python")  # won't  build with this enabled
 
1242
                endif()
 
1243
                
 
1244
                # uncached vars
 
1245
                set(PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}")
 
1246
                set(PYTHON_LIBRARIES  "${PYTHON_LIBRARY}")
 
1247
        endif()
 
1248
 
 
1249
        if(WITH_INTERNATIONAL)
 
1250
                set(GETTEXT ${LIBDIR}/gettext)
 
1251
                set(GETTEXT_INCLUDE_DIRS "${GETTEXT}/include")
 
1252
                set(GETTEXT_LIBRARIES intl iconv)
 
1253
                set(GETTEXT_LIBPATH ${GETTEXT}/lib)
 
1254
        endif()
 
1255
 
 
1256
        if(WITH_FFTW3)
 
1257
                set(FFTW3 ${LIBDIR}/fftw3)
 
1258
                set(FFTW3_INCLUDE_DIRS ${FFTW3}/include)
 
1259
                set(FFTW3_LIBRARIES fftw3)
 
1260
                set(FFTW3_LIBPATH ${FFTW3}/lib)
 
1261
        endif()
 
1262
 
 
1263
        set(PNG_LIBRARIES png)
 
1264
        set(JPEG_LIBRARIES jpeg)
 
1265
 
 
1266
        set(ZLIB /usr)
 
1267
        set(ZLIB_INCLUDE_DIRS "${ZLIB}/include")
 
1268
        set(ZLIB_LIBRARIES z bz2)
 
1269
 
 
1270
        set(FREETYPE ${LIBDIR}/freetype)
 
1271
        set(FREETYPE_INCLUDE_DIRS ${FREETYPE}/include ${FREETYPE}/include/freetype2)
 
1272
        set(FREETYPE_LIBPATH ${FREETYPE}/lib)
 
1273
        set(FREETYPE_LIBRARY freetype)
 
1274
 
 
1275
        if(WITH_IMAGE_OPENEXR)
 
1276
                set(OPENEXR ${LIBDIR}/openexr)
 
1277
                set(OPENEXR_INCLUDE_DIRS ${OPENEXR}/include/OpenEXR)
 
1278
                set(OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread)
 
1279
                set(OPENEXR_LIBPATH ${OPENEXR}/lib)
 
1280
        endif()
 
1281
 
 
1282
        if(WITH_CODEC_FFMPEG)
 
1283
                set(FFMPEG ${LIBDIR}/ffmpeg)
 
1284
                set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
 
1285
                set(FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg)
 
1286
                set(FFMPEG_LIBPATH ${FFMPEG}/lib)
 
1287
                set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
 
1288
        endif()
 
1289
 
 
1290
        find_library(SYSTEMSTUBS_LIBRARY
 
1291
                NAMES
 
1292
                SystemStubs
 
1293
                PATHS
 
1294
        )
 
1295
        mark_as_advanced(SYSTEMSTUBS_LIBRARY)
 
1296
        if(SYSTEMSTUBS_LIBRARY)
 
1297
                set(PLATFORM_LINKLIBS stdc++ SystemStubs)
 
1298
        else()
 
1299
                set(PLATFORM_LINKLIBS stdc++)
 
1300
        endif()
 
1301
 
 
1302
        if(WITH_COCOA)
 
1303
                set(PLATFORM_CFLAGS "-pipe -funsigned-char -DGHOST_COCOA")
 
1304
                set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio")
 
1305
                if(USE_QTKIT)
 
1306
                        set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT")
 
1307
                        set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit")
 
1308
                        if(CMAKE_OSX_ARCHITECTURES MATCHES i386)
 
1309
                                set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
 
1310
                                #libSDL still needs 32bit carbon quicktime
 
1311
                        endif()
 
1312
                elseif(WITH_CODEC_QUICKTIME)
 
1313
                        set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime")
 
1314
                endif()
 
1315
 
 
1316
                # XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
 
1317
                # ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
 
1318
                if(WITH_INPUT_NDOF)
 
1319
                        # This thread it *should* work and check the framework - campbell
 
1320
                        # http://www.cmake.org/pipermail/cmake/2005-December/007740.html
 
1321
                        find_library(3D_CONNEXION_CLIENT_LIBRARY
 
1322
                                NAMES 3DconnexionClient
 
1323
                        )
 
1324
                        if(NOT 3D_CONNEXION_CLIENT_LIBRARY)
 
1325
                                set(WITH_INPUT_NDOF OFF)
 
1326
                        endif()
 
1327
 
 
1328
                        if(WITH_INPUT_NDOF)
 
1329
                                set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -weak_framework 3DconnexionClient")
 
1330
                        endif()
 
1331
                endif()
 
1332
 
 
1333
        else()
 
1334
                set(PLATFORM_CFLAGS "-pipe -funsigned-char")
 
1335
                set(PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime")
 
1336
                set(WITH_INPUT_NDOF OFF)  # unsupported
 
1337
        endif()
 
1338
        
 
1339
        if(WITH_PYTHON_MODULE)
 
1340
                set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/python")# force cmake to link right framework
 
1341
        endif()
 
1342
        
 
1343
        if(WITH_OPENCOLLADA)
 
1344
                set(OPENCOLLADA ${LIBDIR}/opencollada)
 
1345
 
 
1346
                set(OPENCOLLADA_INCLUDE_DIRS
 
1347
                        ${LIBDIR}/opencollada/include/COLLADAStreamWriter
 
1348
                        ${LIBDIR}/opencollada/include/COLLADABaseUtils
 
1349
                        ${LIBDIR}/opencollada/include/COLLADAFramework
 
1350
                        ${LIBDIR}/opencollada/include/COLLADASaxFrameworkLoader
 
1351
                        ${LIBDIR}/opencollada/include/GeneratedSaxParser
 
1352
                )
 
1353
 
 
1354
                set(OPENCOLLADA_LIBPATH ${OPENCOLLADA}/lib)
 
1355
                set(OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lUTF -lxml2 -lbuffer -lftoa" )
788
1356
                #pcre is bundled with openCollada
789
 
                #SET(PCRE ${LIBDIR}/pcre)
790
 
                #SET(PCRE_LIBPATH ${PCRE}/lib)
791
 
                SET(PCRE_LIB pcre)
 
1357
                #set(PCRE ${LIBDIR}/pcre)
 
1358
                #set(PCRE_LIBPATH ${PCRE}/lib)
 
1359
                set(PCRE_LIBRARIES pcre)
792
1360
                #libxml2 is used
793
 
                #SET(EXPAT ${LIBDIR}/expat)
794
 
                #SET(EXPAT_LIBPATH ${EXPAT}/lib)
795
 
                SET(EXPAT_LIB)
796
 
        ENDIF (WITH_OPENCOLLADA)
797
 
 
798
 
        IF(WITH_SDL)
799
 
                SET(SDL ${LIBDIR}/sdl)
800
 
                SET(SDL_INCLUDE_DIR ${SDL}/include)
801
 
                SET(SDL_LIBRARY SDL)
802
 
                SET(SDL_LIBPATH ${SDL}/lib)
803
 
        ENDIF(WITH_SDL)
804
 
 
805
 
        SET(PNG "${LIBDIR}/png")
806
 
        SET(PNG_INC "${PNG}/include")
807
 
        SET(PNG_LIBPATH ${PNG}/lib)
808
 
 
809
 
        SET(JPEG "${LIBDIR}/jpeg")
810
 
        SET(JPEG_INC "${JPEG}/include")
811
 
        SET(JPEG_LIBPATH ${JPEG}/lib)
812
 
 
813
 
        IF(WITH_TIFF)
814
 
                SET(TIFF ${LIBDIR}/tiff)
815
 
                SET(TIFF_INCLUDE_DIR ${TIFF}/include)
816
 
                SET(TIFF_LIBRARY tiff)
817
 
                SET(TIFF_LIBPATH ${TIFF}/lib)
818
 
        ENDIF(WITH_TIFF)
819
 
 
820
 
        IF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
821
 
                SET(PLATFORM_CFLAGS " -msse -msse2 ${PLATFORM_CFLAGS}")
822
 
                ADD_DEFINITIONS(-D__SSE__)
823
 
                ADD_DEFINITIONS(-D__MMX__)
824
 
        ENDIF(WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD)
825
 
 
826
 
        SET(EXETYPE MACOSX_BUNDLE)
827
 
 
828
 
        SET(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
829
 
        SET(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
830
 
        IF(CMAKE_OSX_ARCHITECTURES MATCHES "i386")
831
 
                SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller")
832
 
                SET(CMAKE_C_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller")
833
 
        ELSEIF(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
834
 
                SET(CMAKE_CXX_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller")
835
 
                SET(CMAKE_C_FLAGS_RELEASE "-O3 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller")
836
 
        ELSE(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
837
 
                SET(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
838
 
                SET(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
839
 
        ENDIF(CMAKE_OSX_ARCHITECTURES MATCHES "i386")
840
 
 
841
 
        # Better warnings
842
 
        SET(C_WARNINGS "-Wall -Wno-char-subscripts -Wpointer-arith -Wcast-align -Wdeclaration-after-statement -Wno-unknown-pragmas")
843
 
        SET(CXX_WARNINGS "-Wall -Wno-invalid-offsetof -Wno-sign-compare")
844
 
 
845
 
ENDIF(APPLE)
846
 
 
847
 
 
848
 
# buildinfo
849
 
IF(WITH_BUILDINFO)
850
 
        # BUILD_PLATFORM and BUILD_PLATFORM are taken from CMake
851
 
        IF(UNIX)
852
 
                EXEC_PROGRAM("date \"+%Y-%m-%d\"" OUTPUT_VARIABLE BUILD_DATE)
853
 
                EXEC_PROGRAM("date \"+%H:%M:%S\"" OUTPUT_VARIABLE BUILD_TIME)  
854
 
                EXEC_PROGRAM("svnversion ${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE BUILD_REV RETURN_VALUE BUILD_REV_RETURN)
855
 
                IF(BUILD_REV_RETURN)
856
 
                        SET(BUILD_REV "unknown")
857
 
                ENDIF(BUILD_REV_RETURN)
858
 
        ENDIF(UNIX)
859
 
        
860
 
        IF(WIN32)
861
 
                EXEC_PROGRAM("cmd /c date /t" OUTPUT_VARIABLE BUILD_DATE)
862
 
                EXEC_PROGRAM("cmd /c time /t" OUTPUT_VARIABLE BUILD_TIME)  
863
 
                EXEC_PROGRAM("svnversion ${CMAKE_SOURCE_DIR}" OUTPUT_VARIABLE BUILD_REV RETURN_VALUE BUILD_REV_RETURN)
864
 
                IF(BUILD_REV_RETURN)
865
 
                        SET(BUILD_REV "unknown")
866
 
                ENDIF(BUILD_REV_RETURN)
867
 
        ENDIF(WIN32)
868
 
ENDIF(WITH_BUILDINFO)
869
 
        
 
1361
                #set(EXPAT ${LIBDIR}/expat)
 
1362
                #set(EXPAT_LIBPATH ${EXPAT}/lib)
 
1363
                set(EXPAT_LIB)
 
1364
        endif()
 
1365
 
 
1366
        if(WITH_SDL)
 
1367
                set(SDL ${LIBDIR}/sdl)
 
1368
                set(SDL_INCLUDE_DIR ${SDL}/include)
 
1369
                set(SDL_LIBRARY SDL)
 
1370
                set(SDL_LIBPATH ${SDL}/lib)
 
1371
        endif()
 
1372
 
 
1373
        set(PNG "${LIBDIR}/png")
 
1374
        set(PNG_INCLUDE_DIR "${PNG}/include")
 
1375
        set(PNG_LIBPATH ${PNG}/lib)
 
1376
 
 
1377
        set(JPEG "${LIBDIR}/jpeg")
 
1378
        set(JPEG_INCLUDE_DIR "${JPEG}/include")
 
1379
        set(JPEG_LIBPATH ${JPEG}/lib)
 
1380
 
 
1381
        if(WITH_IMAGE_TIFF)
 
1382
                set(TIFF ${LIBDIR}/tiff)
 
1383
                set(TIFF_INCLUDE_DIR ${TIFF}/include)
 
1384
                set(TIFF_LIBRARY tiff)
 
1385
                set(TIFF_LIBPATH ${TIFF}/lib)
 
1386
        endif()
 
1387
 
 
1388
        if (WITH_INPUT_NDOF)
 
1389
                # linker needs "-weak_framework 3DconnexionClient"
 
1390
        endif()
 
1391
 
 
1392
        if(WITH_BOOST)
 
1393
                set(BOOST ${LIBDIR}/boost)
 
1394
                set(BOOST_INCLUDE_DIR ${BOOST}/include)
 
1395
                set(BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt)
 
1396
                set(BOOST_LIBPATH ${BOOST}/lib)
 
1397
                set(BOOST_DEFINITIONS)
 
1398
        endif()
 
1399
 
 
1400
        if(WITH_OPENIMAGEIO)
 
1401
                set(OPENIMAGEIO ${LIBDIR}/openimageio)
 
1402
                set(OPENIMAGEIO_INCLUDE_DIRS ${OPENIMAGEIO}/include)
 
1403
                set(OPENIMAGEIO_LIBRARIES OpenImageIO ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES})
 
1404
                set(OPENIMAGEIO_LIBPATH ${OPENIMAGEIO}/lib ${JPEG_LIBPATH} ${PNG_LIBPATH} ${TIFF_LIBPATH} ${OPENEXR_LIBPATH} ${ZLIB_LIBPATH})
 
1405
                set(OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD")
 
1406
        endif()
 
1407
 
 
1408
        set(EXETYPE MACOSX_BUNDLE)
 
1409
 
 
1410
        set(CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g")
 
1411
        set(CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g")
 
1412
        if(CMAKE_OSX_ARCHITECTURES MATCHES "i386")
 
1413
                set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller")
 
1414
                set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller")
 
1415
        elseif(CMAKE_OSX_ARCHITECTURES MATCHES "x86_64")
 
1416
                set(CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller")
 
1417
                set(CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller")
 
1418
        else()
 
1419
                set(CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
 
1420
                set(CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing")
 
1421
        endif()
 
1422
endif()
 
1423
 
870
1424
#-----------------------------------------------------------------------------
871
1425
# Common.
872
 
IF(WITH_OPENJPEG)
873
 
        set(OPENJPEG ${CMAKE_SOURCE_DIR}/extern/libopenjpeg)
874
 
        set(OPENJPEG_INC ${OPENJPEG})
875
 
        set(OPENJPEG_LIb extern_libopenjpeg)
876
 
ENDIF(WITH_OPENJPEG)
 
1426
 
 
1427
if(APPLE OR WIN32)
 
1428
        if(NOT EXISTS "${LIBDIR}/")
 
1429
                message(FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'")
 
1430
        endif()
 
1431
endif()
 
1432
 
 
1433
# See TEST_SSE_SUPPORT() for how this is defined.
 
1434
 
 
1435
if(WITH_RAYOPTIMIZATION)
 
1436
        if(SUPPORT_SSE_BUILD)
 
1437
                set(PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}")
 
1438
                add_definitions(-D__SSE__ -D__MMX__)
 
1439
        endif()
 
1440
        if(SUPPORT_SSE2_BUILD)
 
1441
                set(PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}")
 
1442
                add_definitions(-D__SSE2__)
 
1443
                if(NOT SUPPORT_SSE_BUILD) # dont double up
 
1444
                        add_definitions(-D__MMX__)
 
1445
                endif()
 
1446
        endif()
 
1447
endif()
 
1448
 
 
1449
 
 
1450
# set the endian define
 
1451
if(MSVC)
 
1452
        # for some reason this fails on msvc
 
1453
        add_definitions(-D__LITTLE_ENDIAN__)
 
1454
else()
 
1455
        include(TestBigEndian)
 
1456
        test_big_endian(_SYSTEM_BIG_ENDIAN)
 
1457
        if(_SYSTEM_BIG_ENDIAN)
 
1458
                add_definitions(-D__BIG_ENDIAN__)
 
1459
        else()
 
1460
                add_definitions(-D__LITTLE_ENDIAN__)
 
1461
        endif()
 
1462
        unset(_SYSTEM_BIG_ENDIAN)
 
1463
endif()
 
1464
 
 
1465
 
 
1466
if(WITH_IMAGE_OPENJPEG)
 
1467
        if(UNIX AND NOT APPLE)
 
1468
                # dealt with above
 
1469
        else()
 
1470
                set(OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg")
 
1471
        endif()
 
1472
endif()
 
1473
 
 
1474
if(WITH_IMAGE_REDCODE)
 
1475
        set(REDCODE ${CMAKE_SOURCE_DIR}/extern)
 
1476
        set(REDCODE_INC ${REDCODE})
 
1477
endif()
877
1478
 
878
1479
#-----------------------------------------------------------------------------
879
1480
# Blender WebPlugin
880
1481
 
881
 
IF(WITH_WEBPLUGIN) 
882
 
        SET(GECKO_DIR "${CMAKE_SOURCE_DIR}/../gecko-sdk/" CACHE PATH "Gecko SDK path")
883
 
        SET(WEBPLUGIN_SANDBOX_MODE "apparmor" CACHE STRING "WEB Plugin sandbox mode, can be apparmor, privsep, none")
 
1482
if(WITH_WEBPLUGIN)
 
1483
        set(GECKO_DIR "${CMAKE_SOURCE_DIR}/../gecko-sdk/" CACHE PATH "Gecko SDK path")
 
1484
        set(WEBPLUGIN_SANDBOX_MODE "apparmor" CACHE STRING "WEB Plugin sandbox mode, can be apparmor, privsep, none")
884
1485
 
885
 
        SET(WITH_PLAYER ON)
886
 
ENDIF(WITH_WEBPLUGIN)
 
1486
        set(WITH_PLAYER ON)
 
1487
endif()
887
1488
 
888
1489
 
889
1490
#-----------------------------------------------------------------------------
890
1491
# Configure OpenGL.
891
 
FIND_PACKAGE(OpenGL)
892
 
INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
893
 
# UNSET(OPENGL_LIBRARIES CACHE) # not compat with older cmake 
894
 
# UNSET(OPENGL_xmesa_INCLUDE_DIR CACHE) # not compat with older cmake 
 
1492
find_package(OpenGL)
 
1493
blender_include_dirs_sys("${OPENGL_INCLUDE_DIR}")
 
1494
# unset(OPENGL_LIBRARIES CACHE) # not compat with older cmake
 
1495
# unset(OPENGL_xmesa_INCLUDE_DIR CACHE) # not compat with older cmake
 
1496
 
 
1497
#-----------------------------------------------------------------------------
 
1498
# Configure OpenMP.
 
1499
if(WITH_OPENMP)
 
1500
        find_package(OpenMP)
 
1501
        if(OPENMP_FOUND)
 
1502
                set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}")
 
1503
                set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
 
1504
 
 
1505
                if(APPLE AND ${CMAKE_GENERATOR} MATCHES "Xcode")
 
1506
                        set(CMAKE_XCODE_ATTRIBUTE_ENABLE_OPENMP_SUPPORT "YES")
 
1507
                endif()
 
1508
        else()
 
1509
                set(WITH_OPENMP OFF)
 
1510
        endif()
 
1511
 
 
1512
        mark_as_advanced(
 
1513
                OpenMP_C_FLAGS
 
1514
                OpenMP_CXX_FLAGS
 
1515
        )
 
1516
endif()
 
1517
 
 
1518
#-----------------------------------------------------------------------------
 
1519
# Configure GLEW
 
1520
 
 
1521
if(WITH_BUILTIN_GLEW)
 
1522
        # set(GLEW_LIBRARY "")  # unused
 
1523
        set(GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include")
 
1524
else()
 
1525
        find_package(GLEW)
 
1526
 
 
1527
        if(NOT GLEW_FOUND)
 
1528
                message(FATAL_ERROR "GLEW is required to build blender, install it or use WITH_BUILTIN_GLEW")
 
1529
        endif()
 
1530
 
 
1531
        mark_as_advanced(
 
1532
                GLEW_LIBRARY
 
1533
                GLEW_INCLUDE_PATH
 
1534
        )
 
1535
endif()
 
1536
 
 
1537
#-----------------------------------------------------------------------------
 
1538
# Configure Python.
 
1539
 
 
1540
if(WITH_PYTHON_MODULE)
 
1541
        add_definitions(-DPy_ENABLE_SHARED)
 
1542
endif()
895
1543
 
896
1544
#-----------------------------------------------------------------------------
897
1545
# Extra compile flags
898
 
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS} ${C_WARNINGS}")
899
 
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS} ${CXX_WARNINGS}")
900
 
 
901
 
# better not define flags here but this is a debugging option thats off by default.
902
 
IF(WITH_CXX_GUARDEDALLOC)
903
 
        SET(CMAKE_CXX_FLAGS " -DWITH_CXX_GUARDEDALLOC -I${CMAKE_SOURCE_DIR}/intern/guardedalloc ${CMAKE_CXX_FLAGS}")
904
 
ENDIF(WITH_CXX_GUARDEDALLOC)
 
1546
 
 
1547
if(CMAKE_COMPILER_IS_GNUCC)
 
1548
 
 
1549
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
 
1550
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_CAST_ALIGN -Wcast-align)
 
1551
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement)
 
1552
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration)
 
1553
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type)
 
1554
        # system headers sometimes do this, disable for now, was: -Werror=strict-prototypes
 
1555
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes)
 
1556
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts)
 
1557
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
 
1558
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
 
1559
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter)
 
1560
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_WRITE_STRINGS -Wwrite-strings)
 
1561
 
 
1562
        # # this causes too many warnings, disable
 
1563
        # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNDEFINED -Wundef)
 
1564
 
 
1565
        # disable because it gives warnings for printf() & friends.
 
1566
        # ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_DOUBLE_PROMOTION -Wdouble-promotion -Wno-error=double-promotion)
 
1567
 
 
1568
        if(NOT APPLE)
 
1569
                ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
 
1570
        endif()
 
1571
 
 
1572
        ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
 
1573
        ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
 
1574
        ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
 
1575
 
 
1576
        # # this causes too many warnings, disable
 
1577
        # ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEFINED -Wundef)
 
1578
 
 
1579
        # flags to undo strict flags
 
1580
        ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations)
 
1581
        ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER        -Wno-unused-parameter)
 
1582
 
 
1583
        if(NOT APPLE)
 
1584
                ADD_CHECK_C_COMPILER_FLAG(CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable)
 
1585
        endif()
 
1586
 
 
1587
elseif(CMAKE_C_COMPILER_ID MATCHES "Intel")
 
1588
 
 
1589
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_ALL -Wall)
 
1590
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith)
 
1591
        ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas)
 
1592
 
 
1593
        ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_ALL -Wall)
 
1594
        ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof)
 
1595
        ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare)
 
1596
 
 
1597
        # disable numbered, false positives
 
1598
        set(C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556")
 
1599
        set(CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556")
 
1600
 
 
1601
endif()
 
1602
 
 
1603
# MSVC2010 fails to links C++ libs right
 
1604
if(MSVC10)
 
1605
        if(WITH_IMAGE_OPENEXR)
 
1606
                message(WARNING "MSVC 2010 does not support OpenEXR, disabling WITH_IMAGE_OPENEXR. To enable support use Use MSVC 2008")
 
1607
        endif()
 
1608
        if(WITH_OPENCOLLADA)
 
1609
                message(WARNING "MSVC 2010 does not support OpenCollada, disabling WITH_OPENCOLLADA. To enable support use Use MSVC 2008")
 
1610
        endif()
 
1611
endif()
 
1612
 
 
1613
# ensure python header is found since detection can fail, this could happen
 
1614
# with _any_ library but since we used a fixed python version this tends to
 
1615
# be most problematic.
 
1616
if(WITH_PYTHON)
 
1617
        if(NOT EXISTS "${PYTHON_INCLUDE_DIR}/Python.h")
 
1618
                message(FATAL_ERROR "Missing: \"${PYTHON_INCLUDE_DIR}/Python.h\",\n"
 
1619
                                                        "Set the cache entry 'PYTHON_INCLUDE_DIR' to point "
 
1620
                                                        "to a valid python include path. Containing "
 
1621
                                                        "Python.h for python version \"${PYTHON_VERSION}\"")
 
1622
        endif()
 
1623
endif()
 
1624
 
 
1625
 
 
1626
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS} ${C_WARNINGS}")
 
1627
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS} ${CXX_WARNINGS}")
 
1628
 
 
1629
#-------------------------------------------------------------------------------
 
1630
# Global Defines
 
1631
 
 
1632
# better not set includes here but this debugging option is off by default.
 
1633
if(WITH_CXX_GUARDEDALLOC)
 
1634
        include_directories(${CMAKE_SOURCE_DIR}/intern/guardedalloc)
 
1635
endif()
 
1636
 
 
1637
if(WITH_ASSERT_ABORT)
 
1638
        add_definitions(-DWITH_ASSERT_ABORT)
 
1639
endif()
 
1640
 
 
1641
# message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
 
1642
# message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
905
1643
 
906
1644
#-----------------------------------------------------------------------------
907
1645
# Libraries
908
 
FILE(WRITE ${CMAKE_BINARY_DIR}/cmake_blender_libs.txt "")
909
 
ADD_SUBDIRECTORY(intern)
910
 
ADD_SUBDIRECTORY(extern)
911
 
ADD_SUBDIRECTORY(source)
 
1646
 
 
1647
add_subdirectory(source)
 
1648
add_subdirectory(intern)
 
1649
add_subdirectory(extern)
912
1650
 
913
1651
 
914
1652
#-----------------------------------------------------------------------------
915
1653
# Blender Application
916
 
ADD_SUBDIRECTORY(source/creator)
 
1654
if(WITH_BLENDER)
 
1655
        add_subdirectory(source/creator)
 
1656
endif()
917
1657
 
918
1658
 
919
1659
#-----------------------------------------------------------------------------
920
1660
# Blender Player
921
 
IF(WITH_PLAYER)
922
 
        ADD_SUBDIRECTORY(source/blenderplayer)
923
 
ENDIF(WITH_PLAYER)
 
1661
if(WITH_PLAYER)
 
1662
        add_subdirectory(source/blenderplayer)
 
1663
endif()
 
1664
 
 
1665
#-----------------------------------------------------------------------------
 
1666
# CPack for generating packages
 
1667
include(build_files/cmake/packaging.cmake)
 
1668
 
 
1669
 
 
1670
#-----------------------------------------------------------------------------
 
1671
# Print Final Configuration
 
1672
 
 
1673
if(FIRST_RUN)
 
1674
        set(_config_msg "\n* Blender Configuration *")
 
1675
        macro(info_cfg_option
 
1676
                _setting)
 
1677
                set(_msg "   * ${_setting}")
 
1678
                string(LENGTH "${_msg}" _len)
 
1679
                while("28" GREATER "${_len}")
 
1680
                        set(_msg "${_msg} ")
 
1681
                         math(EXPR _len "${_len} + 1")
 
1682
                endwhile()
 
1683
 
 
1684
                set(_config_msg "${_config_msg}\n${_msg}${${_setting}}")
 
1685
        endmacro()
 
1686
 
 
1687
        macro(info_cfg_text
 
1688
                _text)
 
1689
                set(_config_msg "${_config_msg}\n\n  ${_text}")
 
1690
 
 
1691
 
 
1692
        endmacro()
 
1693
 
 
1694
        info_cfg_text("Build Options:")
 
1695
        info_cfg_option(WITH_GAMEENGINE)
 
1696
        info_cfg_option(WITH_PLAYER)
 
1697
        info_cfg_option(WITH_BULLET)
 
1698
        info_cfg_option(WITH_IK_ITASC)
 
1699
        info_cfg_option(WITH_OPENCOLLADA)
 
1700
        info_cfg_option(WITH_FFTW3)
 
1701
        info_cfg_option(WITH_INTERNATIONAL)
 
1702
        info_cfg_option(WITH_INPUT_NDOF)
 
1703
        info_cfg_option(WITH_CYCLES)
 
1704
 
 
1705
        info_cfg_text("Compiler Options:")
 
1706
        info_cfg_option(WITH_BUILDINFO)
 
1707
        info_cfg_option(WITH_OPENMP)
 
1708
        info_cfg_option(WITH_RAYOPTIMIZATION)
 
1709
 
 
1710
        info_cfg_text("System Options:")
 
1711
        info_cfg_option(WITH_INSTALL_PORTABLE)
 
1712
        info_cfg_option(WITH_X11_XF86VMODE)
 
1713
        info_cfg_option(WITH_X11_XINPUT)
 
1714
        info_cfg_option(WITH_BUILTIN_GLEW)
 
1715
        info_cfg_option(WITH_MEM_JEMALLOC)
 
1716
 
 
1717
        info_cfg_text("Image Formats:")
 
1718
        info_cfg_option(WITH_IMAGE_CINEON)
 
1719
        info_cfg_option(WITH_IMAGE_DDS)
 
1720
        info_cfg_option(WITH_IMAGE_HDR)
 
1721
        info_cfg_option(WITH_IMAGE_OPENEXR)
 
1722
        info_cfg_option(WITH_IMAGE_OPENJPEG)
 
1723
        info_cfg_option(WITH_IMAGE_REDCODE)
 
1724
        info_cfg_option(WITH_IMAGE_TIFF)
 
1725
 
 
1726
        info_cfg_text("Audio:")
 
1727
        info_cfg_option(WITH_OPENAL)
 
1728
        info_cfg_option(WITH_SDL)
 
1729
        info_cfg_option(WITH_JACK)
 
1730
        info_cfg_option(WITH_CODEC_FFMPEG)
 
1731
        info_cfg_option(WITH_CODEC_SNDFILE)
 
1732
 
 
1733
        info_cfg_text("Compression:")
 
1734
        info_cfg_option(WITH_LZMA)
 
1735
        info_cfg_option(WITH_LZO)
 
1736
 
 
1737
        info_cfg_text("Python:")
 
1738
        info_cfg_option(WITH_PYTHON_INSTALL)
 
1739
        info_cfg_option(WITH_PYTHON_MODULE)
 
1740
        info_cfg_option(WITH_PYTHON_SAFETY)
 
1741
 
 
1742
        info_cfg_text("Modifiers:")
 
1743
        info_cfg_option(WITH_MOD_BOOLEAN)
 
1744
        info_cfg_option(WITH_MOD_REMESH)
 
1745
        info_cfg_option(WITH_MOD_DECIMATE)
 
1746
        info_cfg_option(WITH_MOD_FLUID)
 
1747
        info_cfg_option(WITH_MOD_OCEANSIM)
 
1748
 
 
1749
        info_cfg_text("")
 
1750
 
 
1751
        message("${_config_msg}")
 
1752
endif()