diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/mecab | |
Diffstat (limited to 'vcpkg/ports/mecab')
| -rw-r--r-- | vcpkg/ports/mecab/CMakeLists.txt | 67 | ||||
| -rw-r--r-- | vcpkg/ports/mecab/Config.cmake.in | 4 | ||||
| -rw-r--r-- | vcpkg/ports/mecab/fix-missing-functional.patch | 12 | ||||
| -rw-r--r-- | vcpkg/ports/mecab/fix_wpath_unsigned.patch | 40 | ||||
| -rw-r--r-- | vcpkg/ports/mecab/portfile.cmake | 31 | ||||
| -rw-r--r-- | vcpkg/ports/mecab/vcpkg.json | 17 |
6 files changed, 171 insertions, 0 deletions
diff --git a/vcpkg/ports/mecab/CMakeLists.txt b/vcpkg/ports/mecab/CMakeLists.txt new file mode 100644 index 0000000..9ebf42e --- /dev/null +++ b/vcpkg/ports/mecab/CMakeLists.txt @@ -0,0 +1,67 @@ +cmake_minimum_required(VERSION 3.12 FATAL_ERROR) + +PROJECT(mecab VERSION 1.0) + +file(GLOB SOURCE_FILE + "*.cpp" + "*.c" +) +file(GLOB HEADERS_FILE + "*.h" +) + +message(STATUS "current cmake path: ${CMAKE_CURRENT_SOURCE_DIR}") +list(REMOVE_ITEM SOURCE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/mecab-cost-train.cpp) +list(REMOVE_ITEM SOURCE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/mecab-dict-gen.cpp) +list(REMOVE_ITEM SOURCE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/mecab-dict-index.cpp) +list(REMOVE_ITEM SOURCE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/mecab-system-eval.cpp) +list(REMOVE_ITEM SOURCE_FILE ${CMAKE_CURRENT_SOURCE_DIR}/mecab-test-gen.cpp) +#list(REMOVE_ITEM SOURCE_FILE "mecab-cost-train.cpp" "mecab-dict-gen.cpp" "mecab-dict-index.cpp" "mecab-system-eval.cpp" "mecab-test-gen.cpp") + +add_library (mecab ${SOURCE_FILE}) +target_include_directories(mecab PUBLIC + $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> + $<INSTALL_INTERFACE:include>) + +if(UNIX) + target_compile_definitions(mecab PUBLIC -DHAVE_UNISTD_H -DHAVE_FCNTL_H -DHAVE_STDINT_H -DHAVE_SYS_TYPES_H -DHAVE_SYS_STAT_H -DHAVE_DIRENT_H -DDIC_VERSION=102 -DVERSION="@VERSION@" -DPACKAGE="mecab" -DMECAB_DEFAULT_RC="./mecabrc") +endif(UNIX) +if(WIN32) + target_compile_definitions(mecab PUBLIC -D_CRT_SECURE_NO_DEPRECATE -DMECAB_USE_THREAD -DDLL_EXPORT -DHAVE_GETENV -DHAVE_WINDOWS_H -DDIC_VERSION=102 -DVERSION="@VERSION@" -DPACKAGE="mecab" -DUNICODE -D_UNICODE -DMECAB_DEFAULT_RC="mecabrc") +endif(WIN32) + + +include (GNUInstallDirs) +include(CMakePackageConfigHelpers) + +set (mecab_CMAKE_DIR share/mecab CACHE STRING "Installation dir") +set (targets_export_name mecabTargets CACHE INTERNAL "") + +install(TARGETS mecab + EXPORT ${targets_export_name} + RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} + ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} + LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} +) + +install(FILES ${HEADERS_FILE} DESTINATION include/mecab CONFIGURATIONS Release) + +install(EXPORT ${targets_export_name} + NAMESPACE mecab:: + DESTINATION ${mecab_CMAKE_DIR}) + +configure_package_config_file( + "${PROJECT_SOURCE_DIR}/Config.cmake.in" + "${PROJECT_BINARY_DIR}/mecabConfig.cmake" + INSTALL_DESTINATION ${mecab_CMAKE_DIR}) + + +write_basic_package_version_file( + ${PROJECT_BINARY_DIR}/mecabConfigVersion.cmake + VERSION ${PROJECT_VERSION} + COMPATIBILITY SameMajorVersion ) + +install(FILES + ${PROJECT_BINARY_DIR}/mecabConfig.cmake + ${PROJECT_BINARY_DIR}/mecabConfigVersion.cmake + DESTINATION ${mecab_CMAKE_DIR}) diff --git a/vcpkg/ports/mecab/Config.cmake.in b/vcpkg/ports/mecab/Config.cmake.in new file mode 100644 index 0000000..927b363 --- /dev/null +++ b/vcpkg/ports/mecab/Config.cmake.in @@ -0,0 +1,4 @@ +@PACKAGE_INIT@ + +include("${CMAKE_CURRENT_LIST_DIR}/@targets_export_name@.cmake") +check_required_components(mecab)
\ No newline at end of file diff --git a/vcpkg/ports/mecab/fix-missing-functional.patch b/vcpkg/ports/mecab/fix-missing-functional.patch new file mode 100644 index 0000000..773429c --- /dev/null +++ b/vcpkg/ports/mecab/fix-missing-functional.patch @@ -0,0 +1,12 @@ +diff --git a/mecab/src/dictionary.h b/mecab/src/dictionary.h +index 7046023..32ad358 100644 +--- a/mecab/src/dictionary.h ++++ b/mecab/src/dictionary.h +@@ -10,6 +10,7 @@ + #include "mmap.h" + #include "darts.h" + #include "char_property.h" ++#include <functional> + + namespace MeCab { + diff --git a/vcpkg/ports/mecab/fix_wpath_unsigned.patch b/vcpkg/ports/mecab/fix_wpath_unsigned.patch new file mode 100644 index 0000000..d8dcf15 --- /dev/null +++ b/vcpkg/ports/mecab/fix_wpath_unsigned.patch @@ -0,0 +1,40 @@ +diff --git a/mecab/src/common.h b/mecab/src/common.h +index d1fc459..2951d5a 100644 +--- a/mecab/src/common.h ++++ b/mecab/src/common.h +@@ -86,7 +86,8 @@ + #define WPATH_FORCE(path) (MeCab::Utf8ToWide(path).c_str()) + #define WPATH(path) (path) + #else +-#define WPATH(path) WPATH_FORCE(path) ++#define WPATH_FORCE(path) (MeCab::Utf8ToWide(path).c_str()) ++#define WPATH(path) (path) + #endif + #else + #define WPATH_FORCE(path) (path) +diff --git a/mecab/src/feature_index.cpp b/mecab/src/feature_index.cpp +index 051bdf8..fdd0145 100644 +--- a/mecab/src/feature_index.cpp ++++ b/mecab/src/feature_index.cpp +@@ -353,7 +353,7 @@ bool FeatureIndex::buildUnigramFeature(LearnerPath *path, + if (!r) goto NEXT; + os_ << r; + } break; +- case 't': os_ << (size_t)path->rnode->char_type; break; ++ case 't': os_ << (int)(size_t)path->rnode->char_type; break; + case 'u': os_ << ufeature; break; + case 'w': + if (path->rnode->stat == MECAB_NOR_NODE) { +diff --git a/mecab/src/writer.cpp b/mecab/src/writer.cpp +index 0ef6975..f068fa3 100644 +--- a/mecab/src/writer.cpp ++++ b/mecab/src/writer.cpp +@@ -257,7 +257,7 @@ bool Writer::writeNode(Lattice *lattice, + // input sentence + case 'S': os->write(lattice->sentence(), lattice->size()); break; + // sentence length +- case 'L': *os << lattice->size(); break; ++ case 'L': *os << (int)lattice->size(); break; + // morph + case 'm': os->write(node->surface, node->length); break; + case 'M': os->write(reinterpret_cast<const char *> diff --git a/vcpkg/ports/mecab/portfile.cmake b/vcpkg/ports/mecab/portfile.cmake new file mode 100644 index 0000000..83dc2cd --- /dev/null +++ b/vcpkg/ports/mecab/portfile.cmake @@ -0,0 +1,31 @@ +if (VCPKG_TARGET_TRIPLET STREQUAL "x64-uwp" OR VCPKG_TARGET_TRIPLET STREQUAL "arm64-windows" OR VCPKG_TARGET_TRIPLET STREQUAL "arm-uwp")
+ message(FATAL_ERROR "mecab does not support on this platform")
+endif()
+
+vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO taku910/mecab
+ REF 3a07c4eefaffb4e7a0690a7f4e5e0263d3ddb8a3
+ SHA512 d3288cca7207daf66df4349819b64fc9cc069c775512cf0607ca855e9e5512509c36b0e2bb0e955478acae13ff0c35df7442f18a8458fab0ed664d62854c0b25
+ HEAD_REF master
+ PATCHES
+ fix_wpath_unsigned.patch
+ fix-missing-functional.patch
+)
+
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}/mecab/src")
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/Config.cmake.in" DESTINATION "${SOURCE_PATH}/mecab/src")
+file(COPY "${SOURCE_PATH}/mecab/COPYING" DESTINATION "${SOURCE_PATH}/mecab/src")
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}/mecab/src"
+ WINDOWS_USE_MSBUILD
+ OPTIONS
+ -DCMAKE_CXX_STANDARD=11 # 17 does not allow 'register'
+)
+
+vcpkg_cmake_install()
+vcpkg_cmake_config_fixup()
+vcpkg_copy_pdbs()
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/mecab/COPYING")
diff --git a/vcpkg/ports/mecab/vcpkg.json b/vcpkg/ports/mecab/vcpkg.json new file mode 100644 index 0000000..ff532e5 --- /dev/null +++ b/vcpkg/ports/mecab/vcpkg.json @@ -0,0 +1,17 @@ +{ + "name": "mecab", + "version-date": "2019-09-25", + "port-version": 6, + "description": "A morphological analysis engine based on CRF", + "supports": "!uwp & !(arm & windows)", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ] +} |