CMake/Scons: automatically use ffmpeg, boost and openimageio from the svn lib/
authorBrecht Van Lommel <brechtvanlommel@pandora.be>
Fri, 11 Nov 2011 14:52:24 +0000 (14:52 +0000)
committerBrecht Van Lommel <brechtvanlommel@pandora.be>
Fri, 11 Nov 2011 14:52:24 +0000 (14:52 +0000)
directory if available, which should make building with ffmpeg and cycles easier.

If this folder is not available or another path is specified in user-config.py
or CMakeCache.txt, this should have no effect. Wiki build instructions now show
how to use these.
http://wiki.blender.org/index.php/Dev:2.5/Doc/Building_Blender/Linux

CMakeLists.txt
build_files/scons/config/linux-config.py

index 3b328669e48b3059107ae396d86f125fa62a0120..b8f7605875f577c724053dc75d860549b867ed0a 100644 (file)
@@ -361,6 +361,19 @@ if(UNIX AND NOT APPLE)
                set(CMAKE_LIBRARY_PATH "/usr/lib/x86_64-linux-gnu;${CMAKE_LIBRARY_PATH}")
        endif()
 
+       # set lib directory if it exists
+       if(CMAKE_SYSTEM_NAME MATCHES "Linux")
+               if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
+                       set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/linux64)
+               else()
+                       set(LIBDIR ${CMAKE_SOURCE_DIR}/../lib/linux)
+               endif()
+
+               if(NOT EXISTS ${LIBDIR})
+                       unset(LIBDIR)
+               endif()
+       endif()
+
        find_package(JPEG REQUIRED)
        find_package(PNG REQUIRED)
        find_package(ZLIB REQUIRED)
@@ -435,10 +448,17 @@ if(UNIX AND NOT APPLE)
        endif()
 
        if(WITH_CODEC_FFMPEG)
-               set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
+               # use lib dir if available and nothing else specified
+               if(LIBDIR AND NOT FFMPEG)
+                       set(FFMPEG ${LIBDIR}/ffmpeg CACHE PATH "FFMPEG Directory")
+                       set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale dirac_encoder mp3lame ogg orc-0.4 schroedinger-1.0 theora theoraenc theoradec vorbis vorbisenc vpx x264 xvidcore faad asound CACHE STRING "FFMPEG Libraries")
+               else()
+                       set(FFMPEG /usr CACHE PATH "FFMPEG Directory")
+                       set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
+               endif()
+
                mark_as_advanced(FFMPEG)
                set(FFMPEG_INCLUDE_DIRS ${FFMPEG}/include)
-               set(FFMPEG_LIBRARIES avformat avcodec avutil avdevice swscale CACHE STRING "FFMPEG Libraries")
                mark_as_advanced(FFMPEG_LIBRARIES)
                set(FFMPEG_LIBPATH ${FFMPEG}/lib)
                set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -D__STDC_CONSTANT_MACROS")
@@ -504,6 +524,10 @@ if(UNIX AND NOT APPLE)
        endif()
 
        if(WITH_BOOST)
+               # use lib dir if available and nothing else specified
+               if(LIBDIR AND NOT BOOST_ROOT)
+                       set(BOOST_ROOT ${LIBDIR}/boost)
+               endif()
                
                # uses in build instructions to override include and library variables
                if(NOT BOOST_CUSTOM)
@@ -519,6 +543,11 @@ if(UNIX AND NOT APPLE)
        endif()
 
        if(WITH_OPENIMAGEIO)
+               # use lib dir if available and nothing else specified
+               if(LIBDIR AND NOT OPENIMAGEIO_ROOT_DIR)
+                       set(OPENIMAGEIO_ROOT_DIR ${LIBDIR}/openimageio)
+               endif()
+
                find_package(OpenImageIO)
 
                set(OPENIMAGEIO_LIBRARIES ${OPENIMAGEIO_LIBRARIES} ${PNG_LIBRARIES} ${JPEG_LIBRARIES} ${TIFF_LIBRARY} ${OPENEXR_LIBRARIES} ${ZLIB_LIBRARIES} ${BOOST_LIBRARIES})
