[gperf] Initial implementation (#9505)

This commit is contained in:
Matwey V. Kornilov 2019-12-30 14:04:32 +03:00 committed by Nicole Mazzuca
parent ed76c7eef2
commit d989ad416b
5 changed files with 90 additions and 0 deletions

View File

@ -0,0 +1,53 @@
cmake_minimum_required(VERSION 3.0)
project(gperf LANGUAGES C CXX)
include(CheckCXXSourceCompiles)
include(GNUInstallDirs)
CHECK_CXX_SOURCE_COMPILES("int main(int n) { int dynamic_array[n]; }" HAVE_DYNAMIC_ARRAY)
set(LIBGP_SOURCES
lib/getline.cc
lib/getline.h
lib/getopt.c
lib/getopt.h
lib/getopt1.c
lib/hash.cc
lib/hash.h)
add_library(gp STATIC ${LIBGP_SOURCES})
target_include_directories(gp PUBLIC "${CMAKE_SOURCE_DIR}/lib")
set(GPERF_SOURCES
src/bool-array.cc
src/bool-array.h
src/bool-array.icc
src/hash-table.cc
src/hash-table.h
src/input.cc
src/input.h
src/keyword-list.cc
src/keyword-list.h
src/keyword-list.icc
src/keyword.cc
src/keyword.h
src/keyword.icc
src/main.cc
src/options.cc
src/options.h
src/options.icc
src/output.cc
src/output.h
src/positions.cc
src/positions.h
src/positions.icc
src/search.cc
src/search.h
src/version.cc
src/version.h)
add_executable(gperf ${GPERF_SOURCES})
target_link_libraries(gperf gp)
target_include_directories(gperf PRIVATE "${CMAKE_CURRENT_BINARY_DIR}")
configure_file(config.h.in config.h @ONLY)
install(TARGETS gperf RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR})

4
ports/gperf/CONTROL Normal file
View File

@ -0,0 +1,4 @@
Source: gperf
Version: 3.1-1
Description: GNU perfect hash function generator
Homepage: https://www.gnu.org/software/gperf/

1
ports/gperf/config.h.in Normal file
View File

@ -0,0 +1 @@
#cmakedefine HAVE_DYNAMIC_ARRAY @HAVE_DYNAMIC_ARRAY@

View File

@ -0,0 +1,30 @@
vcpkg_fail_port_install(ON_TARGET "UWP")
set(VCPKG_POLICY_EMPTY_INCLUDE_FOLDER enabled)
vcpkg_download_distfile(ARCHIVE
URLS http://ftp.gnu.org/pub/gnu/gperf/gperf-3.1.tar.gz
FILENAME gperf-3.1.tar.gz
SHA512 855ebce5ff36753238a44f14c95be7afdc3990b085960345ca2caf1a2db884f7db74d406ce9eec2f4a52abb8a063d4ed000a36b317c9a353ef4e25e2cca9a3f4
)
vcpkg_extract_source_archive_ex(
OUT_SOURCE_PATH SOURCE_PATH
ARCHIVE ${ARCHIVE}
)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
file(COPY ${CMAKE_CURRENT_LIST_DIR}/config.h.in DESTINATION ${SOURCE_PATH})
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
OPTIONS_RELEASE -DCMAKE_INSTALL_BINDIR=tools
)
vcpkg_install_cmake()
file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug)
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/bin ${CURRENT_PACKAGES_DIR}/debug/bin)
endif()

View File

@ -554,6 +554,8 @@ googleapis:x64-uwp=fail
google-cloud-cpp:x64-linux=ignore
google-cloud-cpp-spanner:x86-windows=fail
gppanel:x64-osx=fail
gperf:x64-uwp=fail
gperf:arm-uwp=fail
graphicsmagick:arm64-windows=fail
graphicsmagick:arm-uwp=fail
graphicsmagick:x64-uwp=fail