diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-03-13 14:33:31 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-03-13 14:36:01 +0300 |
commit | bb825d02f8570c408f4266dfa4eff53d2d0bf4f6 (patch) | |
tree | 3c452fcb5497c8c72a1fd8ebf7f109e5a89055a6 | |
parent | 61eab743f1377fdfcf44f2e4928290a3fc4ccfea (diff) |
CMake: unbundle LZO library
Patch T41989 by @hasufell
-rw-r--r-- | CMakeLists.txt | 10 | ||||
-rw-r--r-- | build_files/cmake/Modules/FindLZO.cmake | 68 | ||||
-rw-r--r-- | build_files/cmake/macros.cmake | 8 | ||||
-rw-r--r-- | extern/CMakeLists.txt | 2 | ||||
-rw-r--r-- | source/blender/blenkernel/CMakeLists.txt | 13 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/pointcache.c | 8 |
6 files changed, 102 insertions, 7 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt index 6bd589d650a..1a0beb53f5f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -309,6 +309,9 @@ endif() # Compression option(WITH_LZO "Enable fast LZO compression (used for pointcache)" ON) option(WITH_LZMA "Enable best LZMA compression, (used for pointcache)" ON) +if(UNIX AND NOT APPLE) + option(WITH_SYSTEM_LZO "Use the system LZO library" ON) +endif() # Camera/motion tracking option(WITH_LIBMV "Enable libmv structure from motion library" ON) @@ -797,6 +800,13 @@ if(UNIX AND NOT APPLE) find_package_wrapper(ZLIB REQUIRED) find_package_wrapper(Freetype REQUIRED) + if(WITH_LZO AND WITH_SYSTEM_LZO) + find_package_wrapper(LZO) + if(NOT LZO_FOUND) + message(FATAL_ERROR "Failed finding system LZO version!") + endif() + endif() + if(WITH_PYTHON) # No way to set py34. remove for now. # find_package(PythonLibs) diff --git a/build_files/cmake/Modules/FindLZO.cmake b/build_files/cmake/Modules/FindLZO.cmake new file mode 100644 index 00000000000..a21aa0a03bb --- /dev/null +++ b/build_files/cmake/Modules/FindLZO.cmake @@ -0,0 +1,68 @@ +# - Find LZO library +# Find the native LZO includes and library +# This module defines +# LZO_INCLUDE_DIRS, where to find lzo1x.h, Set when +# LZO_INCLUDE_DIR is found. +# LZO_LIBRARIES, libraries to link against to use LZO. +# LZO_ROOT_DIR, The base directory to search for LZO. +# This can also be an environment variable. +# LZO_FOUND, If false, do not try to use LZO. +# +# also defined, but not for general use are +# LZO_LIBRARY, where to find the LZO library. + +#============================================================================= +# Copyright 2015 Blender Foundation. +# +# Distributed under the OSI-approved BSD License (the "License"); +# see accompanying file Copyright.txt for details. +# +# This software is distributed WITHOUT ANY WARRANTY; without even the +# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the License for more information. +#============================================================================= + +# If LZO_ROOT_DIR was defined in the environment, use it. +IF(NOT LZO_ROOT_DIR AND NOT $ENV{LZO_ROOT_DIR} STREQUAL "") + SET(LZO_ROOT_DIR $ENV{LZO_ROOT_DIR}) +ENDIF() + +SET(_lzo_SEARCH_DIRS + ${LZO_ROOT_DIR} + /usr/local + /sw # Fink + /opt/local # DarwinPorts + /opt/csw # Blastwave +) + +FIND_PATH(LZO_INCLUDE_DIR lzo/lzo1x.h + HINTS + ${_lzo_SEARCH_DIRS} + PATH_SUFFIXES + include +) + +FIND_LIBRARY(LZO_LIBRARY + NAMES + lzo2 + HINTS + ${_lzo_SEARCH_DIRS} + PATH_SUFFIXES + lib64 lib + ) + +# handle the QUIETLY and REQUIRED arguments and set LZO_FOUND to TRUE if +# all listed variables are TRUE +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(LZO DEFAULT_MSG + LZO_LIBRARY LZO_INCLUDE_DIR) + +IF(LZO_FOUND) + SET(LZO_LIBRARIES ${LZO_LIBRARY}) + SET(LZO_INCLUDE_DIRS ${LZO_INCLUDE_DIR}) +ENDIF(LZO_FOUND) + +MARK_AS_ADVANCED( + LZO_INCLUDE_DIR + LZO_LIBRARY +) diff --git a/build_files/cmake/macros.cmake b/build_files/cmake/macros.cmake index 33c764402a2..b266602fa63 100644 --- a/build_files/cmake/macros.cmake +++ b/build_files/cmake/macros.cmake @@ -321,6 +321,9 @@ macro(setup_liblinks endif() endif() + if(WITH_LZO AND WITH_SYSTEM_LZO) + target_link_libraries(${target} ${LZO_LIBRARIES}) + endif() if(WITH_SYSTEM_GLEW) target_link_libraries(${target} ${BLENDER_GLEW_LIBRARIES}) endif() @@ -539,7 +542,6 @@ macro(SETUP_BLENDER_SORTED_LIBS) ge_phys_dummy ge_phys_bullet bf_intern_smoke - extern_minilzo extern_lzma extern_colamd ge_logic_ketsji @@ -593,6 +595,10 @@ macro(SETUP_BLENDER_SORTED_LIBS) list(APPEND BLENDER_SORTED_LIBS extern_eltopo) endif() + if(NOT WITH_SYSTEM_LZO) + list(APPEND BLENDER_SORTED_LIBS extern_minilzo) + endif() + if(NOT WITH_SYSTEM_GLEW) list(APPEND BLENDER_SORTED_LIBS ${BLENDER_GLEW_LIBRARIES}) endif() diff --git a/extern/CMakeLists.txt b/extern/CMakeLists.txt index 0ea8aa102e3..110c88f8e4a 100644 --- a/extern/CMakeLists.txt +++ b/extern/CMakeLists.txt @@ -66,7 +66,7 @@ if(WITH_IMAGE_REDCODE) add_subdirectory(libredcode) endif() -if(WITH_LZO) +if(WITH_LZO AND NOT WITH_SYSTEM_LZO) add_subdirectory(lzo) endif() diff --git a/source/blender/blenkernel/CMakeLists.txt b/source/blender/blenkernel/CMakeLists.txt index b3469ceae57..a826fe26e68 100644 --- a/source/blender/blenkernel/CMakeLists.txt +++ b/source/blender/blenkernel/CMakeLists.txt @@ -422,9 +422,16 @@ if(WITH_JACK) endif() if(WITH_LZO) - list(APPEND INC_SYS - ../../../extern/lzo/minilzo - ) + if(WITH_SYSTEM_LZO) + list(APPEND INC_SYS + ${LZO_INCLUDE_DIR} + ) + add_definitions(-DWITH_SYSTEM_LZO) + else() + list(APPEND INC_SYS + ../../../extern/lzo/minilzo + ) + endif() add_definitions(-DWITH_LZO) endif() diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c index e6d41063262..c477aabbb71 100644 --- a/source/blender/blenkernel/intern/pointcache.c +++ b/source/blender/blenkernel/intern/pointcache.c @@ -84,8 +84,12 @@ #endif #ifdef WITH_LZO -#include "minilzo.h" -#define LZO_HEAP_ALLOC(var,size) \ +# ifdef WITH_SYSTEM_LZO +# include <lzo/lzo1x.h> +# else +# include "minilzo.h" +# endif +# define LZO_HEAP_ALLOC(var,size) \ lzo_align_t __LZO_MMODEL var [ ((size) + (sizeof(lzo_align_t) - 1)) / sizeof(lzo_align_t) ] #endif |