diff options
| author | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
|---|---|---|
| committer | Ethan Morgan <ethan@gweithio.com> | 2026-02-14 16:44:06 +0000 |
| commit | 54409423f767d8b1cf30cb7d0efca6b4ca138823 (patch) | |
| tree | d915ac7828703ce4b963efdd9728a1777ba18c1e /vcpkg/ports/libplist | |
Diffstat (limited to 'vcpkg/ports/libplist')
| -rw-r--r-- | vcpkg/ports/libplist/001_fix_static_build.patch | 22 | ||||
| -rw-r--r-- | vcpkg/ports/libplist/CMakeLists.txt | 105 | ||||
| -rw-r--r-- | vcpkg/ports/libplist/portfile.cmake | 45 | ||||
| -rw-r--r-- | vcpkg/ports/libplist/usage | 4 | ||||
| -rw-r--r-- | vcpkg/ports/libplist/vcpkg.json | 23 |
5 files changed, 199 insertions, 0 deletions
diff --git a/vcpkg/ports/libplist/001_fix_static_build.patch b/vcpkg/ports/libplist/001_fix_static_build.patch new file mode 100644 index 0000000..1df3299 --- /dev/null +++ b/vcpkg/ports/libplist/001_fix_static_build.patch @@ -0,0 +1,22 @@ +diff --git a/src/plist.c b/src/plist.c +index a33a6fb..1dda4d7 100644 +--- a/src/plist.c ++++ b/src/plist.c +@@ -132,6 +132,8 @@ static int plist_debug = 0; + static void f(void) + #endif + ++#ifndef LIBPLIST_STATIC // disable dll constructor ++ + extern void plist_xml_init(void); + extern void plist_xml_deinit(void); + extern void plist_bin_init(void); +@@ -158,6 +160,8 @@ INITIALIZER(internal_plist_init) + atexit(internal_plist_deinit); + } + ++#endif // disable dll constructor ++ + #ifndef HAVE_MEMMEM + // see https://sourceware.org/legacy-ml/libc-alpha/2007-12/msg00000.html + diff --git a/vcpkg/ports/libplist/CMakeLists.txt b/vcpkg/ports/libplist/CMakeLists.txt new file mode 100644 index 0000000..d80d66e --- /dev/null +++ b/vcpkg/ports/libplist/CMakeLists.txt @@ -0,0 +1,105 @@ +cmake_minimum_required(VERSION 3.15) +project(libplist C CXX) + +option(BUILD_TOOLS "Build tools." OFF) + +include(GNUInstallDirs) + +file(GLOB_RECURSE LIBCNARY_SOURCE libcnary/node.c libcnary/node_list.c) +file(GLOB_RECURSE LIBPLIST_SOURCE src/*.c) +file(GLOB_RECURSE LIBPLISTPP_SOURCE src/*.cpp) + +set(DEFINITIONS) + +list(APPEND DEFINITIONS -DPACKAGE_VERSION="${PACKAGE_VERSION}") + +if(BUILD_SHARED_LIBS) + if(WIN32) + list(APPEND DEFINITIONS -DLIBPLIST_EXPORT) + endif() +else() + list(APPEND DEFINITIONS -DLIBPLIST_STATIC) +endif() + +if(UNIX) + list(APPEND DEFINITIONS -DHAVE_STRNDUP) +endif() + +if(WIN32) + list(APPEND DEFINITIONS -D_CRT_SECURE_NO_WARNINGS) +endif() + +add_library(libplist ${LIBPLIST_SOURCE} ${LIBCNARY_SOURCE}) +target_include_directories(libplist PUBLIC + "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/libcnary/include>" + "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src>" + "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>" + "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>" +) +target_compile_definitions(libplist PRIVATE ${DEFINITIONS}) +set_target_properties(libplist PROPERTIES OUTPUT_NAME plist-2.0) +if(UNIX AND NOT APPLE) + target_link_libraries(libplist PRIVATE m) +endif() + +add_library(libplist++ STATIC ${LIBPLISTPP_SOURCE} ${LIBCNARY_SOURCE}) +target_include_directories(libplist++ PUBLIC + "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/libcnary/include>" + "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/src>" + "$<BUILD_INTERFACE:${CMAKE_CURRENT_LIST_DIR}/include>" + "$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>" +) +target_compile_definitions(libplist++ PRIVATE ${DEFINITIONS}) +target_link_libraries(libplist++ PUBLIC libplist) +set_target_properties(libplist++ PROPERTIES OUTPUT_NAME plist++-2.0) + +install(TARGETS libplist libplist++ EXPORT unofficial-libplist) + +install( + EXPORT unofficial-libplist + FILE unofficial-libplist-config.cmake + DESTINATION "${CMAKE_INSTALL_DATAROOTDIR}/unofficial-libplist" + NAMESPACE unofficial::libplist:: +) + +install( + DIRECTORY "${CMAKE_SOURCE_DIR}/include/plist" + DESTINATION "${CMAKE_INSTALL_INCLUDEDIR}" +) + +set(PACKAGE_NAME libplist) +set(PACKAGE_VERSION 2.0) +set(prefix "") +set(exec_prefix "\${prefix}") +set(libdir "\${prefix}/lib") +set(includedir "\${prefix}/include") + +foreach(PLIST_PKGCONFIG libplist-2.0.pc libplist++-2.0.pc) + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/src/${PLIST_PKGCONFIG}.in" + "${CMAKE_CURRENT_BINARY_DIR}/${PLIST_PKGCONFIG}" + @ONLY + ) + install( + FILES "${CMAKE_CURRENT_BINARY_DIR}/${PLIST_PKGCONFIG}" + DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig" + ) +endforeach() + +if(BUILD_TOOLS) + add_executable(plistutil "tools/plistutil.c") + target_compile_definitions(plistutil PRIVATE + -DPACKAGE_VERSION="2.3.0" + -DPACKAGE_URL="https://github.com/libimobiledevice/libplist" + -DPACKAGE_BUGREPORT="https://github.com/libimobiledevice/libplist/issues" + ) + if(NOT BUILD_SHARED_LIBS) + target_compile_definitions(plistutil PRIVATE -DLIBPLIST_STATIC) + endif() + target_link_libraries(plistutil PRIVATE libplist) + + install( + TARGETS plistutil + RUNTIME DESTINATION "${CMAKE_INSTALL_BINDIR}" + ) +endif() diff --git a/vcpkg/ports/libplist/portfile.cmake b/vcpkg/ports/libplist/portfile.cmake new file mode 100644 index 0000000..c62495d --- /dev/null +++ b/vcpkg/ports/libplist/portfile.cmake @@ -0,0 +1,45 @@ +vcpkg_from_github(
+ OUT_SOURCE_PATH SOURCE_PATH
+ REPO libimobiledevice/libplist
+ REF ${VERSION}
+ SHA512 0477202686fb2f88684af30a97d53fd023ada470dfc7c5d8b32c0d80e09a4641e679522a53c5ad32eae61b21a2d0f1f0c660acd8482ba7951d728b42e4cf5eab
+ HEAD_REF master
+ PATCHES
+ 001_fix_static_build.patch
+)
+
+file(COPY "${CMAKE_CURRENT_LIST_DIR}/CMakeLists.txt" DESTINATION "${SOURCE_PATH}")
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ FEATURES
+ tools BUILD_TOOLS
+)
+
+vcpkg_cmake_configure(
+ SOURCE_PATH "${SOURCE_PATH}"
+ OPTIONS
+ ${FEATURE_OPTIONS}
+ -DPACKAGE_VERSION=${VERSION}
+)
+
+vcpkg_cmake_install()
+vcpkg_cmake_config_fixup(PACKAGE_NAME unofficial-${PORT})
+vcpkg_fixup_pkgconfig()
+if("tools" IN_LIST FEATURES)
+ vcpkg_copy_tools(TOOL_NAMES plistutil AUTO_CLEAN)
+endif()
+
+if (VCPKG_LIBRARY_LINKAGE STREQUAL "static")
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/plist/plist.h"
+ "#ifdef LIBPLIST_STATIC" "#if 1"
+ )
+else()
+ vcpkg_replace_string("${CURRENT_PACKAGES_DIR}/include/plist/plist.h"
+ "#ifdef LIBPLIST_STATIC" "#if 0"
+ )
+endif()
+
+file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/include")
+
+vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")
+file(INSTALL "${CMAKE_CURRENT_LIST_DIR}/usage" DESTINATION "${CURRENT_PACKAGES_DIR}/share/${PORT}")
diff --git a/vcpkg/ports/libplist/usage b/vcpkg/ports/libplist/usage new file mode 100644 index 0000000..81c34ea --- /dev/null +++ b/vcpkg/ports/libplist/usage @@ -0,0 +1,4 @@ +libplist provides CMake targets: + + find_package(unofficial-libplist CONFIG REQUIRED) + target_link_libraries(main PRIVATE unofficial::libplist::libplist unofficial::libplist::libplist++) diff --git a/vcpkg/ports/libplist/vcpkg.json b/vcpkg/ports/libplist/vcpkg.json new file mode 100644 index 0000000..35283a2 --- /dev/null +++ b/vcpkg/ports/libplist/vcpkg.json @@ -0,0 +1,23 @@ +{ + "name": "libplist", + "version": "2.7.0", + "description": "A library to handle Apple Property List format in binary or XML", + "homepage": "https://libimobiledevice.org/", + "license": "LGPL-2.1-or-later", + "dependencies": [ + { + "name": "vcpkg-cmake", + "host": true + }, + { + "name": "vcpkg-cmake-config", + "host": true + } + ], + "features": { + "tools": { + "description": "build command line tool", + "supports": "!android & !ios & !xbox" + } + } +} |