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
2012-05-19 13:55:54 +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 )
2013-06-10 00:42:16 +00:00
option ( WITH_PYTHON_SECURITY "Disables execution of scripts within blend files by default" ON )
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.
2012-09-28 06:45:20 +00:00
mark_as_advanced ( WITH_PYTHON_SECURITY ) # some distributions see this as a security issue, rather than have them patch it, make a build option.
2013-06-10 00:42:16 +00:00
set ( WITH_PYTHON_SECURITY ON CACHE BOOL "ON" FORCE ) # temp force on.
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 )
2012-06-28 08:51:02 +00:00
option ( WITH_PYTHON_MODULE "Enable building as a python module which runs without a user interface, like running regular blender in background mode (experimental, only enable for development)" OFF )
2013-03-24 12:13:13 +00:00
if ( APPLE )
2013-02-22 22:24:38 +00:00
option ( WITH_PYTHON_FRAMEWORK "Enable building using the Python available in the framework (OSX only)" OFF )
endif ( )
2011-03-11 01:24:16 +00:00
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 )
2012-08-18 13:36:29 +00:00
option ( WITH_IK_SOLVER "Enable Legacy IK solver (only disable for development)" ON )
2012-12-05 15:46:31 +00:00
option ( WITH_FFTW3 "Enable FFTW3 support (Used for smoke and audio effects)" ON )
2010-12-08 08:43:06 +00:00
option ( WITH_BULLET "Enable Bullet (Physics Engine)" ON )
2013-01-03 00:23:52 +00:00
option ( WITH_SYSTEM_BULLET "Use the systems bullet library (currently unsupported due to missing features in upstream!)" )
mark_as_advanced ( WITH_SYSTEM_BULLET )
2010-12-08 08:43:06 +00:00
option ( WITH_GAMEENGINE "Enable Game Engine" ON )
option ( WITH_PLAYER "Build Player" OFF )
2012-09-15 10:03:17 +00:00
option ( WITH_OPENCOLORIO "Enable OpenColorIO color management" ON )
2012-06-30 14:14:22 +00:00
option ( WITH_COMPOSITOR "Enable the tile based nodal compositor" ON )
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-10-23 15:43:12 +00:00
option ( WITH_AUDASPACE "Build with blenders audio library (only disable if you know what you're doing!)" ON )
2011-07-13 06:04:54 +00:00
mark_as_advanced ( WITH_AUDASPACE )
2014-04-14 09:38:34 +00:00
option ( WITH_OPENMP "Enable OpenMP (has to be supported by the compiler)" ON )
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 )
2012-01-11 12:28:31 +00:00
option ( WITH_X11_XF86VMODE "Enable X11 video mode switching" ON )
2012-06-23 14:23:44 +00:00
option ( WITH_SYSTEM_GLEW "Use GLEW OpenGL wrapper library provided by the operating system" ON )
2012-02-17 20:51:39 +00:00
2014-01-21 14:48:09 +00:00
option ( WITH_GHOST_XDND "Enable drag'n'drop support on X11 using XDND protocol" ON )
2011-04-06 01:51:43 +00:00
else ( )
# not an option for other OS's
2012-06-23 13:42:14 +00:00
set ( WITH_SYSTEM_GLEW OFF )
2011-03-25 04:56:48 +00:00
endif ( )
2012-06-23 14:23:44 +00:00
# (unix defaults to System OpenJPEG On)
if ( UNIX AND NOT APPLE )
set ( PLATFORM_DEFAULT ON )
else ( )
set ( PLATFORM_DEFAULT OFF )
endif ( )
option ( WITH_SYSTEM_OPENJPEG "Use the operating systems OpenJPEG library" ${ PLATFORM_DEFAULT } )
unset ( PLATFORM_DEFAULT )
2010-10-23 15:40:13 +00:00
# Modifiers
2012-10-29 15:43:54 +00:00
option ( WITH_MOD_FLUID "Enable Elbeem Modifier (Fluid Simulation)" ON )
option ( WITH_MOD_SMOKE "Enable Smoke Modifier (Smoke Simulation)" ON )
option ( WITH_MOD_BOOLEAN "Enable Boolean Modifier" ON )
option ( WITH_MOD_REMESH "Enable Remesh Modifier" ON )
2012-11-27 09:52:20 +00:00
# option(WITH_MOD_CLOTH_ELTOPO "Enable Experimental cloth solver" OFF) # this is now only available in a branch
# mark_as_advanced(WITH_MOD_CLOTH_ELTOPO)
2011-11-13 14:16:43 +00:00
option ( WITH_MOD_OCEANSIM "Enable Ocean Modifier" OFF )
2010-10-23 15:40:13 +00:00
2010-06-06 13:32:58 +00:00
# Image format support
2013-10-12 23:56:21 +00:00
option ( WITH_OPENIMAGEIO "Enable OpenImageIO Support (http://www.openimageio.org)" OFF )
2012-04-12 08:36:07 +00:00
option ( WITH_IMAGE_OPENEXR "Enable OpenEXR Support (http://www.openexr.com)" ON )
2010-12-08 08:43:06 +00:00
option ( WITH_IMAGE_OPENJPEG "Enable OpenJpeg Support (http://www.openjpeg.org)" ON )
2012-04-12 08:36:07 +00:00
option ( WITH_IMAGE_TIFF "Enable LibTIFF Support" ON )
2010-12-08 08:43:06 +00:00
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
2012-10-08 02:51:42 +00:00
option ( WITH_CODEC_AVI "Enable Blenders own AVI file support (raw/jpeg)" ON )
2012-04-24 12:57:58 +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 )
2013-11-17 08:23:18 +00:00
2013-11-06 01:45:15 +00:00
if ( APPLE )
2013-11-17 08:23:18 +00:00
option ( WITH_CODEC_FFMPEG "Enable FFMPeg Support (http://ffmpeg.org)" ON )
option ( WITH_CODEC_QUICKTIME "Enable Quicktime Support" ON )
else ( )
option ( WITH_CODEC_FFMPEG "Enable FFMPeg Support (http://ffmpeg.org)" OFF )
2010-12-08 08:43:06 +00:00
endif ( )
2006-11-17 02:27:12 +00:00
2010-06-06 13:32:58 +00:00
# 3D format support
2013-11-18 16:12:19 +00:00
# Disable opencollada when we don't have precompiled libs
if ( APPLE OR WIN32 )
option ( WITH_OPENCOLLADA "Enable OpenCollada Support (http://www.opencollada.org)" ON )
else ( )
option ( WITH_OPENCOLLADA "Enable OpenCollada Support (http://www.opencollada.org)" OFF )
endif ( )
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 )
2013-03-27 07:19:54 +00:00
if ( UNIX AND NOT APPLE )
option ( WITH_JACK_DYNLOAD "Enable runtime dynamic Jack libraries loading" OFF )
endif ( )
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
2011-11-07 12:55:18 +00:00
# Camera/motion tracking
option ( WITH_LIBMV "Enable libmv structure from motion library" ON )
2012-12-20 07:57:26 +00:00
# Freestyle
option ( WITH_FREESTYLE "Enable Freestyle (advanced edges rendering)" 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 )
2013-11-25 04:33:41 +00:00
option ( WITH_OPENNL "Enable use of Open Numerical Library" 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 )
2012-11-19 19:43:03 +00:00
option ( WITH_STATIC_LIBS "Try to link with static libraries, as much as possible, to make blender more portable across distributions" OFF )
2013-02-23 20:42:15 +00:00
if ( WITH_STATIC_LIBS )
option ( WITH_BOOST_ICU "Boost uses ICU library (required for linking with static Boost built with libicu)." OFF )
mark_as_advanced ( WITH_BOOST_ICU )
endif ( )
2011-03-06 11:41:30 +00:00
endif ( )
2010-12-08 08:43:06 +00:00
option ( WITH_PYTHON_INSTALL "Copy system python into the blender install folder" ON )
2012-04-30 09:38:32 +00:00
option ( WITH_PYTHON_INSTALL_NUMPY "Copy system numpy into the blender install folder" ON )
2012-05-01 23:22:58 +00:00
set ( PYTHON_NUMPY_PATH "" CACHE PATH "Python to python site-packages or dist-packages containing 'numpy' module" )
mark_as_advanced ( PYTHON_NUMPY_PATH )
2014-03-04 18:39:53 +00:00
if ( UNIX AND NOT APPLE )
option ( WITH_PYTHON_INSTALL_REQUESTS "Copy system requests into the blender install folder" ON )
endif ( )
2011-04-28 13:47:27 +00:00
# Cycles
2012-04-12 08:36:07 +00:00
option ( WITH_CYCLES "Enable cycles Render Engine" ON )
2013-08-27 02:37:48 +00:00
option ( WITH_CYCLES_STANDALONE "Build cycles standalone application" OFF )
2013-08-30 17:34:27 +00:00
option ( WITH_CYCLES_STANDALONE_GUI "Build cycles standalone with GUI" OFF )
2012-06-04 16:30:15 +00:00
option ( WITH_CYCLES_OSL "Build Cycles with OSL support" OFF )
2011-11-10 12:52:17 +00:00
option ( WITH_CYCLES_CUDA_BINARIES "Build cycles CUDA binaries" OFF )
2013-06-20 13:10:47 +00:00
set ( CYCLES_CUDA_BINARIES_ARCH sm_20 sm_21 sm_30 sm_35 CACHE STRING "CUDA architectures to build binaries for" )
2011-11-13 14:16:43 +00:00
mark_as_advanced ( CYCLES_CUDA_BINARIES_ARCH )
2012-05-22 12:30:37 +00:00
unset ( PLATFORM_DEFAULT )
2011-04-28 13:47:27 +00:00
2012-10-06 11:00:45 +00:00
# LLVM
option ( WITH_LLVM "Use LLVM" OFF )
2013-04-15 16:18:35 +00:00
option ( LLVM_STATIC "Link with LLVM static libraries" ON )
mark_as_advanced ( LLVM_STATIC )
2012-10-06 11:00:45 +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 )
2013-10-03 12:22:44 +00:00
# currently only used for BLI_mempool
option ( WITH_MEM_VALGRIND "Enable extended valgrind support for better reporting" OFF )
mark_as_advanced ( WITH_MEM_VALGRIND )
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 )
2013-11-21 16:38:52 +00:00
option ( WITH_BOOST "Enable features depending on boost" ON )
2013-01-31 23:25:06 +00:00
2013-03-16 20:49:46 +00:00
if ( CMAKE_COMPILER_IS_GNUCC )
option ( WITH_GCC_MUDFLAP "Enable mudflap" OFF )
mark_as_advanced ( WITH_GCC_MUDFLAP )
endif ( )
2013-01-31 23:25:06 +00:00
2010-12-08 08:43:06 +00:00
if ( APPLE )
2012-11-29 10:28:06 +00:00
cmake_minimum_required ( VERSION 2.8.8 )
cmake_policy ( VERSION 2.8.8 )
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 ( )
2012-03-10 16:21:48 +00:00
2013-11-15 22:20:16 +00:00
execute_process ( COMMAND uname -r OUTPUT_VARIABLE MAC_SYS ) # check for actual system-version
if ( ${ MAC_SYS } MATCHES 13 )
set ( OSX_SYSTEM 10.9 )
elseif ( ${ MAC_SYS } MATCHES 12 )
set ( OSX_SYSTEM 10.8 )
elseif ( ${ MAC_SYS } MATCHES 11 )
set ( OSX_SYSTEM 10.7 )
elseif ( ${ MAC_SYS } MATCHES 10 )
set ( OSX_SYSTEM 10.6 )
elseif ( ${ MAC_SYS } MATCHES 9 )
set ( OSX_SYSTEM 10.5 )
else ( )
set ( OSX_SYSTEM unsupported )
endif ( )
message ( STATUS "Detected system-version: " ${ OSX_SYSTEM } )
2012-03-15 15:32:56 +00:00
2013-09-13 21:13:57 +00:00
# workaround for incorrect cmake xcode lookup for developer previews - XCODE_VERSION does not take xcode-select path into accout
# but would always look into /Applications/Xcode.app while dev versions are named Xcode<version>-DP<preview_number>
execute_process ( COMMAND xcode-select --print-path OUTPUT_VARIABLE XCODE_CHECK OUTPUT_STRIP_TRAILING_WHITESPACE )
string ( REPLACE "/Contents/Developer" "" XCODE_BUNDLE ${ XCODE_CHECK } ) # truncate to bundlepath in any case
message ( STATUS "Xcode-bundle : " ${ XCODE_BUNDLE } )
if ( ${ CMAKE_GENERATOR } MATCHES "Xcode" )
2013-09-15 10:56:36 +00:00
if ( ${ XCODE_VERSION } VERSION_GREATER 4.2 ) # earlier xcode has no bundled developer dir, no sense in getting xcode path from
string ( SUBSTRING "${XCODE_CHECK}" 14 6 DP_NAME ) # reduce to XCode name without dp extension
if ( ${ DP_NAME } MATCHES Xcode5 )
set ( XCODE_VERSION 5 )
endif ( )
endif ( )
2013-09-13 14:57:57 +00:00
2012-11-11 18:06:10 +00:00
##### cmake incompatibility with xcode 4.3 and higher #####
2012-03-15 15:32:56 +00:00
if ( ${ XCODE_VERSION } MATCHES '' ) # cmake fails due looking for xcode in the wrong path, thus will be empty var
2012-11-11 18:06:10 +00:00
message ( FATAL_ERROR "Xcode 4.3 and higher must be used with cmake 2.8-8 or higher" )
2012-03-15 15:32:56 +00:00
endif ( )
2012-11-11 18:06:10 +00:00
### end cmake incompatibility with xcode 4.3 and higher ###
2012-03-15 15:32:56 +00:00
2012-03-14 23:42:46 +00:00
if ( ${ XCODE_VERSION } VERSION_EQUAL 4 OR ${ XCODE_VERSION } VERSION_GREATER 4 AND ${ XCODE_VERSION } VERSION_LESS 4.3 )
2012-02-20 14:19:45 +00:00
# Xcode 4 defaults to the Apple LLVM Compiler.
2012-03-14 23:42:46 +00:00
# Override the default compiler selection because Blender only compiles with gcc up to xcode 4.2
2012-02-20 14:19:45 +00:00
set ( CMAKE_XCODE_ATTRIBUTE_GCC_VERSION "com.apple.compilers.llvmgcc42" )
message ( STATUS "Setting compiler to: " ${ CMAKE_XCODE_ATTRIBUTE_GCC_VERSION } )
endif ( )
2012-03-10 16:21:48 +00:00
else ( ) # unix makefile generator does not fill XCODE_VERSION var, so we get it with a command
2012-05-17 14:00:54 +00:00
execute_process ( COMMAND xcodebuild -version OUTPUT_VARIABLE XCODE_VERS_BUILD_NR )
string ( SUBSTRING "${XCODE_VERS_BUILD_NR}" 6 3 XCODE_VERSION ) # truncate away build-nr
unset ( XCODE_VERS_BUILD_NR )
2012-02-02 11:08:48 +00:00
endif ( )
2012-03-10 16:21:48 +00:00
message ( STATUS "Detected Xcode-version: " ${ XCODE_VERSION } )
2012-11-11 17:04:12 +00:00
if ( ${ XCODE_VERSION } VERSION_LESS 4.3 )
set ( CMAKE_OSX_SYSROOT /Developer/SDKs/MacOSX ${ OSX_SYSTEM } .sdk CACHE PATH "" FORCE ) # use guaranteed existing sdk
else ( )
2013-09-13 14:57:57 +00:00
# note: xcode-select path could be ambigous, cause /Applications/Xcode.app/Contents/Developer or /Applications/Xcode.app would be allowed
# so i use a selfcomposed bundlepath here
set ( OSX_SYSROOT_PREFIX ${ XCODE_BUNDLE } /Contents/Developer/Platforms/MacOSX.platform )
message ( STATUS "OSX_SYSROOT_PREFIX: " ${ OSX_SYSROOT_PREFIX } )
2012-11-11 17:04:12 +00:00
set ( OSX_DEVELOPER_PREFIX /Developer/SDKs/MacOSX ${ OSX_SYSTEM } .sdk ) # use guaranteed existing sdk
set ( CMAKE_OSX_SYSROOT ${ OSX_SYSROOT_PREFIX } / ${ OSX_DEVELOPER_PREFIX } CACHE PATH "" FORCE )
2014-01-23 11:34:56 +00:00
if ( ${ CMAKE_GENERATOR } MATCHES "Xcode" )
set ( CMAKE_XCODE_ATTRIBUTE_SDKROOT macosx ${ OSX_SYSTEM } ) # to silence sdk not found warning, just overrides CMAKE_OSX_SYSROOT
endif ( )
2012-11-11 17:04:12 +00:00
endif ( )
2013-11-19 23:38:51 +00:00
2014-01-23 11:34:56 +00:00
if ( OSX_SYSTEM MATCHES 10.9 )
set ( CMAKE_FIND_ROOT_PATH ${ CMAKE_OSX_SYSROOT } ) # make sure syslibs and headers are looked up in sdk ( expecially for 10.9 openGL atm. )
endif ( )
2013-11-19 23:38:51 +00:00
2012-11-11 17:04:12 +00:00
if ( NOT CMAKE_OSX_DEPLOYMENT_TARGET )
2013-11-15 19:05:23 +00:00
set ( CMAKE_OSX_DEPLOYMENT_TARGET "10.6" CACHE STRING "" FORCE ) # 10.6 is our min. target, if you use higher sdk, weak linking happens
2012-11-11 17:04:12 +00:00
endif ( )
2012-03-10 16:21:48 +00:00
2012-11-11 18:06:10 +00:00
if ( NOT ${ CMAKE_GENERATOR } MATCHES "Xcode" )
# force CMAKE_OSX_DEPLOYMENT_TARGET for makefiles, will not work else ( cmake bug ? )
set ( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}" )
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mmacosx-version-min=${CMAKE_OSX_DEPLOYMENT_TARGET}" )
2013-05-19 16:47:41 +00:00
add_definitions ( "-DMACOSX_DEPLOYMENT_TARGET=${CMAKE_OSX_DEPLOYMENT_TARGET}" )
2012-11-11 18:06:10 +00:00
endif ( )
2010-12-08 08:43:06 +00:00
option ( WITH_LIBS10.5 "Use 10.5 libs (needed for 64bit builds)" OFF )
endif ( )
2010-06-06 13:32:58 +00:00
2012-03-13 22:27:21 +00:00
2011-06-08 01:53:12 +00:00
#-----------------------------------------------------------------------------
# Check for conflicting/unsupported configurations
2013-08-27 02:37:48 +00:00
if ( NOT WITH_BLENDER AND NOT WITH_PLAYER AND NOT WITH_CYCLES_STANDALONE )
2014-01-18 14:19:49 +00:00
message ( FATAL_ERROR "At least one of WITH_BLENDER or WITH_PLAYER or WITH_CYCLES_STANDALONE must be enabled, nothing to do!" )
2011-07-13 08:15:06 +00:00
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
2012-11-12 04:50:45 +00:00
if ( NOT WITH_AUDASPACE )
if ( WITH_OPENAL )
message ( FATAL_ERROR "WITH_OPENAL requires WITH_AUDASPACE" )
endif ( )
if ( WITH_JACK )
message ( FATAL_ERROR "WITH_JACK requires WITH_AUDASPACE" )
endif ( )
if ( WITH_GAMEENGINE )
message ( FATAL_ERROR "WITH_GAMEENGINE requires WITH_AUDASPACE" )
endif ( )
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 )
2012-11-12 04:50:45 +00:00
message ( FATAL_ERROR "WITH_GHOST_SDL requires WITH_SDL" )
2011-07-12 13:17:54 +00:00
endif ( )
2012-01-06 05:13:36 +00:00
if ( WITH_IMAGE_REDCODE AND ( ( NOT WITH_IMAGE_OPENJPEG ) OR ( NOT WITH_CODEC_FFMPEG ) ) )
message ( FATAL_ERROR "WITH_IMAGE_REDCODE requires WITH_IMAGE_OPENJPEG and WITH_CODEC_FFMPEG" )
2010-12-08 08:43:06 +00:00
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 ( )
2012-04-12 05:34:17 +00:00
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 ( )
2013-08-07 22:40:03 +00:00
if ( NOT WITH_PYTHON )
set ( WITH_CYCLES OFF )
endif ( )
2013-01-31 23:25:06 +00:00
# enable boost for cycles, booleans, audaspace or i18n
# otherwise if the user disabled
if ( NOT WITH_BOOST )
# Explicitly disabled. so disable all deps.
2013-04-29 00:44:33 +00:00
macro ( set_and_warn
_ s e t t i n g _ v a l )
if ( ${ ${_setting } } )
2013-04-29 00:49:44 +00:00
message ( STATUS "'WITH_BOOST' is disabled: forceing 'set(${_setting} ${_val})'" )
endif ( )
2013-04-29 00:44:33 +00:00
set ( ${ _setting } ${ _val } )
endmacro ( )
set_and_warn ( WITH_CYCLES OFF )
set_and_warn ( WITH_MOD_BOOLEAN OFF )
set_and_warn ( WITH_AUDASPACE OFF )
set_and_warn ( WITH_INTERNATIONAL OFF )
set_and_warn ( WITH_OPENAL OFF ) # depends on AUDASPACE
set_and_warn ( WITH_GAMEENGINE OFF ) # depends on AUDASPACE
2013-09-24 15:16:46 +00:00
elseif ( WITH_CYCLES OR WITH_OPENIMAGEIO OR WITH_MOD_BOOLEAN OR WITH_AUDASPACE OR WITH_INTERNATIONAL )
2013-01-31 23:25:06 +00:00
# Keep enabled
else ( )
# Enabled but we don't need it
set ( WITH_BOOST OFF )
2011-08-16 16:15:34 +00:00
endif ( )
2013-03-27 18:44:46 +00:00
# auto enable openimageio for cycles
if ( WITH_CYCLES )
set ( WITH_OPENIMAGEIO ON )
endif ( )
# auto enable openimageio linking dependencies
if ( WITH_OPENIMAGEIO )
set ( WITH_IMAGE_OPENEXR ON )
set ( WITH_IMAGE_TIFF ON )
endif ( )
2012-10-06 11:00:45 +00:00
# auto enable llvm for cycles_osl
2012-11-15 17:16:27 +00:00
if ( WITH_CYCLES_OSL )
2012-10-06 18:40:05 +00:00
set ( WITH_LLVM ON CACHE BOOL "ON" FORCE )
2012-10-06 11:00:45 +00:00
endif ( )
2012-09-28 06:45:20 +00:00
# don't store paths to libs for portable distribution
2011-08-23 20:19:08 +00:00
if ( WITH_INSTALL_PORTABLE )
set ( CMAKE_SKIP_BUILD_RPATH TRUE )
endif ( )
2012-03-13 14:28:58 +00:00
if ( WITH_GHOST_SDL OR WITH_HEADLESS )
2012-04-12 05:34:17 +00:00
set ( WITH_GHOST_XDND OFF )
2012-09-16 10:39:19 +00:00
set ( WITH_X11_XF86VMODE OFF )
set ( WITH_X11_XINPUT OFF )
2012-03-13 14:28:58 +00:00
endif ( )
2012-03-13 22:27:21 +00:00
TEST_SSE_SUPPORT ( COMPILER_SSE_FLAG COMPILER_SSE2_FLAG )
2013-01-01 12:47:58 +00:00
TEST_STDBOOL_SUPPORT ( )
if ( HAVE_STDBOOL_H )
add_definitions ( -DHAVE_STDBOOL_H )
endif ( )
2012-03-13 14:28:58 +00:00
2012-03-14 00:30:20 +00:00
#-----------------------------------------------------------------------------
# Check for valid directories
2014-01-28 12:00:28 +00:00
# ... a partial checkout may cause this.
2014-02-15 20:53:53 +00:00
#
# note: we need to check for a known subdir in both cases.
# since uninitialized git submodules will give blank dirs
2012-03-14 00:30:20 +00:00
if ( WITH_INTERNATIONAL )
2014-02-15 20:53:53 +00:00
if ( NOT EXISTS "${CMAKE_SOURCE_DIR}/release/datafiles/locale/languages" )
2012-03-14 00:30:20 +00:00
message ( WARNING "Translation path '${CMAKE_SOURCE_DIR}/release/datafiles/locale' is missing, "
2014-01-28 12:00:28 +00:00
" T h i s i s a ' g i t s u b m o d u l e ' , w h i c h a r e k n o w n n o t t o w o r k w i t h b r i d g e s t o o t h e r v e r s i o n "
2012-03-14 00:30:20 +00:00
" c o n t r o l s y s t e m s , d i s a b l i n g ' W I T H _ I N T E R N A T I O N A L ' . " )
set ( WITH_INTERNATIONAL OFF )
endif ( )
endif ( )
if ( WITH_PYTHON )
2014-02-15 20:53:53 +00:00
if ( NOT EXISTS "${CMAKE_SOURCE_DIR}/release/scripts/addons/modules" )
2012-03-14 00:30:20 +00:00
message ( WARNING "Addons path '${CMAKE_SOURCE_DIR}/release/scripts/addons' is missing, "
2014-01-28 12:00:28 +00:00
" T h i s i s a ' g i t s u b m o d u l e ' , w h i c h a r e k n o w n n o t t o w o r k w i t h b r i d g e s t o o t h e r v e r s i o n "
2012-03-14 00:30:20 +00:00
" c o n t r o l s y s t e m s : * C O N T I N U I N G W I T H O U T A D D O N S * " )
endif ( )
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
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 \
2012-11-26 13:58:06 +00:00
# -D PYTHON_VERSION=3.3 \
# -D PYTHON_INCLUDE_DIR=/opt/py33/include/python3.3d \
# -D PYTHON_LIBRARY=/opt/py33/lib/libpython3.3d.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 \
2012-11-26 13:58:06 +00:00
# -D PYTHON_INCLUDE_DIR=/System/Library/Frameworks/Python.framework/Versions/3.3/include/python3.3 \
# -D PYTHON_LIBPATH=/System/Library/Frameworks/Python.framework/Versions/3.3/lib/python3.3/config \
2011-03-08 22:11:15 +00:00
# -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 )
2012-11-19 19:43:03 +00:00
macro ( find_package_wrapper )
2013-03-24 12:13:13 +00:00
string ( TOUPPER ${ ARGV0 } _NAME_UPPER )
2013-06-19 11:26:11 +00:00
if ( WITH_STATIC_LIBS )
2012-11-19 19:43:03 +00:00
set ( _cmake_find_library_suffixes_back ${ CMAKE_FIND_LIBRARY_SUFFIXES } )
set ( CMAKE_FIND_LIBRARY_SUFFIXES .a ${ CMAKE_FIND_LIBRARY_SUFFIXES } )
endif ( )
find_package ( ${ ARGV } )
2013-06-19 11:26:11 +00:00
if ( WITH_STATIC_LIBS )
2012-11-19 19:43:03 +00:00
set ( CMAKE_FIND_LIBRARY_SUFFIXES ${ _cmake_find_library_suffixes_back } )
unset ( _cmake_find_library_suffixes_back )
endif ( )
endmacro ( )
find_package_wrapper ( JPEG REQUIRED )
find_package_wrapper ( PNG REQUIRED )
find_package_wrapper ( ZLIB REQUIRED )
find_package_wrapper ( Freetype REQUIRED )
2011-06-19 07:46:24 +00:00
if ( WITH_PYTHON )
2012-11-26 13:58:06 +00:00
# No way to set py33. remove for now.
2011-06-19 07:46:24 +00:00
# find_package(PythonLibs)
# Use our own instead, since wothout py is such a rare case,
# require this package
2012-11-19 19:43:03 +00:00
# XXX Linking errors with debian static python :/
# find_package_wrapper(PythonLibsUnix REQUIRED)
2011-06-19 07:46:24 +00:00
find_package ( PythonLibsUnix REQUIRED )
endif ( )
if ( WITH_IMAGE_OPENEXR )
2012-11-19 19:43:03 +00:00
find_package_wrapper ( OpenEXR ) # our own module
2011-06-19 07:46:24 +00:00
if ( NOT OPENEXR_FOUND )
set ( WITH_IMAGE_OPENEXR OFF )
endif ( )
endif ( )
if ( WITH_IMAGE_OPENJPEG )
2012-11-19 19:43:03 +00:00
find_package_wrapper ( OpenJPEG )
2011-06-19 07:46:24 +00:00
if ( NOT OPENJPEG_FOUND )
set ( WITH_IMAGE_OPENJPEG OFF )
endif ( )
endif ( )
if ( WITH_IMAGE_TIFF )
2012-11-19 19:43:03 +00:00
# XXX Linking errors with debian static tiff :/
# find_package_wrapper(TIFF)
2011-06-19 07:46:24 +00:00
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 )
2012-11-19 19:43:03 +00:00
find_package_wrapper ( OpenAL )
2010-12-08 08:43:06 +00:00
if ( NOT OPENAL_FOUND )
set ( WITH_OPENAL OFF )
endif ( )
endif ( )
2011-06-19 07:46:24 +00:00
if ( WITH_SDL )
2012-11-19 19:43:03 +00:00
find_package_wrapper ( 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 )
2012-11-19 19:43:03 +00:00
find_package_wrapper ( Jack )
2011-06-19 15:03:50 +00:00
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 )
2012-11-19 19:43:03 +00:00
find_package_wrapper ( SndFile )
2011-06-18 12:12:19 +00:00
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 )
2012-11-18 17:26:23 +00:00
set ( FFMPEG /usr CACHE PATH "FFMPEG Directory" )
set ( FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries" )
2011-11-11 14:52:24 +00:00
2011-06-19 07:46:24 +00:00
mark_as_advanced ( FFMPEG )
2012-09-20 07:43:48 +00:00
2012-09-26 20:05:38 +00:00
# lame, but until we have proper find module for ffmpeg
2012-09-20 07:43:48 +00:00
set ( FFMPEG_INCLUDE_DIRS ${ FFMPEG } /include )
if ( EXISTS "${FFMPEG}/include/ffmpeg/" )
2012-10-03 05:49:22 +00:00
list ( APPEND FFMPEG_INCLUDE_DIRS "${FFMPEG}/include/ffmpeg" )
2012-09-20 07:43:48 +00:00
endif ( )
# end lameness
2011-06-19 07:46:24 +00:00
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_FFTW3 )
2012-11-19 19:43:03 +00:00
find_package_wrapper ( Fftw3 )
2011-06-19 08:57:34 +00:00
if ( NOT FFTW3_FOUND )
set ( WITH_FFTW3 OFF )
endif ( )
2010-12-08 08:43:06 +00:00
endif ( )
if ( WITH_OPENCOLLADA )
2012-11-19 19:43:03 +00:00
find_package_wrapper ( OpenCOLLADA )
2011-08-24 16:04:35 +00:00
if ( OPENCOLLADA_FOUND )
2012-11-19 19:43:03 +00:00
find_package_wrapper ( XML2 )
find_package_wrapper ( 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 )
2012-11-19 19:43:03 +00:00
find_package_wrapper ( JeMalloc )
2011-06-19 14:55:51 +00:00
if ( NOT JEMALLOC_FOUND )
set ( WITH_MEM_JEMALLOC OFF )
endif ( )
2011-05-12 11:16:32 +00:00
endif ( )
2013-03-24 12:13:13 +00:00
if ( WITH_INPUT_NDOF )
2012-11-19 19:43:03 +00:00
find_package_wrapper ( Spacenav )
2011-08-02 06:32:53 +00:00
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 ( )
2011-11-07 15:44:09 +00:00
if ( WITH_BOOST )
2011-11-08 21:40:08 +00:00
# uses in build instructions to override include and library variables
if ( NOT BOOST_CUSTOM )
2013-06-19 11:26:11 +00:00
if ( WITH_STATIC_LIBS )
2012-11-19 19:43:03 +00:00
set ( Boost_USE_STATIC_LIBS ON )
endif ( )
2012-12-13 08:46:07 +00:00
set ( Boost_USE_MULTITHREADED ON )
2012-11-15 17:31:18 +00:00
set ( __boost_packages filesystem regex system thread date_time )
2013-03-24 12:13:13 +00:00
if ( WITH_INTERNATIONAL )
2012-11-11 16:54:26 +00:00
list ( APPEND __boost_packages locale )
endif ( )
2013-12-07 01:29:53 +00:00
if ( WITH_CYCLES_NETWORK )
list ( APPEND __boost_packages serialization )
endif ( )
2012-12-13 08:46:07 +00:00
find_package ( Boost 1.48 COMPONENTS ${ __boost_packages } )
2013-12-23 15:52:34 +00:00
if ( NOT Boost_FOUND )
# try to find non-multithreaded if -mt not found, this flag
# doesn't matter for us, it has nothing to do with thread
# safety, but keep it to not disturb build setups
set ( Boost_USE_MULTITHREADED OFF )
find_package ( Boost 1.48 COMPONENTS ${ __boost_packages } )
endif ( )
2013-03-24 12:13:13 +00:00
unset ( __boost_packages )
2013-02-23 20:42:15 +00:00
if ( Boost_USE_STATIC_LIBS AND WITH_BOOST_ICU )
2012-11-19 08:51:35 +00:00
find_package ( IcuLinux )
endif ( )
2011-11-10 03:44:50 +00:00
mark_as_advanced ( Boost_DIR ) # why doesnt boost do this?
2011-11-08 21:40:08 +00:00
endif ( )
2011-11-07 15:44:09 +00:00
set ( BOOST_INCLUDE_DIR ${ Boost_INCLUDE_DIRS } )
set ( BOOST_LIBRARIES ${ Boost_LIBRARIES } )
set ( BOOST_LIBPATH ${ Boost_LIBRARY_DIRS } )
set ( BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB" )
endif ( )
if ( WITH_OPENIMAGEIO )
2012-11-19 19:43:03 +00:00
find_package_wrapper ( OpenImageIO )
2011-11-07 15:44:09 +00:00
2012-06-04 22:34:28 +00:00
set ( OPENIMAGEIO_LIBRARIES ${ OPENIMAGEIO_LIBRARIES } ${ PNG_LIBRARIES } ${ JPEG_LIBRARIES } ${ ZLIB_LIBRARIES } ${ BOOST_LIBRARIES } )
2011-11-07 15:44:09 +00:00
set ( OPENIMAGEIO_LIBPATH ) # TODO, remove and reference the absolute path everywhere
2013-03-24 12:13:13 +00:00
set ( OPENIMAGEIO_DEFINITIONS "" )
2011-11-07 15:44:09 +00:00
2012-06-04 22:34:28 +00:00
if ( WITH_IMAGE_TIFF )
2012-06-05 06:18:31 +00:00
list ( APPEND OPENIMAGEIO_LIBRARIES "${TIFF_LIBRARY}" )
2012-06-04 22:34:28 +00:00
endif ( )
if ( WITH_IMAGE_OPENEXR )
2012-06-05 06:18:31 +00:00
list ( APPEND OPENIMAGEIO_LIBRARIES "${OPENEXR_LIBRARIES}" )
2012-06-04 22:34:28 +00:00
endif ( )
2011-11-07 15:44:09 +00:00
if ( NOT OPENIMAGEIO_FOUND )
set ( WITH_OPENIMAGEIO OFF )
2011-11-08 17:00:40 +00:00
message ( STATUS "OpenImageIO not found, disabling WITH_CYCLES" )
2011-11-07 15:44:09 +00:00
endif ( )
endif ( )
2012-09-15 10:03:17 +00:00
if ( WITH_OPENCOLORIO )
2012-11-19 19:43:03 +00:00
find_package_wrapper ( OpenColorIO )
2012-09-15 10:03:17 +00:00
set ( OPENCOLORIO_LIBRARIES ${ OPENCOLORIO_LIBRARIES } )
set ( OPENCOLORIO_LIBPATH ) # TODO, remove and reference the absolute path everywhere
set ( OPENCOLORIO_DEFINITIONS )
if ( NOT OPENCOLORIO_FOUND )
set ( WITH_OPENCOLORIO OFF )
message ( STATUS "OpenColorIO not found" )
endif ( )
endif ( )
2012-11-18 17:26:23 +00:00
# XXX Maybe most of this section should go into an llvm module?
2012-10-06 11:00:45 +00:00
if ( WITH_LLVM )
2012-11-18 17:26:23 +00:00
# Set llvm version if not specified
if ( NOT LLVM_VERSION )
set ( LLVM_VERSION "3.0" )
endif ( )
2013-04-15 16:18:35 +00:00
2012-11-21 08:59:20 +00:00
if ( LLVM_DIRECTORY )
2013-08-28 04:32:39 +00:00
find_program ( LLVM_CONFIG llvm-config- ${ LLVM_VERSION } HINTS ${ LLVM_DIRECTORY } /bin NO_CMAKE_PATH )
2012-11-21 08:59:20 +00:00
if ( NOT LLVM_CONFIG )
2013-08-28 04:32:39 +00:00
find_program ( LLVM_CONFIG llvm-config HINTS ${ LLVM_DIRECTORY } /bin NO_CMAKE_PATH )
2012-11-21 08:59:20 +00:00
endif ( )
else ( )
2013-08-28 04:32:39 +00:00
find_program ( LLVM_CONFIG llvm-config- ${ LLVM_VERSION } )
2012-11-21 08:59:20 +00:00
if ( NOT LLVM_CONFIG )
2013-08-28 04:32:39 +00:00
find_program ( LLVM_CONFIG llvm-config )
2012-11-21 08:59:20 +00:00
endif ( )
2012-10-06 11:00:45 +00:00
endif ( )
2013-09-25 17:04:01 +00:00
if ( NOT DEFINED LLVM_VERSION )
execute_process ( COMMAND ${ LLVM_CONFIG } --version
O U T P U T _ V A R I A B L E L L V M _ V E R S I O N
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E )
set ( LLVM_VERSION ${ LLVM_VERSION } CACHE STRING "Version of LLVM to use" )
endif ( )
if ( NOT DEFINED LLVM_DIRECTORY )
execute_process ( COMMAND ${ LLVM_CONFIG } --prefix
O U T P U T _ V A R I A B L E L L V M _ D I R E C T O R Y
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E )
set ( LLVM_DIRECTORY ${ LLVM_DIRECTORY } CACHE PATH "Path to the LLVM installation" )
endif ( )
if ( NOT DEFINED LLVM_LIBPATH )
execute_process ( COMMAND ${ LLVM_CONFIG } --libdir
O U T P U T _ V A R I A B L E L L V M _ L I B P A T H
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E )
set ( LLVM_LIBPATH ${ LLVM_LIBPATH } CACHE PATH "Path to the LLVM library path" )
endif ( )
2013-04-15 16:18:35 +00:00
if ( LLVM_STATIC )
find_library ( LLVM_LIBRARY
N A M E S L L V M A n a l y s i s # first of a whole bunch of libs to get
2013-09-25 16:31:54 +00:00
P A T H S $ { L L V M _ L I B P A T H } )
2013-04-15 16:18:35 +00:00
else ( )
find_library ( LLVM_LIBRARY
N A M E S L L V M - $ { L L V M _ V E R S I O N }
2013-09-25 16:31:54 +00:00
P A T H S $ { L L V M _ L I B P A T H } )
2013-04-15 16:18:35 +00:00
endif ( )
2012-10-06 11:00:45 +00:00
2013-09-25 16:31:54 +00:00
if ( LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIBPATH )
2012-10-06 11:00:45 +00:00
if ( LLVM_STATIC )
# if static LLVM libraries were requested, use llvm-config to generate
# the list of what libraries we need, and substitute that in the right
# way for LLVM_LIBRARY.
execute_process ( COMMAND ${ LLVM_CONFIG } --libfiles
O U T P U T _ V A R I A B L E L L V M _ L I B R A R Y
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E )
2013-09-25 17:04:01 +00:00
string ( REPLACE " " ";" LLVM_LIBRARY "${LLVM_LIBRARY}" )
2012-10-06 11:00:45 +00:00
endif ( )
else ( )
message ( FATAL_ERROR "LLVM not found." )
endif ( )
2012-11-21 22:28:15 +00:00
# Fix for conflict with Mesa llvmpipe
set ( PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -Wl,--version-script=${CMAKE_SOURCE_DIR}/source/creator/blender.map" )
2012-10-06 11:00:45 +00:00
endif ( )
2012-09-10 06:18:20 +00:00
if ( WITH_CYCLES_OSL )
set ( CYCLES_OSL ${ LIBDIR } /osl CACHE PATH "Path to OpenShadingLanguage installation" )
message ( STATUS "CYCLES_OSL = ${CYCLES_OSL}" )
2012-09-10 08:38:51 +00:00
find_library ( OSL_LIB_EXEC NAMES oslexec PATHS ${ CYCLES_OSL } /lib )
find_library ( OSL_LIB_COMP NAMES oslcomp PATHS ${ CYCLES_OSL } /lib )
find_library ( OSL_LIB_QUERY NAMES oslquery PATHS ${ CYCLES_OSL } /lib )
2012-10-06 14:35:48 +00:00
# Note: --whole-archive is needed to force loading of all symbols in liboslexec,
# otherwise LLVM is missing the osl_allocate_closure_component function
list ( APPEND OSL_LIBRARIES ${ OSL_LIB_COMP } -Wl,--whole-archive ${ OSL_LIB_EXEC } -Wl,--no-whole-archive ${ OSL_LIB_QUERY } )
2012-09-10 08:38:51 +00:00
find_path ( OSL_INCLUDES OSL/oslclosure.h PATHS ${ CYCLES_OSL } /include )
find_program ( OSL_COMPILER NAMES oslc PATHS ${ CYCLES_OSL } /bin )
2012-09-10 06:18:20 +00:00
if ( OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER )
set ( OSL_FOUND TRUE )
message ( STATUS "OSL includes = ${OSL_INCLUDES}" )
message ( STATUS "OSL library = ${OSL_LIBRARIES}" )
message ( STATUS "OSL compiler = ${OSL_COMPILER}" )
else ( )
message ( STATUS "OSL not found" )
endif ( )
endif ( )
2010-10-04 11:42:39 +00:00
# OpenSuse needs lutil, ArchLinux not, for now keep, can avoid by using --as-needed
2013-11-28 16:59:55 +00:00
set ( PLATFORM_LINKLIBS "-lutil -lc -lm -lpthread" )
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 )
2013-01-31 20:41:47 +00:00
if ( X11_Xinput_LIB )
set ( PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xinput_LIB}" )
else ( )
set ( WITH_X11_XINPUT OFF )
endif ( )
2011-06-04 14:12:55 +00:00
endif ( )
2012-01-02 12:25:14 +00:00
if ( WITH_X11_XF86VMODE )
# XXX, why dont cmake make this available?
FIND_LIBRARY ( X11_Xxf86vmode_LIB Xxf86vm ${ X11_LIB_SEARCH_PATH } )
mark_as_advanced ( X11_Xxf86vmode_LIB )
if ( X11_Xxf86vmode_LIB )
set ( PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} ${X11_Xxf86vmode_LIB}" )
else ( )
set ( WITH_X11_XF86VMODE OFF )
endif ( )
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 )
# 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
2012-11-21 22:28:15 +00:00
set ( PLATFORM_LINKFLAGS "${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.
2013-12-02 00:36:33 +00:00
elseif ( CMAKE_C_COMPILER_ID MATCHES "Clang" )
2011-08-21 11:06:49 +00:00
set ( PLATFORM_CFLAGS "-pipe -fPIC -funsigned-char -fno-strict-aliasing" )
2012-01-12 16:31:27 +00:00
# Solaris CC
2013-12-02 00:36:33 +00:00
elseif ( CMAKE_C_COMPILER_ID MATCHES "SunPro" )
2012-01-12 16:31:27 +00:00
set ( PLATFORM_CFLAGS "-pipe -features=extensions -fPIC -D__FUNCTION__=__func__" )
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
2010-12-08 08:43:06 +00:00
add_definitions ( -DWIN32 )
if ( MSVC )
2012-11-17 14:35:35 +00:00
set ( PLATFORM_LINKLIBS ws2_32 vfw32 winmm kernel32 user32 gdi32 comdlg32 advapi32 shfolder shell32 ole32 oleaut32 uuid psapi )
2011-06-28 02:49:49 +00:00
2013-05-14 16:16:25 +00:00
# MSVC11 SDL is not hard linked to dxguid.lib
if ( MSVC11 AND WITH_SDL )
set ( PLATFORM_LINKLIBS ${ PLATFORM_LINKLIBS } dxguid )
endif ( )
2014-02-24 22:56:55 +00:00
add_definitions (
- D _ C R T _ N O N S T D C _ N O _ D E P R E C A T E
- D _ C R T _ S E C U R E _ N O _ D E P R E C A T E
- D _ S C L _ S E C U R E _ N O _ D E P R E C A T E
- D _ C O N S O L E
- D _ L I B
)
2011-06-28 02:49:49 +00:00
2013-05-14 16:16:25 +00:00
# MSVC11 needs _ALLOW_KEYWORD_MACROS to build
2014-02-24 22:56:55 +00:00
if ( NOT MSVC_VERSION VERSION_LESS 1700 )
add_definitions ( -D_ALLOW_KEYWORD_MACROS )
endif ( )
if ( CMAKE_CL_64 )
# We want to support Vista level ABI for x64
if ( NOT MSVC_VERSION VERSION_LESS 1700 )
add_definitions ( -D_WIN32_WINNT=0x600 )
endif ( )
2013-05-14 16:16:25 +00:00
endif ( )
2013-12-22 22:24:47 +00:00
set ( CMAKE_CXX_FLAGS "/nologo /J /Gd /EHsc /MP" CACHE STRING "MSVC MT C++ flags " FORCE )
set ( CMAKE_C_FLAGS "/nologo /J /Gd /MP" CACHE STRING "MSVC MT C++ flags " FORCE )
2010-12-08 08:43:06 +00:00
if ( CMAKE_CL_64 )
2014-02-15 07:21:07 +00:00
set ( CMAKE_CXX_FLAGS_DEBUG "/Od /RTC1 /MTd /Zi /MP" CACHE STRING "MSVC MT flags " FORCE )
2010-12-08 08:43:06 +00:00
else ( )
2014-02-15 07:21:07 +00:00
set ( CMAKE_CXX_FLAGS_DEBUG "/Od /RTC1 /MTd /ZI /MP" CACHE STRING "MSVC MT flags " FORCE )
2010-12-08 08:43:06 +00:00
endif ( )
2013-12-22 22:24:47 +00:00
set ( CMAKE_CXX_FLAGS_RELEASE "/O2 /Ob2 /MT /MP" CACHE STRING "MSVC MT flags " FORCE )
set ( CMAKE_CXX_FLAGS_MINSIZEREL "/O1 /Ob1 /MT /MP" CACHE STRING "MSVC MT flags " FORCE )
set ( CMAKE_CXX_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi /MP" CACHE STRING "MSVC MT flags " FORCE )
2010-12-08 08:43:06 +00:00
if ( CMAKE_CL_64 )
2014-02-15 07:21:07 +00:00
set ( CMAKE_C_FLAGS_DEBUG "/Od /RTC1 /MTd /Zi /MP" CACHE STRING "MSVC MT flags " FORCE )
2010-12-08 08:43:06 +00:00
else ( )
2014-02-15 07:21:07 +00:00
set ( CMAKE_C_FLAGS_DEBUG "/Od /RTC1 /MTd /ZI /MP" CACHE STRING "MSVC MT flags " FORCE )
2010-12-08 08:43:06 +00:00
endif ( )
2013-12-22 22:24:47 +00:00
set ( CMAKE_C_FLAGS_RELEASE "/O2 /Ob2 /MT /MP" CACHE STRING "MSVC MT flags " FORCE )
set ( CMAKE_C_FLAGS_MINSIZEREL "/O1 /Ob1 /MT /MP" CACHE STRING "MSVC MT flags " FORCE )
set ( CMAKE_C_FLAGS_RELWITHDEBINFO "/O2 /Ob1 /MT /Zi /MP" CACHE STRING "MSVC MT flags " FORCE )
2012-04-27 02:29:37 +00:00
# most msvc warnings are C & C++
2014-02-16 03:50:15 +00:00
set ( _WARNINGS
# warning level:
" / W 3 "
2014-02-19 07:05:37 +00:00
" / w 3 4 0 6 2 " # switch statement contains 'default' but no 'case' labels
2014-02-16 03:50:15 +00:00
# disable:
" / w d 4 0 1 8 " # signed/unsigned mismatch
" / w d 4 0 6 5 " # switch statement contains 'default' but no 'case' labels
2014-02-19 06:37:02 +00:00
" / w d 4 1 2 7 " # conditional expression is constant
2014-02-16 03:50:15 +00:00
" / w d 4 1 8 1 " # qualifier applied to reference type; ignored
" / w d 4 2 0 0 " # zero-sized array in struct/union
" / w d 4 2 4 4 " # conversion from 'type1' to 'type2', possible loss of data
" / w d 4 2 6 7 " # conversion from 'size_t' to 'type', possible loss of data
" / w d 4 3 0 5 " # truncation from 'type1' to 'type2'
" / w d 4 8 0 0 " # forcing value to bool 'true' or 'false'
# errors:
" / w e 4 0 1 3 " # 'function' undefined; assuming extern returning int
2014-02-19 07:05:37 +00:00
" / w e 4 4 3 1 " # missing type specifier - int assumed
2014-02-16 03:50:15 +00:00
)
string ( REPLACE ";" " " _WARNINGS "${_WARNINGS}" )
2012-04-27 02:29:37 +00:00
set ( C_WARNINGS "${_WARNINGS}" )
set ( CXX_WARNINGS "${_WARNINGS}" )
unset ( _WARNINGS )
2010-12-08 08:43:06 +00:00
2013-12-22 22:24:47 +00:00
set ( PLATFORM_LINKFLAGS "/SUBSYSTEM:CONSOLE /STACK:2097152 /INCREMENTAL:NO /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcmrt.lib /NODEFAULTLIB:msvcurt.lib /NODEFAULTLIB:msvcrtd.lib" )
# MSVC only, Mingw doesnt need
if ( CMAKE_CL_64 )
set ( PLATFORM_LINKFLAGS "/MACHINE:X64 /OPT:NOREF ${PLATFORM_LINKFLAGS}" )
else ( )
set ( PLATFORM_LINKFLAGS "/MACHINE:IX86 /LARGEADDRESSAWARE ${PLATFORM_LINKFLAGS}" )
endif ( )
set ( PLATFORM_LINKFLAGS_DEBUG "/NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:libc.lib" )
if ( NOT DEFINED LIBDIR )
# Setup 64bit and 64bit windows systems
if ( CMAKE_CL_64 )
message ( STATUS "64 bit compiler detected." )
set ( LIBDIR_BASE ${ CMAKE_SOURCE_DIR } /../lib/win64 )
else ( )
message ( STATUS "32 bit compiler detected." )
set ( LIBDIR_BASE ${ CMAKE_SOURCE_DIR } /../lib/windows )
endif ( )
if ( MSVC12 )
message ( STATUS "Visual C++ 2013 detected." )
set ( LIBDIR ${ LIBDIR_BASE } _vc12 )
elseif ( MSVC11 )
message ( STATUS "Visual C++ 2012 detected." )
set ( LIBDIR ${ LIBDIR_BASE } _vc11 )
else ( )
set ( LIBDIR ${ LIBDIR_BASE } )
endif ( )
else ( )
message ( STATUS using LIBDIR ${ LIBDIR } )
endif ( )
# Add each of our libraries to our cmake_prefix_path so find_package() could work
FILE ( GLOB children RELATIVE ${ LIBDIR } ${ LIBDIR } /* )
FOREACH ( child ${ children } )
IF ( IS_DIRECTORY ${ LIBDIR } / ${ child } )
LIST ( APPEND CMAKE_PREFIX_PATH ${ LIBDIR } / ${ child } )
ENDIF ( )
ENDFOREACH ( )
2013-12-20 13:32:51 +00:00
set ( ZLIB_INCLUDE_DIRS ${ LIBDIR } /zlib/include )
set ( ZLIB_LIBRARIES ${ LIBDIR } /zlib/lib/libz_st.lib )
set ( ZLIB_INCLUDE_DIR ${ LIBDIR } /zlib/include )
set ( ZLIB_LIBRARY ${ LIBDIR } /zlib/lib/libz_st.lib )
set ( ZLIB_DIR ${ LIBDIR } /zlib )
find_package ( zlib ) # we want to find before finding things that depend on it like png
2010-12-08 08:43:06 +00:00
2013-12-20 13:32:51 +00:00
find_package ( png )
if ( NOT PNG_FOUND )
2013-12-22 22:24:47 +00:00
set ( PNG_PNG_INCLUDE_DIR ${ LIBDIR } /png/include )
2013-12-20 13:32:51 +00:00
message ( WARNING "Using HARDCODED libpng locations" )
set ( PNG_LIBRARIES libpng )
set ( PNG "${LIBDIR}/png" )
set ( PNG_INCLUDE_DIR "${PNG}/include" )
set ( PNG_LIBPATH ${ PNG } /lib ) # not cmake defined
endif ( )
2010-12-08 08:43:06 +00:00
2013-12-22 22:24:47 +00:00
find_package ( jpeg REQUIRED )
2010-12-08 08:43:06 +00:00
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 )
2013-12-22 22:24:47 +00:00
find_package ( freetype REQUIRED )
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 )
2012-08-04 12:43:45 +00:00
set ( OPENCOLLADA ${ LIBDIR } /opencollada )
2011-08-24 16:04:35 +00:00
set ( OPENCOLLADA_INCLUDE_DIRS
2013-03-28 18:02:24 +00:00
$ { O P E N C O L L A D A } / i n c l u d e / o p e n c o l l a d a / C O L L A D A S t r e a m W r i t e r
$ { O P E N C O L L A D A } / i n c l u d e / o p e n c o l l a d a / C O L L A D A B a s e U t i l s
$ { O P E N C O L L A D A } / i n c l u d e / o p e n c o l l a d a / C O L L A D A F r a m e w o r k
$ { O P E N C O L L A D A } / i n c l u d e / o p e n c o l l a d a / 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
$ { O P E N C O L L A D A } / i n c l u d e / o p e n c o l l a d a / G e n e r a t e d S a x P a r s e r
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
2013-06-17 18:15:56 +00:00
$ { 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 / 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
$ { 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 / O p e n C O L L A D A F r a m e w o r k . l i b
$ { 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 / O p e n C O L L A D A B a s e U t i l s . l i b
$ { 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 / 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
$ { 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 / M a t h M L S o l v e r . l i b
$ { 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 / G e n e r a t e d S a x P a r s e r . l i b
$ { 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 / x m l . l i b
$ { 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 u f f e r . l i b
$ { 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 t o a . l i b
$ { 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 / U T F . l i b
2011-06-19 13:06:21 +00:00
)
2011-09-12 13:58:13 +00:00
set ( PCRE_LIBRARIES
2013-06-17 18:15:56 +00:00
$ { 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 / p c r e . l i b
2011-06-19 14:14:29 +00:00
)
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
)
2013-12-20 13:32:51 +00:00
find_package ( FFMPEG )
if ( NOT FFMPEG_FOUND )
message ( WARNING "Using HARDCODED ffmpeg locations" )
# MSVC11 FFMPEG libs are newer
if ( MSVC11 )
set ( FFMPEG_LIBRARY_VERSION 54 )
set ( FFMPEG_LIBRARY_VERSION_AVU 52 )
else ( )
2014-03-27 10:51:03 +00:00
set ( FFMPEG_LIBRARY_VERSION 55 )
set ( FFMPEG_LIBRARY_VERSION_AVU 52 )
2013-12-20 13:32:51 +00:00
endif ( )
2013-05-14 16:16:25 +00:00
set ( FFMPEG_LIBRARIES
2013-12-20 13:32:51 +00:00
$ { L I B D I R } / f f m p e g / l i b / a v c o d e c - $ { F F M P E G _ L I B R A R Y _ V E R S I O N } . 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 - $ { F F M P E G _ L I B R A R Y _ V E R S I O N } . 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 - $ { F F M P E G _ L I B R A R Y _ V E R S I O N } . l i b
$ { L I B D I R } / f f m p e g / l i b / a v u t i l - $ { F F M P E G _ L I B R A R Y _ V E R S I O N _ A V U } . l i b
2013-05-14 16:16:25 +00:00
$ { 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
2013-12-20 13:32:51 +00:00
)
2013-05-14 16:16:25 +00:00
endif ( )
2010-12-08 08:43:06 +00:00
endif ( )
if ( WITH_IMAGE_OPENEXR )
2013-12-20 13:32:51 +00:00
set ( OPENEXR_ROOT_DIR ${ LIBDIR } /openexr )
set ( OPENEXR_VERSION "2.1" )
find_package ( OPENEXR REQUIRED )
if ( NOT OPENEXR_FOUND )
message ( WARNING "Using HARDCODED OpenEXR locations" )
2013-06-17 18:15:56 +00:00
set ( OPENEXR ${ LIBDIR } /openexr )
2012-08-04 20:25:04 +00:00
set ( OPENEXR_INCLUDE_DIR ${ OPENEXR } /include )
2012-11-19 16:02:29 +00:00
set ( OPENEXR_INCLUDE_DIRS ${ OPENEXR } /include/OpenEXR )
2012-08-04 20:25:04 +00:00
set ( OPENEXR_LIBPATH ${ OPENEXR } /lib )
2012-08-04 12:43:45 +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
)
2013-12-20 13:32:51 +00:00
endif ( NOT OPENEXR_FOUND )
2010-12-08 08:43:06 +00:00
endif ( )
if ( WITH_IMAGE_TIFF )
2013-12-22 22:24:47 +00:00
# Try to find tiff first then complain and set static and maybe wrong paths
find_package ( TIFF )
if ( NOT TIFF_FOUND )
message ( WARNING "Using HARDCODED libtiff locations" )
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 ( )
2013-12-22 22:24:47 +00:00
endif ( )
2010-12-08 08:43:06 +00:00
if ( WITH_JACK )
2012-11-11 18:28:45 +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
2011-06-28 02:49:49 +00:00
)
2014-02-24 20:25:33 +00:00
set ( JACK_LIBRARIES optimized ${ LIBDIR } /jack/lib/libjack.lib debug ${ LIBDIR } /jack/lib/libjack_d.lib )
2010-12-08 08:43:06 +00:00
endif ( )
if ( WITH_PYTHON )
2013-06-17 18:00:38 +00:00
set ( PYTHON_VERSION 3.3 ) # CACHE STRING)
2012-11-26 12:38:40 +00:00
2013-03-24 12:13:13 +00:00
string ( REPLACE "." "" _PYTHON_VERSION_NO_DOTS ${ PYTHON_VERSION } )
2013-01-03 00:29:13 +00:00
# Use shared libs for vc2008 and vc2010 until we actually have vc2010 libs
set ( PYTHON_LIBRARY ${ LIBDIR } /python/lib/python ${ _PYTHON_VERSION_NO_DOTS } .lib )
2012-11-26 12:38:40 +00:00
unset ( _PYTHON_VERSION_NO_DOTS )
2013-05-14 16:16:25 +00:00
# Shared includes for both vc2008 and vc2010
2012-08-14 16:53:40 +00:00
set ( PYTHON_INCLUDE_DIR ${ LIBDIR } /python/include/python ${ PYTHON_VERSION } )
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 ( )
2010-09-16 07:26:06 +00:00
2011-11-07 15:44:09 +00:00
if ( WITH_BOOST )
2013-01-30 21:58:47 +00:00
if ( WITH_CYCLES_OSL )
2013-12-20 13:32:51 +00:00
set ( boost_extra_libs wave )
endif ( WITH_CYCLES_OSL )
2012-11-11 16:54:26 +00:00
if ( WITH_INTERNATIONAL )
2013-12-20 13:32:51 +00:00
list ( APPEND boost_extra_libs locale )
endif ( WITH_INTERNATIONAL )
find_package ( Boost COMPONENTS date_time filesystem thread regex system ${ boost_extra_libs } )
IF ( NOT Boost_FOUND )
message ( WARNING "USING HARDCODED boost locations" )
set ( BOOST ${ LIBDIR } /boost )
set ( BOOST_INCLUDE_DIR ${ BOOST } /include )
2014-01-27 08:24:44 +00:00
if ( MSVC12 )
set ( BOOST_LIBPATH ${ BOOST } /lib )
set ( BOOST_POSTFIX "vc120-mt-s-1_55.lib" )
set ( BOOST_DEBUG_POSTFIX "vc120-mt-sgd-1_55.lib" )
elseif ( MSVC11 )
2013-12-20 13:32:51 +00:00
set ( BOOST_LIBPATH ${ BOOST } /lib )
set ( BOOST_POSTFIX "vc110-mt-s-1_53.lib" )
set ( BOOST_DEBUG_POSTFIX "vc110-mt-sgd-1_53.lib" )
else ( )
set ( BOOST_LIBPATH ${ BOOST } /lib )
set ( BOOST_POSTFIX "vc90-mt-s-1_49.lib" )
set ( BOOST_DEBUG_POSTFIX "vc90-mt-sgd-1_49.lib" )
endif ( )
set ( BOOST_LIBRARIES
o p t i m i z e d l i b b o o s t _ d a t e _ t i m e - $ { B O O S T _ P O S T F I X } o p t i m i z e d l i b b o o s t _ f i l e s y s t e m - $ { B O O S T _ P O S T F I X }
o p t i m i z e d l i b b o o s t _ r e g e x - $ { B O O S T _ P O S T F I X }
o p t i m i z e d l i b b o o s t _ s y s t e m - $ { B O O S T _ P O S T F I X } o p t i m i z e d l i b b o o s t _ t h r e a d - $ { B O O S T _ P O S T F I X }
d e b u g l i b b o o s t _ d a t e _ t i m e - $ { B O O S T _ D E B U G _ P O S T F I X } d e b u g l i b b o o s t _ f i l e s y s t e m - $ { B O O S T _ D E B U G _ P O S T F I X }
d e b u g l i b b o o s t _ r e g e x - $ { B O O S T _ D E B U G _ P O S T F I X }
d e b u g l i b b o o s t _ s y s t e m - $ { B O O S T _ D E B U G _ P O S T F I X } d e b u g l i b b o o s t _ t h r e a d - $ { B O O S T _ D E B U G _ P O S T F I X } )
if ( WITH_CYCLES_OSL )
set ( BOOST_LIBRARIES ${ BOOST_LIBRARIES }
o p t i m i z e d l i b b o o s t _ w a v e - $ { B O O S T _ P O S T F I X }
d e b u g l i b b o o s t _ w a v e - $ { B O O S T _ D E B U G _ P O S T F I X } )
endif ( )
if ( WITH_INTERNATIONAL )
set ( BOOST_LIBRARIES ${ BOOST_LIBRARIES }
o p t i m i z e d l i b b o o s t _ l o c a l e - $ { B O O S T _ P O S T F I X }
d e b u g l i b b o o s t _ l o c a l e - $ { B O O S T _ D E B U G _ P O S T F I X } )
endif ( )
else ( ) # we found boost using find_package
set ( BOOST_INCLUDE_DIR ${ Boost_INCLUDE_DIRS } )
set ( BOOST_LIBRARIES ${ Boost_LIBRARIES } )
set ( BOOST_LIBPATH ${ Boost_LIBRARY_DIRS } )
2013-01-30 21:58:47 +00:00
endif ( )
2011-11-07 15:44:09 +00:00
set ( BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB" )
endif ( )
if ( WITH_OPENIMAGEIO )
2013-12-22 22:24:47 +00:00
find_package ( OpenImageIO )
2011-11-07 15:44:09 +00:00
set ( OPENIMAGEIO ${ LIBDIR } /openimageio )
set ( OPENIMAGEIO_INCLUDE_DIRS ${ OPENIMAGEIO } /include )
2012-11-19 18:07:55 +00:00
set ( OPENIMAGEIO_LIBRARIES optimized OpenImageIO debug OpenImageIO_d )
2012-08-04 12:43:45 +00:00
set ( OPENIMAGEIO_LIBPATH ${ OPENIMAGEIO } /lib )
2012-11-14 17:18:47 +00:00
set ( OPENIMAGEIO_DEFINITIONS "-DUSE_TBB=0" )
2011-11-07 15:44:09 +00:00
endif ( )
2012-12-09 01:42:26 +00:00
if ( WITH_LLVM )
set ( LLVM_DIRECTORY ${ LIBDIR } /llvm CACHE PATH "Path to the LLVM installation" )
2014-02-24 16:53:14 +00:00
file ( GLOB LLVM_LIBRARY_OPTIMIZED ${ LLVM_DIRECTORY } /lib/*.lib )
if ( EXISTS ${ LLVM_DIRECTORY } /debug/lib )
foreach ( LLVM_OPTIMIZED_LIB ${ LLVM_LIBRARY_OPTIMIZED } )
get_filename_component ( LIBNAME ${ LLVM_OPTIMIZED_LIB } ABSOLUTE )
list ( APPEND LLVM_LIBS optimized ${ LIBNAME } )
endforeach ( LLVM_OPTIMIZED_LIB )
file ( GLOB LLVM_LIBRARY_DEBUG ${ LLVM_DIRECTORY } /debug/lib/*.lib )
foreach ( LLVM_DEBUG_LIB ${ LLVM_LIBRARY_DEBUG } )
get_filename_component ( LIBNAME ${ LLVM_DEBUG_LIB } ABSOLUTE )
list ( APPEND LLVM_LIBS debug ${ LIBNAME } )
endforeach ( LLVM_DEBUG_LIB )
set ( LLVM_LIBRARY ${ LLVM_LIBS } )
else ( )
message ( WARNING "LLVM debug libs not present on this system. Using release libs for debug builds." )
set ( LLVM_LIBRARY ${ LLVM_LIBRARY_OPTIMIZED } )
endif ( )
2012-12-09 01:42:26 +00:00
endif ( )
2012-09-15 10:03:17 +00:00
if ( WITH_OPENCOLORIO )
set ( OPENCOLORIO ${ LIBDIR } /opencolorio )
set ( OPENCOLORIO_INCLUDE_DIRS ${ OPENCOLORIO } /include )
set ( OPENCOLORIO_LIBRARIES OpenColorIO )
2012-09-25 15:11:34 +00:00
set ( OPENCOLORIO_LIBPATH ${ LIBDIR } /opencolorio/lib )
2012-09-15 10:03:17 +00:00
set ( OPENCOLORIO_DEFINITIONS )
endif ( )
2013-12-22 22:24:47 +00:00
2012-09-15 10:03:17 +00:00
2013-12-22 22:24:47 +00:00
if ( WITH_MOD_CLOTH_ELTOPO )
set ( LAPACK ${ LIBDIR } /lapack )
# set(LAPACK_INCLUDE_DIR ${LAPACK}/include)
set ( LAPACK_LIBPATH ${ LAPACK } /lib )
set ( LAPACK_LIBRARIES
$ { L I B D I R } / l a p a c k / l i b / l i b f 2 c . l i b
$ { L I B D I R } / l a p a c k / l i b / c l a p a c k _ n o w r a p . l i b
$ { L I B D I R } / l a p a c k / l i b / B L A S _ n o w r a p . l i b
)
2010-12-08 08:43:06 +00:00
endif ( )
2010-10-18 12:35:40 +00:00
2012-04-26 18:18:09 +00:00
# used in many places so include globally, like OpenGL
2012-09-18 04:40:20 +00:00
blender_include_dirs_sys ( "${PTHREADS_INCLUDE_DIRS}" )
2012-04-26 18:18:09 +00:00
2012-04-23 01:11:42 +00:00
elseif ( CMAKE_COMPILER_IS_GNUCC )
2013-12-22 22:24:47 +00:00
# keep GCC specific stuff here
include ( CheckCSourceCompiles )
# Setup 64bit and 64bit windows systems
CHECK_C_SOURCE_COMPILES ( "
#ifndef __MINGW64__
#error
#endif
i n t main ( void ) { r e t u r n 0 ; }
"
W I T H _ M I N G W 6 4 )
if ( WITH_MINGW64 )
message ( STATUS "Compiling for 64 bit with MinGW-w64." )
set ( LIBDIR ${ CMAKE_SOURCE_DIR } /../lib/mingw64 )
else ( )
message ( STATUS "Compiling for 32 bit with MinGW-w32." )
set ( LIBDIR ${ CMAKE_SOURCE_DIR } /../lib/mingw32 )
if ( WITH_RAYOPTIMIZATION )
message ( WARNING "MinGW-w32 is known to be unstable with 'WITH_RAYOPTIMIZATION' option enabled." )
endif ( )
endif ( )
2012-04-23 01:11:42 +00:00
set ( PLATFORM_LINKLIBS "-lshell32 -lshfolder -lgdi32 -lmsvcrt -lwinmm -lmingw32 -lm -lws2_32 -lz -lstdc++ -lole32 -luuid -lwsock32 -lpsapi" )
set ( PLATFORM_CFLAGS "-pipe -funsigned-char -fno-strict-aliasing" )
2012-04-23 20:09:59 +00:00
if ( WITH_MINGW64 )
2012-04-24 16:14:23 +00:00
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive" )
2012-04-24 12:57:58 +00:00
set ( PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -lpthread" )
2012-04-23 20:09:59 +00:00
add_definitions ( -DFREE_WINDOWS64 -DMS_WIN64 )
endif ( )
2012-04-23 01:11:42 +00:00
add_definitions ( -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE )
2010-10-31 13:17:39 +00:00
2010-12-08 08:43:06 +00:00
add_definitions ( -DFREE_WINDOWS )
2010-10-03 23:27:33 +00:00
2012-04-23 01:11:42 +00:00
set ( PNG "${LIBDIR}/png" )
2011-12-18 23:32:24 +00:00
set ( PNG_INCLUDE_DIR "${PNG}/include" )
set ( PNG_LIBPATH ${ PNG } /lib ) # not cmake defined
2010-05-28 21:25:23 +00:00
2012-04-23 20:09:59 +00:00
if ( WITH_MINGW64 )
set ( JPEG_LIBRARIES jpeg )
else ( )
set ( JPEG_LIBRARIES libjpeg )
endif ( )
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
2013-12-22 22:24:47 +00:00
set ( JPEG "${LIBDIR}/jpeg" )
set ( JPEG_INCLUDE_DIR "${JPEG}/include" )
set ( JPEG_LIBPATH ${ JPEG } /lib ) # not cmake defined
2013-05-14 16:16:25 +00:00
# comes with own pthread library
2012-04-23 20:09:59 +00:00
if ( NOT WITH_MINGW64 )
set ( PTHREADS ${ LIBDIR } /pthreads )
2012-11-26 19:50:08 +00:00
#set(PTHREADS_INCLUDE_DIRS ${PTHREADS}/include)
2012-04-23 20:09:59 +00:00
set ( PTHREADS_LIBPATH ${ PTHREADS } /lib )
set ( PTHREADS_LIBRARIES pthreadGC2 )
endif ( )
2012-04-23 01:11:42 +00:00
set ( FREETYPE ${ LIBDIR } /freetype )
2010-12-08 08:43:06 +00:00
set ( FREETYPE_INCLUDE_DIRS ${ FREETYPE } /include ${ FREETYPE } /include/freetype2 )
set ( FREETYPE_LIBPATH ${ FREETYPE } /lib )
set ( FREETYPE_LIBRARY freetype )
if ( WITH_FFTW3 )
2012-04-23 01:11:42 +00:00
set ( FFTW3 ${ LIBDIR } /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 )
2012-04-23 01:11:42 +00:00
set ( OPENCOLLADA ${ LIBDIR } /opencollada )
2011-08-24 16:04:35 +00:00
set ( OPENCOLLADA_INCLUDE_DIRS
2013-04-02 02:05:03 +00:00
$ { O P E N C O L L A D A } / i n c l u d e / o p e n c o l l a d a / C O L L A D A S t r e a m W r i t e r
$ { O P E N C O L L A D A } / i n c l u d e / o p e n c o l l a d a / C O L L A D A B a s e U t i l s
$ { O P E N C O L L A D A } / i n c l u d e / o p e n c o l l a d a / C O L L A D A F r a m e w o r k
$ { O P E N C O L L A D A } / i n c l u d e / o p e n c o l l a d a / 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
$ { O P E N C O L L A D A } / i n c l u d e / o p e n c o l l a d a / G e n e r a t e d S a x P a r s e r
2011-08-24 16:04:35 +00:00
)
2013-03-28 18:02:24 +00:00
set ( OPENCOLLADA_LIBPATH ${ OPENCOLLADA } /lib/opencollada )
2013-04-02 13:07:01 +00:00
set ( OPENCOLLADA_LIBRARIES OpenCOLLADAStreamWriter OpenCOLLADASaxFrameworkLoader OpenCOLLADAFramework OpenCOLLADABaseUtils GeneratedSaxParser UTF MathMLSolver buffer ftoa xml )
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 )
2012-05-27 13:44:21 +00:00
set ( FFMPEG_INCLUDE_DIRS ${ FFMPEG } /include )
2012-05-10 11:37:41 +00:00
if ( WITH_MINGW64 )
set ( FFMPEG_LIBRARIES avcodec.dll avformat.dll avdevice.dll avutil.dll swscale.dll swresample.dll )
else ( )
2014-03-29 22:51:30 +00:00
set ( FFMPEG_LIBRARIES avcodec-55 avformat-55 avdevice-55 avutil-52 swscale-2 )
2012-05-10 11:37:41 +00:00
endif ( )
2010-12-08 08:43:06 +00:00
set ( FFMPEG_LIBPATH ${ FFMPEG } /lib )
endif ( )
if ( WITH_IMAGE_OPENEXR )
2012-08-04 11:39:16 +00:00
set ( OPENEXR ${ LIBDIR } /openexr )
2012-12-09 01:42:26 +00:00
set ( OPENEXR_INCLUDE_DIR ${ OPENEXR } /include )
2012-08-04 11:39:16 +00:00
set ( OPENEXR_INCLUDE_DIRS ${ OPENEXR } /include/OpenEXR )
set ( OPENEXR_LIBRARIES Half IlmImf Imath IlmThread Iex )
set ( OPENEXR_LIBPATH ${ OPENEXR } /lib )
2010-12-08 08:43:06 +00:00
endif ( )
if ( WITH_IMAGE_TIFF )
2012-04-23 01:11:42 +00:00
set ( TIFF ${ LIBDIR } /tiff )
2010-12-08 08:43:06 +00:00
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
2012-11-26 14:47:34 +00:00
set ( PYTHON_VERSION 3.3 ) # CACHE STRING)
2011-07-16 06:55:45 +00:00
set ( PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}" ) # CACHE PATH)
2012-11-26 14:47:34 +00:00
set ( PYTHON_LIBRARY "${LIBDIR}/python/lib/python33mw.lib" ) # CACHE FILEPATH)
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 ( )
2010-09-16 07:26:06 +00:00
2011-11-07 15:44:09 +00:00
if ( WITH_BOOST )
2011-11-08 17:19:14 +00:00
set ( BOOST ${ LIBDIR } /boost )
2011-11-07 15:44:09 +00:00
set ( BOOST_INCLUDE_DIR ${ BOOST } /include )
2012-04-23 20:09:59 +00:00
if ( WITH_MINGW64 )
set ( BOOST_POSTFIX "mgw47-mt-s-1_49" )
set ( BOOST_DEBUG_POSTFIX "mgw47-mt-sd-1_49" )
else ( )
2012-09-16 20:26:28 +00:00
set ( BOOST_POSTFIX "mgw46-mt-s-1_49" )
set ( BOOST_DEBUG_POSTFIX "mgw46-mt-sd-1_49" )
2012-10-21 05:46:41 +00:00
endif ( )
2011-11-07 15:44:09 +00:00
set ( BOOST_LIBRARIES
2011-11-08 16:03:28 +00:00
o p t i m i z e d b o o s t _ d a t e _ t i m e - $ { B O O S T _ P O S T F I X } b o o s t _ f i l e s y s t e m - $ { B O O S T _ P O S T F I X }
2012-09-24 19:53:33 +00:00
b o o s t _ r e g e x - $ { B O O S T _ P O S T F I X }
2012-09-24 19:06:28 +00:00
b o o s t _ s y s t e m - $ { B O O S T _ P O S T F I X } b o o s t _ t h r e a d - $ { B O O S T _ P O S T F I X }
2011-11-08 16:03:28 +00:00
d e b u g b o o s t _ d a t e _ t i m e - $ { B O O S T _ D E B U G _ P O S T F I X } b o o s t _ f i l e s y s t e m - $ { B O O S T _ D E B U G _ P O S T F I X }
2012-09-24 19:53:33 +00:00
b o o s t _ r e g e x - $ { B O O S T _ D E B U G _ P O S T F I X }
2012-09-24 20:37:18 +00:00
b o o s t _ s y s t e m - $ { B O O S T _ D E B U G _ P O S T F I X } b o o s t _ t h r e a d - $ { B O O S T _ D E B U G _ P O S T F I X } )
2012-11-11 16:54:26 +00:00
if ( WITH_INTERNATIONAL )
set ( BOOST_LIBRARIES ${ BOOST_LIBRARIES }
2012-11-11 22:50:28 +00:00
o p t i m i z e d b o o s t _ l o c a l e - $ { B O O S T _ P O S T F I X }
d e b u g b o o s t _ l o c a l e - $ { B O O S T _ D E B U G _ P O S T F I X } )
endif ( )
2013-01-13 12:32:37 +00:00
if ( WITH_CYCLES_OSL )
set ( BOOST_LIBRARIES ${ BOOST_LIBRARIES }
o p t i m i z e d b o o s t _ w a v e - $ { B O O S T _ P O S T F I X }
d e b u g b o o s t _ w a v e - $ { B O O S T _ D E B U G _ P O S T F I X } )
endif ( )
2012-04-23 01:11:42 +00:00
set ( BOOST_LIBPATH ${ BOOST } /lib )
2011-11-08 16:03:28 +00:00
set ( BOOST_DEFINITIONS "-DBOOST_ALL_NO_LIB -DBOOST_THREAD_USE_LIB " )
2011-11-07 15:44:09 +00:00
endif ( )
if ( WITH_OPENIMAGEIO )
2012-04-23 01:11:42 +00:00
set ( OPENIMAGEIO ${ LIBDIR } /openimageio )
2011-11-07 15:44:09 +00:00
set ( OPENIMAGEIO_INCLUDE_DIRS ${ OPENIMAGEIO } /include )
set ( OPENIMAGEIO_LIBRARIES OpenImageIO )
set ( OPENIMAGEIO_LIBPATH ${ OPENIMAGEIO } /lib )
2013-03-24 12:13:13 +00:00
set ( OPENIMAGEIO_DEFINITIONS "" )
2011-11-07 15:44:09 +00:00
endif ( )
2012-01-05 07:52:03 +00:00
2012-12-09 01:42:26 +00:00
if ( WITH_LLVM )
set ( LLVM_DIRECTORY ${ LIBDIR } /llvm CACHE PATH "Path to the LLVM installation" )
2013-09-25 16:31:54 +00:00
set ( LLVM_LIBPATH ${ LLVM_DIRECTORY } /lib )
2013-05-14 16:16:25 +00:00
# Explicitly set llvm lib order.
2012-12-09 01:42:26 +00:00
#---- WARNING ON GCC ORDER OF LIBS IS IMPORTANT, DO NOT CHANGE! ---------
set ( LLVM_LIBRARY LLVMSelectionDAG LLVMCodeGen LLVMScalarOpts LLVMAnalysis LLVMArchive
L L V M A s m P a r s e r L L V M A s m P r i n t e r
L L V M B i t R e a d e r L L V M B i t W r i t e r
L L V M D e b u g I n f o L L V M E x e c u t i o n E n g i n e
L L V M I n s t C o m b i n e L L V M I n s t r u m e n t a t i o n
L L V M I n t e r p r e t e r L L V M J I T
L L V M L i n k e r L L V M M C
L L V M M C D i s a s s e m b l e r L L V M M C J I T
L L V M M C P a r s e r L L V M O b j e c t
L L V M R u n t i m e D y l d
L L V M S u p p o r t
L L V M T a b l e G e n L L V M T a r g e t
L L V M T r a n s f o r m U t i l s L L V M V e c t o r i z e
L L V M X 8 6 A s m P a r s e r L L V M X 8 6 A s m P r i n t e r
L L V M X 8 6 C o d e G e n L L V M X 8 6 D e s c
L L V M X 8 6 D i s a s s e m b l e r L L V M X 8 6 I n f o
L L V M X 8 6 U t i l s L L V M i p a
L L V M i p o L L V M C o r e )
2013-05-14 16:16:25 +00:00
# imagehelp is needed by LLVM 3.1 on MinGW, check lib\Support\Windows\Signals.inc
2013-04-02 13:07:01 +00:00
set ( PLATFORM_LINKLIBS "${PLATFORM_LINKLIBS} -limagehlp" )
2012-12-09 01:42:26 +00:00
endif ( )
2012-09-15 10:03:17 +00:00
if ( WITH_OPENCOLORIO )
set ( OPENCOLORIO ${ LIBDIR } /opencolorio )
set ( OPENCOLORIO_INCLUDE_DIRS ${ OPENCOLORIO } /include )
set ( OPENCOLORIO_LIBRARIES OpenColorIO )
set ( OPENCOLORIO_LIBPATH ${ OPENCOLORIO } /lib )
set ( OPENCOLORIO_DEFINITIONS )
endif ( )
2011-11-08 16:03:28 +00:00
set ( PLATFORM_LINKFLAGS "-Xlinker --stack=2097152" )
2011-03-12 00:50:34 +00:00
2012-01-05 10:05:24 +00:00
## DISABLE - causes linking errors
2012-09-28 06:45:20 +00:00
## for re-distribution, so users dont need mingw installed
2012-01-05 10:05:24 +00:00
# set(PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -static-libgcc -static-libstdc++")
2012-01-05 07:52:03 +00:00
2010-12-08 08:43:06 +00:00
endif ( )
2013-12-22 22:24:47 +00:00
# Things common to both mingw and MSVC should go here
set ( WINTAB_INC ${ LIBDIR } /wintab/include )
if ( WITH_OPENAL )
set ( OPENAL ${ LIBDIR } /openal )
set ( OPENALDIR ${ LIBDIR } /openal )
2014-01-23 11:34:56 +00:00
set ( OPENAL_INCLUDE_DIR ${ OPENAL } /include )
if ( MSVC11 OR MSVC12 )
set ( OPENAL_LIBRARY openal32 )
else ( )
set ( OPENAL_LIBRARY wrap_oal )
endif ( )
2013-12-22 22:24:47 +00:00
set ( OPENAL_LIBPATH ${ OPENAL } /lib )
endif ( )
if ( WITH_CODEC_SNDFILE )
set ( SNDFILE ${ LIBDIR } /sndfile )
set ( SNDFILE_INCLUDE_DIRS ${ SNDFILE } /include )
set ( SNDFILE_LIBRARIES libsndfile-1 )
set ( SNDFILE_LIBPATH ${ SNDFILE } /lib ) # TODO, deprecate
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_RAYOPTIMIZATION AND SUPPORT_SSE_BUILD )
add_definitions ( -D__SSE__ -D__MMX__ )
endif ( )
if ( WITH_CYCLES_OSL )
set ( CYCLES_OSL ${ LIBDIR } /osl CACHE PATH "Path to OpenShadingLanguage installation" )
find_library ( OSL_LIB_EXEC NAMES oslexec PATHS ${ CYCLES_OSL } /lib )
find_library ( OSL_LIB_COMP NAMES oslcomp PATHS ${ CYCLES_OSL } /lib )
find_library ( OSL_LIB_QUERY NAMES oslquery PATHS ${ CYCLES_OSL } /lib )
2014-02-24 16:53:14 +00:00
find_library ( OSL_LIB_EXEC_DEBUG NAMES oslexec_d PATHS ${ CYCLES_OSL } /lib )
find_library ( OSL_LIB_COMP_DEBUG NAMES oslcomp_d PATHS ${ CYCLES_OSL } /lib )
find_library ( OSL_LIB_QUERY_DEBUG NAMES oslquery_d PATHS ${ CYCLES_OSL } /lib )
list ( APPEND OSL_LIBRARIES optimized ${ OSL_LIB_COMP } optimized ${ OSL_LIB_EXEC } optimized ${ OSL_LIB_QUERY } debug ${ OSL_LIB_EXEC_DEBUG } debug ${ OSL_LIB_COMP_DEBUG } debug ${ OSL_LIB_QUERY_DEBUG } )
2013-12-22 22:24:47 +00:00
find_path ( OSL_INCLUDES OSL/oslclosure.h PATHS ${ CYCLES_OSL } /include )
find_program ( OSL_COMPILER NAMES oslc PATHS ${ CYCLES_OSL } /bin )
if ( OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER )
set ( OSL_FOUND TRUE )
else ( )
message ( STATUS "OSL not found" )
endif ( )
endif ( )
2009-11-11 00:02:49 +00:00
2010-12-08 08:43:06 +00:00
elseif ( APPLE )
2012-03-10 16:21:48 +00:00
if ( ${ CMAKE_OSX_DEPLOYMENT_TARGET } STREQUAL "10.5" OR ${ CMAKE_OSX_DEPLOYMENT_TARGET } STRGREATER "10.5" )
2013-11-15 19:05:23 +00:00
set ( WITH_LIBS10.5 ON CACHE BOOL "Use 10.5 libs" FORCE ) # valid also for 10.6/7/8/9
2011-03-07 21:28:36 +00:00
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 )
2012-11-11 18:28:45 +00:00
find_library ( JACK_FRAMEWORK
N A M E S j a c k m p
)
set ( JACK_INCLUDE_DIRS ${ JACK_FRAMEWORK } /headers )
if ( NOT JACK_FRAMEWORK )
set ( WITH_JACK OFF )
endif ( )
2010-12-08 08:43:06 +00:00
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 )
2014-04-15 12:12:06 +00:00
# we use precompiled libraries for py 3.4 and up by default
set ( PYTHON_VERSION 3.4 )
2013-02-22 22:24:38 +00:00
if ( NOT WITH_PYTHON_MODULE AND NOT WITH_PYTHON_FRAMEWORK )
2012-01-16 20:10:38 +00:00
# normally cached but not since we include them with blender
2012-11-19 11:45:25 +00:00
set ( PYTHON_INCLUDE_DIR "${LIBDIR}/python/include/python${PYTHON_VERSION}m" )
2012-01-16 20:10:38 +00:00
# set(PYTHON_BINARY "${LIBDIR}/python/bin/python${PYTHON_VERSION}") # not used yet
2012-11-19 11:45:25 +00:00
set ( PYTHON_LIBRARY python ${ PYTHON_VERSION } m )
2012-01-16 20:10:38 +00:00
set ( PYTHON_LIBPATH "${LIBDIR}/python/lib/python${PYTHON_VERSION}" )
# set(PYTHON_LINKFLAGS "-u _PyMac_Error") # won't build with this enabled
else ( )
# module must be compiled against Python framework
set ( PYTHON_INCLUDE_DIR "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/include/python${PYTHON_VERSION}m" )
set ( PYTHON_BINARY "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/bin/python${PYTHON_VERSION}" )
#set(PYTHON_LIBRARY python${PYTHON_VERSION})
2013-02-05 19:49:53 +00:00
set ( PYTHON_LIBPATH "/Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/lib/python${PYTHON_VERSION}/config-${PYTHON_VERSION}m" )
2012-01-16 20:10:38 +00:00
#set(PYTHON_LINKFLAGS "-u _PyMac_Error -framework Python") # won't build with this enabled
endif ( )
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_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 )
2012-09-25 18:30:37 +00:00
set ( OPENEXR_INCLUDE_DIR ${ OPENEXR } /include )
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
2013-11-05 15:37:59 +00:00
set ( PLATFORM_CFLAGS "-pipe -funsigned-char" )
set ( PLATFORM_LINKFLAGS "-fexceptions -framework CoreServices -framework Foundation -framework IOKit -framework AppKit -framework Cocoa -framework Carbon -framework AudioUnit -framework AudioToolbox -framework CoreAudio" )
2013-11-06 01:45:15 +00:00
if ( WITH_CODEC_QUICKTIME )
2013-11-05 15:37:59 +00:00
set ( PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QTKit" )
if ( CMAKE_OSX_ARCHITECTURES MATCHES i386 )
2010-12-08 08:43:06 +00:00
set ( PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -framework QuickTime" )
2013-11-05 15:37:59 +00:00
# libSDL still needs 32bit carbon quicktime
2010-12-08 08:43:06 +00:00
endif ( )
2013-11-05 15:37:59 +00:00
endif ( )
2011-08-03 14:18:02 +00:00
2013-11-05 15:37:59 +00:00
# XXX - SOME MAC DEV PLEASE TEST WITH THE SDK INSTALLED!
# 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 ( 3DCONNEXION_CLIENT_FRAMEWORK
N A M E S 3 D c o n n e x i o n C l i e n t
)
if ( NOT 3DCONNEXION_CLIENT_FRAMEWORK )
set ( WITH_INPUT_NDOF OFF )
endif ( )
2011-08-07 15:06:35 +00:00
2013-11-05 15:37:59 +00:00
if ( WITH_INPUT_NDOF )
set ( PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework 3DconnexionClient" )
set ( NDOF_INCLUDE_DIRS /Library/Frameworks/3DconnexionClient.framework/Headers )
2011-08-03 14:18:02 +00:00
endif ( )
2013-11-05 15:37:59 +00:00
endif ( )
2012-11-11 16:54:26 +00:00
2012-11-11 18:06:10 +00:00
if ( WITH_JACK )
2013-09-10 18:56:33 +00:00
set ( PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -F/Library/Frameworks -weak_framework jackmp" )
2012-11-11 18:06:10 +00:00
endif ( )
2012-01-16 20:10:38 +00:00
2013-02-22 22:24:38 +00:00
if ( WITH_PYTHON_MODULE OR WITH_PYTHON_FRAMEWORK )
set ( PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} /Library/Frameworks/Python.framework/Versions/${PYTHON_VERSION}/Python" ) # force cmake to link right framework
2012-01-16 20:10:38 +00:00
endif ( )
2010-12-08 08:43:06 +00:00
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 )
2012-05-19 13:55:54 +00:00
set ( OPENCOLLADA_LIBRARIES "OpenCOLLADASaxFrameworkLoader -lOpenCOLLADAFramework -lOpenCOLLADABaseUtils -lOpenCOLLADAStreamWriter -lMathMLSolver -lGeneratedSaxParser -lUTF -lxml2 -lbuffer -lftoa" )
2013-05-14 16:16:25 +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 ( )
2013-03-24 12:13:13 +00:00
if ( WITH_INPUT_NDOF )
2011-06-27 23:24:24 +00:00
# linker needs "-weak_framework 3DconnexionClient"
endif ( )
2011-11-07 15:44:09 +00:00
if ( WITH_BOOST )
set ( BOOST ${ LIBDIR } /boost )
set ( BOOST_INCLUDE_DIR ${ BOOST } /include )
2012-11-19 19:10:31 +00:00
set ( BOOST_LIBRARIES boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt boost_wave-mt )
2013-03-24 12:13:13 +00:00
if ( WITH_INTERNATIONAL )
2012-11-11 16:54:26 +00:00
list ( APPEND BOOST_LIBRARIES boost_locale-mt )
endif ( )
2013-12-07 01:29:53 +00:00
if ( WITH_CYCLES_NETWORK )
list ( APPEND BOOST_LIBRARIES boost_serialization-mt )
endif ( )
2011-11-07 15:44:09 +00:00
set ( BOOST_LIBPATH ${ BOOST } /lib )
set ( BOOST_DEFINITIONS )
endif ( )
2014-04-13 16:04:35 +00:00
if ( WITH_INTERNATIONAL OR WITH_CODEC_FFMPEG )
set ( PLATFORM_LINKFLAGS "${PLATFORM_LINKFLAGS} -liconv" ) # boost_locale and ffmpeg needs it !
endif ( )
2011-11-07 15:44:09 +00:00
if ( WITH_OPENIMAGEIO )
set ( OPENIMAGEIO ${ LIBDIR } /openimageio )
set ( OPENIMAGEIO_INCLUDE_DIRS ${ OPENIMAGEIO } /include )
2012-10-11 10:15:37 +00:00
set ( OPENIMAGEIO_LIBRARIES ${ OPENIMAGEIO } /lib/libOpenImageIO.a ${ PNG_LIBRARIES } ${ JPEG_LIBRARIES } ${ TIFF_LIBRARY } ${ OPENEXR_LIBRARIES } ${ ZLIB_LIBRARIES } )
2011-11-07 15:44:09 +00:00
set ( OPENIMAGEIO_LIBPATH ${ OPENIMAGEIO } /lib ${ JPEG_LIBPATH } ${ PNG_LIBPATH } ${ TIFF_LIBPATH } ${ OPENEXR_LIBPATH } ${ ZLIB_LIBPATH } )
set ( OPENIMAGEIO_DEFINITIONS "-DOIIO_STATIC_BUILD" )
endif ( )
2012-09-15 10:03:17 +00:00
if ( WITH_OPENCOLORIO )
set ( OPENCOLORIO ${ LIBDIR } /opencolorio )
set ( OPENCOLORIO_INCLUDE_DIRS ${ OPENCOLORIO } /include )
set ( OPENCOLORIO_LIBRARIES OpenColorIO tinyxml yaml-cpp )
set ( OPENCOLORIO_LIBPATH ${ OPENCOLORIO } /lib )
set ( OPENCOLORIO_DEFINITIONS "-DOCIO_STATIC_BUILD" )
endif ( )
2012-10-06 11:00:45 +00:00
if ( WITH_LLVM )
set ( LLVM_DIRECTORY ${ LIBDIR } /llvm CACHE PATH "Path to the LLVM installation" )
2012-10-25 14:31:52 +00:00
set ( LLVM_VERSION "3.1" CACHE STRING "Version of LLVM to use" )
2012-11-09 03:10:29 +00:00
if ( EXISTS "${LLVM_DIRECTORY}/bin/llvm-config" )
2012-10-06 11:00:45 +00:00
set ( LLVM_CONFIG "${LLVM_DIRECTORY}/bin/llvm-config" )
else ( )
set ( LLVM_CONFIG llvm-config )
endif ( )
execute_process ( COMMAND ${ LLVM_CONFIG } --version
O U T P U T _ V A R I A B L E L L V M _ V E R S I O N
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E )
execute_process ( COMMAND ${ LLVM_CONFIG } --prefix
O U T P U T _ V A R I A B L E L L V M _ D I R E C T O R Y
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E )
execute_process ( COMMAND ${ LLVM_CONFIG } --libdir
2013-09-25 16:31:54 +00:00
O U T P U T _ V A R I A B L E L L V M _ L I B P A T H
2012-10-06 11:00:45 +00:00
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E )
find_library ( LLVM_LIBRARY
2012-11-09 03:10:29 +00:00
N A M E S L L V M A n a l y s i s # first of a whole bunch of libs to get
2013-09-25 16:31:54 +00:00
P A T H S $ { L L V M _ L I B P A T H } )
2012-10-06 11:00:45 +00:00
2013-09-25 16:31:54 +00:00
if ( LLVM_LIBRARY AND LLVM_DIRECTORY AND LLVM_LIBPATH )
2012-10-06 11:00:45 +00:00
if ( LLVM_STATIC )
# if static LLVM libraries were requested, use llvm-config to generate
# the list of what libraries we need, and substitute that in the right
# way for LLVM_LIBRARY.
execute_process ( COMMAND ${ LLVM_CONFIG } --libfiles
O U T P U T _ V A R I A B L E L L V M _ L I B R A R Y
O U T P U T _ S T R I P _ T R A I L I N G _ W H I T E S P A C E )
string ( REPLACE " " ";" LLVM_LIBRARY ${ LLVM_LIBRARY } )
endif ( )
else ( )
message ( FATAL_ERROR "LLVM not found." )
endif ( )
endif ( )
2012-09-10 08:38:51 +00:00
if ( WITH_CYCLES_OSL )
set ( CYCLES_OSL ${ LIBDIR } /osl CACHE PATH "Path to OpenShadingLanguage installation" )
find_library ( OSL_LIB_EXEC NAMES oslexec PATHS ${ CYCLES_OSL } /lib )
find_library ( OSL_LIB_COMP NAMES oslcomp PATHS ${ CYCLES_OSL } /lib )
find_library ( OSL_LIB_QUERY NAMES oslquery PATHS ${ CYCLES_OSL } /lib )
# WARNING! depends on correct order of OSL libs linking
2012-09-24 19:06:28 +00:00
list ( APPEND OSL_LIBRARIES ${ OSL_LIB_COMP } -force_load ${ OSL_LIB_EXEC } ${ OSL_LIB_QUERY } )
2012-09-10 08:38:51 +00:00
find_path ( OSL_INCLUDES OSL/oslclosure.h PATHS ${ CYCLES_OSL } /include )
find_program ( OSL_COMPILER NAMES oslc PATHS ${ CYCLES_OSL } /bin )
if ( OSL_INCLUDES AND OSL_LIBRARIES AND OSL_COMPILER )
set ( OSL_FOUND TRUE )
else ( )
message ( STATUS "OSL not found" )
endif ( )
endif ( )
2014-02-18 22:38:48 +00:00
if ( WITH_OPENMP AND CMAKE_C_COMPILER_ID MATCHES "Clang" AND NOT ${ CMAKE_C_COMPILER_VERSION } VERSION_LESS '3.4' )
2014-02-19 20:44:44 +00:00
set ( OPENMP_FOUND ON )
set ( OpenMP_C_FLAGS "-fopenmp" CACHE STRING "C compiler flags for OpenMP parallization" FORCE )
set ( OpenMP_CXX_FLAGS "-fopenmp" CACHE STRING "C++ compiler flags for OpenMP parallization" FORCE )
2014-02-18 22:38:48 +00:00
include_directories ( ${ LIBDIR } /openmp/include )
LINK_DIRECTORIES ( ${ LIBDIR } /openmp/lib )
2014-04-22 10:27:35 +00:00
execute_process ( COMMAND ditto -arch ${ CMAKE_OSX_ARCHITECTURES } ${ LIBDIR } /openmp/lib/libiomp5.dylib ${ CMAKE_BINARY_DIR } /bin/libiomp5.dylib ) # for intermediate binaries, lib id is @loader_path
2014-02-19 20:44:44 +00:00
else ( )
set ( OpenMP_C_FLAGS "" CACHE STRING "C compiler flags for OpenMP parallization" FORCE ) # unset
set ( OpenMP_CXX_FLAGS "" CACHE STRING "C++ compiler flags for OpenMP parallization" FORCE ) # unset
2014-02-18 22:38:48 +00:00
endif ( )
2012-09-10 08:38:51 +00:00
2010-12-08 08:43:06 +00:00
set ( EXETYPE MACOSX_BUNDLE )
2012-10-04 11:37:17 +00:00
set ( CMAKE_C_FLAGS_DEBUG "-fno-strict-aliasing -g" )
set ( CMAKE_CXX_FLAGS_DEBUG "-fno-strict-aliasing -g" )
2012-10-01 14:03:02 +00:00
if ( CMAKE_OSX_ARCHITECTURES MATCHES "x86_64" OR CMAKE_OSX_ARCHITECTURES MATCHES "i386" )
set ( CMAKE_CXX_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3" )
set ( CMAKE_C_FLAGS_RELEASE "-O2 -mdynamic-no-pic -msse -msse2 -msse3 -mssse3" )
2013-12-02 00:36:33 +00:00
if ( NOT CMAKE_C_COMPILER_ID MATCHES "Clang" )
2012-10-01 14:03:02 +00:00
set ( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller" )
set ( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -ftree-vectorize -fvariable-expansion-in-unroller" )
endif ( )
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 ( )
2013-09-09 12:15:14 +00:00
2013-10-24 18:46:00 +00:00
if ( ${ XCODE_VERSION } VERSION_EQUAL 5 OR ${ XCODE_VERSION } VERSION_GREATER 5 )
# Xcode 5 is always using CLANG, which has too low template depth of 128 for libmv
set ( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ftemplate-depth=1024" )
2013-09-10 19:23:39 +00:00
endif ( )
2010-12-08 08:43:06 +00:00
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 ( )
2012-12-05 15:46:31 +00:00
if ( NOT WITH_FFTW3 AND WITH_MOD_OCEANSIM )
message ( FATAL_ERROR "WITH_MOD_OCEANSIM requires WITH_FFTW3 to be ON" )
endif ( )
2012-07-01 15:26:25 +00:00
if ( WITH_CYCLES )
if ( NOT WITH_OPENIMAGEIO )
2013-09-23 13:21:27 +00:00
message ( FATAL_ERROR "Cycles requires WITH_OPENIMAGEIO, the library may not have been found. Configure OIIO or disable WITH_CYCLES" )
2012-07-01 15:26:25 +00:00
endif ( )
if ( NOT WITH_BOOST )
2013-09-23 13:21:27 +00:00
message ( FATAL_ERROR "Cycles requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_CYCLES" )
2012-07-01 15:26:25 +00:00
endif ( )
2012-10-06 11:00:45 +00:00
2012-11-15 17:16:27 +00:00
if ( WITH_CYCLES_OSL )
2012-10-06 11:00:45 +00:00
if ( NOT WITH_LLVM )
2013-09-23 13:21:27 +00:00
message ( FATAL_ERROR "Cycles OSL requires WITH_LLVM, the library may not have been found. Configure LLVM or disable WITH_CYCLES_OSL" )
2012-10-06 11:00:45 +00:00
endif ( )
endif ( )
2012-07-01 15:26:25 +00:00
endif ( )
2012-11-11 16:54:26 +00:00
if ( WITH_INTERNATIONAL )
if ( NOT WITH_BOOST )
2013-09-23 13:21:27 +00:00
message ( FATAL_ERROR "Internationalization requires WITH_BOOST, the library may not have been found. Configure BOOST or disable WITH_INTERNATIONAL" )
2012-11-11 16:54:26 +00:00
endif ( )
endif ( )
2012-07-01 15:26:25 +00:00
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
2012-08-07 12:03:43 +00:00
if ( MSVC )
2011-09-27 01:32:27 +00:00
# for some reason this fails on msvc
2011-09-19 08:02:17 +00:00
add_definitions ( -D__LITTLE_ENDIAN__ )
2012-08-07 13:51:19 +00:00
# OSX-Note: as we do crosscompiling with specific set architecture,
# endianess-detection and autosetting is counterproductive
# so we just set endianess according CMAKE_OSX_ARCHITECTURES
elseif ( CMAKE_OSX_ARCHITECTURES MATCHES i386 OR CMAKE_OSX_ARCHITECTURES MATCHES x86_64 )
add_definitions ( -D__LITTLE_ENDIAN__ )
elseif ( CMAKE_OSX_ARCHITECTURES MATCHES ppc OR CMAKE_OSX_ARCHITECTURES MATCHES ppc64 )
add_definitions ( -D__BIG_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 )
2012-06-23 14:23:44 +00:00
if ( WITH_SYSTEM_OPENJPEG )
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" )
2012-06-21 14:44:15 +00:00
add_definitions ( -DOPJ_STATIC )
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
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
2012-06-23 13:42:14 +00:00
if ( WITH_SYSTEM_GLEW )
2011-04-05 23:31:01 +00:00
find_package ( GLEW )
if ( NOT GLEW_FOUND )
2012-06-23 13:42:14 +00:00
message ( FATAL_ERROR "GLEW is required to build blender, install it or disable WITH_SYSTEM_GLEW" )
2011-04-05 23:31:01 +00:00
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
)
2012-06-23 13:42:14 +00:00
else ( )
# set(GLEW_LIBRARY "") # unused
set ( GLEW_INCLUDE_PATH "${CMAKE_SOURCE_DIR}/extern/glew/include" )
2011-04-05 23:31:01 +00:00
endif ( )
2013-01-03 00:23:52 +00:00
#-----------------------------------------------------------------------------
# Configure Bullet
if ( WITH_BULLET AND WITH_SYSTEM_BULLET )
find_package ( Bullet )
if ( NOT BULLET_FOUND )
set ( WITH_BULLET OFF )
endif ( )
else ( )
set ( BULLET_INCLUDE_DIRS "${CMAKE_SOURCE_DIR}/extern/bullet2/src" )
# set(BULLET_LIBRARIES "")
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 )
2012-09-15 01:52:28 +00:00
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
2012-09-15 01:52:28 +00:00
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-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 )
2012-09-16 01:35:00 +00:00
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_LOGICAL_OP -Wlogical-op )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_UNDEF -Wundef )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_INIT_SELF -Winit-self ) # needs -Wuninitialized
2012-09-20 01:02:39 +00:00
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_NO_NULL -Wnonnull ) # C only
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero )
2013-07-19 10:39:25 +00:00
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_TYPE_LIMITS -Wtype-limits )
2011-09-26 09:43:35 +00:00
2012-10-20 13:29:07 +00:00
# gcc 4.2 gives annoying warnings on every file with this
2013-03-24 12:13:13 +00:00
if ( NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3" )
2012-10-20 13:29:07 +00:00
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_UNINITIALIZED -Wuninitialized )
endif ( )
2013-03-14 13:00:00 +00:00
# versions before gcc4.6 give many BLI_math warnings
2013-03-24 12:13:13 +00:00
if ( NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.6" )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_REDUNDANT_DECLS -Wredundant-decls )
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_REDUNDANT_DECLS -Wredundant-decls )
2013-03-14 13:00:00 +00:00
endif ( )
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)
2012-01-01 16:46:08 +00:00
if ( NOT APPLE )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable )
endif ( )
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 )
2012-09-16 01:35:00 +00:00
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_LOGICAL_OP -Wlogical-op )
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_INIT_SELF -Winit-self ) # needs -Wuninitialized
2012-09-20 01:02:39 +00:00
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_MISSING_INCLUDE_DIRS -Wmissing-include-dirs )
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_NO_DIV_BY_ZERO -Wno-div-by-zero )
2013-07-19 10:39:25 +00:00
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_TYPE_LIMITS -Wtype-limits )
2012-10-01 16:45:50 +00:00
2012-10-20 13:29:07 +00:00
# gcc 4.2 gives annoying warnings on every file with this
2013-03-24 12:13:13 +00:00
if ( NOT "${CMAKE_C_COMPILER_VERSION}" VERSION_LESS "4.3" )
2012-10-20 13:29:07 +00:00
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_UNINITIALIZED -Wuninitialized )
endif ( )
2012-10-01 16:45:50 +00:00
# causes too many warnings
if ( NOT APPLE )
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_UNDEF -Wundef )
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_MISSING_DECLARATIONS -Wmissing-declarations )
endif ( )
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 )
2012-01-01 16:46:08 +00:00
if ( NOT APPLE )
2012-01-01 22:23:08 +00:00
ADD_CHECK_C_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS C_WARN_NO_ERROR_UNUSED_BUT_SET_VARIABLE -Wno-error=unused-but-set-variable )
2012-01-01 16:46:08 +00:00
endif ( )
2011-10-30 04:48:00 +00:00
2013-12-02 00:36:33 +00:00
elseif ( CMAKE_C_COMPILER_ID MATCHES "Clang" )
2012-06-11 12:13:41 +00:00
2012-09-15 01:52:28 +00:00
# strange, clang complains these are not supported, but then yses them.
2012-06-11 12:13:41 +00:00
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_ALL -Wall )
2013-02-26 21:58:06 +00:00
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 )
2012-06-11 12:13:41 +00:00
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts )
2012-09-15 01:52:28 +00:00
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_STRICT_PROTOTYPES -Wstrict-prototypes )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_MISSING_PROTOTYPES -Wmissing-prototypes )
2013-02-26 21:58:06 +00:00
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_UNUSED_PARAMETER -Wunused-parameter )
2012-06-11 12:13:41 +00:00
2012-09-20 09:19:49 +00:00
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_ALL -Wall )
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_NO_AUTOLOGICAL_COMPARE -Wno-tautological-compare )
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_NO_UNKNOWN_PRAGMAS -Wno-unknown-pragmas )
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_NO_CHAR_SUBSCRIPTS -Wno-char-subscripts )
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_NO_OVERLOADED_VIRTUAL -Wno-overloaded-virtual ) # we get a lot of these, if its a problem a dev needs to look into it.
2013-02-26 21:58:06 +00:00
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_NO_SIGN_COMPARE -Wno-sign-compare )
2012-09-20 09:19:49 +00:00
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_NO_INVALID_OFFSETOF -Wno-invalid-offsetof )
2013-02-26 21:58:06 +00:00
# gives too many unfixable warnings
# ADD_CHECK_C_COMPILER_FLAG(C_WARNINGS C_WARN_UNUSED_MACROS -Wunused-macros)
# ADD_CHECK_CXX_COMPILER_FLAG(CXX_WARNINGS CXX_WARN_UNUSED_MACROS -Wunused-macros)
2012-06-11 12:13:41 +00:00
2013-03-14 07:25:54 +00:00
# flags to undo strict flags
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_MACROS -Wno-unused-macros )
2013-07-15 08:26:16 +00:00
ADD_CHECK_C_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_VARIABLE_DECLARATIONS -Wno-missing-variable-declarations )
2013-11-22 00:30:40 +00:00
ADD_CHECK_C_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS C_WARN_NO_INCOMPAT_PTR_DISCARD_QUAL -Wno-incompatible-pointer-types-discards-qualifiers )
2013-07-15 08:26:16 +00:00
ADD_CHECK_C_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNUSED_FUNCTION -Wno-unused-function )
ADD_CHECK_C_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS C_WARN_NO_INT_TO_VOID_POINTER_CAST -Wno-int-to-void-pointer-cast )
ADD_CHECK_C_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_PROTOTYPES -Wno-missing-prototypes )
ADD_CHECK_C_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS C_WARN_NO_DUPLICATE_ENUM -Wno-duplicate-enum )
ADD_CHECK_C_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS C_WARN_NO_UNDEF -Wno-undef )
ADD_CHECK_C_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS C_WARN_NO_MISSING_NORETURN -Wno-missing-noreturn )
ADD_CHECK_CXX_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_PRIVATE_FIELD -Wno-unused-private-field )
ADD_CHECK_CXX_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_CXX11_NARROWING -Wno-c++11-narrowing )
ADD_CHECK_CXX_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_NON_VIRTUAL_DTOR -Wno-non-virtual-dtor )
ADD_CHECK_CXX_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_UNUSED_MACROS -Wno-unused-macros )
ADD_CHECK_CXX_COMPILER_FLAG ( CC_REMOVE_STRICT_FLAGS CXX_WARN_NO_REORDER -Wno-reorder )
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-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 ( )
2012-04-30 09:38:32 +00:00
2014-03-04 13:20:11 +00:00
if ( WIN32 )
# pass, we have this in an archive to extract
elseif ( WITH_PYTHON_INSTALL AND WITH_PYTHON_INSTALL_NUMPY )
2012-05-01 23:22:58 +00:00
# set but invalid
2013-03-16 20:49:46 +00:00
# -- disabled until we make numpy bundled with blender - campbell
2012-12-10 09:07:57 +00:00
if ( ( NOT ${ PYTHON_NUMPY_PATH } STREQUAL "" ) AND ( NOT ${ PYTHON_NUMPY_PATH } MATCHES NOTFOUND ) )
2012-12-04 17:54:32 +00:00
# if(NOT EXISTS "${PYTHON_NUMPY_PATH}/numpy")
# message(WARNING "PYTHON_NUMPY_PATH is invalid, numpy not found in '${PYTHON_NUMPY_PATH}' "
# "WITH_PYTHON_INSTALL_NUMPY option will be ignored when installing python")
# set(WITH_PYTHON_INSTALL_NUMPY OFF)
# endif()
2012-05-01 23:22:58 +00:00
# not set, so initialize
else ( )
string ( REPLACE "." ";" _PY_VER_SPLIT "${PYTHON_VERSION}" )
list ( GET _PY_VER_SPLIT 0 _PY_VER_MAJOR )
# re-cache
unset ( PYTHON_NUMPY_PATH CACHE )
find_path ( PYTHON_NUMPY_PATH
N A M E S
n u m p y
H I N T S
" $ { P Y T H O N _ L I B P A T H } / p y t h o n $ { P Y T H O N _ V E R S I O N } / "
" $ { P Y T H O N _ L I B P A T H } / p y t h o n $ { _ P Y _ V E R _ M A J O R } / "
P A T H _ S U F F I X E S
s i t e - p a c k a g e s
d i s t - p a c k a g e s
2012-05-05 14:33:36 +00:00
N O _ D E F A U L T _ P A T H
2012-05-01 23:22:58 +00:00
)
if ( NOT EXISTS "${PYTHON_NUMPY_PATH}" )
message ( WARNING "'numpy' path could not be found in:\n"
" ' $ { P Y T H O N _ L I B P A T H } / p y t h o n $ { P Y T H O N _ V E R S I O N } / s i t e - p a c k a g e s / n u m p y ' , "
" ' $ { P Y T H O N _ L I B P A T H } / p y t h o n $ { _ P Y _ V E R _ M A J O R } / s i t e - p a c k a g e s / n u m p y ' , "
" ' $ { P Y T H O N _ L I B P A T H } / p y t h o n $ { P Y T H O N _ V E R S I O N } / d i s t - p a c k a g e s / n u m p y ' , "
" ' $ { P Y T H O N _ L I B P A T H } / p y t h o n $ { _ P Y _ V E R _ M A J O R } / d i s t - p a c k a g e s / n u m p y ' , "
" W I T H _ P Y T H O N _ I N S T A L L _ N U M P Y o p t i o n w i l l b e i g n o r e d w h e n i n s t a l l i n g p y t h o n " )
set ( WITH_PYTHON_INSTALL_NUMPY OFF )
else ( )
message ( STATUS "numpy found at '${PYTHON_NUMPY_PATH}'" )
endif ( )
unset ( _PY_VER_SPLIT )
unset ( _PY_VER_MAJOR )
2012-04-30 09:38:32 +00:00
endif ( )
endif ( )
2014-03-04 18:39:53 +00:00
if ( WIN32 OR APPLE )
# pass, we have this in lib/python/site-packages
elseif ( WITH_PYTHON_INSTALL_REQUESTS )
if ( NOT EXISTS ${ PYTHON_LIBPATH } /python ${ PYTHON_VERSION } /site-packages/requests )
2014-03-25 20:02:42 +00:00
# gets annoying otherwise...
if ( FIRST_RUN )
message ( WARNING "'requests' path could not be found in:\n"
" ' $ { P Y T H O N _ L I B P A T H } / p y t h o n $ { P Y T H O N _ V E R S I O N } / s i t e - p a c k a g e s / r e q u e s t s ' \ n "
" W I T H _ P Y T H O N _ I N S T A L L _ R E Q U E S T S o p t i o n w i l l b e i g n o r e d w h e n i n s t a l l i n g p y t h o n " )
endif ( )
2014-03-04 18:39:53 +00:00
set ( WITH_PYTHON_INSTALL_REQUESTS OFF )
endif ( )
endif ( )
2011-07-16 06:55:45 +00:00
endif ( )
2013-03-16 20:49:46 +00:00
if ( WITH_GCC_MUDFLAP )
set ( PLATFORM_CFLAGS "${PLATFORM_CFLAGS} -fmudflapth -funwind-tables" )
set ( CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -lpthread -lmudflapth -rdynamic" )
ADD_CHECK_C_COMPILER_FLAG ( C_WARNINGS C_WARN_NO_ERROR_MUDFLAP -Wno-error=mudflap )
ADD_CHECK_CXX_COMPILER_FLAG ( CXX_WARNINGS CXX_WARN_NO_ERROR_MUDFLAP -Wno-error=mudflap )
endif ( )
2012-10-20 13:08:51 +00:00
# Include warnings first, so its possible to disable them with user defined flags
# eg: -Wno-uninitialized
set ( CMAKE_C_FLAGS "${C_WARNINGS} ${CMAKE_C_FLAGS} ${PLATFORM_CFLAGS}" )
set ( CMAKE_CXX_FLAGS "${CXX_WARNINGS} ${CMAKE_CXX_FLAGS} ${PLATFORM_CFLAGS}" )
2009-10-19 16:20:12 +00:00
2013-08-28 04:32:39 +00:00
# defined above, platform spesific but shared names
mark_as_advanced (
C Y C L E S _ O S L
O S L _ L I B _ E X E C
O S L _ C O M P I L E R
O S L _ L I B _ C O M P
O S L _ L I B _ Q U E R Y
O S L _ I N C L U D E S
)
mark_as_advanced (
L L V M _ C O N F I G
L L V M _ D I R E C T O R Y
L L V M _ L I B R A R Y
L L V M _ V E R S I O N
)
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 )
2012-06-25 10:35:24 +00:00
add_definitions ( -DWITH_CXX_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
2014-01-20 19:41:54 +00:00
if ( WITH_BLENDER OR WITH_PLAYER )
add_subdirectory ( source )
add_subdirectory ( intern )
add_subdirectory ( extern )
elseif ( WITH_CYCLES_STANDALONE )
add_subdirectory ( intern/cycles )
2014-01-25 13:19:32 +00:00
if ( NOT WITH_SYSTEM_GLEW )
2014-01-20 19:41:54 +00:00
add_subdirectory ( extern/glew )
endif ( )
endif ( )
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 )
2012-04-30 09:38:32 +00:00
while ( "32" GREATER "${_len}" )
2011-06-19 13:49:20 +00:00
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 ( )
2013-12-02 00:36:33 +00:00
message ( STATUS "C Compiler: \" ${ CMAKE_C_COMPILER_ID } \"")
message ( STATUS "C++ Compiler: \" ${ CMAKE_CXX_COMPILER_ID } \"")
2011-06-19 13:49:20 +00:00
info_cfg_text ( "Build Options:" )
info_cfg_option ( WITH_GAMEENGINE )
info_cfg_option ( WITH_PLAYER )
info_cfg_option ( WITH_BULLET )
2012-08-19 22:19:19 +00:00
info_cfg_option ( WITH_IK_SOLVER )
2011-06-19 13:49:20 +00:00
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-11-07 17:13:32 +00:00
info_cfg_option ( WITH_CYCLES )
2013-05-24 10:15:20 +00:00
info_cfg_option ( WITH_FREESTYLE )
2012-09-15 10:03:17 +00:00
info_cfg_option ( WITH_OPENCOLORIO )
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 )
2012-01-02 12:25:14 +00:00
info_cfg_option ( WITH_X11_XF86VMODE )
2011-06-19 13:49:20 +00:00
info_cfg_option ( WITH_X11_XINPUT )
2012-04-12 05:34:17 +00:00
info_cfg_option ( WITH_MEM_JEMALLOC )
2013-10-05 11:59:15 +00:00
info_cfg_option ( WITH_MEM_VALGRIND )
2012-06-23 14:23:44 +00:00
info_cfg_option ( WITH_SYSTEM_GLEW )
info_cfg_option ( WITH_SYSTEM_OPENJPEG )
2011-06-19 13:49:20 +00:00
info_cfg_text ( "Image Formats:" )
2013-10-13 09:35:54 +00:00
info_cfg_option ( WITH_OPENIMAGEIO )
2011-06-19 13:49:20 +00:00
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 )
2013-03-27 07:19:54 +00:00
info_cfg_option ( WITH_JACK_DYNLOAD )
2012-10-08 02:51:42 +00:00
info_cfg_option ( WITH_CODEC_AVI )
2011-06-19 13:49:20 +00:00
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 )
2012-04-30 09:38:32 +00:00
info_cfg_option ( WITH_PYTHON_INSTALL_NUMPY )
2011-06-19 13:49:20 +00:00
info_cfg_option ( WITH_PYTHON_MODULE )
info_cfg_option ( WITH_PYTHON_SAFETY )
2013-02-22 22:24:38 +00:00
if ( APPLE )
info_cfg_option ( WITH_PYTHON_FRAMEWORK )
endif ( )
2011-06-19 13:49:20 +00:00
info_cfg_text ( "Modifiers:" )
info_cfg_option ( WITH_MOD_BOOLEAN )
2011-12-31 03:34:44 +00:00
info_cfg_option ( WITH_MOD_REMESH )
2011-06-19 13:49:20 +00:00
info_cfg_option ( WITH_MOD_FLUID )
2011-11-13 14:16:43 +00:00
info_cfg_option ( WITH_MOD_OCEANSIM )
2011-06-19 13:49:20 +00:00
2013-11-25 04:33:41 +00:00
info_cfg_text ( "Other:" )
info_cfg_option ( WITH_OPENNL )
2013-01-31 23:25:06 +00:00
# debug
message ( STATUS "HAVE_STDBOOL_H = ${HAVE_STDBOOL_H}" )
2011-06-19 13:49:20 +00:00
info_cfg_text ( "" )
message ( "${_config_msg}" )
endif ( )