aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChao <6785880+ChaoJia@users.noreply.github.com>2019-10-31 22:12:32 +0100
committerRobert Schumacher <roschuma@microsoft.com>2019-10-31 14:12:32 -0700
commit6282cab61d175974b1af06473db584b9b80dcd48 (patch)
treebb66d1d64de3a40b3b9c58fb9fc608a113f2d9c7
parentd2cd3ad6625b92bc7901208013a9e87739d27f3f (diff)
downloadvcpkg-6282cab61d175974b1af06473db584b9b80dcd48.tar.gz
vcpkg-6282cab61d175974b1af06473db584b9b80dcd48.zip
[wordnet]add a new port (#8816)2019.10
* [wordnet]add a new port * [wordnet]fix-uwp
-rw-r--r--ports/wordnet/CMakeLists.txt69
-rw-r--r--ports/wordnet/CONTROL6
-rw-r--r--ports/wordnet/fix_gobal_vars_uninit_local_ptr.patch78
-rw-r--r--ports/wordnet/portfile.cmake54
-rw-r--r--ports/wordnet/wordnet-config.cmake.in14
5 files changed, 221 insertions, 0 deletions
diff --git a/ports/wordnet/CMakeLists.txt b/ports/wordnet/CMakeLists.txt
new file mode 100644
index 000000000..78a16c1d7
--- /dev/null
+++ b/ports/wordnet/CMakeLists.txt
@@ -0,0 +1,69 @@
+cmake_minimum_required (VERSION 3.14)
+project ("wordnet")
+set (target_name ${CMAKE_PROJECT_NAME}) # CMAKE_PROJECT_NAME for the top-level project() call
+
+option (BUILD_SHARED_LIBS "Create ${target_name} as a shared library" OFF)
+set (CMAKE_DEBUG_POSTFIX "d" CACHE STRING "postfix for debug lib")
+
+set (INCLUDE_DIR_BUILD "${CMAKE_CURRENT_LIST_DIR}/include")
+
+include (GNUInstallDirs)
+
+file (GLOB wordnet_headers ${INCLUDE_DIR_BUILD}/wn.h)
+file (GLOB wordnet_srcs "lib/*.c")
+
+add_library (${target_name} ${wordnet_srcs} ${wordnet_headers})
+
+target_include_directories (${target_name}
+ PRIVATE ${INCLUDE_DIR_BUILD}
+ PUBLIC $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
+)
+
+set_target_properties(${target_name} PROPERTIES
+ C_STANDARD 11
+)
+
+target_compile_definitions(${PROJECT_NAME} PUBLIC DEFAULTPATH="${WORDNET_DICT_PATH}")
+
+if (MSVC)
+ set_target_properties(${target_name} PROPERTIES
+ VS_DEBUGGER_WORKING_DIRECTORY $<TARGET_FILE_DIR:${target_name}>
+ COMPILE_FLAGS "/wd4996 /wd4267 /wd4244 /wd4047"
+ )
+ target_compile_definitions(${PROJECT_NAME} PRIVATE _CRT_SECURE_NO_WARNINGS)
+ set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT ${target_name})
+endif()
+
+install (TARGETS ${target_name} EXPORT ${target_name}-targets
+ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
+ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
+)
+
+install(FILES
+ ${wordnet_headers}
+ DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/${target_name}
+ CONFIGURATIONS Release
+)
+
+install (EXPORT ${target_name}-targets
+ FILE ${target_name}-targets.cmake
+ NAMESPACE ${target_name}::
+ DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${target_name}"
+)
+
+configure_file(${target_name}-config.cmake.in "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${target_name}-config.cmake" @ONLY)
+
+install(FILES
+ "${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/${target_name}-config.cmake"
+ DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/${target_name}"
+)
+
+install(DIRECTORY
+ dict/ DESTINATION ${WORDNET_DICT_PATH}
+ CONFIGURATIONS Release
+)
+install(DIRECTORY
+ doc/ DESTINATION ${CMAKE_INSTALL_DOCDIR}
+ CONFIGURATIONS Release
+)
diff --git a/ports/wordnet/CONTROL b/ports/wordnet/CONTROL
new file mode 100644
index 000000000..59aca0bf0
--- /dev/null
+++ b/ports/wordnet/CONTROL
@@ -0,0 +1,6 @@
+Source: wordnet
+Version: 3.0
+Description: WordNet is a large lexical database of English
+
+Feature: dbfiles
+Description: WordNet 3.1 database files
diff --git a/ports/wordnet/fix_gobal_vars_uninit_local_ptr.patch b/ports/wordnet/fix_gobal_vars_uninit_local_ptr.patch
new file mode 100644
index 000000000..8686779e7
--- /dev/null
+++ b/ports/wordnet/fix_gobal_vars_uninit_local_ptr.patch
@@ -0,0 +1,78 @@
+diff --git a/include/wn.h b/include/wn.h
+index d3ffa08..8452377 100644
+--- a/include/wn.h
++++ b/include/wn.h
+@@ -151,14 +151,6 @@
+ #define PREDICATIVE PADJ
+ #define IMMED_POSTNOMINAL IPADJ
+
+-extern char *wnrelease; /* WordNet release/version number */
+-
+-extern char *lexfiles[]; /* names of lexicographer files */
+-extern char *ptrtyp[]; /* pointer characters */
+-extern char *partnames[]; /* POS strings */
+-extern char partchars[]; /* single chars for each POS */
+-extern char *adjclass[]; /* adjective class strings */
+-extern char *frametext[]; /* text of verb frames */
+
+ /* Data structures used by search code functions. */
+
+@@ -236,6 +228,21 @@ typedef struct {
+
+ typedef SearchResults *SearchResultsPtr;
+
++/* Make all the functions compatible with c++ files */
++#ifdef __cplusplus
++extern "C" {
++#endif
++
++extern char* wnrelease; /* WordNet release/version number */
++
++extern char* lexfiles[]; /* names of lexicographer files */
++extern char* ptrtyp[]; /* pointer characters */
++extern char* partnames[]; /* POS strings */
++extern char partchars[]; /* single chars for each POS */
++extern char* adjclass[]; /* adjective class strings */
++extern char* frametext[]; /* text of verb frames */
++
++
+ /* Global variables and flags */
+
+ extern SearchResults wnresults; /* structure containing results of search */
+@@ -271,11 +278,6 @@ extern int default_display_message(char *);
+ extern int (*display_message)(char *);
+
+
+-/* Make all the functions compatible with c++ files */
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+ /* External library function prototypes */
+
+ /*** Search and database functions (search.c) ***/
+diff --git a/lib/search.c b/lib/search.c
+index 1cdedc3..72c4bb5 100644
+--- a/lib/search.c
++++ b/lib/search.c
+@@ -1256,7 +1256,7 @@ static void add_relatives(int pos, IndexPtr idx, int rel1, int rel2)
+ {
+ int i;
+ struct relgrp *rel, *last, *r;
+-
++ last = NULL;
+ /* If either of the new relatives are already in a relative group,
+ then add the other to the existing group (transitivity).
+ Otherwise create a new group and add these 2 senses to it. */
+@@ -1281,8 +1281,9 @@ static void add_relatives(int pos, IndexPtr idx, int rel1, int rel2)
+ rel->senses[rel1] = rel->senses[rel2] = 1;
+ if (rellist == NULL)
+ rellist = rel;
+- else
+- last->next = rel;
++ else if (last) {
++ last->next = rel;
++ }
+ }
+
+ static struct relgrp *mkrellist(void)
diff --git a/ports/wordnet/portfile.cmake b/ports/wordnet/portfile.cmake
new file mode 100644
index 000000000..1f3193187
--- /dev/null
+++ b/ports/wordnet/portfile.cmake
@@ -0,0 +1,54 @@
+include(vcpkg_common_functions)
+
+vcpkg_check_linkage(ONLY_STATIC_LIBRARY)
+
+set(VERSION 3.0)
+
+vcpkg_download_distfile(ARCHIVE
+ URLS "http://wordnetcode.princeton.edu/${VERSION}/WordNet-${VERSION}.tar.gz"
+ FILENAME "wordnet-${VERSION}.tar.gz"
+ SHA512 9539bc016d710f31d65072bbf5068edffcd735978d8cc6f1b361b19428b97546ef6c7e246e1b6f2ff4557a0885a8305341e35173a6723f0740dda18d097ca248
+)
+
+vcpkg_extract_source_archive_ex(
+ OUT_SOURCE_PATH SOURCE_PATH
+ ARCHIVE ${ARCHIVE}
+ REF ${VERSION}
+ PATCHES
+ fix_gobal_vars_uninit_local_ptr.patch
+)
+
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
+file(COPY ${CMAKE_CURRENT_LIST_DIR}/wordnet-config.cmake.in DESTINATION ${SOURCE_PATH})
+
+if("dbfiles" IN_LIST FEATURES)
+ vcpkg_download_distfile(WORDNET_DICT_DBFILES
+ URLS "http://wordnetcode.princeton.edu/wn3.1.dict.tar.gz"
+ FILENAME "wordnet-cache/wn3.1.dict.tar.gz"
+ SHA512 16dca17a87026d8a0b7b4758219cd21a869c3ef3da23ce7875924546f2eacac4c2f376cb271b798b2c458fe8c078fb43d681356e3d9beef40f4bd88d3579394f
+ )
+ file(REMOVE_RECURSE "${SOURCE_PATH}/dict/")
+ vcpkg_extract_source_archive_ex(
+ OUT_SOURCE_PATH WORDNET_DICT_DBFILES_EX
+ ARCHIVE ${WORDNET_DICT_DBFILES}
+ REF 3.1
+ WORKING_DIRECTORY ${SOURCE_PATH}
+ )
+ file(RENAME ${WORDNET_DICT_DBFILES_EX} "${SOURCE_PATH}/dict")
+endif()
+
+set (WORDNET_DICT_PATH "${CURRENT_PACKAGES_DIR}/tools/${PORT}/dict")
+
+vcpkg_configure_cmake(
+ SOURCE_PATH ${SOURCE_PATH}
+ PREFER_NINJA
+ OPTIONS -DWORDNET_DICT_PATH=${WORDNET_DICT_PATH}
+)
+
+vcpkg_install_cmake()
+vcpkg_copy_pdbs()
+vcpkg_fixup_cmake_targets()
+
+# Handle copyright
+file(INSTALL ${SOURCE_PATH}/LICENSE DESTINATION ${CURRENT_PACKAGES_DIR}/share/wordnet RENAME copyright)
+
diff --git a/ports/wordnet/wordnet-config.cmake.in b/ports/wordnet/wordnet-config.cmake.in
new file mode 100644
index 000000000..1de99b5e8
--- /dev/null
+++ b/ports/wordnet/wordnet-config.cmake.in
@@ -0,0 +1,14 @@
+# Config file for the wordnet package
+
+get_filename_component(_WORDNET_PREFIX_DIR "${CMAKE_CURRENT_LIST_FILE}" DIRECTORY)
+
+set (_TARGET_NAME "wordnet")
+
+set (WORDNET_DICT_PATH @WORDNET_DICT_PATH@)
+message (STATUS "WORDNET_DICT_PATH: @WORDNET_DICT_PATH@")
+
+# IMPORTED targets for wordnet
+include("${_WORDNET_PREFIX_DIR}/${_TARGET_NAME}-targets.cmake")
+
+set(_WORDNET_PREFIX_DIR)
+set(_TARGET_NAME)