From cd6fb55cd9411a0b420ff7fae8a0c23d43ee6882 Mon Sep 17 00:00:00 2001 From: Mikhail Paulyshka Date: Thu, 21 Dec 2017 03:57:14 +0300 Subject: [PATCH] [libdatrie] add version 0.2.10 --- ports/libdatrie/CMakeLists.txt | 94 +++++++++++++++++++++++++++++++ ports/libdatrie/CONTROL | 4 ++ ports/libdatrie/config.h.cmake | 87 ++++++++++++++++++++++++++++ ports/libdatrie/fix-exports.patch | 8 +++ ports/libdatrie/portfile.cmake | 53 +++++++++++++++++ 5 files changed, 246 insertions(+) create mode 100644 ports/libdatrie/CMakeLists.txt create mode 100644 ports/libdatrie/CONTROL create mode 100644 ports/libdatrie/config.h.cmake create mode 100644 ports/libdatrie/fix-exports.patch create mode 100644 ports/libdatrie/portfile.cmake diff --git a/ports/libdatrie/CMakeLists.txt b/ports/libdatrie/CMakeLists.txt new file mode 100644 index 0000000000..bdc1c21eaa --- /dev/null +++ b/ports/libdatrie/CMakeLists.txt @@ -0,0 +1,94 @@ +cmake_minimum_required(VERSION 3.0) +project(libdatrie LANGUAGES C) + +option(SKIP_HEADERS "Skip headers" OFF) +option(SKIP_TOOL "Skip tool" OFF) +option(BUILD_SHARED_LIBS "Build shared libs" OFF) + +set(LIB_SRCS + datrie/alpha-map.c + datrie/darray.c + datrie/dstring.c + datrie/fileutils.c + datrie/tail.c + datrie/trie.c + datrie/trie-string.c +) + +set(LIB_HDRS + datrie/alpha-map.h + datrie/trie.h + datrie/triedefs.h + datrie/typedefs.h +) + +if(WIN32) + list(APPEND LIB_SRCS datrie/libdatrie.def) +endif() + +include(CheckIncludeFile) +include(CheckFunctionExists) + +set(STDC_HEADERS 1) +check_include_file(dlfcn.h HAVE_DLFCN_H) +check_include_file(inttypes.h HAVE_INTTYPES_H) +check_include_file(limits.h HAVE_LIMITS_H) +check_include_file(memory.h HAVE_MEMORY_H) +check_include_file(stdint.h HAVE_STDINT_H) +check_include_file(stdio.h HAVE_STDIO_H) +check_include_file(stdlib.h HAVE_STDLIB_H) +check_include_file(strings.h HAVE_STRINGS_H) +check_include_file(string.h HAVE_STRING_H) +check_include_file(sys/stat.h HAVE_SYS_STAT_H) +check_include_file(sys/types.h HAVE_SYS_TYPES_H) +check_include_file(unistd.h HAVE_UNISTD_H) + +check_function_exists(nl_langinfo HAVE_LANGINFO_CODESET) +check_function_exists(locale_charset HAVE_LOCALE_CHARSET) +check_function_exists(malloc HAVE_MALLOC) + +configure_file(config.h.cmake config.h) + +add_library(libdatrie ${LIB_SRCS}) +target_include_directories(libdatrie PRIVATE ".") +target_include_directories(libdatrie PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) +set_target_properties(libdatrie PROPERTIES PREFIX "") +set_target_properties(libdatrie PROPERTIES DEBUG_POSTFIX "d") + +if(MSVC) + add_definitions(-D_CRT_SECURE_NO_WARNINGS) + add_definitions(-D_CRT_NONSTDC_NO_DEPRECATE) +endif() + + +if (NOT SKIP_TOOL) + add_executable(trietool "tools/trietool.c" ) + target_include_directories(trietool PRIVATE ".") + target_include_directories(trietool PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) + target_link_libraries(trietool libdatrie) + + find_path(ICONV_INCLUDE_DIR iconv.h) + find_library(ICONV_LIBRARY NAMES iconv libiconv) + find_library(CHARSET_LIBRARY NAMES charset libcharset) + target_include_directories(trietool PRIVATE ${ICONV_INCLUDE_DIR}) + target_link_libraries(trietool ${ICONV_LIBRARY} ${CHARSET_LIBRARY}) + + install( + TARGETS trietool + RUNTIME DESTINATION bin + ) +endif() + +install( + TARGETS libdatrie + RUNTIME DESTINATION bin + LIBRARY DESTINATION lib + ARCHIVE DESTINATION lib +) + +if (NOT SKIP_HEADERS) + install( + FILES ${LIB_HDRS} + DESTINATION "include/datrie" + ) +endif() diff --git a/ports/libdatrie/CONTROL b/ports/libdatrie/CONTROL new file mode 100644 index 0000000000..b397101412 --- /dev/null +++ b/ports/libdatrie/CONTROL @@ -0,0 +1,4 @@ +Source: libdatrie +Version: 0.2.10-1 +Description: implementation of double-array structure for representing trie +Build-Depends: libiconv diff --git a/ports/libdatrie/config.h.cmake b/ports/libdatrie/config.h.cmake new file mode 100644 index 0000000000..9d575d6e59 --- /dev/null +++ b/ports/libdatrie/config.h.cmake @@ -0,0 +1,87 @@ +/* config.h.in. Generated from configure.ac by autoheader. */ + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_DLFCN_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_INTTYPES_H + +/* Have nl_langinfo (CODESET) */ +#cmakedefine HAVE_LANGINFO_CODESET + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_LIMITS_H + +/* Have locale_charset() */ +#cmakedefine HAVE_LOCALE_CHARSET + +/* Define to 1 if your system has a GNU libc compatible `malloc' function, and + to 0 otherwise. */ +#cmakedefine HAVE_MALLOC + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDIO_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#cmakedefine HAVE_UNISTD_H + +/* Define to the sub-directory in which libtool stores uninstalled libraries. + */ +#cmakedefine LT_OBJDIR + +/* Name of package */ +#define PACKAGE "libdatrie" + +/* Define to the address where bug reports for this package should be sent. */ +#cmakedefine PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "libdatrie" + +/* Define to the full name and version of this package. */ +#cmakedefine PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#cmakedefine PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#define PACKAGE_URL "https://linux.thai.net/~thep/datrie/datrie.html" + +/* Define to the version of this package. */ +#cmakedefine PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#cmakedefine STDC_HEADERS 1 + +/* Version number of package */ +#cmakedefine VERSION "@VERSION@" + +/* Define to empty if `const' does not conform to ANSI C. */ +#cmakedefine const + +/* Define to rpl_malloc if the replacement function should be used. */ +#cmakedefine malloc + +/* Define to `unsigned int' if does not define. */ +#cmakedefine size_t diff --git a/ports/libdatrie/fix-exports.patch b/ports/libdatrie/fix-exports.patch new file mode 100644 index 0000000000..d828504311 --- /dev/null +++ b/ports/libdatrie/fix-exports.patch @@ -0,0 +1,8 @@ +diff -Naur ./a/libdatrie.def ./b/libdatrie.def +--- a/libdatrie.def 2013-10-17 06:27:57.000000000 +0300 ++++ b/libdatrie.def 2017-12-21 02:42:39.873879000 +0300 +@@ -1,3 +1,4 @@ ++EXPORTS + alpha_map_new + alpha_map_clone + alpha_map_free diff --git a/ports/libdatrie/portfile.cmake b/ports/libdatrie/portfile.cmake new file mode 100644 index 0000000000..81ff4e239b --- /dev/null +++ b/ports/libdatrie/portfile.cmake @@ -0,0 +1,53 @@ +set(LIBDATRIE_VERSION 0.2.10) + +include(vcpkg_common_functions) + +set(SOURCE_PATH ${CURRENT_BUILDTREES_DIR}/src/libdatrie-${LIBDATRIE_VERSION}) +vcpkg_download_distfile(ARCHIVE + URLS "https://linux.thai.net/pub/ThaiLinux/software/libthai/libdatrie-${LIBDATRIE_VERSION}.tar.xz" + FILENAME "libdatrie-${LIBDATRIE_VERSION}.tar.xz" + SHA512 ee68ded9d6e06c562da462d42e7e56098a82478d7b8547506200c3018b72536c4037a4e518924f779dc77d3ab139d93216bdb29ab4116b9dc9efd1a5d1eb9e31 +) +vcpkg_extract_source_archive(${ARCHIVE}) + +vcpkg_apply_patches( + SOURCE_PATH ${SOURCE_PATH}/datrie + PATCHES "${CMAKE_CURRENT_LIST_DIR}/fix-exports.patch" +) + +file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH}) +file(COPY ${CMAKE_CURRENT_LIST_DIR}/config.h.cmake DESTINATION ${SOURCE_PATH}) + +if(VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + set(SKIP_TOOL ON) +else() + set(SKIP_TOOL OFF) +endif() + +vcpkg_configure_cmake( + SOURCE_PATH ${SOURCE_PATH} + PREFER_NINJA + OPTIONS + -DVERSION=${LIBDATRIE_VERSION} + OPTIONS_RELEASE + -DSKIP_TOOL=${SKIP_TOOL} + -DSKIP_HEADERS=OFF + OPTIONS_DEBUG + -DSKIP_TOOL=ON + -DSKIP_HEADERS=ON +) + +vcpkg_install_cmake() +vcpkg_copy_pdbs() + +if(NOT VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") + file(MAKE_DIRECTORY ${CURRENT_PACKAGES_DIR}/tools/${PORT}) + file(RENAME ${CURRENT_PACKAGES_DIR}/bin/trietool.exe ${CURRENT_PACKAGES_DIR}/tools/${PORT}/trietool.exe) + vcpkg_copy_tool_dependencies(${CURRENT_PACKAGES_DIR}/tools/${PORT}) +endif() + +if(VCPKG_LIBRARY_LINKAGE STREQUAL static) + file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin) +endif() + +file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/libdatrie RENAME copyright)