From 0fa8459cf3a7caca7adc58f992bc32ff13630684 Mon Sep 17 00:00:00 2001 From: DownerCase <119755054+DownerCase@users.noreply.github.com> Date: Fri, 11 Aug 2023 23:22:31 +0100 Subject: [PATCH] [inih] Build with Meson + update to r57 (#33001) * [inih] Use meson build, bump version * [inih] Versioning * Specify c++11 to meson to fix osx? * [inih] Version * Restore line endings * Version * Address review comments - Removed CMake package versioning - Wasn't that useful as upstream don't use semver - Use straight configure_file to install CMake package config - Make cpp feature default - Prefer PkgConfig usage * Version * Actually delete the CMakeList * Version * separate C and C++ library usage * Version * Remove unofficial CMake config * Revert "Remove unofficial CMake config" This reverts commit 94ff6a903203912b96012c8c3479e6ccf9cc2308. * Take Javier's suggestion --- ports/inih/CMakeLists.txt | 56 --------------------- ports/inih/portfile.cmake | 40 +++++++++------ ports/inih/unofficial-inihConfig.cmake.in | 60 +++++++++++++++++++++++ ports/inih/usage | 7 +++ ports/inih/vcpkg.json | 11 ++--- versions/baseline.json | 2 +- versions/i-/inih.json | 5 ++ 7 files changed, 102 insertions(+), 79 deletions(-) delete mode 100644 ports/inih/CMakeLists.txt create mode 100644 ports/inih/unofficial-inihConfig.cmake.in create mode 100644 ports/inih/usage diff --git a/ports/inih/CMakeLists.txt b/ports/inih/CMakeLists.txt deleted file mode 100644 index 184c0c4f81e64a..00000000000000 --- a/ports/inih/CMakeLists.txt +++ /dev/null @@ -1,56 +0,0 @@ -cmake_minimum_required(VERSION 3.19) -project( - inih - VERSION 56 - LANGUAGES C CXX) - -set(Header_Files "ini.h") -set(Source_Files "ini.c") - -# TODO: Put this as vcpkg-feature before `project(` so can do `LANGUAGES C` if false -option(with_INIReader "build the C++ library" OFF) -if (with_INIReader) - list(APPEND Header_Files "cpp/INIReader.h") - list(APPEND Source_Files "cpp/INIReader.cpp") -endif (with_INIReader) - -add_library("${PROJECT_NAME}" "${Header_Files}" "${Source_Files}") - -include(GNUInstallDirs) -target_include_directories( - "${PROJECT_NAME}" - PUBLIC - "$" - "$" -) -target_compile_features("${PROJECT_NAME}" PRIVATE c_std_90) -set_target_properties("${PROJECT_NAME}" PROPERTIES C_VISIBILITY_PRESET hidden - PUBLIC_HEADER "${Header_Files}") - -install( - TARGETS "${PROJECT_NAME}" - EXPORT "unofficial-${PROJECT_NAME}Config" - RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" - ARCHIVE DESTINATION "${CMAKE_INSTALL_LIBDIR}" - LIBRARY DESTINATION "${CMAKE_INSTALL_LIBDIR}" - PUBLIC_HEADER DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" -) - -include(CMakePackageConfigHelpers) -set(VERSION_FILE_PATH "${CMAKE_CURRENT_BINARY_DIR}/unofficial-${PROJECT_NAME}ConfigVersion.cmake") -write_basic_package_version_file( - "${VERSION_FILE_PATH}" - VERSION "${PROJECT_VERSION}" - COMPATIBILITY SameMajorVersion -) -install(FILES "${VERSION_FILE_PATH}" DESTINATION "share/unofficial-${PROJECT_NAME}") - -install(FILES ${Header_Files} DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}") - -install( - EXPORT "unofficial-${PROJECT_NAME}Config" - FILE "unofficial-${PROJECT_NAME}Config.cmake" - NAMESPACE "unofficial::${PROJECT_NAME}::" - DESTINATION "share/unofficial-${PROJECT_NAME}") - -export(PACKAGE "${PROJECT_NAME}") diff --git a/ports/inih/portfile.cmake b/ports/inih/portfile.cmake index de15f762906fd4..06e53736fb986d 100644 --- a/ports/inih/portfile.cmake +++ b/ports/inih/portfile.cmake @@ -3,34 +3,42 @@ vcpkg_check_linkage(ONLY_STATIC_LIBRARY) vcpkg_from_github( OUT_SOURCE_PATH SOURCE_PATH REPO benhoyt/inih - REF 5e1d9e2625842dddb3f9c086a50f22e4f45dfc2b # r56 - SHA512 477a66643f6636a5826a1206c6588a12827e24a4a2609e11f0695888998e2bfcba8bdb2240c561404ee675bf4c72e85d7d008a1fbddb142c0d263b413de8d358 + REF r57 + SHA512 9f758df876df54ed7e228fd82044f184eefbe47e806cd1e6d62e1b0ea28e2c08e67fa743042d73b4baef0b882480e6afe2e72878b175822eb2bdbb6d89c0e411 HEAD_REF master ) -file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}") - vcpkg_check_features( OUT_FEATURE_OPTIONS FEATURE_OPTIONS FEATURES cpp with_INIReader ) -vcpkg_cmake_configure( +if(NOT DEFINED VCPKG_BUILD_TYPE OR VCPKG_BUILD_TYPE STREQUAL "debug") + set(INIH_CONFIG_DEBUG ON) +else() + set(INIH_CONFIG_DEBUG OFF) +endif() + +# Install unofficial CMake package +configure_file("${CMAKE_CURRENT_LIST_DIR}/unofficial-inihConfig.cmake.in" "${CURRENT_PACKAGES_DIR}/share/unofficial-inih/unofficial-inihConfig.cmake" @ONLY) + +# meson build +string(REPLACE "OFF" "false" FEATURE_OPTIONS "${FEATURE_OPTIONS}") +string(REPLACE "ON" "true" FEATURE_OPTIONS "${FEATURE_OPTIONS}") + +vcpkg_configure_meson( SOURCE_PATH "${SOURCE_PATH}" OPTIONS - ${FEATURE_OPTIONS} + "${FEATURE_OPTIONS}" + "-Dcpp_std=c++11" ) -vcpkg_cmake_install() -vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-inih) +vcpkg_install_meson() +vcpkg_fixup_pkgconfig() + +vcpkg_copy_pdbs() -file(INSTALL "${SOURCE_PATH}/LICENSE.txt" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}" RENAME copyright) -file(WRITE "${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" [=[ -inih provides CMake targets: - find_package(unofficial-inih CONFIG REQUIRED) - target_link_libraries(main PRIVATE unofficial::inih::inih) -]=]) +vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/LICENSE.txt") -file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share" - "${CURRENT_PACKAGES_DIR}/debug/include") +configure_file("${CMAKE_CURRENT_LIST_DIR}/usage" "${CURRENT_PACKAGES_DIR}/share/${PORT}/usage" COPYONLY) diff --git a/ports/inih/unofficial-inihConfig.cmake.in b/ports/inih/unofficial-inihConfig.cmake.in new file mode 100644 index 00000000000000..d6b61fc405b42c --- /dev/null +++ b/ports/inih/unofficial-inihConfig.cmake.in @@ -0,0 +1,60 @@ +if(TARGET unofficial::inih::libinih) + return() +endif() + +set(INIH_WITH_INI_READER @with_INIReader@) +set(INIH_WITH_DEBUG @INIH_CONFIG_DEBUG@) + +# Compute the installation prefix relative to this file. +get_filename_component(_IMPORT_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) +get_filename_component(_IMPORT_PREFIX "${_IMPORT_PREFIX}" PATH) + +################### +#### libinih #### + +add_library(unofficial::inih::libinih UNKNOWN IMPORTED) + +find_library(INIH_INIHLIB_RELEASE NAMES inih PATHS "${_IMPORT_PREFIX}/lib/" REQUIRED NO_DEFAULT_PATH) +set_target_properties(unofficial::inih::libinih PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + IMPORTED_LINK_INTERFACE_LANGUAGES "C" + IMPORTED_LOCATION_RELEASE "${INIH_INIHLIB_RELEASE}" + IMPORTED_CONFIGURATIONS "RELEASE" +) + +if(INIH_WITH_DEBUG) + set_property(TARGET unofficial::inih::libinih APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + find_library(INIH_INIHLIB_DEBUG NAMES inih PATHS "${_IMPORT_PREFIX}/debug/lib/" REQUIRED NO_DEFAULT_PATH) + set_target_properties(unofficial::inih::libinih PROPERTIES + IMPORTED_LOCATION_DEBUG "${INIH_INIHLIB_DEBUG}" + ) +endif() + +#### libinih #### +################### +#### INIReader #### + +if(INIH_WITH_INI_READER) + add_library(unofficial::inih::inireader UNKNOWN IMPORTED) + + find_library(INIH_INIREADER_RELEASE NAMES INIReader PATHS "${_IMPORT_PREFIX}/lib/" REQUIRED NO_DEFAULT_PATH) + set_target_properties(unofficial::inih::inireader PROPERTIES + INTERFACE_INCLUDE_DIRECTORIES "${_IMPORT_PREFIX}/include" + IMPORTED_LINK_INTERFACE_LANGUAGES "C;CXX" + IMPORTED_LOCATION_RELEASE "${INIH_INIREADER_RELEASE}" + INTERFACE_LINK_LIBRARIES "unofficial::inih::libinih" + IMPORTED_CONFIGURATIONS "RELEASE" + ) + + if(INIH_WITH_DEBUG) + set_property(TARGET unofficial::inih::inireader APPEND PROPERTY IMPORTED_CONFIGURATIONS DEBUG) + find_library(INIH_INIREADER_DEBUG NAMES INIReader PATHS "${_IMPORT_PREFIX}/debug/lib/" NO_DEFAULT_PATH) + set_target_properties(unofficial::inih::inireader PROPERTIES + IMPORTED_LOCATION_DEBUG "${INIH_INIREADER_DEBUG}" + ) + endif() +endif() + +#### INIReader #### +################### diff --git a/ports/inih/usage b/ports/inih/usage new file mode 100644 index 00000000000000..227be04c6f17d3 --- /dev/null +++ b/ports/inih/usage @@ -0,0 +1,7 @@ +The package inih provides unofficial CMake targets: + find_package(unofficial-inih CONFIG REQUIRED) + # C API + target_link_libraries(main PRIVATE unofficial::inih::libinih) + # C++ API (Requires "cpp" feature) + target_link_libraries(main PRIVATE unofficial::inih::inireader) +Alternatively, if you are using pckgconfig use the name "inih" for the C API and "inireader" for the C++ API diff --git a/ports/inih/vcpkg.json b/ports/inih/vcpkg.json index 5b76e98e6a3b10..c1b2b8a439afda 100644 --- a/ports/inih/vcpkg.json +++ b/ports/inih/vcpkg.json @@ -1,19 +1,18 @@ { "name": "inih", - "version": "56", + "version": "57", "description": "Simple .INI file parser", "homepage": "https://github.com/benhoyt/inih", "license": "BSD-3-Clause", "dependencies": [ { - "name": "vcpkg-cmake", - "host": true - }, - { - "name": "vcpkg-cmake-config", + "name": "vcpkg-tool-meson", "host": true } ], + "default-features": [ + "cpp" + ], "features": { "cpp": { "description": "Build the C++ library" diff --git a/versions/baseline.json b/versions/baseline.json index 25d8af7cde8a86..f3510d97ba0f58 100644 --- a/versions/baseline.json +++ b/versions/baseline.json @@ -3413,7 +3413,7 @@ "port-version": 0 }, "inih": { - "baseline": "56", + "baseline": "57", "port-version": 0 }, "iniparser": { diff --git a/versions/i-/inih.json b/versions/i-/inih.json index 000f4f53b8b430..1768adc139a5fb 100644 --- a/versions/i-/inih.json +++ b/versions/i-/inih.json @@ -1,5 +1,10 @@ { "versions": [ + { + "git-tree": "c5a05cc38f61274fdbef602c91505397b7cd43e8", + "version": "57", + "port-version": 0 + }, { "git-tree": "ccae9a4d18198ac2d9303cac12c4dbb1fbe0bf24", "version": "56",