[Groonga-commit] groonga/groonga at 1a7765a [master] cmake: support building bundled NAIST Japanese Dictionary

Back to archive index

Kouhei Sutou null+****@clear*****
Sat Oct 17 23:15:50 JST 2015


Kouhei Sutou	2015-10-17 23:15:50 +0900 (Sat, 17 Oct 2015)

  New Revision: 1a7765ac35071144f1f4b38f661d2de2c01e6984
  https://github.com/groonga/groonga/commit/1a7765ac35071144f1f4b38f661d2de2c01e6984

  Message:
    cmake: support building bundled NAIST Japanese Dictionary

  Modified files:
    .gitignore
    CMakeLists.txt
    vendor/mecab/CMakeLists.txt

  Modified: .gitignore (+4 -0)
===================================================================
--- .gitignore    2015-10-17 23:03:54 +0900 (877f053)
+++ .gitignore    2015-10-17 23:15:50 +0900 (1278929)
@@ -48,6 +48,10 @@
 /vendor/mruby/mruby_build.timestamp
 /vendor/mruby-build/
 /vendor/mecab-*
+/vendor/mecab/*.bin
+/vendor/mecab/*.dic
+/vendor/mecab/mecab
+/vendor/mecab/mecab-dict-index
 /vendor/mecab/mecabrc
 /vendor/plugins/*/
 /groonga.spec

  Modified: CMakeLists.txt (+1 -1)
===================================================================
--- CMakeLists.txt    2015-10-17 23:03:54 +0900 (e8668a1)
+++ CMakeLists.txt    2015-10-17 23:15:50 +0900 (26f040c)
@@ -393,7 +393,7 @@ if(NOT ${GRN_WITH_MECAB} STREQUAL "no")
       "${CMAKE_CURRENT_SOURCE_DIR}/vendor/mecab-${GRN_BUNDLED_MECAB_VERSION}/src")
     set(MECAB_LIBRARY_DIRS
       "${CMAKE_CURRENT_SOURCE_DIR}/vendor/mecab")
-    set(MECAB_LIBRARIES mecab)
+    set(MECAB_LIBRARIES libmecab)
   else()
     set(GRN_MECAB_CONFIG "mecab-config" CACHE FILEPATH "mecab-config path")
     if(NOT CMAKE_CROSSCOMPILING)

  Modified: vendor/mecab/CMakeLists.txt (+69 -10)
===================================================================
--- vendor/mecab/CMakeLists.txt    2015-10-17 23:03:54 +0900 (032f8ce)
+++ vendor/mecab/CMakeLists.txt    2015-10-17 23:15:50 +0900 (527c3ce)
@@ -15,8 +15,12 @@
 
 set(MECAB_VERSION ${GRN_BUNDLED_MECAB_VERSION})
 set(MECAB_DICT_VERSION "102")
+set(MECAB_NAIST_JDIC_VERSION "0.6.3b-20111013")
+
 set(MECAB_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../mecab-${MECAB_VERSION}")
 set(MECAB_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}/../mecab-${MECAB_VERSION}")
+set(MECAB_NAIST_JDIC_SOURCE_DIR
+  "${CMAKE_CURRENT_SOURCE_DIR}/../mecab-naist-jdic-${MECAB_NAIST_JDIC_VERSION}")
 
 if(GRN_WITH_BUNDLED_MECAB)
   include_directories(
@@ -25,7 +29,21 @@ if(GRN_WITH_BUNDLED_MECAB)
     ${MECAB_SOURCE_DIR}
     )
 
-  set(MECAB_SOURCES
+  set(MECAB_RELATIVE_DICT_DIR "${DATA_DIR}/mecab/dic")
+  set(MECAB_RELATIVE_NAIST_JDIC_DICT_DIR
+    "${MECAB_RELATIVE_DICT_DIR}/naist-jdic")
+  if(WIN32)
+    string(REGEX REPLACE "/" "\\"
+      MECAB_WINDOWS_RELATIVE_NAIST_JDIC_DICT_DIR
+      "${MECAB_RELATIVE_NAIST_JDIC_DICT_DIR}")
+    set(MECAB_NAIST_JDIC_DICT_DIR
+      "$(rcpath)\\..\\${MECAB_WINDOWS_NAIST_JDIC_DICT_DIR}")
+  else()
+    set(MECAB_NAIST_JDIC_DICT_DIR
+      "$(rcpath)/../${MECAB_RELATIVE_NAIST_JDIC_DICT_DIR}")
+  endif()
+
+  set(LIBMECAB_SOURCES
     "${MECAB_SOURCE_DIR}/src/char_property.cpp"
     "${MECAB_SOURCE_DIR}/src/char_property.h"
     "${MECAB_SOURCE_DIR}/src/common.h"
@@ -55,10 +73,8 @@ if(GRN_WITH_BUNDLED_MECAB)
     "${MECAB_SOURCE_DIR}/src/libmecab.cpp"
     # "${MECAB_SOURCE_DIR}/src/mecab-cost-train.cpp"
     # "${MECAB_SOURCE_DIR}/src/mecab-dict-gen.cpp"
-    # "${MECAB_SOURCE_DIR}/src/mecab-dict-index.cpp"
     # "${MECAB_SOURCE_DIR}/src/mecab-system-eval.cpp"
     # "${MECAB_SOURCE_DIR}/src/mecab-test-gen.cpp"
-    "${MECAB_SOURCE_DIR}/src/mecab.cpp"
     "${MECAB_SOURCE_DIR}/src/mecab.h"
     "${MECAB_SOURCE_DIR}/src/mmap.h"
     "${MECAB_SOURCE_DIR}/src/nbest_generator.cpp"
@@ -83,6 +99,12 @@ if(GRN_WITH_BUNDLED_MECAB)
     "${MECAB_SOURCE_DIR}/src/writer.cpp"
     "${MECAB_SOURCE_DIR}/src/writer.h"
     )
+  set(MECAB_SOURCES
+    "${MECAB_SOURCE_DIR}/src/mecab.cpp"
+    )
+  set(MECAB_DICT_INDEX_SOURCES
+    "${MECAB_SOURCE_DIR}/src/mecab-dict-index.cpp"
+    )
 
   set(MECAB_CXX_COMPILE_FLAGS "${GRN_CXX_COMPILE_FLAGS}")
   if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANGCXX)
@@ -110,9 +132,12 @@ if(GRN_WITH_BUNDLED_MECAB)
     add_definitions(-D_UNICODE)
   else()
     add_definitions(
-      "-DMECAB_DEFAULT_RC=\"${CMAKE_INSTALL_PREFIX}${CONFIG_DIR}/mecab/mecabrc\"")
+      "-DMECAB_DEFAULT_RC=\"${CMAKE_INSTALL_PREFIX}/${CONFIG_DIR}/mecabrc\"")
+    add_definitions(
+      "-DICONV_CONST=")
     add_definitions(-DHAVE_DIRENT_H)
     add_definitions(-DHAVE_FCNTL_H)
