Warning, /graphics/libkexiv2/src/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 #
0002 # SPDX-FileCopyrightText: 2010-2015 Gilles Caulier <caulier dot gilles at gmail dot com>
0003 #
0004 # SPDX-License-Identifier: BSD-3-Clause
0005 #
0006
0007 if (QT_MAJOR_VERSION STREQUAL "5")
0008 set(KEXIV2_INSTALL_INCLUDEDIR "${KDE_INSTALL_INCLUDEDIR_KF}/KExiv2")
0009 set(KEXIV2_CMAKECONFIG_NAME "KF${QT_MAJOR_VERSION}KExiv2")
0010 set(LIBRARYFILE_NAME "KF5KExiv2")
0011 set(TARGET_EXPORT_NAME "KExiv2")
0012 set(NAMESPACE_NAME "KF5::")
0013 else()
0014 set(KEXIV2_INSTALL_INCLUDEDIR "${KDE_INSTALL_INCLUDEDIR}/KExiv2Qt6")
0015 set(KEXIV2_CMAKECONFIG_NAME "KExiv2Qt6")
0016 set(LIBRARYFILE_NAME "KExiv2Qt6")
0017 set(TARGET_EXPORT_NAME "KExiv2Qt6")
0018 set(NAMESPACE_NAME "")
0019 endif()
0020
0021 ecm_setup_version(${libkexiv2_VERSION}
0022 VARIABLE_PREFIX KEXIV2
0023 VERSION_HEADER "libkexiv2_version.h"
0024 PACKAGE_VERSION_FILE "${KEXIV2_CMAKECONFIG_NAME}ConfigVersion.cmake"
0025 SOVERSION ${LIBKEXIV2_SO_VERSION}
0026 )
0027
0028 kde_enable_exceptions()
0029
0030 add_library(KExiv2 SHARED)
0031
0032 set_target_properties(KExiv2 PROPERTIES
0033 OUTPUT_NAME KF${QT_MAJOR_VERSION}KExiv2
0034 VERSION ${KEXIV2_VERSION}
0035 SOVERSION ${KEXIV2_SOVERSION}
0036 OUTPUT_NAME ${LIBRARYFILE_NAME}
0037 EXPORT_NAME ${TARGET_EXPORT_NAME}
0038 )
0039
0040 if( WIN32 )
0041 target_compile_definitions(KExiv2 PRIVATE -DEXV_HAVE_DLL)
0042 endif()
0043
0044 target_sources(KExiv2 PRIVATE
0045 kexiv2.cpp
0046 kexiv2_p.cpp
0047 kexiv2data.cpp
0048 kexiv2image.cpp
0049 kexiv2comments.cpp
0050 kexiv2exif.cpp
0051 kexiv2iptc.cpp
0052 kexiv2gps.cpp
0053 kexiv2xmp.cpp
0054 kexiv2previews.cpp
0055 rotationmatrix.cpp
0056 )
0057 ecm_qt_declare_logging_category(KExiv2
0058 HEADER libkexiv2_debug.h
0059 IDENTIFIER LIBKEXIV2_LOG
0060 CATEGORY_NAME "libKExiv2"
0061 DESCRIPTION "libKExiv2"
0062 EXPORT kexiv2
0063 )
0064
0065 ecm_generate_headers(kexiv2_CamelCase_HEADERS
0066 HEADER_NAMES
0067 KExiv2Data
0068 KExiv2
0069 KExiv2Previews
0070 RotationMatrix
0071 PREFIX KExiv2
0072 REQUIRED_HEADERS kexiv2_HEADERS
0073 )
0074
0075 if (QT_MAJOR_VERSION STREQUAL "5")
0076 set(_generate_export_header_version_args)
0077 else()
0078 # For Qt6/KF6 world transitively include the version header
0079 if(ECM_VERSION VERSION_LESS "5.106")
0080 set(include_version_header_code "#include <libkexiv2_version.h>\n")
0081 set(_generate_export_header_version_args CUSTOM_CONTENT_FROM_VARIABLE include_version_header_code)
0082 else()
0083 set(_generate_export_header_version_args USE_VERSION_HEADER libkexiv2_version.h)
0084 endif()
0085 endif()
0086
0087 ecm_generate_export_header(KExiv2
0088 BASE_NAME kexiv2
0089 EXPORT_FILE_NAME libkexiv2_export.h
0090 EXPORT_MACRO_NAME LIBKEXIV2_EXPORT
0091 VERSION ${libkexiv2_VERSION}
0092 DEPRECATED_BASE_VERSION 0
0093 DEPRECATION_VERSIONS 5.1
0094 EXCLUDE_DEPRECATED_BEFORE_AND_AT ${EXCLUDE_DEPRECATED_BEFORE_AND_AT}
0095 ${_generate_export_header_version_args}
0096 )
0097
0098 target_include_directories(KExiv2
0099 INTERFACE
0100 "$<INSTALL_INTERFACE:${KEXIV2_INSTALL_INCLUDEDIR};${KEXIV2_INSTALL_INCLUDEDIR}/kexiv2>"
0101 )
0102
0103 target_link_libraries(KExiv2
0104 PUBLIC
0105 Qt::Gui
0106 Qt::Core
0107 PRIVATE
0108 LibExiv2::LibExiv2
0109 )
0110
0111 if( WIN32 )
0112 target_link_libraries(KExiv2 ${EXPAT_LIBRARIES})
0113 endif()
0114
0115 install(TARGETS KExiv2
0116 EXPORT KExiv2Targets ${KF_INSTALL_TARGETS_DEFAULT_ARGS}
0117 )
0118
0119 install(FILES
0120 ${kexiv2_CamelCase_HEADERS}
0121 DESTINATION ${KEXIV2_INSTALL_INCLUDEDIR}/KExiv2
0122 COMPONENT Devel
0123 )
0124
0125 install(FILES
0126 ${kexiv2_HEADERS}
0127 ${CMAKE_CURRENT_BINARY_DIR}/libkexiv2_export.h
0128 DESTINATION ${KEXIV2_INSTALL_INCLUDEDIR}/kexiv2
0129 COMPONENT Devel
0130 )
0131
0132 install(FILES
0133 ${CMAKE_CURRENT_BINARY_DIR}/libkexiv2_version.h
0134 DESTINATION ${KEXIV2_INSTALL_INCLUDEDIR}
0135 COMPONENT Devel
0136 )
0137
0138 ecm_qt_install_logging_categories(
0139 EXPORT kexiv2
0140 FILE libkexiv2.categories
0141 DESTINATION "${KDE_INSTALL_LOGGINGCATEGORIESDIR}"
0142 )
0143
0144 ############## CMake Config Files ##############
0145
0146 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/${KEXIV2_CMAKECONFIG_NAME}")
0147
0148 configure_package_config_file(
0149 "${CMAKE_SOURCE_DIR}/cmake/templates/KExiv2Config.cmake.in"
0150 "${CMAKE_CURRENT_BINARY_DIR}/${KEXIV2_CMAKECONFIG_NAME}Config.cmake"
0151 INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
0152 )
0153
0154 install(FILES
0155 "${CMAKE_CURRENT_BINARY_DIR}/${KEXIV2_CMAKECONFIG_NAME}Config.cmake"
0156 "${CMAKE_CURRENT_BINARY_DIR}/${KEXIV2_CMAKECONFIG_NAME}ConfigVersion.cmake"
0157 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0158 COMPONENT Devel
0159 )
0160
0161 install(EXPORT KExiv2Targets
0162 FILE ${KEXIV2_CMAKECONFIG_NAME}Targets.cmake
0163 NAMESPACE ${NAMESPACE_NAME}
0164 DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0165 COMPONENT Devel
0166 )