Kouhei Sutou
null+****@clear*****
Sun May 22 00:31:24 JST 2016
Kouhei Sutou 2016-05-22 00:31:24 +0900 (Sun, 22 May 2016) New Revision: ec9dcf3a004f61f7ba7080e849f25f00f3a84032 https://github.com/groonga/groonga/commit/ec9dcf3a004f61f7ba7080e849f25f00f3a84032 Message: cmake: support building with bundled MessagePack Added files: bundled_message_pack_version vendor/download_message_pack.rb vendor/message_pack/CMakeLists.txt vendor/message_pack/Makefile.am Modified files: .gitignore CMakeLists.txt configure.ac lib/CMakeLists.txt vendor/CMakeLists.txt vendor/Makefile.am Modified: .gitignore (+1 -0) =================================================================== --- .gitignore 2016-05-21 22:04:48 +0900 (2f935b3) +++ .gitignore 2016-05-22 00:31:24 +0900 (7e1903d) @@ -56,6 +56,7 @@ cmake_install.cmake /vendor/mecab/mecab /vendor/mecab/mecab-dict-index /vendor/mecab/mecabrc +/vendor/msgpack-* /vendor/lz4-* /vendor/plugins/*/ /groonga.spec Modified: CMakeLists.txt (+34 -20) =================================================================== --- CMakeLists.txt 2016-05-21 22:04:48 +0900 (3b5652e) +++ CMakeLists.txt 2016-05-22 00:31:24 +0900 (c793467) @@ -551,34 +551,48 @@ else() set(GRN_WITH_LIBEVENT FALSE) endif() +file(READ "${CMAKE_CURRENT_SOURCE_DIR}/bundled_message_pack_version" + GRN_BUNDLED_MESSAGE_PACK_VERSION) +string(STRIP + "${GRN_BUNDLED_MESSAGE_PACK_VERSION}" + GRN_BUNDLED_MESSAGE_PACK_VERSION) + set(GRN_WITH_MESSAGE_PACK "auto" CACHE STRING "use MessagePack for suggestion") if(NOT ${GRN_WITH_MESSAGE_PACK} STREQUAL "no") - if(NOT DEFINED MESSAGE_PACK_FOUND) - pkg_check_modules(MESSAGE_PACK msgpack) - endif() - if(MESSAGE_PACK_FOUND) - set(GRN_WITH_MESSAGE_PACK TRUE) + if(GRN_WITH_BUNDLED_MESSAGE_PACK) + set(MESSAGE_PACK_INCLUDE_DIRS + "${CMAKE_CURRENT_SOURCE_DIR}/vendor/msgpack-${GRN_BUNDLED_MESSAGE_PACK_VERSION}/include") + set(MESSAGE_PACK_LIBRARY_DIRS + "${CMAKE_CURRENT_BUILD_DIR}/vendor/message_pack") + set(MESSAGE_PACK_LIBRARIES msgpackc) else() - if("${GRN_WITH_MESSAGE_PACK}" STREQUAL "yes" OR - "${GRN_WITH_MESSAGE_PACK}" STREQUAL "auto") - set(MESSAGE_PACK_INCLUDE_DIRS "") - set(MESSAGE_PACK_LIBRARY_DIRS "") - else() - set(MESSAGE_PACK_INCLUDE_DIRS "${GRN_WITH_MESSAGE_PACK}/include") - set(MESSAGE_PACK_LIBRARY_DIRS "${GRN_WITH_MESSAGE_PACK}/lib") + if(NOT DEFINED MESSAGE_PACK_FOUND) + pkg_check_modules(MESSAGE_PACK msgpack) endif() - set(CMAKE_REQUIRED_INCLUDES_SAVE ${CMAKE_REQUIRED_INCLUDES}) - ac_check_lib(msgpack msgpack_version "${MESSAGE_PACK_LIBRARY_DIRS}") - set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_SAVE}) - if(HAVE_LIBMSGPACK) - set(MESSAGE_PACK_LIBRARIES "msgpack") + if(MESSAGE_PACK_FOUND) set(GRN_WITH_MESSAGE_PACK TRUE) else() - if(${GRN_WITH_MESSAGE_PACK} STREQUAL "yes") - message(FATAL_ERROR "No MessagePack found") + if("${GRN_WITH_MESSAGE_PACK}" STREQUAL "yes" OR + "${GRN_WITH_MESSAGE_PACK}" STREQUAL "auto") + set(MESSAGE_PACK_INCLUDE_DIRS "") + set(MESSAGE_PACK_LIBRARY_DIRS "") + else() + set(MESSAGE_PACK_INCLUDE_DIRS "${GRN_WITH_MESSAGE_PACK}/include") + set(MESSAGE_PACK_LIBRARY_DIRS "${GRN_WITH_MESSAGE_PACK}/lib") + endif() + set(CMAKE_REQUIRED_INCLUDES_SAVE ${CMAKE_REQUIRED_INCLUDES}) + ac_check_lib(msgpack msgpack_version "${MESSAGE_PACK_LIBRARY_DIRS}") + set(CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES_SAVE}) + if(HAVE_LIBMSGPACK) + set(MESSAGE_PACK_LIBRARIES "msgpack") + set(GRN_WITH_MESSAGE_PACK TRUE) + else() + if(${GRN_WITH_MESSAGE_PACK} STREQUAL "yes") + message(FATAL_ERROR "No MessagePack found") + endif() + set(GRN_WITH_MESSAGE_PACK FALSE) endif() - set(GRN_WITH_MESSAGE_PACK FALSE) endif() endif() else() Added: bundled_message_pack_version (+1 -0) 100644 =================================================================== --- /dev/null +++ bundled_message_pack_version 2016-05-22 00:31:24 +0900 (347f583) @@ -0,0 +1 @@ +1.4.1 Modified: configure.ac (+4 -0) =================================================================== --- configure.ac 2016-05-21 22:04:48 +0900 (860c703) +++ configure.ac 2016-05-22 00:31:24 +0900 (0c53914) @@ -322,6 +322,7 @@ AC_CONFIG_FILES([ vendor/lz4/Makefile vendor/onigmo/Makefile vendor/mecab/Makefile + vendor/message_pack/Makefile vendor/mruby/Makefile ]) @@ -1198,6 +1199,9 @@ AC_SUBST(LIBEVENT_CFLAGS) AC_SUBST(LIBEVENT_LIBS) # MessagePack +BUNDLED_MESSAGE_PACK_VERSION=m4_include([bundled_message_pack_version]) +AC_SUBST(BUNDLED_MESSAGE_PACK_VERSION) + AC_ARG_ENABLE(message-pack, [AS_HELP_STRING([--disable-message-pack], [Disable MessagePack support. [default=auto-detect]])], Modified: lib/CMakeLists.txt (+5 -2) =================================================================== --- lib/CMakeLists.txt 2016-05-21 22:04:48 +0900 (ebdec53) +++ lib/CMakeLists.txt 2016-05-22 00:31:24 +0900 (9d6b45b) @@ -21,9 +21,11 @@ include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/dat ${ONIGMO_INCLUDE_DIRS} ${MRUBY_INCLUDE_DIRS} - ${LIBLZ4_INCLUDE_DIRS}) + ${LIBLZ4_INCLUDE_DIRS} + ${MESSAGE_PACK_INCLUDE_DIRS}) link_directories( - ${LIBLZ4_LIBRARY_DIRS}) + ${LIBLZ4_LIBRARY_DIRS} + ${MESSAGE_PACK_LIBRARY_DIRS}) read_file_list(${CMAKE_CURRENT_SOURCE_DIR}/sources.am LIBGROONGA_SOURCES) read_file_list(${CMAKE_CURRENT_SOURCE_DIR}/dat/sources.am LIBGRNDAT_SOURCES) @@ -91,6 +93,7 @@ set(GRN_ALL_LIBRARIES ${PTHREAD_LIBS} ${Z_LIBS} ${LIBLZ4_LIBRARIES} + ${MESSAGE_PACK_LIBRARIES} ${DL_LIBS} ${M_LIBS} ${WS2_32_LIBS} Modified: vendor/CMakeLists.txt (+1 -0) =================================================================== --- vendor/CMakeLists.txt 2016-05-21 22:04:48 +0900 (51eb959) +++ vendor/CMakeLists.txt 2016-05-22 00:31:24 +0900 (9a92390) @@ -17,3 +17,4 @@ add_subdirectory(lz4) add_subdirectory(onigmo) add_subdirectory(mruby) add_subdirectory(mecab) +add_subdirectory(message_pack) Modified: vendor/Makefile.am (+2 -0) =================================================================== --- vendor/Makefile.am 2016-05-21 22:04:48 +0900 (cf31372) +++ vendor/Makefile.am 2016-05-22 00:31:24 +0900 (c360c57) @@ -4,6 +4,7 @@ SUBDIRS = \ lz4 \ onigmo \ mecab \ + message_pack \ mruby EXTRA_DIST = \ @@ -11,6 +12,7 @@ EXTRA_DIST = \ CMakeLists.txt \ plugins/CMakeLists.txt \ download_lz4.rb \ + download_message_pack.rb \ download_mecab.rb dist-hook: Added: vendor/download_message_pack.rb (+54 -0) 100755 =================================================================== --- /dev/null +++ vendor/download_message_pack.rb 2016-05-22 00:31:24 +0900 (b2f09af) @@ -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 + +message_pack_version = (base_dir + "bundled_message_pack_version").read.strip + +message_pack_base = "msgpack-#{message_pack_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/msgpack/msgpack-c/releases/download/cpp-#{message_pack_version}/msgpack-#{message_pack_version}.tar.gz", + message_pack_base) Added: vendor/message_pack/CMakeLists.txt (+48 -0) 100644 =================================================================== --- /dev/null +++ vendor/message_pack/CMakeLists.txt 2016-05-22 00:31:24 +0900 (75de91d) @@ -0,0 +1,48 @@ +# 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(MESSAGE_PACK_VERSION ${GRN_BUNDLED_MESSAGE_PACK_VERSION}) + +set(MESSAGE_PACK_SOURCE_DIR + "${CMAKE_CURRENT_SOURCE_DIR}/../msgpack-${MESSAGE_PACK_VERSION}") + +if(GRN_WITH_BUNDLED_MESSAGE_PACK) + include_directories( + BEFORE + ${MESSAGE_PACK_SOURCE_DIR}/include + ) + + set(MESSAGE_PACK_SOURCES + "${MESSAGE_PACK_SOURCE_DIR}/src/objectc.c" + "${MESSAGE_PACK_SOURCE_DIR}/src/unpack.c" + "${MESSAGE_PACK_SOURCE_DIR}/src/version.c" + "${MESSAGE_PACK_SOURCE_DIR}/src/vrefbuffer.c" + "${MESSAGE_PACK_SOURCE_DIR}/src/zone.c" + ) + + set_source_files_properties(${MESSAGE_PACK_SOURCES} + PROPERTIES + COMPILE_FLAGS "${GRN_C_COMPILE_FLAGS}") + + add_library(msgpackc SHARED ${MESSAGE_PACK_SOURCES}) + install(TARGETS msgpackc + ARCHIVE DESTINATION "${LIB_DIR}" + LIBRARY DESTINATION "${LIB_DIR}" + RUNTIME DESTINATION "${BIN_DIR}") + install(DIRECTORY + "${MESSAGE_PACK_SOURCE_DIR}/include/" + DESTINATION "${INCLUDE_DIR}" + FILES_MATCHING PATTERN "*.h") +endif() Added: vendor/message_pack/Makefile.am (+2 -0) 100644 =================================================================== --- /dev/null +++ vendor/message_pack/Makefile.am 2016-05-22 00:31:24 +0900 (8a65232) @@ -0,0 +1,2 @@ +EXTRA_DIST = \ + CMakeLists.txt -------------- next part -------------- HTML����������������������������... Download