+    add_definitions(-DHAVE_ICONV)
     add_definitions(-DHAVE_STDINT_H)
     add_definitions(-DHAVE_STRING_H)
     add_definitions(-DHAVE_SYS_MMAN_H)
@@ -120,21 +145,55 @@ if(GRN_WITH_BUNDLED_MECAB)
     add_definitions(-DHAVE_SYS_TYPES_H)
     add_definitions(-DHAVE_UNISTD_H)
   endif()
-  set_source_files_properties(${MECAB_SOURCES}
+  set_source_files_properties(${LIBMECAB_SOURCES}
     PROPERTIES
     COMPILE_FLAGS "${MECAB_CXX_COMPILE_FLAGS}")
+  set_source_files_properties(${MECAB_SOURCES}
+    PROPERTIES
+    COMPILE_FLAGS "${GRN_CXX_COMPILE_FLAGS}")
+  set_source_files_properties(${MECAB_DICT_INDEX_SOURCES}
+    PROPERTIES
+    COMPILE_FLAGS "${GRN_CXX_COMPILE_FLAGS}")
 
-  add_library(mecab SHARED ${MECAB_SOURCES})
-  install(TARGETS mecab
+  add_library(libmecab SHARED ${LIBMECAB_SOURCES})
+  set_target_properties(libmecab PROPERTIES OUTPUT_NAME "mecab")
+  add_executable(mecab ${MECAB_SOURCES})
+  target_link_libraries(mecab libmecab)
+  add_executable(mecab-dict-index ${MECAB_DICT_INDEX_SOURCES})
+  target_link_libraries(mecab-dict-index libmecab)
+  install(TARGETS libmecab
     ARCHIVE DESTINATION "${LIB_DIR}"
     LIBRARY DESTINATION "${LIB_DIR}"
     RUNTIME DESTINATION "${BIN_DIR}")
+  install(TARGETS mecab
+    DESTINATION "${BIN_DIR}")
+  install(TARGETS mecab-dict-index
+    DESTINATION "${BIN_DIR}")
   install(FILES "${MECAB_SOURCE_DIR}/src/mecab.h"
     DESTINATION "${INCLUDE_DIR}")
 
-  set(prefix "${CMAKE_INSTALL_PREFIX}")
-  configure_file("${MECAB_SOURCE_DIR}/mecabrc.in"
-    "mecabrc")
+  set(MECAB_NAIST_JDIC_BUILD_DATA
+    "${CMAKE_CURRENT_BINARY_DIR}/matrix.bin"
+    "${CMAKE_CURRENT_BINARY_DIR}/char.bin"
+    "${CMAKE_CURRENT_BINARY_DIR}/sys.dic"
+    "${CMAKE_CURRENT_BINARY_DIR}/unk.dic")
+  add_custom_command(OUTPUT ${MECAB_NAIST_JDIC_BUILD_DATA}
+    COMMAND
+    "${CMAKE_CURRENT_BINARY_DIR}/mecab-dict-index"
+    "--dicdir" "${MECAB_NAIST_JDIC_SOURCE_DIR}"
+    "--outdir" "${CMAKE_CURRENT_BINARY_DIR}"
+    "--dictionary-charset" "EUC-JP"
+    "--charset" "utf-8"
+    MAIN_DEPENDENCY mecab-dict-index
+    COMMENT "Build NAIST Japanese Dictionary for MeCab")
+  add_custom_target(mecab-naist-jdic ALL
+    DEPENDS ${MECAB_NAIST_JDIC_BUILD_DATA})
+  install(FILES
+    ${MECAB_NAIST_JDIC_BUILD_DATA}
+    "${MECAB_NAIST_JDIC_SOURCE_DIR}/dicrc"
+    DESTINATION "${MECAB_RELATIVE_NAIST_JDIC_DICT_DIR}")
+
+  configure_file("mecabrc.cmake" "mecabrc")
   install(FILES "mecabrc"
     DESTINATION "${CONFIG_DIR}")
 
-------------- next part --------------
HTML����������������������������...
Download 



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