aboutsummaryrefslogtreecommitdiff
path: root/ports/exiv2
diff options
context:
space:
mode:
Diffstat (limited to 'ports/exiv2')
-rw-r--r--ports/exiv2/CONTROL8
-rw-r--r--ports/exiv2/expat.patch45
-rw-r--r--ports/exiv2/portfile.cmake26
3 files changed, 70 insertions, 9 deletions
diff --git a/ports/exiv2/CONTROL b/ports/exiv2/CONTROL
index 35af4ff70..798343c70 100644
--- a/ports/exiv2/CONTROL
+++ b/ports/exiv2/CONTROL
@@ -1,8 +1,14 @@
Source: exiv2
Version: 0.27.3
-Build-Depends: zlib, expat, libiconv, gettext
+Port-Version: 1
+Build-Depends: zlib, libiconv, gettext
Description: Image metadata library and tools
Homepage: https://www.exiv2.org
+Supports: !uwp
Feature: unicode
Description: Compile with unicode support on windows
+
+Feature: xmp
+Description: Build with XMP metadata support
+Build-Depends: expat
diff --git a/ports/exiv2/expat.patch b/ports/exiv2/expat.patch
new file mode 100644
index 000000000..a170e61dc
--- /dev/null
+++ b/ports/exiv2/expat.patch
@@ -0,0 +1,45 @@
+diff --git a/cmake/findDependencies.cmake b/cmake/findDependencies.cmake
+index 9caffcf..deb01a0 100644
+--- a/cmake/findDependencies.cmake
++++ b/cmake/findDependencies.cmake
+@@ -33,7 +33,7 @@ if (EXIV2_ENABLE_XMP AND EXIV2_ENABLE_EXTERNAL_XMP)
+ message(FATAL_ERROR "EXIV2_ENABLE_XMP AND EXIV2_ENABLE_EXTERNAL_XMP are mutually exclusive. You can only choose one of them")
+ else()
+ if (EXIV2_ENABLE_XMP)
+- find_package(EXPAT REQUIRED)
++ find_package(expat CONFIG REQUIRED)
+ elseif (EXIV2_ENABLE_EXTERNAL_XMP)
+ find_package(XmpSdk REQUIRED)
+ endif ()
+diff --git a/xmpsdk/CMakeLists.txt b/xmpsdk/CMakeLists.txt
+index ae011dc..7390d26 100644
+--- a/xmpsdk/CMakeLists.txt
++++ b/xmpsdk/CMakeLists.txt
+@@ -26,16 +26,21 @@ add_library(exiv2-xmp STATIC
+ include/XMP_Version.h
+ )
+
+-target_link_libraries(exiv2-xmp
+- PRIVATE
+- ${EXPAT_LIBRARY}
+-)
++if(WIN32 AND NOT MINGW)
++ target_link_libraries(exiv2-xmp
++ PRIVATE
++ expat::libexpat
++ )
++else()
++ target_link_libraries(exiv2-xmp
++ PRIVATE
++ expat::expat
++ )
++endif()
+
+ target_include_directories(exiv2-xmp
+ PUBLIC
+ $<BUILD_INTERFACE:${PROJECT_SOURCE_DIR}/xmpsdk/include>
+- PRIVATE
+- ${EXPAT_INCLUDE_DIR}
+ )
+
+ # Prevent a denial-service-attack related to XML entity expansion
diff --git a/ports/exiv2/portfile.cmake b/ports/exiv2/portfile.cmake
index 966c9eff8..faab7e405 100644
--- a/ports/exiv2/portfile.cmake
+++ b/ports/exiv2/portfile.cmake
@@ -1,22 +1,33 @@
+#https://github.com/Exiv2/exiv2/issues/1063
+vcpkg_fail_port_install(ON_TARGET "uwp")
+
+if("xmp" IN_LIST FEATURES)
+ set(EXPAT_PATCH ${CMAKE_CURRENT_LIST_DIR}/expat.patch)
+endif()
+
vcpkg_from_github(
OUT_SOURCE_PATH SOURCE_PATH
REPO Exiv2/exiv2
REF 194bb65ac568a5435874c9d9d73b1c8a68e4edec #v0.27.3
SHA512 35a5a41e0a6cfe04d1ed005c8116ad4430516402b925db3d4f719e2385e2cfb09359eb7ab51853bc560138f221900778cd2e2d39f108c513b3e7d22dbb9bf503
HEAD_REF master
+ PATCHES ${EXPAT_PATCH}
+)
+
+vcpkg_check_features(OUT_FEATURE_OPTIONS FEATURE_OPTIONS
+ unicode EXIV2_ENABLE_WIN_UNICODE
+ xmp EXIV2_ENABLE_XMP
)
-if((NOT VCPKG_CMAKE_SYSTEM_NAME OR VCPKG_CMAKE_SYSTEM_NAME STREQUAL "WindowsStore") AND ("unicode" IN_LIST FEATURES))
- set(enable_win_unicode TRUE)
-elseif()
- set(enable_win_unicode FALSE)
+if("unicode" IN_LIST FEATURES AND NOT VCPKG_TARGET_IS_WINDOWS)
+ message(FATAL_ERROR "Feature unicode only supports Windows platform.")
endif()
vcpkg_configure_cmake(
SOURCE_PATH ${SOURCE_PATH}
PREFER_NINJA
OPTIONS
- -DEXIV2_ENABLE_WIN_UNICODE:BOOL=${enable_win_unicode}
+ ${FEATURE_OPTIONS}
-DEXIV2_BUILD_EXIV2_COMMAND:BOOL=FALSE
-DEXIV2_BUILD_UNIT_TESTS:BOOL=FALSE
-DEXIV2_BUILD_SAMPLES:BOOL=FALSE
@@ -27,7 +38,7 @@ vcpkg_fixup_cmake_targets(CONFIG_PATH lib/cmake/exiv2)
configure_file(
${CMAKE_CURRENT_LIST_DIR}/vcpkg-cmake-wrapper.cmake
- ${CURRENT_PACKAGES_DIR}/share/exiv2
+ ${CURRENT_PACKAGES_DIR}/share/${PORT}
@ONLY
)
@@ -42,5 +53,4 @@ if(VCPKG_LIBRARY_LINKAGE STREQUAL "static")
endif()
# Handle copyright
-file(COPY ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/exiv2)
-file(RENAME ${CURRENT_PACKAGES_DIR}/share/exiv2/COPYING ${CURRENT_PACKAGES_DIR}/share/exiv2/copyright)
+file(INSTALL ${SOURCE_PATH}/COPYING DESTINATION ${CURRENT_PACKAGES_DIR}/share/${PORT} RENAME copyright) \ No newline at end of file