[Groonga-commit] groonga/groonga at ec9dcf3 [master] cmake: support building with bundled MessagePack

Back to archive index

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 



More information about the Groonga-commit mailing list
Back to archive index