[Bf-blender-cvs] [bb825d0] master: CMake: unbundle LZO library

Campbell Barton noreply at git.blender.org
Fri Mar 13 12:36:32 CET 2015


Commit: bb825d02f8570c408f4266dfa4eff53d2d0bf4f6
Author: Campbell Barton
Date:   Fri Mar 13 22:33:31 2015 +1100
Branches: master
https://developer.blender.org/rBbb825d02f8570c408f4266dfa4eff53d2d0bf4f6

CMake: unbundle LZO library

Patch T41989 by @hasufell

===================================================================

M	CMakeLists.txt
A	build_files/cmake/Modules/FindLZO.cmake
M	build_files/cmake/macros.cmake
M	extern/CMakeLists.txt
M	source/blender/blenkernel/CMakeLists.txt
M	source/blender/blenkernel/intern/pointcache.c

===================================================================

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 6bd589d..1a0beb5 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 0000000..a21aa0a
--- /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 33c7644..b266602 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 0ea8aa1..110c88f 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 b3469ce..a826fe2 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 e6d4106..c477aab 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




More information about the Bf-blender-cvs mailing list