index 1ac1db62a2885e604aab48d64144ff9932d06796..4921ab50595b99e22652dbfd5c52982a46ec0b50 100644 (file)
@@ -1,5 +1,12 @@
-LCGDIR = '../lib/linux'
-LIBDIR = "${LCGDIR}"
+# find library directory
+import platform
+import os
+bitness = platform.architecture()[0]
+if bitness == '64bit':
+    LCGDIR = '../lib/linux64'
+else:
+    LCGDIR = '../lib/linux'
+LIBDIR = "#${LCGDIR}"
 
 BF_PYTHON_ABI_FLAGS = 'm'  # Most common for linux distros
 BF_PYTHON = '/usr'
@@ -113,7 +120,18 @@ WITH_BF_BINRELOC = True
 
 # enable ffmpeg  support
 WITH_BF_FFMPEG = True  # -DWITH_FFMPEG
-BF_FFMPEG = '/usr'
+BF_FFMPEG = LIBDIR + '/ffmpeg'
+if os.path.exists(LCGDIR + '/ffmpeg'):
+    WITH_BF_STATICFFMPEG = True
+    BF_FFMPEG_LIB_STATIC = '${BF_FFMPEG_LIBPATH}/libavformat.a ${BF_FFMPEG_LIBPATH}/libswscale.a ' + \
+        '${BF_FFMPEG_LIBPATH}/libavcodec.a ${BF_FFMPEG_LIBPATH}/libavdevice.a ${BF_FFMPEG_LIBPATH}/libavutil.a ' + \
+        '${BF_FFMPEG_LIBPATH}/libxvidcore.a ${BF_FFMPEG_LIBPATH}/libx264.a ${BF_FFMPEG_LIBPATH}/libmp3lame.a ' + \
+        '${BF_FFMPEG_LIBPATH}/libvpx.a ${BF_FFMPEG_LIBPATH}/libvorbis.a ${BF_FFMPEG_LIBPATH}/libogg.a ' + \
+        '${BF_FFMPEG_LIBPATH}/libvorbisenc.a ${BF_FFMPEG_LIBPATH}/libtheora.a ' + \
+        '${BF_FFMPEG_LIBPATH}/libschroedinger-1.0.a ${BF_FFMPEG_LIBPATH}/liborc-0.4.a ${BF_FFMPEG_LIBPATH}/libdirac_encoder.a ' + \
+        '${BF_FFMPEG_LIBPATH}/libfaad.a'
+else:
+    BF_FFMPEG = '/usr'
 BF_FFMPEG_LIB = 'avformat avcodec swscale avutil avdevice'
 BF_FFMPEG_INC = '${BF_FFMPEG}/include'
 BF_FFMPEG_LIBPATH='${BF_FFMPEG}/lib'
@@ -178,20 +196,26 @@ BF_JEMALLOC_LIBPATH = '${BF_JEMALLOC}/lib'
 BF_JEMALLOC_LIB = 'jemalloc'
 BF_JEMALLOC_LIB_STATIC = '${BF_JEMALLOC_LIBPATH}/libjemalloc.a'
 
-WITH_BF_CYCLES = False
-
-WITH_BF_OIIO = True
+WITH_BF_OIIO = True 
 BF_OIIO = LIBDIR + '/openimageio'
+if not os.path.exists(LCGDIR + '/openimageio'):
+    WITH_BF_OIIO = False
+    BF_OIIO = '/usr'
 BF_OIIO_INC = BF_OIIO + '/include'
 BF_OIIO_LIB = 'OpenImageIO'
 BF_OIIO_LIBPATH = BF_OIIO + '/lib'
 
 WITH_BF_BOOST = True
 BF_BOOST = LIBDIR + '/boost'
+if not os.path.exists(LCGDIR + '/boost'):
+    WITH_BF_BOOST = False
+    BF_BOOST = '/usr'
 BF_BOOST_INC = BF_BOOST + '/include'
 BF_BOOST_LIB = 'boost_date_time-mt boost_filesystem-mt boost_regex-mt boost_system-mt boost_thread-mt'
 BF_BOOST_LIBPATH = BF_BOOST + '/lib'
 
+WITH_BF_CYCLES = WITH_BF_OIIO and WITH_BF_BOOST
+
 WITH_BF_OPENMP = True
 
 #Ray trace optimization