Kouhei Sutou
null+****@clear*****
Tue Feb 23 23:40:30 JST 2016
Kouhei Sutou 2016-02-23 23:40:30 +0900 (Tue, 23 Feb 2016) New Revision: a01dd2586c902a0189a0eaf1d51b7424934bfc61 https://github.com/groonga/groonga/commit/a01dd2586c902a0189a0eaf1d51b7424934bfc61 Message: cmake: support bundling LZ4 Added files: bundled_lz4_version vendor/download_lz4.rb vendor/lz4/CMakeLists.txt vendor/lz4/Makefile.am vendor/lz4/lz4 Modified files: .gitignore CMakeLists.txt vendor/CMakeLists.txt vendor/Makefile.am Modified: .gitignore (+1 -0) =================================================================== --- .gitignore 2016-02-27 17:44:07 +0900 (ec3ec82) +++ .gitignore 2016-02-23 23:40:30 +0900 (ebd435c) @@ -53,6 +53,7 @@ cmake_install.cmake /vendor/mecab/mecab /vendor/mecab/mecab-dict-index /vendor/mecab/mecabrc +/vendor/lz4-* /vendor/plugins/*/ /groonga.spec /stamp-h1 Modified: CMakeLists.txt (+23 -8) =================================================================== --- CMakeLists.txt 2016-02-27 17:44:07 +0900 (b1fd03e) +++ CMakeLists.txt 2016-02-23 23:40:30 +0900 (c2600d1) @@ -365,19 +365,34 @@ if(NOT ${GRN_WITH_ZLIB} STREQUAL "no") endif() endif() +file(READ "${CMAKE_CURRENT_SOURCE_DIR}/bundled_lz4_version" + GRN_BUNDLED_LZ4_VERSION) +string(STRIP + "${GRN_BUNDLED_LZ4_VERSION}" + GRN_BUNDLED_LZ4_VERSION) +option(GRN_WITH_BUNDLED_LZ4 "use bundled LZ4" OFF) + set(GRN_WITH_LZ4 "auto" CACHE STRING "Support data compression by LZ4.") if(NOT ${GRN_WITH_LZ4} STREQUAL "no") - if(NOT DEFINED LIBLZ4_FOUND) - pkg_check_modules(LIBLZ4 liblz4) - endif() - if(LIBLZ4_FOUND) - set(GRN_WITH_LZ4 TRUE) + if(GRN_WITH_BUNDLED_LZ4) + set(LIBLZ4_INCLUDE_DIRS + "${CMAKE_CURRENT_SOURCE_DIR}/vendor/lz4-${GRN_BUNDLED_LZ4_VERSION}/lib") + set(LIBLZ4_LIBRARY_DIRS + "${CMAKE_CURRENT_SOURCE_DIR}/vendor/lz4") + set(LIBLZ4_LIBRARIES liblz4) else() - if(${GRN_WITH_LZ4} STREQUAL "yes") - message(FATAL_ERROR "No LZ4 found") + if(NOT DEFINED LIBLZ4_FOUND) + pkg_check_modules(LIBLZ4 liblz4) + endif() + if(LIBLZ4_FOUND) + set(GRN_WITH_LZ4 TRUE) + else() + if(${GRN_WITH_LZ4} STREQUAL "yes") + message(FATAL_ERROR "No LZ4 found") + endif() + set(GRN_WITH_LZ4 FALSE) endif() - set(GRN_WITH_LZ4 FALSE) endif() endif() Added: bundled_lz4_version (+1 -0) 100644 =================================================================== --- /dev/null +++ bundled_lz4_version 2016-02-23 23:40:30 +0900 (b3ca7e0) @@ -0,0 +1 @@ +r131 Modified: vendor/CMakeLists.txt (+2 -1) =================================================================== --- vendor/CMakeLists.txt 2016-02-27 17:44:07 +0900 (507f231) +++ vendor/CMakeLists.txt 2016-02-23 23:40:30 +0900 (51eb959) @@ -1,4 +1,4 @@ -# Copyright(C) 2013-2015 Brazil +# Copyright(C) 2013-2016 Brazil # # This library is free software; you can redistribute it and/or # modify it under the terms of the GNU Lesser General Public @@ -13,6 +13,7 @@ # License along with this library; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA +add_subdirectory(lz4) add_subdirectory(onigmo) add_subdirectory(mruby) add_subdirectory(mecab) Modified: vendor/Makefile.am (+2 -0) =================================================================== --- vendor/Makefile.am 2016-02-27 17:44:07 +0900 (2126c36) +++ vendor/Makefile.am 2016-02-23 23:40:30 +0900 (dbd14bb) @@ -1,6 +1,7 @@ NGINX_DIR = nginx-$(NGINX_VERSION) SUBDIRS = \ + lz4 \ onigmo \ mecab \ mruby @@ -9,6 +10,7 @@ EXTRA_DIST = \ $(NGINX_DIR) \ CMakeLists.txt \ plugins/CMakeLists.txt \ + download_lz4.rb \ download_mecab.rb dist-hook: Added: vendor/download_lz4.rb (+54 -0) 100755 =================================================================== --- /dev/null +++ vendor/download_lz4.rb 2016-02-23 23:40:30 +0900 (1795e40) @@ -0,0 +1,54 @@ +#!/usr/bin/env ruby + +require "pathname" +require "fileutils" +require "open-uri" +require "openssl" +require "rubygems/package" +require "zlib" + + �� debug = (ENV["DEBUG"] == "true" or ARGV.include?("--debug")) + +base_dir = Pathname.new(__FILE__).expand_path.dirname.parent + +lz4_version = (base_dir + "bundled_lz4_version").read.strip + +lz4_base = "lz4-#{lz4_version}" + +def extract_tar_gz(tar_gz_path) + Zlib::GzipReader.open(tar_gz_path) do |tar_io| + Gem::Package::TarReader.new(tar_io) do |tar| + tar.each do |entry| + p [entry.header.typeflag, entry.full_name] if @debug + if entry.directory? + FileUtils.mkdir_p(entry.full_name) + else + File.open(entry.full_name, "wb") do |file| + file.print(entry.read) + end + end + end + end + end +end + +def download(url, base) + ssl_verify_mode = nil + if /mingw/ =~ RUBY_PLATFORM + ssl_verify_mode = OpenSSL::SSL::VERIFY_NONE + end + + tar = "#{base}.tar" + tar_gz = "#{tar}.gz" + open(url, :ssl_verify_mode => ssl_verify_mode) do |remote_tar_gz| + File.open(tar_gz, "wb") do |local_tar_gz| + local_tar_gz.print(remote_tar_gz.read) + end + end + FileUtils.rm_rf(base) + extract_tar_gz(tar_gz) + FileUtils.rm_rf(tar_gz) +end + +download("https://github.com/Cyan4973/lz4/archive/#{lz4_version}.tar.gz", + lz4_base) Added: vendor/lz4/CMakeLists.txt (+91 -0) 100644 =================================================================== --- /dev/null +++ vendor/lz4/CMakeLists.txt 2016-02-23 23:40:30 +0900 (dc90143) @@ -0,0 +1,91 @@ +# Copyright(C) 2016 Brazil +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License version 2.1 as published by the Free Software Foundation. +# +# This library 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 +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + +set(LZ4_VERSION ${GRN_BUNDLED_LZ4_VERSION}) + +set(LZ4_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../lz4-${LZ4_VERSION}") +set(LZ4_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/../lz4-${LZ4_VERSION}") + +if(GRN_WITH_BUNDLED_LZ4) + include_directories( + BEFORE + ${LZ4_BINARY_DIR} + "${LZ4_SOURCE_DIR}/lib" + ) + + set(LIBLZ4_SOURCES + "${LZ4_SOURCE_DIR}/lib/lz4.c" + "${LZ4_SOURCE_DIR}/lib/lz4.h" + "${LZ4_SOURCE_DIR}/lib/lz4frame.c" + "${LZ4_SOURCE_DIR}/lib/lz4frame.h" + "${LZ4_SOURCE_DIR}/lib/lz4frame_static.h" + "${LZ4_SOURCE_DIR}/lib/lz4hc.c" + "${LZ4_SOURCE_DIR}/lib/lz4hc.h" + "${LZ4_SOURCE_DIR}/lib/xxhash.c" + "${LZ4_SOURCE_DIR}/lib/xxhash.h" + ) + set(LZ4_SOURCES + "${LZ4_SOURCE_DIR}/programs/lz4cli.c" + "${LZ4_SOURCE_DIR}/programs/lz4io.c" + "${LZ4_SOURCE_DIR}/programs/lz4io.h" + "${LZ4_SOURCE_DIR}/programs/bench.c" + ) + + set(LZ4_C_COMPILE_FLAGS "${GRN_C_COMPILE_FLAGS}") + + add_definitions("-DXXH_NAMESPACE=LZ4_") + set_source_files_properties(${LIBLZ4_SOURCES} + PROPERTIES + COMPILE_FLAGS "${LZ4_C_COMPILE_FLAGS}") + set_source_files_properties(${LZ4_SOURCES} + PROPERTIES + COMPILE_FLAGS "${LZ4_C_COMPILE_FLAGS}") + + if(GRN_BUNDLED) + add_library(liblz4 STATIC ${LIBLZ4_SOURCES}) + set_target_properties( + liblz4 + PROPERTIES + POSITION_INDEPENDENT_CODE ON) + else() + add_library(liblz4 SHARED ${LIBLZ4_SOURCES}) + endif() + if(NOT MSVC) + set_target_properties(liblz4 PROPERTIES OUTPUT_NAME "lz4") + endif() + + if(!GRN_BUNDLED) + add_executable(lz4 ${LZ4_SOURCES}) + target_link_libraries(lz4 liblz4) + + install(TARGETS liblz4 + ARCHIVE DESTINATION "${LIB_DIR}" + LIBRARY DESTINATION "${LIB_DIR}" + RUNTIME DESTINATION "${BIN_DIR}") + install(TARGETS lz4 + DESTINATION "${BIN_DIR}") + install(FILES + "${LZ4_SOURCE_DIR}/lib/lz4.h" + "${LZ4_SOURCE_DIR}/lib/lz4frame.h" + "${LZ4_SOURCE_DIR}/lib/lz4hc.h" + DESTINATION "${INCLUDE_DIR}") + endif() + + install(FILES + "${LZ4_SOURCE_DIR}/lib/LICENSE" + "${LZ4_SOURCE_DIR}/programs/COPYING" + "${LZ4_SOURCE_DIR}/README.md" + DESTINATION "${GRN_DATA_DIR}/lz4") +endif() Added: vendor/lz4/Makefile.am (+2 -0) 100644 =================================================================== --- /dev/null +++ vendor/lz4/Makefile.am 2016-02-23 23:40:30 +0900 (8a65232) @@ -0,0 +1,2 @@ +EXTRA_DIST = \ + CMakeLists.txt Added: vendor/lz4/lz4 (+0 -0) 100755 =================================================================== (Binary files differ) -------------- next part -------------- HTML����������������������������... 다운로드