[libconfuse] Add new port (#7252)

This commit is contained in:
myd7349 2019-07-22 14:25:18 +08:00 committed by Phil Christensen
parent 89cd3d15da
commit 9c24622c21
4 changed files with 285 additions and 0 deletions

View File

@ -0,0 +1,139 @@
cmake_minimum_required(VERSION 3.14)
set(ac_init_line_re "AC_INIT\\(([^,]+), ([^,]+), ([^,]+), ([^)]+)\\)")
file(STRINGS
${CMAKE_CURRENT_LIST_DIR}/configure.ac
ac_init_line
REGEX ${ac_init_line_re}
)
string(REGEX REPLACE "${ac_init_line_re}" "\\1" PACKAGE_NAME ${ac_init_line})
string(REGEX REPLACE "${ac_init_line_re}" "\\2" PACKAGE_VERSION ${ac_init_line})
string(REGEX REPLACE "${ac_init_line_re}" "\\3" PACKAGE_BUGREPORT ${ac_init_line})
string(REGEX REPLACE "${ac_init_line_re}" "\\4" PACKAGE ${ac_init_line})
set(PACKAGE_TARNAME ${PACKAGE})
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
string(REGEX REPLACE "([0-9]+.[0-9]+.[0-9]+).*" "\\1" SEMANTIC_VERSION ${PACKAGE_VERSION})
project(libconfuse VERSION ${SEMANTIC_VERSION} LANGUAGES C)
include(CheckFunctionExists)
include(CheckIncludeFile)
include(GNUInstallDirs)
find_package(FLEX REQUIRED)
find_package(Gettext QUIET)
find_package(Intl QUIET)
set(CMAKE_DISABLE_SOURCE_CHANGES ON)
set(CMAKE_DISABLE_IN_SOURCE_BUILD ON)
if (GETTEXT_FOUND)
set(ENABLE_NLS 1)
endif ()
# libconfig.pc.in
set(prefix ${CMAKE_INSTALL_PREFIX})
set(exec_prefix ${prefix})
set(libdir ${prefix}/${CMAKE_INSTALL_LIBDIR})
set(includedir ${prefix}/${CMAKE_INSTALL_INCLUDEDIR})
set(VERSION ${PROJECT_VERSION})
if (Intl_FOUND AND Intl_LIBRARIES)
set(LTLIBINTL ${Intl_LIBRARIES})
endif ()
configure_file(libconfuse.pc.in ${CMAKE_CURRENT_BINARY_DIR}/libconfuse.pc @ONLY)
check_function_exists(dcgettext HAVE_DCGETTEXT)
check_function_exists(fmemopen HAVE_FMEMOPEN)
check_function_exists(funopen HAVE_FUNOPEN)
check_function_exists(gettext HAVE_GETTEXT)
check_function_exists(iconv HAVE_ICONV)
check_function_exists(strcasecmp HAVE_STRCASECMP)
check_function_exists(strdup HAVE_STRDUP)
check_function_exists(_strdup HAVE__STRDUP)
check_function_exists(strndup HAVE_STRNDUP)
check_function_exists(setenv HAVE_SETENV)
check_function_exists(unsetenv HAVE_UNSETENV)
check_function_exists(_putenv HAVE__PUTENV)
if (MSVC)
check_function_exists(_fileno HAVE__FILENO)
check_function_exists(_isatty HAVE__ISATTY)
check_function_exists(_stricmp HAVE_STRCASECMP)
endif ()
check_include_file(stdlib.h HAVE_STDLIB_H)
check_include_file(string.h HAVE_STRING_H)
check_include_file(strings.h HAVE_STRINGS_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_include_file(windows.h HAVE_WINDOWS_H)
configure_file(config.h.in ${CMAKE_CURRENT_BINARY_DIR}/config.h)
flex_target(
CONFUSE
src/lexer.l
${CMAKE_CURRENT_BINARY_DIR}/lexer.c
COMPILE_FLAGS -Pcfg_yy
)
set(libconfuse_sources
src/confuse.c
${FLEX_CONFUSE_OUTPUTS}
)
if (NOT HAVE_FMEMOPEN)
list(APPEND libconfuse_sources src/fmemopen.c)
endif ()
add_library(libconfuse ${libconfuse_sources})
if (BUILD_SHARED_LIBS)
if (WIN32)
target_compile_definitions(libconfuse PRIVATE BUILDING_DLL)
endif ()
else ()
target_compile_definitions(libconfuse PUBLIC BUILDING_STATIC)
endif ()
string(COMPARE EQUAL "${CMAKE_C_COMPILER_ID}" "GNU" USING_GNUC)
target_compile_definitions(libconfuse
PUBLIC
$<BUILD_INTERFACE:HAVE_CONFIG_H>
PRIVATE
$<$<BOOL:${MSVC}>:_CRT_SECURE_NO_WARNINGS>
$<$<BOOL:${MSVC}>:_CRT_NONSTDC_NO_DEPRECATE>
$<$<BOOL:${MSVC}>:strcasecmp=_stricmp>
$<$<BOOL:${USING_GNUC}>:_GNU_SOURCE>
)
target_include_directories(libconfuse
PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src>
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}>
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>
)
set_target_properties(libconfuse PROPERTIES PUBLIC_HEADER src/confuse.h)
install(TARGETS libconfuse EXPORT unofficial-libconfuse-config)
install(
EXPORT unofficial-libconfuse-config
NAMESPACE unofficial::libconfuse::
DESTINATION share/unofficial-libconfuse
PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ WORLD_READ
)
install(
FILES ${CMAKE_CURRENT_BINARY_DIR}/libconfuse.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
)

4
ports/libconfuse/CONTROL Normal file
View File

@ -0,0 +1,4 @@
Source: libconfuse
Version: 2019-07-14
Description: Small configuration file parser library for C
Homepage: https://github.com/martinh/libconfuse

View File

@ -0,0 +1,99 @@
/* Define if translation of program messages to the user's native
language is requested. */
#cmakedefine ENABLE_NLS
/* Define if you have the <stdlib.h> header file. */
#cmakedefine HAVE_STDLIB_H
/* Define if you have the <string.h> header file. */
#cmakedefine HAVE_STRING_H
/* Define if you have the <strings.h> header file. */
#cmakedefine HAVE_STRINGS_H
/* Define if you have the <sys/stat.h> header file. */
#cmakedefine HAVE_SYS_STAT_H
/* Define if you have the <sys/types.h> header file. */
#cmakedefine HAVE_SYS_TYPES_H
/* Define if you have the <unistd.h> header file. */
#cmakedefine HAVE_UNISTD_H
/* Define if you have the <windows.h> header file. */
#cmakedefine HAVE_WINDOWS_H
/* Define if you have the ANSI C header files. */
#define STDC_HEADERS 1
/* Define if you have the `_fileno' function. */
#cmakedefine HAVE__FILENO
/* Define if you have the `_isatty' function. */
#cmakedefine HAVE__ISATTY
/* Define if the GNU dcgettext() function is already present or preinstalled. */
#cmakedefine HAVE_DCGETTEXT
/* Define if you have the `fmemopen' function. */
#cmakedefine HAVE_FMEMOPEN
/* Define if you have the `funopen' function. */
#cmakedefine HAVE_FUNOPEN
/* Define if the GNU gettext() function is already present or preinstalled. */
#cmakedefine HAVE_GETTEXT
/* Define if you have the iconv() function. */
#cmakedefine HAVE_ICONV
/* Define if you have the `strcasecmp' function. */
#cmakedefine HAVE_STRCASECMP
/* Define if you have the `strdup' function. */
#cmakedefine HAVE_STRDUP
/* Define if you have the `_strdup' function. */
#cmakedefine HAVE__STRDUP
/* Define if you have the strndup function */
#cmakedefine HAVE_STRNDUP
/* Define if you have the `setenv' function. */
#cmakedefine HAVE_SETENV
/* Define if you have the `unsetenv' function. */
#cmakedefine HAVE_UNSETENV
/* Define if you have the `_putenv' function. */
#cmakedefine HAVE__PUTENV
/* Define if `lex' declares `yytext' as a `char *' by default, not a
`char[]'. */
/*#undef YYTEXT_POINTER*/
/* Define to empty if `const' does not conform to ANSI C. */
/*#undef const*/
/* Name of package */
#define PACKAGE "@PACKAGE@"
/* Define to the address where bug reports for this package should be sent. */
#define PACKAGE_BUGREPORT "@PACKAGE_BUGREPORT@"
/* Define to the full name of this package. */
#define PACKAGE_NAME "@PACKAGE_NAME@"
/* Define to the full name and version of this package. */
#define PACKAGE_STRING "@PACKAGE_STRING@"
/* Define to the one symbol short name of this package. */
#define PACKAGE_TARNAME "@PACKAGE_TARNAME@"
/* Define to the version of this package. */
#define PACKAGE_VERSION "@PACKAGE_VERSION@"
/* Version number of package */
#define VERSION "@PACKAGE_VERSION@"
#define LOCALEDIR "@CMAKE_INSTALL_LOCALEDIR@"

View File

@ -0,0 +1,43 @@
include(vcpkg_common_functions)
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO martinh/libconfuse
REF 67e1207c8de440525a3fdde1448a586791ebc052
SHA512 15d4eb0640fe74cc90910820715a70b2f944d2ed9753cca3be90f0ac6840beeda6a370b0624588d81ed2def2f8463e404473721351a685af711cf1d59efb870a
HEAD_REF master
)
file(COPY ${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt DESTINATION ${SOURCE_PATH})
file(COPY ${CMAKE_CURRENT_LIST_DIR}/config.h.in DESTINATION ${SOURCE_PATH})
vcpkg_find_acquire_program(FLEX)
get_filename_component(FLEX_DIR ${FLEX} DIRECTORY)
vcpkg_add_to_path(${FLEX_DIR})
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
)
vcpkg_install_cmake()
vcpkg_copy_pdbs()
if(VCPKG_LIBRARY_LINKAGE STREQUAL static)
vcpkg_replace_string(
${CURRENT_PACKAGES_DIR}/include/confuse.h
"ifdef BUILDING_STATIC"
"if 1 // ifdef BUILDING_STATIC"
)
endif()
vcpkg_fixup_cmake_targets(CONFIG_PATH share/unofficial-${PORT} TARGET_PATH share/unofficial-${PORT})
file(REMOVE_RECURSE ${CURRENT_PACKAGES_DIR}/debug/include)
# Handle copyright
configure_file(${SOURCE_PATH}/LICENSE ${CURRENT_PACKAGES_DIR}/share/${PORT}/copyright COPYONLY)
# CMake integration test
vcpkg_test_cmake(PACKAGE_NAME unofficial-${PORT})