2010-12-22 22:15:20 +00:00
# -*- mode: cmake; indent-tabs-mode: t; -*-
2008-04-16 22:40:48 +00:00
# ***** BEGIN GPL LICENSE BLOCK *****
2006-11-17 02:27:12 +00:00
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
2008-04-16 22:40:48 +00:00
# of the License, or (at your option) any later version.
2006-11-17 02:27:12 +00:00
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
2010-02-12 13:34:04 +00:00
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
2006-11-17 02:27:12 +00:00
#
# The Original Code is Copyright (C) 2006, Blender Foundation
# All rights reserved.
#
# The Original Code is: all of this file.
#
# Contributor(s): Jacques Beaurain.
#
2008-04-16 22:40:48 +00:00
# ***** END GPL LICENSE BLOCK *****
2006-11-17 02:27:12 +00:00
2006-12-13 02:57:57 +00:00
#-----------------------------------------------------------------------------
2011-09-30 15:51:58 +00:00
# We don't allow in-source builds. This causes no end of troubles because
# all out-of-source builds will use the CMakeCache.txt file there and even
2011-02-19 12:05:20 +00:00
# build the libs and objects in it.
2006-12-13 02:57:57 +00:00
2010-12-08 08:43:06 +00:00
if ( ${ CMAKE_SOURCE_DIR } STREQUAL ${ CMAKE_BINARY_DIR } )
2011-04-21 05:49:47 +00:00
if ( NOT DEFINED WITH_IN_SOURCE_BUILD )
message ( FATAL_ERROR
" C M a k e g e n e r a t i o n f o r b l e n d e r i s n o t a l l o w e d w i t h i n t h e s o u r c e d i r e c t o r y ! "
" \ n R e m o v e t h e C M a k e C a c h e . t x t f i l e a n d t r y a g a i n f r o m a n o t h e r f o l d e r , e . g . : "
" \ n "
" \ n r m C M a k e C a c h e . t x t "
" \ n c d . . "
" \ n m k d i r c m a k e - m a k e "
" \ n c d c m a k e - m a k e "
" \ n c m a k e . . / b l e n d e r "
" \ n "
" \ n A l t e r n a t e l y d e f i n e W I T H _ I N _ S O U R C E _ B U I L D t o f o r c e t h i s option ( not recommended! ) "
)
endif ( )
2010-12-08 08:43:06 +00:00
endif ( )
2006-12-13 02:57:57 +00:00
2011-02-19 12:05:20 +00:00
cmake_minimum_required ( VERSION 2.8 )
2010-06-07 14:28:37 +00:00
2011-06-19 13:49:20 +00:00
if ( NOT EXECUTABLE_OUTPUT_PATH )
set ( FIRST_RUN "TRUE" )
endif ( )
2011-04-05 23:31:01 +00:00
# this starts out unset
2011-06-17 02:22:38 +00:00
list ( APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/build_files/cmake/Modules" )
2011-04-05 23:31:01 +00:00
2011-06-27 13:18:08 +00:00
# avoid having empty buildtype
set ( CMAKE_BUILD_TYPE_INIT "Release" )
2010-06-07 14:28:37 +00:00
# quiet output for Makefiles, 'make -s' helps too
2010-12-08 08:43:06 +00:00
# set_property(GLOBAL PROPERTY RULE_MESSAGES OFF)
2010-06-07 14:28:37 +00:00
2011-10-26 00:51:29 +00:00
# global compile definitions since add_definitions() adds for all.
set_property ( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_DEBUG DEBUG _DEBUG )
set_property ( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELEASE NDEBUG )
set_property ( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_MINSIZEREL NDEBUG )
2011-10-29 16:14:38 +00:00
set_property ( DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_RELWITHDEBINFO NDEBUG )
2011-10-26 00:51:29 +00:00
2011-08-22 12:24:14 +00:00
#-----------------------------------------------------------------------------
# Set policy
# see "cmake --help-policy CMP0003"
# So library linking is more sane
cmake_policy ( SET CMP0003 NEW )
# So BUILDINFO and BLENDERPATH strings are automatically quoted
cmake_policy ( SET CMP0005 NEW )
# So syntax problems are errors
cmake_policy ( SET CMP0010 NEW )
# Input directories must have CMakeLists.txt
cmake_policy ( SET CMP0014 NEW )
2011-05-23 14:56:14 +00:00
#-----------------------------------------------------------------------------
# Load some macros.
include ( build_files/cmake/macros.cmake )
2011-04-09 11:16:37 +00:00
2011-05-23 14:56:14 +00:00
#-----------------------------------------------------------------------------
# Initialize project.
2006-11-17 02:27:12 +00:00
2011-05-23 14:56:14 +00:00
blender_project_hack_pre ( )
2011-04-09 11:16:37 +00:00
2011-05-23 14:56:14 +00:00
project ( Blender )
2011-04-09 11:16:37 +00:00
2011-05-23 14:56:14 +00:00
blender_project_hack_post ( )
2011-04-09 11:16:37 +00:00
2011-01-21 00:06:30 +00:00
enable_testing ( )
2006-11-17 02:27:12 +00:00
#-----------------------------------------------------------------------------
# Redirect output files
2010-12-08 11:42:11 +00:00
set ( EXECUTABLE_OUTPUT_PATH ${ CMAKE_BINARY_DIR } /bin CACHE INTERNAL "" FORCE )
set ( LIBRARY_OUTPUT_PATH ${ CMAKE_BINARY_DIR } /lib CACHE INTERNAL "" FORCE )
2006-11-17 02:27:12 +00:00
#-----------------------------------------------------------------------------
# Set default config options
2010-06-06 13:32:58 +00:00
2010-12-08 08:43:06 +00:00
get_blender_version ( )
2010-07-14 20:26:46 +00:00
2011-09-19 08:02:17 +00:00
2010-06-06 13:32:58 +00:00
# Blender internal features
2011-07-13 08:15:06 +00:00
option ( WITH_BLENDER "Build blender (disable to build only the blender player)" ON )
mark_as_advanced ( WITH_BLENDER )
2011-03-11 01:24:16 +00:00
option ( WITH_INTERNATIONAL "Enable I18N (International fonts and text)" ON )
2011-04-28 06:20:47 +00:00
2011-03-11 01:24:16 +00:00
option ( WITH_PYTHON "Enable Embedded Python API (only disable for development)" ON )
2011-04-28 06:20:47 +00:00
option ( WITH_PYTHON_SECURITY "Disables execution of scripts within blend files by default (recommend to leave off)" OFF )
2011-04-06 01:51:43 +00:00
mark_as_advanced ( WITH_PYTHON ) # dont want people disabling this unless they really know what they are doing.
2011-05-28 13:11:24 +00:00
mark_as_advanced ( WITH_PYTHON_SECURITY ) # some distrobutions see this as a security issue, rather than have them patch it, make a build option.
2011-04-28 06:20:47 +00:00
2011-03-11 01:24:16 +00:00
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 )
option ( WITH_PYTHON_MODULE "Enable building as a python module (experemental, only enable for development)" OFF )
option ( WITH_BUILDINFO "Include extra build details (only disable for development & faster builds)" ON )
option ( WITH_IK_ITASC "Enable ITASC IK solver (only disable for development & for incompatible C++ compilers)" ON )
2010-12-08 08:43:06 +00:00
option ( WITH_FFTW3 "Enable FFTW3 support (Used for smoke and audio effects)" OFF )
option ( WITH_BULLET "Enable Bullet (Physics Engine)" ON )
2011-09-22 15:29:48 +00:00
option ( WITH_GAMEENGINE "Enable Game Engine" OFF ) # DISABLE FOR BMESH UNTIL NAVMESH IS WORKING
2010-12-08 08:43:06 +00:00
option ( WITH_PLAYER "Build Player" OFF )
2011-06-04 14:12:55 +00:00
2011-07-13 06:04:54 +00:00
# GHOST Windowing Library Options
option ( WITH_GHOST_DEBUG "Enable debugging output for the GHOST library" OFF )
mark_as_advanced ( WITH_GHOST_DEBUG )
2011-06-23 09:27:56 +00:00
2011-07-13 06:04:54 +00:00
option ( WITH_GHOST_SDL "Enable building blender against SDL for windowing rather then the native APIs" OFF )
mark_as_advanced ( WITH_GHOST_SDL )
2011-07-12 13:17:54 +00:00
2011-07-13 06:04:54 +00:00
# Misc...
2011-06-04 14:12:55 +00:00
option ( WITH_HEADLESS "Build without graphical support (renderfarm, server mode only)" OFF )
mark_as_advanced ( WITH_HEADLESS )
2011-07-13 06:04:54 +00:00
option ( WITH_AUDASPACE "Build with blenders audio library (only disable if you know what you're doing!)" ON )
mark_as_advanced ( WITH_AUDASPACE )
2010-06-06 13:32:58 +00:00
# (unix defaults to OpenMP On)
2010-12-08 08:43:06 +00:00
if ( UNIX AND NOT APPLE )
option ( WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" ON )
else ( )
option ( WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" OFF )
endif ( )
2010-06-06 13:32:58 +00:00
2011-03-25 04:56:48 +00:00
if ( UNIX AND NOT APPLE )
2011-10-23 17:52:20 +00:00
option ( WITH_X11_XINPUT "Enable X11 Xinput (tablet support and unicode input)" ON )
2011-04-05 23:31:01 +00:00
option ( WITH_BUILTIN_GLEW "Use GLEW OpenGL wrapper library bundled with blender" ON )
2011-11-02 22:00:22 +00:00
option ( WITH_XDG_USER_DIRS "Build with XDG Base Directory Specification (only config and documents for now)" OFF )
mark_as_advanced ( WITH_XDG_USER_DIRS )
2011-04-06 01:51:43 +00:00
else ( )
# not an option for other OS's
set ( WITH_BUILTIN_GLEW ON )
2011-03-25 04:56:48 +00:00
endif ( )
2010-10-23 15:40:13 +00:00
# Modifiers
2010-12-08 08:43:06 +00:00
option ( WITH_MOD_FLUID "Enable Elbeem Modifier (Fluid Simulation)" ON )
2011-07-13 18:40:21 +00:00
option ( WITH_MOD_SMOKE "Enable Smoke Modifier (Smoke Simulation)" ON )
2010-12-08 08:43:06 +00:00
option ( WITH_MOD_DECIMATE "Enable Decimate Modifier" ON )
option ( WITH_MOD_BOOLEAN "Enable Boolean Modifier" ON )
2011-04-10 06:06:26 +00:00
option ( WITH_MOD_CLOTH_ELTOPO "Enable Experemental cloth solver" OFF )
2011-04-10 05:43:34 +00:00
mark_as_advanced ( WITH_MOD_CLOTH_ELTOPO )
2010-10-23 15:40:13 +00:00
2010-06-06 13:32:58 +00:00
# Image format support
2010-12-08 08:43:06 +00:00
option ( WITH_IMAGE_OPENEXR "Enable OpenEXR Support (http://www.openexr.com)" ON )
option ( WITH_IMAGE_OPENJPEG "Enable OpenJpeg Support (http://www.openjpeg.org)" ON )
option ( WITH_IMAGE_TIFF "Enable LibTIFF Support" ON )
option ( WITH_IMAGE_DDS "Enable DDS Image Support" ON )
option ( WITH_IMAGE_CINEON "Enable CINEON and DPX Image Support" ON )
option ( WITH_IMAGE_HDR "Enable HDR Image Support" ON )
option ( WITH_IMAGE_REDCODE "Enable RedCode Image Support" OFF )
2011-07-21 23:06:51 +00:00
option ( WITH_IMAGE_FRAMESERVER "Enable image FrameServer Support for rendering" ON )
2010-06-06 13:32:58 +00:00
2010-11-30 18:52:39 +00:00
# Audio/Video format support
2011-06-29 09:46:00 +00:00
option ( WITH_CODEC_FFMPEG "Enable FFMPeg Support (http://ffmpeg.org)" OFF )
2010-12-08 08:43:06 +00:00
option ( WITH_CODEC_SNDFILE "Enable libsndfile Support (http://www.mega-nerd.com/libsndfile)" OFF )
if ( APPLE OR ( WIN32 AND NOT UNIX ) )
option ( WITH_CODEC_QUICKTIME "Enable Quicktime Support" OFF )
endif ( )
2006-11-17 02:27:12 +00:00
2010-06-06 13:32:58 +00:00
# 3D format support
# disable opencollada on non-apple unix because opencollada has no package for debian
2011-03-25 05:23:58 +00:00
option ( WITH_OPENCOLLADA "Enable OpenCollada Support (http://www.opencollada.org)" OFF )
2009-11-19 11:49:42 +00:00
2010-06-06 13:32:58 +00:00
# Sound output
2010-12-08 08:43:06 +00:00
option ( WITH_SDL "Enable SDL for sound and joystick support" ON )
option ( WITH_OPENAL "Enable OpenAL Support (http://www.openal.org)" ON )
option ( WITH_JACK "Enable Jack Support (http://www.jackaudio.org)" OFF )
2010-06-06 13:32:58 +00:00
# Compression
2010-12-08 08:43:06 +00:00
option ( WITH_LZO "Enable fast LZO compression (used for pointcache)" ON )
option ( WITH_LZMA "Enable best LZMA compression, (used for pointcache)" ON )
2010-06-06 13:32:58 +00:00
# Misc
2011-08-03 14:18:02 +00:00
option ( WITH_INPUT_NDOF "Enable NDOF input devices (SpaceNavigator and friends)" ON )
2011-09-30 15:51:58 +00:00
option ( WITH_RAYOPTIMIZATION "Enable use of SIMD (SSE) optimizations for the raytracer" ON )
2011-03-06 11:41:30 +00:00
if ( UNIX AND NOT APPLE )
option ( WITH_INSTALL_PORTABLE "Install redistributeable runtime, otherwise install into CMAKE_INSTALL_PREFIX" ON )
endif ( )
2010-12-08 08:43:06 +00:00
option ( WITH_PYTHON_INSTALL "Copy system python into the blender install folder" ON )
2010-06-06 13:32:58 +00:00
2011-05-12 11:16:32 +00:00
# disable for now, but plan to support on all platforms eventually
option ( WITH_MEM_JEMALLOC "Enable malloc replacement (http://www.canonware.com/jemalloc)" OFF )
mark_as_advanced ( WITH_MEM_JEMALLOC )
2010-12-08 09:02:08 +00:00
# Debug
2011-03-11 01:24:16 +00:00
option ( WITH_CXX_GUARDEDALLOC "Enable GuardedAlloc for C++ memory allocation tracking (only enable for development)" OFF )
2010-12-08 09:02:08 +00:00
mark_as_advanced ( WITH_CXX_GUARDEDALLOC )
2011-01-09 15:12:08 +00:00
option ( WITH_ASSERT_ABORT "Call abort() when raising an assertion through BLI_assert()" OFF )
2010-12-15 10:22:26 +00:00
mark_as_advanced ( WITH_ASSERT_ABORT )
2011-10-20 00:48:00 +00:00
2010-12-08 08:43:06 +00:00
if ( APPLE )
2011-03-07 21:28:36 +00:00
if ( NOT CMAKE_OSX_ARCHITECTURES )
set ( CMAKE_OSX_ARCHITECTURES x86_64 CACHE STRING
" C h o o s e t h e a r c h i t e c t u r e y o u w a n t t o b u i l d B l e n d e r f o r : i 3 8 6 , x 8 6 _ 6 4 o r p p c "
F O R C E )
endif ( )
if ( NOT CMAKE_OSX_DEPLOYMENT_TARGET )
set ( CMAKE_OSX_DEPLOYMENT_TARGET 10.5 CACHE STRING
" C h o o s e t h e m i n i m u m O S X v e r s i o n r e q u i r e d : 1 0 . 4 o r 1 0 . 5 "
F O R C E )
endif ( )
2010-12-08 08:43:06 +00:00
option ( WITH_COCOA "Use Cocoa framework instead of deprecated Carbon" ON )
option ( USE_QTKIT "Use QtKit instead of Carbon quicktime (needed for having partial quicktime for 64bit)" OFF )
option ( WITH_LIBS10.5 "Use 10.5 libs (needed for 64bit builds)" OFF )
endif ( )
2010-06-06 13:32:58 +00:00
2011-06-08 01:53:12 +00:00
#-----------------------------------------------------------------------------
# Check for conflicting/unsupported configurations
2011-07-13 08:15:06 +00:00
if ( NOT WITH_BLENDER AND NOT WITH_PLAYER )
message ( FATAL_ERROR "At least one of WITH_BLENDER or WITH_PLAYER must be enabled, nothing to do!" )
endif ( )
2010-12-08 08:43:06 +00:00
if ( NOT WITH_GAMEENGINE AND WITH_PLAYER )
message ( FATAL_ERROR "WITH_PLAYER requires WITH_GAMEENGINE" )
endif ( )
2006-11-17 02:27:12 +00:00
2011-06-23 16:10:48 +00:00
if ( NOT WITH_AUDASPACE AND ( WITH_OPENAL OR WITH_SDL OR WITH_JACK ) )
2011-06-23 15:58:41 +00:00
message ( FATAL_ERROR "WITH_OPENAL/WITH_SDL/WITH_JACK/WITH_CODEC_FFMPEG require WITH_AUDASPACE" )
2011-06-23 09:27:56 +00:00
endif ( )
2011-07-13 06:04:54 +00:00
if ( NOT WITH_SDL AND WITH_GHOST_SDL )
message ( FATAL_ERROR "WITH_GHOST_SDL requires WITH_SDL to be ON" )
2011-07-12 13:17:54 +00:00
endif ( )
2010-12-08 08:43:06 +00:00
if ( NOT WITH_IMAGE_OPENJPEG AND WITH_IMAGE_REDCODE )
message ( FATAL_ERROR "WITH_IMAGE_REDCODE requires WITH_IMAGE_OPENJPEG" )
endif ( )
2010-11-30 18:52:39 +00:00
2011-02-22 14:27:46 +00:00
# python module, needs some different options
if ( WITH_PYTHON_MODULE AND WITH_PLAYER )
message ( FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PLAYER to be OFF" )
endif ( )
if ( WITH_PYTHON_MODULE AND WITH_PYTHON_INSTALL )
message ( FATAL_ERROR "WITH_PYTHON_MODULE requires WITH_PYTHON_INSTALL to be OFF" )
endif ( )
2011-06-08 01:53:12 +00:00
if ( WITH_CODEC_QUICKTIME AND MINGW )
message ( FATAL_ERROR "MINGW requires WITH_CODEC_QUICKTIME to be OFF "
" b e c a u s e i t i s c u r r e n t l y u n s u p p o r t e d , r e m o v e t h i s "
" l i n e i f y o u r e a d e v e l o p e r w h o w a n t s t o a d d s u p p o r t . " )
endif ( )
2011-06-04 14:12:55 +00:00
# may as well build python module without a UI
if ( WITH_PYTHON_MODULE )
set ( WITH_HEADLESS ON )
endif ( )
2011-10-01 18:29:40 +00:00
TEST_SSE_SUPPORT ( COMPILER_SSE_FLAG COMPILER_SSE2_FLAG )
2010-07-04 18:40:59 +00:00
2011-08-23 20:19:08 +00:00
# don't store paths to libs for portable distrobution
if ( WITH_INSTALL_PORTABLE )
set ( CMAKE_SKIP_BUILD_RPATH TRUE )
endif ( )
2011-02-22 06:23:07 +00:00
#-----------------------------------------------------------------------------
# Initialize un-cached vars, avoid unused warning
2011-02-21 13:13:08 +00:00
# linux only, not cached
set ( WITH_BINRELOC OFF )
2011-09-30 15:51:58 +00:00
# MAXOSX only, set to avoid uninitialized
2011-10-01 19:52:33 +00:00
set ( EXETYPE "" )
2011-06-28 02:49:49 +00:00
# C/C++ flags
set ( PLATFORM_CFLAGS )
2011-06-14 00:24:50 +00:00
2011-02-22 06:23:07 +00:00
# these are added to later on.
2011-06-28 02:49:49 +00:00
set ( C_WARNINGS )
set ( CXX_WARNINGS )
2011-10-30 04:48:00 +00:00
# for gcc -Wno-blah-blah
set ( CC_REMOVE_STRICT_FLAGS )
2011-06-28 02:49:49 +00:00
# libraries to link the binary with passed to target_link_libraries()
# known as LLIBS to scons
2011-10-01 19:52:33 +00:00
set ( PLATFORM_LINKLIBS "" )
2011-06-28 02:49:49 +00:00
# Added to linker flags in setup_liblinks
# - CMAKE_EXE_LINKER_FLAGS
# - CMAKE_EXE_LINKER_FLAGS_DEBUG
2011-10-01 19:52:33 +00:00
set ( PLATFORM_LINKFLAGS "" )
set ( PLATFORM_LINKFLAGS_DEBUG "" )
2011-02-22 06:23:07 +00:00
2010-06-06 13:32:58 +00:00
# disabled for now, not supported
2010-12-08 08:43:06 +00:00
# option(WITH_WEBPLUGIN "Enable Web Plugin (Unix only)" OFF)
2010-06-06 13:32:58 +00:00
2006-12-06 08:52:43 +00:00
# For alternate Python locations the commandline can be used to override detected/default cache settings, e.g:
2011-09-30 15:51:58 +00:00
# On Unix:
2011-03-08 22:11:15 +00:00
# cmake ../blender \
# -D PYTHON_VERSION=3.2 \
2011-06-19 15:03:50 +00:00
# -D PYTHON_INCLUDE_DIR=/opt/py32/include/python3.2d \
# -D PYTHON_LIBRARY=/opt/py32/lib/libpython3.2d.so
2011-03-08 22:11:15 +00:00
#
2011-09-30 15:51:58 +00:00
# On Macs:
2011-03-08 22:11:15 +00:00
# cmake ../blender \
2011-06-19 15:03:50 +00:00
# -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.2/include/python3.2 \
2011-03-08 22:11:15 +00:00
# -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.2/lib/python3.2/config \
# -G Xcode
2006-12-06 08:52:43 +00:00
#
2010-10-13 14:44:22 +00:00
# When changing any of this remember to update the notes in doc/build_systems/cmake.txt
2006-12-06 08:52:43 +00:00
2006-11-17 02:27:12 +00:00
#-----------------------------------------------------------------------------
#Platform specifics
2010-12-08 08:43:06 +00:00
if ( UNIX AND NOT APPLE )
2011-09-30 15:51:58 +00:00
2011-03-18 12:12:53 +00:00
# needed for ubuntu 11.04
if ( EXISTS "/usr/lib/x86_64-linux-gnu" )
set ( CMAKE_LIBRARY_PATH "/usr/lib/x86_64-linux-gnu;${CMAKE_LIBRARY_PATH}" )
endif ( )
2010-12-08 08:43:06 +00:00
2011-06-19 07:46:24 +00:00
find_package ( JPEG REQUIRED )
find_package ( PNG REQUIRED )
find_package ( ZLIB REQUIRED )
find_package ( Freetype REQUIRED )
if ( WITH_PYTHON )
# No way to set py32. remove for now.
# find_package(PythonLibs)
# Use our own instead, since wothout py is such a rare case,
# require this package
find_package ( PythonLibsUnix REQUIRED )
endif ( )
if ( WITH_IMAGE_OPENEXR )
find_package ( OpenEXR ) # our own module
if ( NOT OPENEXR_FOUND )
set ( WITH_IMAGE_OPENEXR OFF )
endif ( )
endif ( )
if ( WITH_IMAGE_OPENJPEG )
find_package ( OpenJPEG )
if ( NOT OPENJPEG_FOUND )
set ( WITH_IMAGE_OPENJPEG OFF )
endif ( )
endif ( )
if ( WITH_IMAGE_TIFF )
find_package ( TIFF )
if ( NOT TIFF_FOUND )
set ( WITH_IMAGE_TIFF OFF )
endif ( )
endif ( )
# Audio IO
2010-12-08 08:43:06 +00:00
if ( WITH_OPENAL )
find_package ( OpenAL )
if ( NOT OPENAL_FOUND )
set ( WITH_OPENAL OFF )
endif ( )
endif ( )
2011-06-19 07:46:24 +00:00
if ( WITH_SDL )
find_package ( SDL )
2011-09-30 15:51:58 +00:00
mark_as_advanced (
S D L M A I N _ L I B R A R Y
S D L _ I N C L U D E _ D I R
S D L _ L I B R A R Y
S D L _ L I B R A R Y _ T E M P
)
2011-06-19 07:46:24 +00:00
# unset(SDLMAIN_LIBRARY CACHE)
if ( NOT SDL_FOUND )
set ( WITH_SDL OFF )
endif ( )
endif ( )
2010-12-08 08:43:06 +00:00
if ( WITH_JACK )
2011-06-19 15:03:50 +00:00
find_package ( Jack )
if ( NOT JACK_FOUND )
set ( WITH_JACK OFF )
endif ( )
2010-12-08 08:43:06 +00:00
endif ( )
2011-06-19 07:46:24 +00:00
# Codecs
2010-12-08 08:43:06 +00:00
if ( WITH_CODEC_SNDFILE )
2011-06-18 12:12:19 +00:00
find_package ( SndFile )
if ( NOT SNDFILE_FOUND )
set ( WITH_CODEC_SNDFILE OFF )
endif ( )
2010-12-08 08:43:06 +00:00
endif ( )
2011-06-19 07:46:24 +00:00
if ( WITH_CODEC_FFMPEG )
2011-06-29 13:16:11 +00:00
set ( FFMPEG /usr CACHE PATH "FFMPEG Directory" )
2011-06-19 07:46:24 +00:00
mark_as_advanced ( FFMPEG )
set ( FFMPEG_INCLUDE_DIRS ${ FFMPEG } /include )
set ( FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries" )
mark_as_advanced ( FFMPEG_LIBRARIES )
set ( FFMPEG_LIBPATH ${ FFMPEG } /lib )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS" )
endif ( )
2010-12-08 08:43:06 +00:00
if ( WITH_INTERNATIONAL )
find_library ( INTL_LIBRARY
2010-06-07 14:28:37 +00:00
N A M E S i n t l
P A T H S
/ s w / l i b
)
2010-12-08 08:43:06 +00:00
find_library ( ICONV_LIBRARY
2010-06-07 14:28:37 +00:00
N A M E S i c o n v
P A T H S
/ s w / l i b
)
2011-09-30 15:51:58 +00:00
mark_as_advanced (
I C O N V _ L I B R A R Y
I N T L _ L I B R A R Y
)
2010-06-07 14:28:37 +00:00
2010-12-08 08:43:06 +00:00
if ( INTL_LIBRARY AND ICONV_LIBRARY )
2011-10-01 19:52:33 +00:00
set ( GETTEXT_LIBRARIES ${ INTL_LIBRARY } ${ ICONV_LIBRARY } )
2010-12-08 08:43:06 +00:00
endif ( )
endif ( )
2009-09-06 01:51:23 +00:00
2010-12-08 08:43:06 +00:00
if ( WITH_FFTW3 )
2011-06-19 08:57:34 +00:00
find_package ( Fftw3 )
if ( NOT FFTW3_FOUND )
set ( WITH_FFTW3 OFF )
endif ( )
2010-12-08 08:43:06 +00:00
endif ( )
if ( WITH_OPENCOLLADA )
2011-08-24 16:04:35 +00:00
find_package ( OpenCOLLADA )
if ( OPENCOLLADA_FOUND )
2011-09-08 03:57:11 +00:00
find_package ( XML2 )
find_package ( PCRE )
2011-08-24 16:04:35 +00:00
else ( )
set ( WITH_OPENCOLLADA OFF )
endif ( )
2010-12-08 08:43:06 +00:00
endif ( )
2011-05-12 11:16:32 +00:00
if ( WITH_MEM_JEMALLOC )
2011-06-19 14:55:51 +00:00
find_package ( JeMalloc )
if ( NOT JEMALLOC_FOUND )
set ( WITH_MEM_JEMALLOC OFF )
endif ( )
2011-05-12 11:16:32 +00:00
endif ( )
2011-08-02 05:52:27 +00:00
if ( WITH_INPUT_NDOF )
2011-08-02 06:32:53 +00:00
find_package ( Spacenav )
if ( NOT SPACENAV_FOUND )
set ( WITH_INPUT_NDOF OFF )
endif ( )
# use generic names within blenders buildsystem.
if ( SPACENAV_FOUND )
set ( NDOF_INCLUDE_DIRS ${ SPACENAV_INCLUDE_DIRS } )
set ( NDOF_LIBRARIES ${ SPACENAV_LIBRARIES } )
2011-06-27 23:24:24 +00:00
endif ( )
endif ( )
2010-10-04 11:42:39 +00:00
# OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
2011-06-28 02:49:49 +00:00
set ( PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread -lstdc++" )
2011-06-04 14:12:55 +00:00
2011-07-13 06:04:54 +00:00
if ( ( NOT WITH_HEADLESS ) AND ( NOT WITH_GHOST_SDL ) )
2011-06-04 14:12:55 +00:00
find_package ( X11 REQUIRED )
find_path ( X11_XF86keysym_INCLUDE_PATH X11/XF86keysym.h ${ X11_INC_SEARCH_PATH } )
mark_as_advanced ( X11_XF86keysym_INCLUDE_PATH )
2011-03-25 04:56:48 +00:00
2011-09-30 15:22:13 +00:00
set ( PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_X11_LIB}" )
2011-06-04 14:12:55 +00:00
if ( WITH_X11_XINPUT )
2011-09-30 15:22:13 +00:00
set ( PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xinput_LIB}" )
2011-06-04 14:12:55 +00:00
endif ( )
2011-03-25 04:56:48 +00:00
endif ( )
2009-10-19 16:20:12 +00:00
2010-12-08 08:43:06 +00:00
if ( CMAKE_SYSTEM_NAME MATCHES "Linux" )
2011-02-21 13:13:08 +00:00
if ( NOT WITH_PYTHON_MODULE )
# BSD's dont use libdl.so
2011-09-30 15:22:13 +00:00
set ( PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -ldl" )
2011-02-21 13:13:08 +00:00
# binreloc is linux only
2011-06-18 14:12:54 +00:00
set ( BINRELOC_INCLUDE_DIRS ${ CMAKE_SOURCE_DIR } /extern/binreloc/include )
2011-02-21 13:13:08 +00:00
set ( WITH_BINRELOC ON )
endif ( )
2010-12-08 08:43:06 +00:00
endif ( )
2006-11-17 02:27:12 +00:00
2010-12-08 08:43:06 +00:00
set ( PLATFORM_LINKFLAGS "-pthread" )
2006-11-17 02:27:12 +00:00
2011-10-26 00:51:29 +00:00
# lfs on glibc, all compilers should use
add_definitions ( -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE )
2009-01-14 16:40:11 +00:00
2010-11-15 05:32:49 +00:00
# GNU Compiler
2010-12-08 08:43:06 +00:00
if ( CMAKE_COMPILER_IS_GNUCC )
set ( PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing" )
2011-08-21 11:06:49 +00:00
# CLang is the same as GCC for now.
elseif ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
set ( PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing" )
2010-11-15 05:32:49 +00:00
# Intel C++ Compiler
2010-12-08 08:43:06 +00:00
elseif ( CMAKE_C_COMPILER_ID MATCHES "Intel" )
2010-11-15 05:32:49 +00:00
# think these next two are broken
2011-09-30 15:51:58 +00:00
find_program ( XIAR xiar )
if ( XIAR )
2010-12-08 08:43:06 +00:00
set ( CMAKE_AR "${XIAR}" )
2011-09-30 15:51:58 +00:00
endif ( )
2010-12-08 08:43:06 +00:00
mark_as_advanced ( XIAR )
2010-11-15 05:32:49 +00:00
2011-09-30 15:51:58 +00:00
find_program ( XILD xild )
if ( XILD )
2010-12-08 08:43:06 +00:00
set ( CMAKE_LINKER "${XILD}" )
2011-09-30 15:51:58 +00:00
endif ( )
2010-12-08 08:43:06 +00:00
mark_as_advanced ( XILD )
2010-11-15 05:32:49 +00:00
2010-12-08 08:43:06 +00:00
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fp-model precise -prec_div -parallel" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fp-model precise -prec_div -parallel" )
2010-11-15 05:32:49 +00:00
2010-12-08 08:43:06 +00:00
# set(PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -diag-enable sc3")
2010-12-16 09:55:35 +00:00
set ( PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing" )
2010-12-08 08:43:06 +00:00
set ( PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-intel" )
endif ( )
2010-05-29 21:31:57 +00:00
2010-12-08 08:43:06 +00:00
elseif ( WIN32 )
2006-11-17 02:27:12 +00:00
2009-09-06 01:51:23 +00:00
# this file is included anyway when building under Windows with cl.exe
2010-12-08 08:43:06 +00:00
# include(${CMAKE_ROOT}/Modules/Platform/Windows-cl.cmake)
2010-10-18 12:35:40 +00:00
2010-12-08 08:43:06 +00:00
set ( LIBDIR ${ CMAKE_SOURCE_DIR } /../lib/windows )
2009-09-06 01:51:23 +00:00
# Setup 64bit and 64bit windows systems
2010-12-08 08:43:06 +00:00
if ( CMAKE_CL_64 )
message ( "64 bit compiler detected." )
set ( LIBDIR ${ CMAKE_SOURCE_DIR } /../lib/win64 )
endif ( )
2011-09-30 15:51:58 +00:00
2010-12-08 08:43:06 +00:00
add_definitions ( -DWIN32 )
if ( WITH_INTERNATIONAL )
set ( ICONV ${ LIBDIR } /iconv )
2011-06-18 14:12:54 +00:00
set ( ICONV_INCLUDE_DIRS ${ ICONV } /include )
set ( ICONV_LIBRARIES iconv )
2010-12-08 08:43:06 +00:00
set ( ICONV_LIBPATH ${ ICONV } /lib )
endif ( )
set ( PNG "${LIBDIR}/png" )
2011-01-25 14:43:13 +00:00
set ( PNG_INCLUDE_DIR "${PNG}/include" )
set ( PNG_LIBPATH ${ PNG } /lib ) # not cmake defined
2010-12-08 08:43:06 +00:00
set ( JPEG "${LIBDIR}/jpeg" )
2011-01-25 14:43:13 +00:00
set ( JPEG_INCLUDE_DIR "${JPEG}/include" )
set ( JPEG_LIBPATH ${ JPEG } /lib ) # not cmake defined
2010-12-08 08:43:06 +00:00
2011-09-30 15:51:58 +00:00
set ( WINTAB_INC ${ LIBDIR } /wintab/include )
2010-12-08 08:43:06 +00:00
if ( WITH_OPENAL )
set ( OPENAL ${ LIBDIR } /openal )
set ( OPENAL_INCLUDE_DIR ${ OPENAL } /include )
set ( OPENAL_LIBRARY wrap_oal )
set ( OPENAL_LIBPATH ${ OPENAL } /lib )
endif ( )
if ( WITH_CODEC_SNDFILE )
set ( SNDFILE ${ LIBDIR } /sndfile )
2011-06-18 12:12:19 +00:00
set ( SNDFILE_INCLUDE_DIRS ${ SNDFILE } /include )
set ( SNDFILE_LIBRARIES libsndfile-1 )
set ( SNDFILE_LIBPATH ${ SNDFILE } /lib ) # TODO, deprecate
2010-12-08 08:43:06 +00:00
endif ( )
if ( WITH_SDL )
set ( SDL ${ LIBDIR } /sdl )
set ( SDL_INCLUDE_DIR ${ SDL } /include )
set ( SDL_LIBRARY SDL )
set ( SDL_LIBPATH ${ SDL } /lib )
endif ( )
if ( WITH_CODEC_QUICKTIME )
set ( QUICKTIME ${ LIBDIR } /QTDevWin )
2011-06-18 14:12:54 +00:00
set ( QUICKTIME_INCLUDE_DIRS ${ QUICKTIME } /CIncludes )
set ( QUICKTIME_LIBRARIES qtmlClient )
2010-12-08 08:43:06 +00:00
set ( QUICKTIME_LIBPATH ${ QUICKTIME } /Libraries )
endif ( )
if ( WITH_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD )
add_definitions ( -D__SSE__ -D__MMX__ )
endif ( )
if ( MSVC )
if ( CMAKE_CL_64 )
2011-06-28 02:49:49 +00:00
set ( PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid )
2010-12-08 08:43:06 +00:00
else ( )
2011-06-28 02:49:49 +00:00
set ( PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid )
2010-12-08 08:43:06 +00:00
endif ( )
2011-06-28 02:49:49 +00:00
add_definitions ( /D_CRT_NONSTDC_NO_DEPRECATE /D_CRT_SECURE_NO_DEPRECATE /D_SCL_SECURE_NO_DEPRECATE /D_CONSOLE /D_LIB )
set ( CMAKE_CXX_FLAGS "/nologo /J /W0 /Gd /wd4018 /wd4244 /wd4305 /wd4800 /wd4065 /wd4267 /we4013" CACHE STRING "MSVC MT C++ flags " FORCE )
set ( CMAKE_C_FLAGS "/nologo /J /W0 /Gd /wd4018 /wd4244 /wd4305 /wd4800 /wd4065 /wd4267 /we4013 /EHsc" CACHE STRING "MSVC MT C++ flags " FORCE )
2010-12-08 08:43:06 +00:00
if ( CMAKE_CL_64 )
2011-10-26 00:51:29 +00:00
set ( CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE )
2010-12-08 08:43:06 +00:00
else ( )
2011-10-26 00:51:29 +00:00
set ( CMAKE_CXX_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /ZI /J" CACHE STRING "MSVC MT flags " FORCE )
2010-12-08 08:43:06 +00:00
endif ( )
2011-10-26 00:51:29 +00:00
set ( CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE )
set ( CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE )
set ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /EHsc /MT /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE )
2010-12-08 08:43:06 +00:00
if ( CMAKE_CL_64 )
2011-10-26 00:51:29 +00:00
set ( CMAKE_C_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE )
2010-12-08 08:43:06 +00:00
else ( )
2011-10-26 00:51:29 +00:00
set ( CMAKE_C_FLAGS_DEBUG "/Od /Gm /EHsc /RTC1 /MTd /W3 /nologo /ZI /J" CACHE STRING "MSVC MT flags " FORCE )
2010-12-08 08:43:06 +00:00
endif ( )
2011-10-26 00:51:29 +00:00
set ( CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE )
set ( CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /EHsc /MT /W3 /nologo /J" CACHE STRING "MSVC MT flags " FORCE )
set ( CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /EHsc /MT /W3 /nologo /Zi /J" CACHE STRING "MSVC MT flags " FORCE )
2010-12-08 08:43:06 +00:00
if ( WITH_INTERNATIONAL )
set ( GETTEXT ${ LIBDIR } /gettext )
2011-10-01 19:52:33 +00:00
set ( GETTEXT_INCLUDE_DIRS ${ GETTEXT } /include )
2010-12-08 08:43:06 +00:00
set ( GETTEXT_LIBPATH ${ GETTEXT } /lib )
2011-10-01 19:52:33 +00:00
set ( GETTEXT_LIBRARIES gnu_gettext )
2010-12-08 08:43:06 +00:00
endif ( )
if ( CMAKE_CL_64 )
set ( PNG_LIBRARIES libpng )
else ( )
set ( PNG_LIBRARIES libpng_st )
endif ( )
2011-01-25 14:43:13 +00:00
set ( JPEG_LIBRARIES libjpeg )
2010-12-08 08:43:06 +00:00
2011-06-28 02:49:49 +00:00
set ( ZLIB_INCLUDE_DIRS ${ LIBDIR } /zlib/include )
2010-12-08 08:43:06 +00:00
if ( CMAKE_CL_64 )
2011-06-28 02:49:49 +00:00
set ( ZLIB_LIBRARIES ${ LIBDIR } /zlib/lib/libz.lib )
2010-12-08 08:43:06 +00:00
else ( )
2011-06-28 02:49:49 +00:00
set ( ZLIB_LIBRARIES ${ LIBDIR } /zlib/lib/zlib.lib )
2010-12-08 08:43:06 +00:00
endif ( )
2011-06-28 02:49:49 +00:00
set ( PTHREADS_INCLUDE_DIRS ${ LIBDIR } /pthreads/include )
set ( PTHREADS_LIBRARIES ${ LIBDIR } /pthreads/lib/pthreadVC2.lib )
2011-06-29 17:56:32 +00:00
set ( FREETYPE ${ LIBDIR } /freetype )
2011-06-28 02:49:49 +00:00
set ( FREETYPE_INCLUDE_DIRS
2011-06-28 16:57:25 +00:00
$ { L I B D I R } / f r e e t y p e / i n c l u d e
$ { L I B D I R } / f r e e t y p e / i n c l u d e / f r e e t y p e 2
2011-06-28 02:49:49 +00:00
)
set ( FREETYPE_LIBRARY ${ LIBDIR } /freetype/lib/freetype2ST.lib )
2010-12-08 08:43:06 +00:00
if ( WITH_FFTW3 )
set ( FFTW3 ${ LIBDIR } /fftw3 )
2011-06-18 14:12:54 +00:00
set ( FFTW3_LIBRARIES libfftw )
set ( FFTW3_INCLUDE_DIRS ${ FFTW3 } /include )
2010-12-08 08:43:06 +00:00
set ( FFTW3_LIBPATH ${ FFTW3 } /lib )
endif ( )
if ( WITH_OPENCOLLADA )
2011-08-24 16:04:35 +00:00
set ( OPENCOLLADA_INCLUDE_DIRS
$ { L I B D I R } / o p e n c o l l a d a / i n c l u d e / C O L L A D A S t r e a m W r i t e r / i n c l u d e
$ { L I B D I R } / o p e n c o l l a d a / i n c l u d e / C O L L A D A B a s e U t i l s / i n c l u d e
$ { L I B D I R } / o p e n c o l l a d a / i n c l u d e / C O L L A D A F r a m e w o r k / i n c l u d e
$ { L I B D I R } / o p e n c o l l a d a / i n c l u d e / C O L L A D A S a x F r a m e w o r k L o a d e r / i n c l u d e
2011-09-30 15:51:58 +00:00
$ { L I B D I R } / o p e n c o l l a d a / i n c l u d e / G e n e r a t e d S a x P a r s e r / i n c l u d e
2011-06-19 13:06:21 +00:00
)
2011-08-24 16:04:35 +00:00
2011-06-19 13:06:21 +00:00
set ( OPENCOLLADA_LIBRARIES
$ { L I B D I R } / o p e n c o l l a d a / l i b / O p e n C O L L A D A S a x F r a m e w o r k L o a d e r . l i b
$ { L I B D I R } / o p e n c o l l a d a / l i b / O p e n C O L L A D A F r a m e w o r k . l i b
$ { L I B D I R } / o p e n c o l l a d a / l i b / O p e n C O L L A D A B a s e U t i l s . l i b
$ { L I B D I R } / o p e n c o l l a d a / l i b / O p e n C O L L A D A S t r e a m W r i t e r . l i b
$ { L I B D I R } / o p e n c o l l a d a / l i b / M a t h M L S o l v e r . l i b
$ { L I B D I R } / o p e n c o l l a d a / l i b / G e n e r a t e d S a x P a r s e r . l i b
$ { L I B D I R } / o p e n c o l l a d a / l i b / x m l 2 . l i b
$ { L I B D I R } / o p e n c o l l a d a / l i b / b u f f e r . l i b
$ { L I B D I R } / o p e n c o l l a d a / l i b / f t o a . l i b
$ { L I B D I R } / o p e n c o l l a d a / l i b / U T F . l i b
)
2011-09-12 13:58:13 +00:00
set ( PCRE_LIBRARIES
2011-06-19 14:14:29 +00:00
$ { L I B D I R } / o p e n c o l l a d a / l i b / p c r e . l i b
)
2010-12-08 08:43:06 +00:00
endif ( )
2011-06-19 13:06:21 +00:00
2010-12-08 08:43:06 +00:00
if ( WITH_CODEC_FFMPEG )
2011-06-28 02:49:49 +00:00
set ( FFMPEG_INCLUDE_DIRS
$ { L I B D I R } / f f m p e g / i n c l u d e
$ { L I B D I R } / f f m p e g / i n c l u d e / m s v c
)
set ( FFMPEG_LIBRARIES
2011-08-22 18:49:42 +00:00
$ { L I B D I R } / f f m p e g / l i b / a v c o d e c - 5 3 . l i b
$ { L I B D I R } / f f m p e g / l i b / a v f o r m a t - 5 3 . l i b
$ { L I B D I R } / f f m p e g / l i b / a v d e v i c e - 5 3 . l i b
$ { L I B D I R } / f f m p e g / l i b / a v u t i l - 5 1 . l i b
$ { L I B D I R } / f f m p e g / l i b / s w s c a l e - 2 . l i b
2011-06-28 02:49:49 +00:00
)
2010-12-08 08:43:06 +00:00
endif ( )
if ( WITH_IMAGE_OPENEXR )
2011-06-15 13:54:57 +00:00
if ( MSVC90 )
2011-02-07 01:23:18 +00:00
set ( MSVC_LIB _vs2008 )
set ( MSVC_INC )
elseif ( MSVC10 )
set ( MSVC_LIB _vs2010 )
set ( MSVC_INC _vs2010 )
2010-12-08 08:43:06 +00:00
else ( )
2011-02-07 01:23:18 +00:00
set ( MSVC_LIB msvc )
set ( MSVC_INC )
2010-12-08 08:43:06 +00:00
endif ( )
2011-06-15 13:54:57 +00:00
set ( OPENEXR ${ LIBDIR } /openexr )
2011-02-07 01:23:18 +00:00
set ( OPENEXR_LIBPATH ${ OPENEXR } /lib ${ MSVC_LIB } )
2011-06-15 13:54:57 +00:00
set ( OPENEXR_LIBRARIES
$ { O P E N E X R _ L I B P A T H } / I e x . l i b
$ { O P E N E X R _ L I B P A T H } / H a l f . l i b
$ { O P E N E X R _ L I B P A T H } / I l m I m f . l i b
$ { O P E N E X R _ L I B P A T H } / I m a t h . l i b
$ { O P E N E X R _ L I B P A T H } / I l m T h r e a d . l i b
)
2011-02-07 01:23:18 +00:00
set ( OPENEXR_INCUDE ${ OPENEXR } /include ${ MSVC_INC } )
2011-06-15 13:54:57 +00:00
set ( OPENEXR_INCLUDE_DIRS
$ { O P E N E X R _ I N C U D E }
2011-10-01 19:52:33 +00:00
$ { O P E N E X R _ I N C U D E } / I l m I m f
2011-06-15 13:54:57 +00:00
$ { O P E N E X R _ I N C U D E } / I e x
$ { O P E N E X R _ I N C U D E } / I m a t h
)
unset ( OPENEXR_INCUDE )
unset ( OPENEXR_LIBPATH )
2010-12-08 08:43:06 +00:00
endif ( )
if ( WITH_IMAGE_TIFF )
2011-06-28 02:49:49 +00:00
set ( TIFF_LIBRARY ${ LIBDIR } /tiff/lib/libtiff.lib )
set ( TIFF_INCLUDE_DIR ${ LIBDIR } /tiff/include )
2010-12-08 08:43:06 +00:00
endif ( )
if ( WITH_JACK )
2011-06-28 02:49:49 +00:00
set ( JACK_INCLUDE_DIRS
$ { L I B D I R } / j a c k / i n c l u d e / j a c k
$ { L I B D I R } / j a c k / i n c l u d e
)
set ( JACK_LIBRARIES ${ LIBDIR } /jack/lib/libjack.lib )
2010-12-08 08:43:06 +00:00
endif ( )
if ( WITH_PYTHON )
2011-07-16 06:55:45 +00:00
# normally cached but not since we include them with blender
set ( PYTHON_VERSION 3.2 ) # CACHE STRING)
set ( PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}" ) # CACHE PATH)
set ( PYTHON_LIBRARY "${LIBDIR}/python/lib/python32.lib" ) #CACHE FILEPATH)
# uncached vars
set ( PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}" )
set ( PYTHON_LIBRARIES "${PYTHON_LIBRARY}" )
2010-12-08 08:43:06 +00:00
endif ( )
2010-09-16 07:26:06 +00:00
2011-07-01 03:40:12 +00:00
set ( PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib" )
2011-06-28 02:49:49 +00:00
2010-05-28 21:25:23 +00:00
# MSVC only, Mingw doesnt need
2010-12-08 08:43:06 +00:00
if ( CMAKE_CL_64 )
2011-06-28 02:49:49 +00:00
set ( PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}" )
2010-12-08 08:43:06 +00:00
else ( )
2011-06-28 02:49:49 +00:00
set ( PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}" )
2010-12-08 08:43:06 +00:00
endif ( )
2010-10-18 12:35:40 +00:00
2011-07-01 03:40:12 +00:00
set ( PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib" )
2010-05-28 21:25:23 +00:00
2010-12-08 08:43:06 +00:00
else ( )
2011-10-17 06:39:13 +00:00
# keep GCC specific stuff here
2010-12-08 08:43:06 +00:00
if ( CMAKE_COMPILER_IS_GNUCC )
2011-09-06 11:17:29 +00:00
set ( PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32" )
2010-12-08 08:43:06 +00:00
set ( PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing" )
2010-10-31 13:17:39 +00:00
2011-06-28 02:49:49 +00:00
add_definitions ( -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE )
2010-12-08 08:43:06 +00:00
endif ( )
2010-05-29 11:36:33 +00:00
2010-12-08 08:43:06 +00:00
add_definitions ( -DFREE_WINDOWS )
2010-10-03 23:27:33 +00:00
2010-12-08 08:43:06 +00:00
if ( WITH_INTERNATIONAL )
set ( GETTEXT ${ LIBDIR } /gcc/gettext )
2011-10-01 19:52:33 +00:00
set ( GETTEXT_INCLUDE_DIRS ${ GETTEXT } /include )
2010-12-08 08:43:06 +00:00
set ( GETTEXT_LIBPATH ${ GETTEXT } /lib )
2011-10-01 19:52:33 +00:00
set ( GETTEXT_LIBRARIES intl )
2010-12-08 08:43:06 +00:00
endif ( )
2010-05-28 21:25:23 +00:00
2011-01-25 14:43:13 +00:00
set ( JPEG_LIBRARIES libjpeg )
2010-12-08 08:43:06 +00:00
set ( PNG_LIBRARIES png )
2010-05-28 21:25:23 +00:00
2010-12-08 08:43:06 +00:00
set ( ZLIB ${ LIBDIR } /zlib )
2011-01-25 14:43:13 +00:00
set ( ZLIB_INCLUDE_DIRS ${ ZLIB } /include )
2010-12-08 08:43:06 +00:00
set ( ZLIB_LIBPATH ${ ZLIB } /lib )
set ( ZLIB_LIBRARIES z )
2010-05-28 21:25:23 +00:00
2010-12-08 08:43:06 +00:00
set ( PTHREADS ${ LIBDIR } /pthreads )
2011-06-18 14:12:54 +00:00
set ( PTHREADS_INCLUDE_DIRS ${ PTHREADS } /include )
2010-12-08 08:43:06 +00:00
set ( PTHREADS_LIBPATH ${ PTHREADS } /lib )
2011-06-18 14:12:54 +00:00
set ( PTHREADS_LIBRARIES pthreadGC2 )
2011-09-30 15:51:58 +00:00
2010-12-08 08:43:06 +00:00
set ( FREETYPE ${ LIBDIR } /gcc/freetype )
set ( FREETYPE_INCLUDE_DIRS ${ FREETYPE } /include ${ FREETYPE } /include/freetype2 )
set ( FREETYPE_LIBPATH ${ FREETYPE } /lib )
set ( FREETYPE_LIBRARY freetype )
if ( WITH_FFTW3 )
set ( FFTW3 ${ LIBDIR } /gcc/fftw3 )
2011-06-18 14:12:54 +00:00
set ( FFTW3_LIBRARIES fftw3 )
set ( FFTW3_INCLUDE_DIRS ${ FFTW3 } /include )
2010-12-08 08:43:06 +00:00
set ( FFTW3_LIBPATH ${ FFTW3 } /lib )
endif ( )
if ( WITH_OPENCOLLADA )
set ( OPENCOLLADA ${ LIBDIR } /gcc/opencollada )
2011-08-24 16:04:35 +00:00
set ( OPENCOLLADA_INCLUDE_DIRS
2011-08-27 08:19:26 +00:00
$ { L I B D I R } / g c c / o p e n c o l l a d a / i n c l u d e / C O L L A D A S t r e a m W r i t e r / i n c l u d e
$ { L I B D I R } / g c c / o p e n c o l l a d a / i n c l u d e / C O L L A D A B a s e U t i l s / i n c l u d e
$ { L I B D I R } / g c c / o p e n c o l l a d a / i n c l u d e / C O L L A D A F r a m e w o r k / i n c l u d e
$ { L I B D I R } / g c c / o p e n c o l l a d a / i n c l u d e / C O L L A D A S a x F r a m e w o r k L o a d e r / i n c l u d e
2011-09-30 15:51:58 +00:00
$ { L I B D I R } / g c c / o p e n c o l l a d a / i n c l u d e / G e n e r a t e d S a x P a r s e r / i n c l u d e
2011-08-24 16:04:35 +00:00
)
2010-12-08 08:43:06 +00:00
set ( OPENCOLLADA_LIBPATH ${ OPENCOLLADA } /lib ${ OPENCOLLADA } /lib )
2011-06-18 14:12:54 +00:00
set ( OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver expat pcre buffer ftoa )
2011-09-12 13:58:13 +00:00
set ( PCRE_LIBRARIES pcre )
2010-12-08 08:43:06 +00:00
endif ( )
2011-09-30 15:51:58 +00:00
2010-12-08 08:43:06 +00:00
if ( WITH_CODEC_FFMPEG )
set ( FFMPEG ${ LIBDIR } /ffmpeg )
2011-06-18 14:12:54 +00:00
set ( FFMPEG_INCLUDE_DIRS ${ FFMPEG } /include ${ FFMPEG } /include )
2011-08-22 18:49:42 +00:00
set ( FFMPEG_LIBRARIES avcodec-53 avformat-53 avdevice-53 avutil-51 swscale-2 )
2010-12-08 08:43:06 +00:00
set ( FFMPEG_LIBPATH ${ FFMPEG } /lib )
endif ( )
if ( WITH_IMAGE_OPENEXR )
set ( OPENEXR ${ LIBDIR } /gcc/openexr )
2011-06-15 13:54:57 +00:00
set ( OPENEXR_INCLUDE_DIRS ${ OPENEXR } /include/OpenEXR )
2011-07-10 20:04:56 +00:00
set ( OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex )
2010-12-08 08:43:06 +00:00
set ( OPENEXR_LIBPATH ${ OPENEXR } /lib )
endif ( )
if ( WITH_IMAGE_TIFF )
set ( TIFF ${ LIBDIR } /gcc/tiff )
set ( TIFF_LIBRARY tiff )
set ( TIFF_INCLUDE_DIR ${ TIFF } /include )
set ( TIFF_LIBPATH ${ TIFF } /lib )
endif ( )
if ( WITH_JACK )
set ( JACK ${ LIBDIR } /jack )
2011-06-18 14:12:54 +00:00
set ( JACK_INCLUDE_DIRS ${ JACK } /include/jack ${ JACK } /include )
set ( JACK_LIBRARIES jack )
2010-12-08 08:43:06 +00:00
set ( JACK_LIBPATH ${ JACK } /lib )
2011-09-30 15:51:58 +00:00
2010-05-28 21:25:23 +00:00
# TODO, gives linking errors, force off
2010-12-08 08:43:06 +00:00
set ( WITH_JACK OFF )
endif ( )
2010-05-28 21:25:23 +00:00
2010-12-08 08:43:06 +00:00
if ( WITH_PYTHON )
2011-07-16 06:55:45 +00:00
# normally cached but not since we include them with blender
set ( PYTHON_VERSION 3.2 ) # CACHE STRING)
set ( PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}" ) # CACHE PATH)
set ( PYTHON_LIBRARY "${LIBDIR}/python/lib/python32mw.lib" ) # CACHE FILEPATH)
# uncached vars
set ( PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}" )
set ( PYTHON_LIBRARIES "${PYTHON_LIBRARY}" )
2010-12-08 08:43:06 +00:00
endif ( )
2010-09-16 07:26:06 +00:00
2011-03-12 00:50:34 +00:00
set ( PLATFORM_LINKFLAGS "--stack,2097152" )
2010-12-08 08:43:06 +00:00
endif ( )
2009-11-11 00:02:49 +00:00
2010-11-21 09:10:50 +00:00
# used in many places so include globally, like OpenGL
2011-06-18 14:12:54 +00:00
blender_include_dirs ( "${PTHREADS_INCLUDE_DIRS}" )
2010-12-08 08:43:06 +00:00
elseif ( APPLE )
2011-03-07 21:28:36 +00:00
if ( ${ CMAKE_OSX_DEPLOYMENT_TARGET } STREQUAL "10.5" )
set ( WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE )
endif ( )
2010-12-08 08:43:06 +00:00
if ( WITH_LIBS10.5 )
set ( LIBDIR ${ CMAKE_SOURCE_DIR } /../lib/darwin-9.x.universal )
else ( )
if ( CMAKE_OSX_ARCHITECTURES MATCHES i386 )
set ( LIBDIR ${ CMAKE_SOURCE_DIR } /../lib/darwin-8.x.i386 )
else ( )
set ( LIBDIR ${ CMAKE_SOURCE_DIR } /../lib/darwin-8.0.0-powerpc )
endif ( )
endif ( )
2011-09-30 15:51:58 +00:00
2009-09-06 01:51:23 +00:00
2010-12-08 08:43:06 +00:00
if ( WITH_OPENAL )
find_package ( OpenAL )
if ( OPENAL_FOUND )
set ( WITH_OPENAL ON )
set ( OPENAL_INCLUDE_DIR "${LIBDIR}/openal/include" )
else ( )
set ( WITH_OPENAL OFF )
endif ( )
endif ( )
if ( WITH_JACK )
set ( JACK /usr )
2011-06-18 14:12:54 +00:00
set ( JACK_INCLUDE_DIRS ${ JACK } /include/jack )
set ( JACK_LIBRARIES jack )
2010-12-08 08:43:06 +00:00
set ( JACK_LIBPATH ${ JACK } /lib )
endif ( )
if ( WITH_CODEC_SNDFILE )
set ( SNDFILE ${ LIBDIR } /sndfile )
2011-06-18 12:12:19 +00:00
set ( SNDFILE_INCLUDE_DIRS ${ SNDFILE } /include )
set ( SNDFILE_LIBRARIES sndfile FLAC ogg vorbis vorbisenc )
set ( SNDFILE_LIBPATH ${ SNDFILE } /lib ${ FFMPEG } /lib ) # TODO, deprecate
2010-12-08 08:43:06 +00:00
endif ( )
2011-07-16 06:55:45 +00:00
if ( WITH_PYTHON )
2011-08-02 17:35:07 +00:00
# we use precompiled libraries for py 3.2 and up by default
2011-07-16 06:55:45 +00:00
2011-08-02 17:35:07 +00:00
# normally cached but not since we include them with blender
2011-09-01 02:12:53 +00:00
set ( PYTHON_VERSION 3.2 )
2011-08-02 17:35:07 +00:00
set ( PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}" )
# set(PYTHON_BINARY "${LIBDIR}/python/bin/python${PYTHON_VERSION}") # not used yet
set ( PYTHON_LIBRARY python ${ PYTHON_VERSION } )
set ( PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}" )
# set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
2011-07-16 06:55:45 +00:00
# uncached vars
set ( PYTHON_INCLUDE_DIRS "${PYTHON_INCLUDE_DIR}" )
set ( PYTHON_LIBRARIES "${PYTHON_LIBRARY}" )
2010-12-08 08:43:06 +00:00
endif ( )
if ( WITH_INTERNATIONAL )
set ( GETTEXT ${ LIBDIR } /gettext )
2011-10-01 19:52:33 +00:00
set ( GETTEXT_INCLUDE_DIRS "${GETTEXT}/include" )
set ( GETTEXT_LIBRARIES intl iconv )
2010-12-08 08:43:06 +00:00
set ( GETTEXT_LIBPATH ${ GETTEXT } /lib )
endif ( )
2011-05-09 14:41:44 +00:00
2010-12-08 08:43:06 +00:00
if ( WITH_FFTW3 )
set ( FFTW3 ${ LIBDIR } /fftw3 )
2011-06-18 14:12:54 +00:00
set ( FFTW3_INCLUDE_DIRS ${ FFTW3 } /include )
set ( FFTW3_LIBRARIES fftw3 )
2010-12-08 08:43:06 +00:00
set ( FFTW3_LIBPATH ${ FFTW3 } /lib )
endif ( )
set ( PNG_LIBRARIES png )
2011-01-25 14:43:13 +00:00
set ( JPEG_LIBRARIES jpeg )
2010-12-08 08:43:06 +00:00
set ( ZLIB /usr )
2011-01-25 14:43:13 +00:00
set ( ZLIB_INCLUDE_DIRS "${ZLIB}/include" )
2010-12-08 08:43:06 +00:00
set ( ZLIB_LIBRARIES z bz2 )
set ( FREETYPE ${ LIBDIR } /freetype )
set ( FREETYPE_INCLUDE_DIRS ${ FREETYPE } /include ${ FREETYPE } /include/freetype2 )
set ( FREETYPE_LIBPATH ${ FREETYPE } /lib )
set ( FREETYPE_LIBRARY freetype )
if ( WITH_IMAGE_OPENEXR )
set ( OPENEXR ${ LIBDIR } /openexr )
2011-06-15 13:54:57 +00:00
set ( OPENEXR_INCLUDE_DIRS ${ OPENEXR } /include/OpenEXR )
2011-06-15 12:09:02 +00:00
set ( OPENEXR_LIBRARIES Iex Half IlmImf Imath IlmThread )
2010-12-08 08:43:06 +00:00
set ( OPENEXR_LIBPATH ${ OPENEXR } /lib )
endif ( )
if ( WITH_CODEC_FFMPEG )
set ( FFMPEG ${ LIBDIR } /ffmpeg )
2011-06-18 14:12:54 +00:00
set ( FFMPEG_INCLUDE_DIRS ${ FFMPEG } /include )
set ( FFMPEG_LIBRARIES avcodec avdevice avformat avutil mp3lame swscale x264 xvidcore theora theoradec theoraenc vorbis vorbisenc vorbisfile ogg )
2010-12-08 08:43:06 +00:00
set ( FFMPEG_LIBPATH ${ FFMPEG } /lib )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS" )
endif ( )
2011-09-30 15:51:58 +00:00
find_library ( SYSTEMSTUBS_LIBRARY
N A M E S
S y s t e m S t u b s
2011-08-02 17:35:07 +00:00
P A T H S
)
mark_as_advanced ( SYSTEMSTUBS_LIBRARY )
if ( SYSTEMSTUBS_LIBRARY )
set ( PLATFORM_LINKLIBS stdc++ SystemStubs )
2011-09-25 12:31:21 +00:00
else ( )
2011-08-02 17:35:07 +00:00
set ( PLATFORM_LINKLIBS stdc++ )
endif ( )
2010-12-08 08:43:06 +00:00
if ( WITH_COCOA )
set ( PLATFORM_CFLAGS "-pipe -funsigned-char -DGHOST_COCOA" )
set ( PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio" )
if ( USE_QTKIT )
set ( PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -DUSE_QTKIT" )
set ( PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit" )
if ( CMAKE_OSX_ARCHITECTURES MATCHES i386 )
set ( PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime" )
2011-09-30 15:51:58 +00:00
#libSDL still needs 32bit carbon quicktime
2010-12-08 08:43:06 +00:00
endif ( )
elseif ( WITH_CODEC_QUICKTIME )
set ( PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime" )
endif ( )
2011-08-03 14:18:02 +00:00
2011-09-30 15:51:58 +00:00
# XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
2011-08-03 14:18:02 +00:00
# ALSO SHOULD BE MOVED INTO OWN MODULE WHEN FUNCTIONAL
if ( WITH_INPUT_NDOF )
# This thread it *should* work and check the framework - campbell
# http://www.cmake.org/pipermail/cmake/2005-December/007740.html
find_library ( 3D_CONNEXION_CLIENT_LIBRARY
N A M E S 3 D c o n n e x i o n C l i e n t
)
if ( NOT 3D_CONNEXION_CLIENT_LIBRARY )
set ( WITH_INPUT_NDOF OFF )
endif ( )
2011-08-07 15:06:35 +00:00
if ( WITH_INPUT_NDOF )
set ( PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -weak_framework 3DconnexionClient" )
endif ( )
2011-08-03 14:18:02 +00:00
endif ( )
2010-12-08 08:43:06 +00:00
else ( )
set ( PLATFORM_CFLAGS "-pipe -funsigned-char" )
set ( PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Carbon -framework AGL -framework AudioUnit -framework AudioToolbox -framework CoreAudio -framework QuickTime" )
2011-08-03 14:18:02 +00:00
set ( WITH_INPUT_NDOF OFF ) # unsupported
2010-12-08 08:43:06 +00:00
endif ( )
if ( WITH_OPENCOLLADA )
set ( OPENCOLLADA ${ LIBDIR } /opencollada )
2011-08-24 16:04:35 +00:00
set ( OPENCOLLADA_INCLUDE_DIRS
$ { L I B D I R } / o p e n c o l l a d a / i n c l u d e / C O L L A D A S t r e a m W r i t e r
$ { L I B D I R } / o p e n c o l l a d a / i n c l u d e / C O L L A D A B a s e U t i l s
$ { L I B D I R } / o p e n c o l l a d a / i n c l u d e / C O L L A D A F r a m e w o r k
$ { L I B D I R } / o p e n c o l l a d a / i n c l u d e / C O L L A D A S a x F r a m e w o r k L o a d e r
$ { L I B D I R } / o p e n c o l l a d a / i n c l u d e / G e n e r a t e d S a x P a r s e r
)
2010-12-08 08:43:06 +00:00
set ( OPENCOLLADA_LIBPATH ${ OPENCOLLADA } /lib )
2011-06-18 14:12:54 +00:00
set ( OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lUTF -lxml2 -lbuffer -lftoa" )
2009-11-02 17:35:23 +00:00
#pcre is bundled with openCollada
2010-12-08 08:43:06 +00:00
#set(PCRE ${LIBDIR}/pcre)
#set(PCRE_LIBPATH ${PCRE}/lib)
2011-09-12 13:58:13 +00:00
set ( PCRE_LIBRARIES pcre )
2009-11-11 00:02:49 +00:00
#libxml2 is used
2010-12-08 08:43:06 +00:00
#set(EXPAT ${LIBDIR}/expat)
#set(EXPAT_LIBPATH ${EXPAT}/lib)
set ( EXPAT_LIB )
endif ( )
if ( WITH_SDL )
set ( SDL ${ LIBDIR } /sdl )
set ( SDL_INCLUDE_DIR ${ SDL } /include )
set ( SDL_LIBRARY SDL )
set ( SDL_LIBPATH ${ SDL } /lib )
endif ( )
set ( PNG "${LIBDIR}/png" )
2011-01-25 14:43:13 +00:00
set ( PNG_INCLUDE_DIR "${PNG}/include" )
2010-12-08 08:43:06 +00:00
set ( PNG_LIBPATH ${ PNG } /lib )
set ( JPEG "${LIBDIR}/jpeg" )
2011-01-25 14:43:13 +00:00
set ( JPEG_INCLUDE_DIR "${JPEG}/include" )
2010-12-08 08:43:06 +00:00
set ( JPEG_LIBPATH ${ JPEG } /lib )
if ( WITH_IMAGE_TIFF )
set ( TIFF ${ LIBDIR } /tiff )
set ( TIFF_INCLUDE_DIR ${ TIFF } /include )
set ( TIFF_LIBRARY tiff )
set ( TIFF_LIBPATH ${ TIFF } /lib )
endif ( )
2011-08-02 05:52:27 +00:00
if ( WITH_INPUT_NDOF )
2011-06-27 23:24:24 +00:00
# linker needs "-weak_framework 3DconnexionClient"
endif ( )
2010-12-08 08:43:06 +00:00
set ( EXETYPE MACOSX_BUNDLE )
set ( CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g" )
set ( CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g" )
if ( CMAKE_OSX_ARCHITECTURES MATCHES "i386" )
2011-10-02 16:43:39 +00:00
set ( CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller" )
set ( CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -fvariable-expansion-in-unroller" )
2010-12-08 08:43:06 +00:00
elseif ( CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" )
2011-10-02 16:43:39 +00:00
set ( CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller" )
set ( CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -ftree-vectorize -msse -msse2 -msse3 -mssse3 -fvariable-expansion-in-unroller" )
2010-12-08 08:43:06 +00:00
else ( )
set ( CMAKE_C_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing" )
set ( CMAKE_CXX_FLAGS_RELEASE "-mdynamic-no-pic -fno-strict-aliasing" )
endif ( )
endif ( )
2006-11-17 02:27:12 +00:00
#-----------------------------------------------------------------------------
# Common.
2010-08-11 08:23:48 +00:00
2011-05-23 14:56:14 +00:00
if ( APPLE OR WIN32 )
2011-06-26 08:42:00 +00:00
if ( NOT EXISTS "${LIBDIR}/" )
2011-05-23 14:56:14 +00:00
message ( FATAL_ERROR "Apple and Windows require pre-compiled libs at: '${LIBDIR}'" )
endif ( )
endif ( )
2011-08-01 06:11:41 +00:00
# See TEST_SSE_SUPPORT() for how this is defined.
2010-12-08 08:43:06 +00:00
if ( WITH_RAYOPTIMIZATION )
2011-08-01 06:11:41 +00:00
if ( SUPPORT_SSE_BUILD )
2011-10-01 18:29:40 +00:00
set ( PLATFORM_CFLAGS " ${COMPILER_SSE_FLAG} ${PLATFORM_CFLAGS}" )
2011-08-01 06:11:41 +00:00
add_definitions ( -D__SSE__ -D__MMX__ )
endif ( )
if ( SUPPORT_SSE2_BUILD )
2011-10-01 18:29:40 +00:00
set ( PLATFORM_CFLAGS " ${COMPILER_SSE2_FLAG} ${PLATFORM_CFLAGS}" )
2011-08-01 06:11:41 +00:00
add_definitions ( -D__SSE2__ )
if ( NOT SUPPORT_SSE_BUILD ) # dont double up
add_definitions ( -D__MMX__ )
2010-12-08 08:43:06 +00:00
endif ( )
endif ( )
endif ( )
2011-09-19 08:02:17 +00:00
# set the endian define
2011-09-27 01:32:27 +00:00
if ( MSVC )
# for some reason this fails on msvc
2011-09-19 08:02:17 +00:00
add_definitions ( -D__LITTLE_ENDIAN__ )
2011-09-27 01:32:27 +00:00
else ( )
include ( TestBigEndian )
test_big_endian ( _SYSTEM_BIG_ENDIAN )
if ( _SYSTEM_BIG_ENDIAN )
add_definitions ( -D__BIG_ENDIAN__ )
else ( )
add_definitions ( -D__LITTLE_ENDIAN__ )
endif ( )
unset ( _SYSTEM_BIG_ENDIAN )
2011-09-19 08:02:17 +00:00
endif ( )
2010-12-08 08:43:06 +00:00
if ( WITH_IMAGE_OPENJPEG )
2011-02-15 19:04:51 +00:00
if ( UNIX AND NOT APPLE )
2011-06-19 07:46:24 +00:00
# dealt with above
2011-02-15 19:04:51 +00:00
else ( )
2011-06-19 07:46:24 +00:00
set ( OPENJPEG_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/libopenjpeg" )
2011-02-15 19:04:51 +00:00
endif ( )
2010-12-08 08:43:06 +00:00
endif ( )
2006-11-17 02:27:12 +00:00
2010-12-08 08:43:06 +00:00
if ( WITH_IMAGE_REDCODE )
2010-11-30 18:52:39 +00:00
set ( REDCODE ${ CMAKE_SOURCE_DIR } /extern )
set ( REDCODE_INC ${ REDCODE } )
2010-12-08 08:43:06 +00:00
endif ( )
2010-11-30 18:52:39 +00:00
2008-10-07 17:13:35 +00:00
#-----------------------------------------------------------------------------
# Blender WebPlugin
2011-09-30 15:51:58 +00:00
if ( WITH_WEBPLUGIN )
2010-12-08 08:43:06 +00:00
set ( GECKO_DIR "${CMAKE_SOURCE_DIR}/../gecko-sdk/" CACHE PATH "Gecko SDK path" )
set ( WEBPLUGIN_SANDBOX_MODE "apparmor" CACHE STRING "WEB Plugin sandbox mode, can be apparmor, privsep, none" )
2008-10-07 17:13:35 +00:00
2010-12-08 08:43:06 +00:00
set ( WITH_PLAYER ON )
endif ( )
2008-10-07 17:13:35 +00:00
2006-11-17 02:27:12 +00:00
#-----------------------------------------------------------------------------
# Configure OpenGL.
2010-12-08 08:43:06 +00:00
find_package ( OpenGL )
2011-06-08 05:39:58 +00:00
blender_include_dirs_sys ( "${OPENGL_INCLUDE_DIR}" )
2011-09-30 15:51:58 +00:00
# unset(OPENGL_LIBRARIES CACHE) # not compat with older cmake
# unset(OPENGL_xmesa_INCLUDE_DIR CACHE) # not compat with older cmake
2009-10-19 16:20:12 +00:00
2010-11-19 11:33:12 +00:00
#-----------------------------------------------------------------------------
# Configure OpenMP.
2010-12-08 08:43:06 +00:00
if ( WITH_OPENMP )
2011-09-30 15:51:58 +00:00
find_package ( OpenMP )
2010-12-08 08:43:06 +00:00
if ( OPENMP_FOUND )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}" )
if ( APPLE AND ${ CMAKE_GENERATOR } MATCHES "Xcode" )
set ( CMAKE_XCODE_ATTRIBUTE_ENABLE_OPENMP_SUPPORT "YES" )
endif ( )
else ( )
set ( WITH_OPENMP OFF )
endif ( )
2010-12-21 03:32:51 +00:00
2011-09-30 15:51:58 +00:00
mark_as_advanced (
O p e n M P _ C _ F L A G S
O p e n M P _ C X X _ F L A G S
)
endif ( )
2010-11-19 11:33:12 +00:00
2011-04-05 23:31:01 +00:00
#-----------------------------------------------------------------------------
# Configure GLEW
if ( WITH_BUILTIN_GLEW )
# set(GLEW_LIBRARY "") # unused
set ( GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include" )
else ( )
find_package ( GLEW )
if ( NOT GLEW_FOUND )
message ( FATAL_ERROR "GLEW is required to build blender, install it or use WITH_BUILTIN_GLEW" )
endif ( )
2011-09-30 15:51:58 +00:00
mark_as_advanced (
G L E W _ L I B R A R Y
G L E W _ I N C L U D E _ P A T H
)
2011-04-05 23:31:01 +00:00
endif ( )
2006-11-17 02:27:12 +00:00
#-----------------------------------------------------------------------------
2011-03-24 00:14:49 +00:00
# Configure Python.
if ( WITH_PYTHON_MODULE )
add_definitions ( -DPy_ENABLE_SHARED )
2011-09-30 15:51:58 +00:00
endif ( )
2011-03-24 00:14:49 +00:00
#-----------------------------------------------------------------------------
2006-11-17 02:27:12 +00:00
# Extra compile flags
2010-10-18 12:35:40 +00:00
2010-12-08 08:43:06 +00:00
if ( CMAKE_COMPILER_IS_GNUCC )
2010-12-16 09:55:35 +00:00
2010-12-21 03:32:51 +00:00
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_ALL -Wall )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_CAST_ALIGN -Wcast-align )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_ERROR_DECLARATION_AFTER_STATEMENT -Werror=declaration-after-statement )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_ERROR_IMPLICIT_FUNCTION_DECLARATION -Werror=implicit-function-declaration )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_ERROR_RETURN_TYPE -Werror=return-type )
2011-03-15 22:30:07 +00:00
# system headers sometimes do this, disable for now, was: -Werror=strict-prototypes
2011-03-28 02:11:51 +00:00
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes )
2010-12-21 03:32:51 +00:00
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_WRITE_STRINGS -Wwrite-strings )
2011-09-26 09:43:35 +00:00
# # this causes too many warnings, disable
# ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNDEFINED -Wundef)
2011-04-03 10:04:16 +00:00
# disable because it gives warnings for printf() & friends.
# ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_DOUBLE_PROMOTION -Wdouble-promotion -Wno-error=double-promotion)
2011-03-28 02:11:51 +00:00
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable )
2010-12-21 03:32:51 +00:00
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_ALL -Wall )
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof )
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare )
2011-09-26 09:43:35 +00:00
# # this causes too many warnings, disable
# ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNDEFINED -Wundef)
2010-12-16 09:55:35 +00:00
2011-10-30 04:48:00 +00:00
# flags to undo strict flags
ADD_CHECK_C_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS C_WARN_NO_DEPRECATED_DECLARATIONS -Wno-deprecated-declarations )
2011-11-01 00:34:09 +00:00
ADD_CHECK_C_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_PARAMETER -Wno-unused-parameter )
ADD_CHECK_C_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_BUT_SET_VARIABLE -Wno-unused-but-set-variable )
2011-10-30 04:48:00 +00:00
2010-12-16 09:55:35 +00:00
elseif ( CMAKE_C_COMPILER_ID MATCHES "Intel" )
2010-12-21 03:32:51 +00:00
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_ALL -Wall )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_POINTER_ARITH -Wpointer-arith )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas )
2010-12-16 09:55:35 +00:00
2010-12-21 03:32:51 +00:00
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_ALL -Wall )
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof )
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare )
2010-12-16 09:55:35 +00:00
2011-10-01 21:09:42 +00:00
# disable numbered, false positives
set ( C_WARNINGS "${C_WARNINGS} -wd188,186,144,913,556" )
set ( CXX_WARNINGS "${CXX_WARNINGS} -wd188,186,144,913,556" )
2010-12-08 08:43:06 +00:00
endif ( )
2010-10-17 06:38:56 +00:00
2011-06-27 16:33:59 +00:00
# MSVC2010 fails to links C++ libs right
if ( MSVC10 )
if ( WITH_IMAGE_OPENEXR )
message ( WARNING "MSVC 2010 does not support OpenEXR, disabling WITH_IMAGE_OPENEXR. To enable support use Use MSVC 2008" )
set ( WITH_IMAGE_OPENEXR OFF )
endif ( )
if ( WITH_OPENCOLLADA )
message ( WARNING "MSVC 2010 does not support OpenCollada, disabling WITH_OPENCOLLADA. To enable support use Use MSVC 2008" )
set ( WITH_OPENCOLLADA OFF )
endif ( )
endif ( )
2011-03-20 01:49:15 +00:00
if ( CMAKE_CXX_COMPILER_ID MATCHES "Clang" )
if ( WITH_IK_ITASC OR WITH_MOD_FLUID )
message ( WARNING "Using Clang as CXX compiler: disabling WITH_IK_ITASC and WITH_MOD_FLUID, these features will be missing." )
set ( WITH_IK_ITASC OFF )
set ( WITH_MOD_FLUID OFF )
endif ( )
endif ( )
2010-12-16 09:55:35 +00:00
2011-07-16 06:55:45 +00:00
# ensure python header is found since detection can fail, this could happen
# with _any_ library but since we used a fixed python version this tends to
# be most problematic.
if ( WITH_PYTHON )
if ( NOT EXISTS "${PYTHON_INCLUDE_DIR}/Python.h" )
message ( FATAL_ERROR "Missing: \" ${ PYTHON_INCLUDE_DIR } /Python.h\ ",\n"
" S e t t h e c a c h e e n t r y ' P Y T H O N _ I N C L U D E _ D I R ' t o p o i n t "
" t o a v a l i d p y t h o n i n c l u d e p a t h . C o n t a i n i n g "
" P y t h o n . h f o r p y t h o n v e r s i o n \ " $ { P Y T H O N _ V E R S I O N } \ " " )
endif ( )
endif ( )
2010-12-08 08:43:06 +00:00
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS} ${C_WARNINGS}" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS} ${CXX_WARNINGS}" )
2009-10-19 16:20:12 +00:00
2011-02-20 23:39:29 +00:00
#-------------------------------------------------------------------------------
# Global Defines
2011-05-24 06:44:39 +00:00
# better not set includes here but this debugging option is off by default.
2010-12-08 08:43:06 +00:00
if ( WITH_CXX_GUARDEDALLOC )
2011-05-24 06:44:39 +00:00
include_directories ( ${ CMAKE_SOURCE_DIR } /intern/guardedalloc )
2010-12-08 08:43:06 +00:00
endif ( )
2006-11-17 02:27:12 +00:00
2010-12-15 10:22:26 +00:00
if ( WITH_ASSERT_ABORT )
add_definitions ( -DWITH_ASSERT_ABORT )
endif ( )
2010-12-16 12:48:30 +00:00
# message(STATUS "Using CFLAGS: ${CMAKE_C_FLAGS}")
# message(STATUS "Using CXXFLAGS: ${CMAKE_CXX_FLAGS}")
2006-11-17 02:27:12 +00:00
#-----------------------------------------------------------------------------
# Libraries
2010-12-06 10:56:37 +00:00
2010-12-08 08:43:06 +00:00
add_subdirectory ( source )
add_subdirectory ( intern )
add_subdirectory ( extern )
2006-11-17 02:27:12 +00:00
#-----------------------------------------------------------------------------
# Blender Application
2011-07-13 08:15:06 +00:00
if ( WITH_BLENDER )
add_subdirectory ( source/creator )
endif ( )
2006-11-17 02:27:12 +00:00
2008-09-09 21:15:30 +00:00
2006-11-17 02:27:12 +00:00
#-----------------------------------------------------------------------------
# Blender Player
2010-12-08 08:43:06 +00:00
if ( WITH_PLAYER )
add_subdirectory ( source/blenderplayer )
endif ( )
2011-02-15 18:33:05 +00:00
#-----------------------------------------------------------------------------
# CPack for generating packages
include ( build_files/cmake/packaging.cmake )
2011-06-19 13:49:20 +00:00
#-----------------------------------------------------------------------------
# Print Final Configuration
if ( FIRST_RUN )
set ( _config_msg "\n* Blender Configuration *" )
macro ( info_cfg_option
_ s e t t i n g )
set ( _msg " * ${_setting}" )
string ( LENGTH "${_msg}" _len )
while ( "28" GREATER "${_len}" )
set ( _msg "${_msg} " )
math ( EXPR _len "${_len} + 1" )
endwhile ( )
set ( _config_msg "${_config_msg}\n${_msg}${${_setting}}" )
endmacro ( )
macro ( info_cfg_text
_ t e x t )
set ( _config_msg "${_config_msg}\n\n ${_text}" )
2011-09-30 15:51:58 +00:00
2011-06-19 13:49:20 +00:00
endmacro ( )
info_cfg_text ( "Build Options:" )
info_cfg_option ( WITH_GAMEENGINE )
info_cfg_option ( WITH_PLAYER )
info_cfg_option ( WITH_BULLET )
info_cfg_option ( WITH_IK_ITASC )
info_cfg_option ( WITH_OPENCOLLADA )
info_cfg_option ( WITH_FFTW3 )
info_cfg_option ( WITH_INTERNATIONAL )
2011-08-02 06:32:53 +00:00
info_cfg_option ( WITH_INPUT_NDOF )
2011-06-19 13:49:20 +00:00
info_cfg_text ( "Compiler Options:" )
info_cfg_option ( WITH_BUILDINFO )
info_cfg_option ( WITH_OPENMP )
info_cfg_option ( WITH_RAYOPTIMIZATION )
info_cfg_text ( "System Options:" )
info_cfg_option ( WITH_INSTALL_PORTABLE )
info_cfg_option ( WITH_X11_XINPUT )
info_cfg_option ( WITH_BUILTIN_GLEW )
info_cfg_text ( "Image Formats:" )
info_cfg_option ( WITH_IMAGE_CINEON )
info_cfg_option ( WITH_IMAGE_DDS )
info_cfg_option ( WITH_IMAGE_HDR )
info_cfg_option ( WITH_IMAGE_OPENEXR )
info_cfg_option ( WITH_IMAGE_OPENJPEG )
info_cfg_option ( WITH_IMAGE_REDCODE )
info_cfg_option ( WITH_IMAGE_TIFF )
info_cfg_text ( "Audio:" )
info_cfg_option ( WITH_OPENAL )
info_cfg_option ( WITH_SDL )
info_cfg_option ( WITH_JACK )
info_cfg_option ( WITH_CODEC_FFMPEG )
info_cfg_option ( WITH_CODEC_SNDFILE )
info_cfg_text ( "Compression:" )
info_cfg_option ( WITH_LZMA )
info_cfg_option ( WITH_LZO )
info_cfg_text ( "Python:" )
info_cfg_option ( WITH_PYTHON_INSTALL )
info_cfg_option ( WITH_PYTHON_MODULE )
info_cfg_option ( WITH_PYTHON_SAFETY )
info_cfg_text ( "Modifiers:" )
info_cfg_option ( WITH_MOD_BOOLEAN )
info_cfg_option ( WITH_MOD_DECIMATE )
info_cfg_option ( WITH_MOD_FLUID )
info_cfg_text ( "" )
message ( "${_config_msg}" )
endif ( )