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 )