You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gentoo-overlay/kde-apps/libkexiv2/files/libkexiv2-18.12.0-exiv2-0.2...

254 lines
9.1 KiB

From 27c6834e4e984c34a55fad313c26fe08d9dd35b0 Mon Sep 17 00:00:00 2001
From: Andreas Sturmlechner <andreas.sturmlechner@gmail.com>
Date: Tue, 25 Dec 2018 16:52:26 +0100
Subject: [PATCH] Fix building against exiv2-0.27
Summary:
Copied FindLibExiv2.cmake from ECM 5.53.0 until we raise min version.
Bumped cmake to 3.7 minimum for VERSION_GREATER_EQUAL.
Test Plan: Tested build with exiv2-0.26 and 0.27
Reviewers: #kde_applications, cgilles
Subscribers: heikobecker
Differential Revision: https://phabricator.kde.org/D17799
---
CMakeLists.txt | 36 ++++----
cmake/modules/FindExiv2.cmake | 80 ------------------
cmake/modules/FindLibExiv2.cmake | 115 ++++++++++++++++++++++++++
cmake/templates/libkexiv2.pc.cmake.in | 2 +-
config-kexiv2.h.cmake | 4 +
src/CMakeLists.txt | 3 +-
src/kexiv2.cpp | 2 +-
src/kexiv2.h | 1 +
src/kexiv2_p.cpp | 17 +---
src/kexiv2_p.h | 1 +
src/kexiv2exif.cpp | 4 +
11 files changed, 147 insertions(+), 118 deletions(-)
delete mode 100644 cmake/modules/FindExiv2.cmake
create mode 100644 cmake/modules/FindLibExiv2.cmake
create mode 100644 config-kexiv2.h.cmake
diff --git a/CMakeLists.txt b/CMakeLists.txt
index d13ef27..fcda905 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,14 +4,14 @@
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
-set(CMAKE_MIN_VERSION "3.0.0")
+set(CMAKE_MIN_VERSION "3.7.0")
set(ECM_MIN_VERSION "1.1.0")
set(REQUIRED_QT_VERSION "5.2.0")
set(EXIV2_MIN_VERSION "0.24")
cmake_minimum_required(VERSION ${CMAKE_MIN_VERSION})
-project(libkexiv2)
+project(libkexiv2 VERSION "5.0.0")
message(STATUS "----------------------------------------------------------------------------------")
message(STATUS "Starting CMake configuration for: ${PROJECT_NAME}")
@@ -47,18 +47,12 @@ message(STATUS "Starting CMake configuration for: ${PROJECT_NAME}")
# 2.4.0 => 11.3.0 - Add new method to access on text edit widget from AltLangStrEdit
# 5.0.0 => 15.0.0 (Released with KDE 5.x)
-# Library API version
-set(KEXIV2_LIB_MAJOR_VERSION "5")
-set(KEXIV2_LIB_MINOR_VERSION "0")
-set(KEXIV2_LIB_PATCH_VERSION "0")
-
# Library ABI version used by linker.
# For details : http://www.gnu.org/software/libtool/manual/libtool.html#Updating-version-info
set(KEXIV2_LIB_SO_CUR_VERSION "15")
set(KEXIV2_LIB_SO_REV_VERSION "0")
set(KEXIV2_LIB_SO_AGE_VERSION "0")
-set(LIBKEXIV2_LIB_VERSION "${KEXIV2_LIB_MAJOR_VERSION}.${KEXIV2_LIB_MINOR_VERSION}.${KEXIV2_LIB_PATCH_VERSION}")
set(LIBKEXIV2_SO_VERSION "${KEXIV2_LIB_SO_CUR_VERSION}.${KEXIV2_LIB_SO_REV_VERSION}.${KEXIV2_LIB_SO_AGE_VERSION}")
############## ECM setup ######################
@@ -77,6 +71,13 @@ include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
include(GenerateExportHeader)
include(FeatureSummary)
+ecm_setup_version(${libkexiv2_VERSION}
+ VARIABLE_PREFIX KEXIV2
+ VERSION_HEADER "src/libkexiv2_version.h"
+ PACKAGE_VERSION_FILE "KF5KExiv2ConfigVersion.cmake"
+ SOVERSION ${LIBKEXIV2_SO_VERSION}
+)
+
############## Find Packages ###################
find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS
@@ -84,20 +85,13 @@ find_package(Qt5 ${REQUIRED_QT_VERSION} REQUIRED NO_MODULE COMPONENTS
Gui
)
-find_package(Exiv2 ${EXIV2_MIN_VERSION} REQUIRED)
-set_package_properties("Exiv2" PROPERTIES
- DESCRIPTION "Required to build libkexiv2"
- URL "http://www.exiv2.org"
- TYPE RECOMMENDED
- PURPOSE "Library to manage image metadata"
-)
+find_package(LibExiv2 ${EXIV2_MIN_VERSION} REQUIRED)
-ecm_setup_version(${LIBKEXIV2_LIB_VERSION}
- VARIABLE_PREFIX KEXIV2
- VERSION_HEADER "src/libkexiv2_version.h"
- PACKAGE_VERSION_FILE "KF5KExiv2ConfigVersion.cmake"
- SOVERSION ${LIBKEXIV2_SO_VERSION}
-)
+if (LibExiv2_VERSION VERSION_GREATER_EQUAL "0.27")
+ set(HAVE_LIBEXIV2_0_27 TRUE)
+endif()
+
+configure_file(config-kexiv2.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-kexiv2.h)
############## Targets #########################
diff --git a/cmake/templates/libkexiv2.pc.cmake.in b/cmake/templates/libkexiv2.pc.cmake.in
index 1df60df..e80e0ec 100644
--- a/cmake/templates/libkexiv2.pc.cmake.in
+++ b/cmake/templates/libkexiv2.pc.cmake.in
@@ -7,6 +7,6 @@ Name: ${PROJECT_NAME}
Description: A C++ library to manipulate EXIF/IPTC/XMP metadata using Exiv2 library.
URL: https://cgit.kde.org/libkexiv2.git/
Requires:
-Version: ${KEXIV2_LIB_VERSION_STRING}
+Version: ${libkexiv2_VERSION}
Libs: -L${LIB_INSTALL_DIR} -lkexiv2
Cflags: -I${INCLUDE_INSTALL_DIR}
diff --git a/config-kexiv2.h.cmake b/config-kexiv2.h.cmake
new file mode 100644
index 0000000..40992bd
--- /dev/null
+++ b/config-kexiv2.h.cmake
@@ -0,0 +1,4 @@
+/* config-kexiv2.h. Generated by cmake from config-kexiv2.h.cmake */
+
+/* Defined if we have libexiv2 >= 0.27 */
+#cmakedefine HAVE_LIBEXIV2_0_27
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2b2df03..8ac18f5 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -6,7 +6,6 @@
kde_enable_exceptions()
-include_directories(${EXIV2_INCLUDE_DIR})
include_directories(${CMAKE_CURRENT_BINARY_DIR}/..)
add_definitions(${EXIV2_DEFINITIONS})
@@ -55,7 +54,7 @@ target_include_directories(KF5KExiv2 INTERFACE
target_link_libraries(KF5KExiv2
PRIVATE
- ${EXIV2_LIBRARIES}
+ LibExiv2::LibExiv2
PUBLIC
Qt5::Core
Qt5::Gui
diff --git a/src/kexiv2.cpp b/src/kexiv2.cpp
index 04c4aa4..b7bbc1a 100644
--- a/src/kexiv2.cpp
+++ b/src/kexiv2.cpp
@@ -153,7 +153,7 @@ QString KExiv2::Exiv2Version()
// Since 0.14.0 release, we can extract run-time version of Exiv2.
// else we return make version.
- return QString::fromLatin1(Exiv2::version());
+ return QString::fromStdString(Exiv2::versionString());
}
QString KExiv2::version()
diff --git a/src/kexiv2.h b/src/kexiv2.h
index bebddb5..02a5c9c 100644
--- a/src/kexiv2.h
+++ b/src/kexiv2.h
@@ -51,6 +51,7 @@
#include "libkexiv2_export.h"
#include "kexiv2data.h"
+#include "../config-kexiv2.h"
namespace KExiv2Iface
{
diff --git a/src/kexiv2_p.cpp b/src/kexiv2_p.cpp
index cb6b134..2a287ab 100644
--- a/src/kexiv2_p.cpp
+++ b/src/kexiv2_p.cpp
@@ -124,19 +124,15 @@ bool KExiv2::Private::saveToFile(const QFileInfo& finfo) const
QStringList rawTiffBasedSupported, rawTiffBasedNotSupported;
- // Raw files supported by Exiv2 0.21
+ // Raw files supported by Exiv2 0.23
rawTiffBasedSupported << QString::fromLatin1("dng")
<< QString::fromLatin1("nef")
<< QString::fromLatin1("pef")
<< QString::fromLatin1("orf")
- << QString::fromLatin1("srw");
+ << QString::fromLatin1("srw")
+ << QString::fromLatin1("cr2");
- if (Exiv2::testVersion(0,23,0))
- {
- rawTiffBasedSupported << QString::fromLatin1("cr2");
- }
-
- // Raw files not supported by Exiv2 0.21
+ // Raw files not supported by Exiv2 0.23
rawTiffBasedNotSupported << QString::fromLatin1("3fr")
<< QString::fromLatin1("arw")
<< QString::fromLatin1("dcr")
@@ -149,11 +145,6 @@ bool KExiv2::Private::saveToFile(const QFileInfo& finfo) const
<< QString::fromLatin1("srf")
<< QString::fromLatin1("rw2");
- if (!Exiv2::testVersion(0,23,0))
- {
- rawTiffBasedNotSupported << QString::fromLatin1("cr2");
- }
-
QString ext = finfo.suffix().toLower();
if (!writeRawFiles && (rawTiffBasedSupported.contains(ext) || rawTiffBasedNotSupported.contains(ext)) )
diff --git a/src/kexiv2_p.h b/src/kexiv2_p.h
index ddf8f6d..c73fbbf 100644
--- a/src/kexiv2_p.h
+++ b/src/kexiv2_p.h
@@ -71,6 +71,7 @@
#include <exiv2/properties.hpp>
#include <exiv2/types.hpp>
#include <exiv2/exif.hpp>
+#include <exiv2/exiv2.hpp>
#include <exiv2/xmpsidecar.hpp>
// Check if Exiv2 support XMP
diff --git a/src/kexiv2exif.cpp b/src/kexiv2exif.cpp
index 11c8948..3093b70 100644
--- a/src/kexiv2exif.cpp
+++ b/src/kexiv2exif.cpp
@@ -987,7 +987,11 @@ bool KExiv2::setTiffThumbnail(const QImage& thumbImage, bool setProgramName) con
if (pos == d->exifMetadata().end() || pos->count() != 1 || pos->toLong() != 0)
{
+#ifdef HAVE_LIBEXIV2_0_27
+ throw Exiv2::Error(Exiv2::kerErrorMessage, "Exif.Image.NewSubfileType missing or not set as main image");
+#else
throw Exiv2::Error(1, "Exif.Image.NewSubfileType missing or not set as main image");
+#endif
}
// Remove sub-IFD tags
--
2.20.1