Warning, /graphics/koko/src/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 # SPDX-FileCopyrightText: 2014 Vishesh Handa <vhanda@kde.org>
0002 # SPDX-FileCopyrightText: 2019 Nicolas Fella <nicolas.fella@gmx.de>
0003 # SPDX-FileCopyrightText: 2021 Carl Schwan <carl@carlschwan.eu>
0004 # SPDX-License-Identifier: LGPL-2.1-or-later
0005 #
0006 # Common Library
0007 #
0008 set(LIB_SRCS
0009     imagestorage.cpp
0010     exiv2extractor.cpp
0011     filesystemimagefetcher.cpp
0012     ${LIB_SRCS}
0013 )
0014 
0015 add_library(kokocommon SHARED ${LIB_SRCS})
0016 target_link_libraries(kokocommon
0017     Qt::Core
0018     Qt::Positioning
0019     Qt::Sql
0020     Qt::Svg
0021     KF6::CoreAddons
0022     KF6::DBusAddons
0023     KF6::FileMetaData
0024     KF6::ConfigGui
0025     KF6::ConfigCore
0026     LibExiv2::LibExiv2
0027 )
0028 
0029 generate_export_header(kokocommon BASE_NAME KOKO EXPORT_FILE_NAME koko_export.h)
0030 set_target_properties(kokocommon PROPERTIES
0031     VERSION 0.0.1
0032     SOVERSION 0.0.1
0033 )
0034 
0035 install(TARGETS kokocommon EXPORT KokoLibraryTargets ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
0036 
0037 #
0038 # Application
0039 #
0040 
0041 set(koko_SRCS
0042     main.cpp
0043     openfilemodel.cpp
0044     reversegeocoder.cpp
0045     filesystemtracker.cpp
0046     processor.cpp
0047     committimer.cpp
0048     imageprocessorrunnable.cpp
0049     vectorimage.cpp
0050     controller.cpp
0051     kdtree.cpp
0052     filemenu.h
0053     filemenu.cpp
0054     resources.qrc
0055 )
0056 
0057 kconfig_add_kcfg_files(koko_SRCS kokoconfig.kcfgc GENERATE_MOC)
0058 
0059 add_executable(koko ${koko_SRCS})
0060 
0061 target_link_libraries(koko
0062     Qt::Quick
0063     Qt::Widgets
0064     Qt::Qml
0065     Qt::Positioning
0066     KF6::ConfigCore
0067     KF6::I18n
0068     KF6::CoreAddons
0069     KF6::KIOCore
0070     KF6::KIOWidgets
0071     KF6::ConfigWidgets
0072     kokocommon
0073 )
0074 
0075 target_include_directories(koko PRIVATE ${CMAKE_BINARY_DIR})
0076 
0077 if(ANDROID)
0078     target_link_libraries(koko Qt::AndroidExtras)
0079 else()
0080     target_link_libraries(koko KF6::WindowSystem)
0081 endif()
0082 
0083 target_compile_definitions(koko PRIVATE $<$<OR:$<CONFIG:Debug>,$<CONFIG:RelWithDebInfo>>:QT_QML_DEBUG>)
0084 
0085 install(TARGETS koko ${KDE_INSTALL_TARGETS_DEFAULT_ARGS})
0086 
0087 #
0088 # QML Plugin
0089 #
0090 set (qml_plugin_SRCS
0091     qmlplugins.cpp
0092     dirmodelutils.cpp
0093     openfilemodel.cpp
0094     imagelocationmodel.cpp
0095     imagefavoritesmodel.cpp
0096     imagetagsmodel.cpp
0097     imagetimemodel.cpp
0098     imagefoldermodel.cpp
0099     sortmodel.cpp
0100     imagelistmodel.cpp
0101     notificationmanager.cpp
0102     types.cpp
0103     roles.cpp
0104     fileinfo.cpp
0105     displaycolorspace.cpp
0106 )
0107 
0108 add_library (kokoqmlplugin SHARED ${qml_plugin_SRCS})
0109 
0110 target_link_libraries (kokoqmlplugin
0111     Qt6::Qml
0112     KF6::KIOCore
0113     KF6::KIOFileWidgets
0114     KF6::KIOWidgets
0115     KF6::GuiAddons
0116     KF6::I18n
0117     KF6::Notifications
0118     kokocommon
0119 )
0120 
0121 install (TARGETS kokoqmlplugin DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/koko)
0122 install (FILES qmldir DESTINATION ${KDE_INSTALL_QMLDIR}/org/kde/koko)
0123 install (FILES org.kde.koko.desktop DESTINATION ${KDE_INSTALL_APPDIR})
0124 
0125 # FIXME this needs to be adapted for Qt6
0126 if (TARGET XCB::XCB)
0127     target_compile_definitions(kokoqmlplugin PRIVATE HAVE_X11)
0128     target_link_libraries(kokoqmlplugin XCB::XCB Qt6::GuiPrivate)
0129 endif()
0130 
0131 #
0132 # Reverse GeoLookup Data
0133 #
0134 # Packagers can download the file and put it in the tarball
0135 if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/cities1000.zip)
0136     file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/cities1000.zip DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
0137 endif()
0138 
0139 if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/cities1000.zip)
0140     file (DOWNLOAD "http://download.geonames.org/export/dump/cities1000.zip"
0141                 ${CMAKE_CURRENT_BINARY_DIR}/cities1000.zip
0142         SHOW_PROGRESS
0143         STATUS status
0144     )
0145     list(GET status 0 status_code) 
0146     if(NOT status_code EQUAL 0)
0147         message(FATAL_ERROR "You need to download some files separately. See the packaging section of README.md.")
0148     endif()
0149 endif()
0150 
0151 execute_process(
0152     COMMAND ${CMAKE_COMMAND} -E tar -xzf ${CMAKE_CURRENT_BINARY_DIR}/cities1000.zip
0153     WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
0154 )
0155 
0156 if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/admin1CodesASCII.txt)
0157     file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/admin1CodesASCII.txt DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
0158 endif()
0159 
0160 if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/admin1CodesASCII.txt)
0161     file (DOWNLOAD "http://download.geonames.org/export/dump/admin1CodesASCII.txt"
0162                 ${CMAKE_CURRENT_BINARY_DIR}/admin1CodesASCII.txt
0163         SHOW_PROGRESS
0164         STATUS status
0165     )
0166     list(GET status 0 status_code) 
0167     if(NOT status_code EQUAL 0)
0168         message(FATAL_ERROR "You need to download some files separately. See the packaging section of README.md.")
0169     endif()
0170 endif()
0171 file(RENAME ${CMAKE_CURRENT_BINARY_DIR}/admin1CodesASCII.txt ${CMAKE_CURRENT_BINARY_DIR}/admin1Codes.txt)
0172 
0173 if (EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/admin2Codes.txt)
0174     file(COPY ${CMAKE_CURRENT_SOURCE_DIR}/admin2Codes.txt DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
0175 endif()
0176 
0177 if (NOT EXISTS ${CMAKE_CURRENT_BINARY_DIR}/admin2Codes.txt)
0178     file (DOWNLOAD "http://download.geonames.org/export/dump/admin2Codes.txt"
0179                 ${CMAKE_CURRENT_BINARY_DIR}/admin2Codes.txt
0180         SHOW_PROGRESS
0181         STATUS status
0182     )
0183     list(GET status 0 status_code) 
0184     if(NOT status_code EQUAL 0)
0185         message(FATAL_ERROR "You need to download some files separately. See the packaging section of README.md.")
0186     endif()
0187 endif()
0188 
0189 install (FILES ${CMAKE_CURRENT_BINARY_DIR}/cities1000.txt DESTINATION ${KDE_INSTALL_DATADIR}/koko)
0190 install (FILES ${CMAKE_CURRENT_BINARY_DIR}/admin1Codes.txt DESTINATION ${KDE_INSTALL_DATADIR}/koko)
0191 install (FILES ${CMAKE_CURRENT_BINARY_DIR}/admin2Codes.txt DESTINATION ${KDE_INSTALL_DATADIR}/koko)
0192 install (FILES countries.csv DESTINATION ${KDE_INSTALL_DATADIR}/koko)
0193 install (FILES koko.notifyrc DESTINATION ${KDE_INSTALL_KNOTIFYRCDIR})