diff options
| author | myd7349 <myd7349@gmail.com> | 2019-07-22 14:25:18 +0800 |
|---|---|---|
| committer | Phil Christensen <philc@microsoft.com> | 2019-07-21 23:25:18 -0700 |
| commit | 9c24622c212848c37e81e2d2059a1de2845f1c9e (patch) | |
| tree | 3cfacb9147ca19afa8abd6480ee59f8ad5380f87 | |
| parent | 89cd3d15da7e3ceaffb69ec0011453d8999ba557 (diff) | |
| download | vcpkg-9c24622c212848c37e81e2d2059a1de2845f1c9e.tar.gz vcpkg-9c24622c212848c37e81e2d2059a1de2845f1c9e.zip | |
[libconfuse] Add new port (#7252)
| -rw-r--r-- | ports/libconfuse/CMakeLists.txt | 139 | ||||
| -rw-r--r-- | ports/libconfuse/CONTROL | 4 | ||||
| -rw-r--r-- | ports/libconfuse/config.h.in | 99 | ||||
| -rw-r--r-- | ports/libconfuse/portfile.cmake | 43 |
4 files changed, 285 insertions, 0 deletions
diff --git a/ports/libconfuse/CMakeLists.txt b/ports/libconfuse/CMakeLists.txt new file mode 100644 index 000000000..651dab2f0 --- /dev/null +++ b/ports/libconfuse/CMakeLists.txt @@ -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
+)
diff --git a/ports/libconfuse/CONTROL b/ports/libconfuse/CONTROL new file mode 100644 index 000000000..15044cce3 --- /dev/null +++ b/ports/libconfuse/CONTROL @@ -0,0 +1,4 @@ +Source: libconfuse
+Version: 2019-07-14
+Description: Small configuration file parser library for C
+Homepage: https://github.com/martinh/libconfuse
diff --git a/ports/libconfuse/config.h.in b/ports/libconfuse/config.h.in new file mode 100644 index 000000000..3a43264bd --- /dev/null +++ b/ports/libconfuse/config.h.in @@ -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@"
diff --git a/ports/libconfuse/portfile.cmake b/ports/libconfuse/portfile.cmake new file mode 100644 index 000000000..01c6290cd --- /dev/null +++ b/ports/libconfuse/portfile.cmake @@ -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})
|
