aboutsummaryrefslogtreecommitdiff
path: root/vcpkg/ports/mecab
diff options
context:
space:
mode:
authorEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
committerEthan Morgan <ethan@gweithio.com>2026-02-14 16:44:06 +0000
commit54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch)
treed915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/mecab
move to own git serverHEADmaster
Diffstat (limited to 'vcpkg/ports/mecab')
-rw-r--r--vcpkg/ports/mecab/CMakeLists.txt67
-rw-r--r--vcpkg/ports/mecab/Config.cmake.in4
-rw-r--r--vcpkg/ports/mecab/fix-missing-functional.patch12
-rw-r--r--vcpkg/ports/mecab/fix_wpath_unsigned.patch40
-rw-r--r--vcpkg/ports/mecab/portfile.cmake31
-rw-r--r--vcpkg/ports/mecab/vcpkg.json17
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
+ }
+ ]
+}