Skip to content

Commit

Permalink
[gexiv2] new port (microsoft#43600)
Browse files Browse the repository at this point in the history
  • Loading branch information
talregev authored Feb 14, 2025
1 parent 56cf249 commit 7b805c5
Show file tree
Hide file tree
Showing 5 changed files with 270 additions and 0 deletions.
203 changes: 203 additions & 0 deletions ports/gexiv2/msvc_def.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,203 @@
From 53770886561d434db53c229cd3d6391939a8185c Mon Sep 17 00:00:00 2001
From: Jens Georg <[email protected]>
Date: Mon, 10 Feb 2025 22:15:56 +0100
Subject: [PATCH] build: Add .def file and a script to update it

---
build-aux/update-def-file.sh | 3 +
gexiv2/gexiv2.def | 152 +++++++++++++++++++++++++++++++++++
gexiv2/meson.build | 8 ++
3 files changed, 163 insertions(+)
create mode 100755 build-aux/update-def-file.sh
create mode 100644 gexiv2/gexiv2.def

diff --git a/build-aux/update-def-file.sh b/build-aux/update-def-file.sh
new file mode 100755
index 0000000..950d422
--- /dev/null
+++ b/build-aux/update-def-file.sh
@@ -0,0 +1,3 @@
+#!/bin/bash
+
+nm -gD "$1" | grep " T " | cut -f3 -d " " | sort | uniq > "$2"
diff --git a/gexiv2/gexiv2.def b/gexiv2/gexiv2.def
new file mode 100644
index 0000000..de934fd
--- /dev/null
+++ b/gexiv2/gexiv2.def
@@ -0,0 +1,151 @@
+EXPORTS
+gexiv2_get_version
+gexiv2_gexiv2_byte_order_get_type
+gexiv2_gexiv2_log_level_get_type
+gexiv2_gexiv2_orientation_get_type
+gexiv2_gexiv2_structure_type_get_type
+gexiv2_gexiv2_xmp_format_flags_get_type
+gexiv2_initialize
+gexiv2_log_get_default_handler
+gexiv2_log_get_handler
+gexiv2_log_get_level
+gexiv2_log_set_handler
+gexiv2_log_set_level
+gexiv2_log_use_glib_logging
+gexiv2_metadata_clear
+gexiv2_metadata_clear_comment
+gexiv2_metadata_clear_exif
+gexiv2_metadata_clear_iptc
+gexiv2_metadata_clear_tag
+gexiv2_metadata_clear_xmp
+gexiv2_metadata_delete_gps_info
+gexiv2_metadata_erase_exif_thumbnail
+gexiv2_metadata_free
+gexiv2_metadata_from_app1_segment
+gexiv2_metadata_from_stream
+gexiv2_metadata_generate_xmp_packet
+gexiv2_metadata_get_comment
+gexiv2_metadata_get_exif_data
+gexiv2_metadata_get_exif_tag_rational
+gexiv2_metadata_get_exif_tags
+gexiv2_metadata_get_exif_thumbnail
+gexiv2_metadata_get_exposure_time
+gexiv2_metadata_get_fnumber
+gexiv2_metadata_get_focal_length
+gexiv2_metadata_get_gps_altitude
+gexiv2_metadata_get_gps_info
+gexiv2_metadata_get_gps_latitude
+gexiv2_metadata_get_gps_longitude
+gexiv2_metadata_get_iptc_tags
+gexiv2_metadata_get_iso_speed
+gexiv2_metadata_get_metadata_pixel_height
+gexiv2_metadata_get_metadata_pixel_width
+gexiv2_metadata_get_mime_type
+gexiv2_metadata_get_orientation
+gexiv2_metadata_get_pixel_height
+gexiv2_metadata_get_pixel_width
+gexiv2_metadata_get_preview_image
+gexiv2_metadata_get_preview_properties
+gexiv2_metadata_get_supports_exif
+gexiv2_metadata_get_supports_iptc
+gexiv2_metadata_get_supports_xmp
+gexiv2_metadata_get_tag_description
+gexiv2_metadata_get_tag_interpreted_string
+gexiv2_metadata_get_tag_label
+gexiv2_metadata_get_tag_long
+gexiv2_metadata_get_tag_multiple
+gexiv2_metadata_get_tag_raw
+gexiv2_metadata_get_tag_string
+gexiv2_metadata_get_tag_type
+gexiv2_metadata_get_type
+gexiv2_metadata_get_xmp_namespace_for_tag
+gexiv2_metadata_get_xmp_packet
+gexiv2_metadata_get_xmp_tags
+gexiv2_metadata_has_exif
+gexiv2_metadata_has_iptc
+gexiv2_metadata_has_tag
+gexiv2_metadata_has_xmp
+gexiv2_metadata_is_exif_tag
+gexiv2_metadata_is_iptc_tag
+gexiv2_metadata_is_xmp_tag
+gexiv2_metadata_new
+gexiv2_metadata_open_buf
+gexiv2_metadata_open_path
+gexiv2_metadata_register_xmp_namespace
+gexiv2_metadata_save_external
+gexiv2_metadata_save_file
+gexiv2_metadata_set_comment
+gexiv2_metadata_set_exif_tag_rational
+gexiv2_metadata_set_exif_thumbnail_from_buffer
+gexiv2_metadata_set_exif_thumbnail_from_file
+gexiv2_metadata_set_gps_info
+gexiv2_metadata_set_metadata_pixel_height
+gexiv2_metadata_set_metadata_pixel_width
+gexiv2_metadata_set_orientation
+gexiv2_metadata_set_tag_long
+gexiv2_metadata_set_tag_multiple
+gexiv2_metadata_set_tag_string
+gexiv2_metadata_set_xmp_tag_struct
+gexiv2_metadata_try_clear_tag
+gexiv2_metadata_try_delete_gps_info
+gexiv2_metadata_try_erase_exif_thumbnail
+gexiv2_metadata_try_generate_xmp_packet
+gexiv2_metadata_try_get_comment
+gexiv2_metadata_try_get_exif_tag_rational
+gexiv2_metadata_try_get_exposure_time
+gexiv2_metadata_try_get_fnumber
+gexiv2_metadata_try_get_focal_length
+gexiv2_metadata_try_get_gps_altitude
+gexiv2_metadata_try_get_gps_info
+gexiv2_metadata_try_get_gps_latitude
+gexiv2_metadata_try_get_gps_longitude
+gexiv2_metadata_try_get_iso_speed
+gexiv2_metadata_try_get_metadata_pixel_height
+gexiv2_metadata_try_get_metadata_pixel_width
+gexiv2_metadata_try_get_orientation
+gexiv2_metadata_try_get_preview_image
+gexiv2_metadata_try_get_tag_description
+gexiv2_metadata_try_get_tag_interpreted_string
+gexiv2_metadata_try_get_tag_label
+gexiv2_metadata_try_get_tag_long
+gexiv2_metadata_try_get_tag_multiple
+gexiv2_metadata_try_get_tag_raw
+gexiv2_metadata_try_get_tag_string
+gexiv2_metadata_try_get_tag_type
+gexiv2_metadata_try_get_xmp_namespace_for_tag
+gexiv2_metadata_try_get_xmp_packet
+gexiv2_metadata_try_has_tag
+gexiv2_metadata_try_register_xmp_namespace
+gexiv2_metadata_try_set_comment
+gexiv2_metadata_try_set_exif_tag_rational
+gexiv2_metadata_try_set_exif_thumbnail_from_buffer
+gexiv2_metadata_try_set_gps_info
+gexiv2_metadata_try_set_metadata_pixel_height
+gexiv2_metadata_try_set_metadata_pixel_width
+gexiv2_metadata_try_set_orientation
+gexiv2_metadata_try_set_tag_long
+gexiv2_metadata_try_set_tag_multiple
+gexiv2_metadata_try_set_tag_string
+gexiv2_metadata_try_set_xmp_tag_struct
+gexiv2_metadata_try_tag_supports_multiple_values
+gexiv2_metadata_try_unregister_all_xmp_namespaces
+gexiv2_metadata_try_unregister_xmp_namespace
+gexiv2_metadata_try_update_gps_info
+gexiv2_metadata_unregister_all_xmp_namespaces
+gexiv2_metadata_unregister_xmp_namespace
+gexiv2_metadata_update_gps_info
+gexiv2_preview_image_free
+gexiv2_preview_image_get_data
+gexiv2_preview_image_get_extension
+gexiv2_preview_image_get_height
+gexiv2_preview_image_get_mime_type
+gexiv2_preview_image_get_type
+gexiv2_preview_image_get_width
+gexiv2_preview_image_try_write_file
+gexiv2_preview_image_write_file
+gexiv2_preview_properties_get_extension
+gexiv2_preview_properties_get_height
+gexiv2_preview_properties_get_mime_type
+gexiv2_preview_properties_get_size
+gexiv2_preview_properties_get_type
+gexiv2_preview_properties_get_width
diff --git a/gexiv2/meson.build b/gexiv2/meson.build
index d56409c..fe7de09 100644
--- a/gexiv2/meson.build
+++ b/gexiv2/meson.build
@@ -66,8 +66,16 @@ gexiv2 = library('gexiv2',
version: libversion,
darwin_versions: darwin_versions,
dependencies : [gobject, exiv2, gio],
+ vs_module_defs : 'gexiv2.def',
install : true)

+update_def_script = find_program('update-def-file.sh', dirs: [meson.project_source_root() / 'build-aux'])
+custom_target('update-def-file',
+ output: 'gexiv2.def',
+ input: gexiv2,
+ command: [update_def_script, '@INPUT@', '@OUTPUT@'],
+ install: false)
+
libgexiv2 = declare_dependency(
link_with : gexiv2,
include_directories : include_directories('..'),
--
GitLab

35 changes: 35 additions & 0 deletions ports/gexiv2/portfile.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
vcpkg_download_distfile(ARCHIVE
URLS "https://download.gnome.org/sources/gexiv2/0.14/gexiv2-${VERSION}.tar.xz"
FILENAME "gexiv2-${VERSION}.tar.xz"
SHA512 24c97fa09b9ee32cb98da4637ea78eb72ae7e2d1792f9ebb31d63e305b3e0e1f6935b8647589c76c39ba631a15c1d8d2f3879c7dff81433786e9533b6348b6a0
)

vcpkg_extract_source_archive(
SOURCE_PATH
ARCHIVE "${ARCHIVE}"
PATCHES
msvc_def.patch
)

vcpkg_configure_meson(
SOURCE_PATH "${SOURCE_PATH}"
OPTIONS
-Dintrospection=false
-Dvapi=false
-Dgtk_doc=false
-Dpython3=false
-Dtests=false
-Dtools=false
ADDITIONAL_BINARIES
glib-mkenums='${CURRENT_HOST_INSTALLED_DIR}/tools/glib/glib-mkenums'
)

vcpkg_install_meson()

vcpkg_copy_pdbs()

vcpkg_fixup_pkgconfig()

vcpkg_install_copyright(FILE_LIST "${SOURCE_PATH}/COPYING")

file(REMOVE_RECURSE "${CURRENT_PACKAGES_DIR}/debug/share")
19 changes: 19 additions & 0 deletions ports/gexiv2/vcpkg.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"name": "gexiv2",
"version": "0.14.3",
"description": "A GObject-based Exiv2 wrapper.",
"homepage": "https://gitlab.gnome.org/GNOME/gexiv2/",
"license": "GPL-2.0-or-later",
"dependencies": [
"exiv2",
"glib",
{
"name": "glib",
"host": true
},
{
"name": "vcpkg-tool-meson",
"host": true
}
]
}
4 changes: 4 additions & 0 deletions versions/baseline.json
Original file line number Diff line number Diff line change
Expand Up @@ -3096,6 +3096,10 @@
"baseline": "2017-10-14",
"port-version": 6
},
"gexiv2": {
"baseline": "0.14.3",
"port-version": 0
},
"gflags": {
"baseline": "2.2.2",
"port-version": 9
Expand Down
9 changes: 9 additions & 0 deletions versions/g-/gexiv2.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
{
"versions": [
{
"git-tree": "e18bc37283a388c5fd401c915598feca8e50363b",
"version": "0.14.3",
"port-version": 0
}
]
}

0 comments on commit 7b805c5

Please sign in to comment.