Warning, /graphics/kooka/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 ##########################################################################
0002 ## ##
0003 ## This CMake file is part of Kooka, a KDE scanning/OCR application. ##
0004 ## ##
0005 ## This file may be distributed and/or modified under the terms of ##
0006 ## the GNU General Public License version 2, as published by the ##
0007 ## Free Software Foundation and appearing in the file COPYING ##
0008 ## included in the packaging of this file. ##
0009 ## ##
0010 ## Author: Jonathan Marten <jjm AT keelhaul DOT me DOT uk> ##
0011 ## ##
0012 ##########################################################################
0013
0014 cmake_minimum_required(VERSION 3.16)
0015
0016 project(kooka5)
0017 set(VERSION "0.90")
0018 message(STATUS "Configuring for Kooka/libkookascan version ${VERSION}")
0019
0020 set(QT_MIN_VERSION "5.15.0")
0021 set(KF5_MIN_VERSION "5.104.0")
0022
0023 # ECM setup (Extra Cmake Modules)
0024 find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
0025 set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
0026
0027 include(KDEInstallDirs)
0028 include(KDECMakeSettings)
0029 include(KDECompilerSettings NO_POLICY_SCOPE)
0030
0031 include(FeatureSummary)
0032 include(ECMSetupVersion)
0033 include(ECMGenerateHeaders)
0034 include(CMakePackageConfigHelpers)
0035 include(CheckFunctionExists)
0036 include(GenerateExportHeader)
0037 include(ECMInstallIcons)
0038 include(ECMQtDeclareLoggingCategory)
0039 include(KDEClangFormat)
0040
0041 # Options
0042 option(INSTALL_BINARIES "Install the binaries and libraries, turn off for development in place" ON)
0043
0044 # Required Qt components to build this package
0045 find_package(Qt${QT_MAJOR_VERSION} ${QT_MIN_VERSION} REQUIRED COMPONENTS Core Widgets)
0046
0047 # Rigourousness
0048 add_definitions("-DQT_USE_QSTRINGBUILDER")
0049 add_definitions("-DQT_NO_CAST_FROM_BYTEARRAY")
0050 add_definitions("-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT")
0051 add_definitions("-DQT_NO_CAST_TO_ASCII")
0052 add_definitions("-DQT_NO_URL_CAST_FROM_STRING")
0053
0054 # Permissiveness
0055 remove_definitions("-DQT_NO_CAST_FROM_ASCII")
0056 remove_definitions("-DQT_NO_KEYWORDS")
0057
0058 # Support for SANE, here because library and sanedump both need it
0059 #
0060 # Prefer pkg-config(1), because sane-config(1) was removed from Debian
0061 # package sane-backends 1.0.25 in December 2016. Assuming here that
0062 # pkg-config(1) is available on any reasonable system.
0063 find_package(PkgConfig)
0064 if (PkgConfig_FOUND)
0065 pkg_check_modules(SANE sane-backends)
0066 endif (PkgConfig_FOUND)
0067
0068 if (SANE_FOUND)
0069 set(SANE_INCLUDES "${SANE_CFLAGS}")
0070 set(SANE_LIBRARIES "${SANE_LDFLAGS}")
0071 else (SANE_FOUND)
0072 # if pkg-config(1) did not find anything, then fall back to sane-config(1)
0073 message(STATUS "SANE not found via pkg-config(1), trying sane-config(1)")
0074 if (SANECONFIG_BIN)
0075 set(SANECONFIG_PROG ${SANECONFIG_BIN})
0076 message(STATUS "Specified sane-config(1), ${SANECONFIG_PROG}")
0077 else (SANECONFIG_BIN)
0078 find_program(SANECONFIG_PROG NAMES sane-config)
0079 message(STATUS "Found sane-config(1), ${SANECONFIG_PROG}")
0080 endif (SANECONFIG_BIN)
0081
0082 if (SANECONFIG_PROG)
0083 set(SANE_FOUND true)
0084 execute_process(COMMAND ${SANECONFIG_PROG} --version OUTPUT_VARIABLE SANE_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
0085 execute_process(COMMAND ${SANECONFIG_PROG} --cflags OUTPUT_VARIABLE SANE_INCLUDES OUTPUT_STRIP_TRAILING_WHITESPACE)
0086 execute_process(COMMAND ${SANECONFIG_PROG} --libs OUTPUT_VARIABLE SANE_LIBRARIES OUTPUT_STRIP_TRAILING_WHITESPACE)
0087 message(STATUS "Found SANE, version ${SANE_VERSION}")
0088 endif (SANECONFIG_PROG)
0089
0090 endif (SANE_FOUND)
0091
0092 if (SANE_FOUND)
0093 set(HAVE_SANE true)
0094 message(STATUS " SANE includes: ${SANE_INCLUDES}")
0095 message(STATUS " SANE libraries: ${SANE_LIBRARIES}")
0096 else (SANE_FOUND)
0097 message(SEND_ERROR "libkookascan needs SANE (http://www.sane-project.org) - install package or specify location of sane-config(1) with SANECONFIG_BIN")
0098 endif (SANE_FOUND)
0099
0100 ############### Common build flags ###############
0101
0102 if (CMAKE_CXX_COMPILER_ID STREQUAL "GNU" OR CMAKE_CXX_COMPILER_ID MATCHES "Clang")
0103 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pedantic")
0104
0105 # both gcc & clang support it since the same version
0106 if (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER_EQUAL 5.0.0)
0107 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wzero-as-null-pointer-constant" )
0108 endif()
0109 endif()
0110
0111 ############### Common install locations ###############
0112
0113 set(PICS_INSTALL_DIR ${KDE_INSTALL_DATADIR}/kooka/pics)
0114
0115 ############### Common definitions ###############
0116
0117 add_definitions(-DKF5)
0118
0119 ############### Now, we add the Kooka components ###############
0120
0121 add_subdirectory(libdialogutil)
0122 add_subdirectory(libkookascan)
0123 add_subdirectory(libfiletree)
0124 add_subdirectory(app)
0125 add_subdirectory(plugins)
0126 add_subdirectory(doc)
0127
0128 add_subdirectory(tools EXCLUDE_FROM_ALL)
0129
0130 ############### VCS revision number in vcsversion.h ###############
0131
0132 add_custom_target(vcsversion
0133 ALL
0134 COMMENT "Checking VCS version"
0135 VERBATIM
0136 COMMAND sh ${CMAKE_CURRENT_SOURCE_DIR}/vcsversion.sh ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${VERSION}
0137 )
0138
0139 ########### Code formatting ###############
0140
0141 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h *.c)
0142 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0143
0144 # ########### documentation ###############
0145 #
0146 # if (HAVE_APIDOX)
0147 # add_custom_target(apidox
0148 # COMMENT "Generating API documentation in ${CMAKE_CURRENT_BINARY_DIR}..."
0149 # VERBATIM
0150 # COMMAND sh -c "${KDELIBS_SOURCE_DIR}/doc/api/doxygen.sh --no-modulename --recurse --doxdatadir=${KDELIBS_SOURCE_DIR}/doc/common ${CMAKE_CURRENT_SOURCE_DIR}; echo 'API documentation at file://${CMAKE_CURRENT_BINARY_DIR}/apidocs/index.html';")
0151 # endif (HAVE_APIDOX)
0152
0153 ############### Logging ###############
0154
0155 ecm_qt_install_logging_categories(
0156 EXPORT kookalogging
0157 FILE kooka.categories
0158 DESTINATION "${KDE_INSTALL_LOGGINGCATEGORIESDIR}")
0159
0160 ############### Configuration information ###############
0161
0162 feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)