Warning, /utilities/kirogi/CMakeLists.txt is written in an unsupported language. File is not indexed.
0001 cmake_minimum_required(VERSION 3.10)
0002 find_package(ECM 5.54.0 REQUIRED NO_MODULE)
0003 set(CMAKE_CXX_STANDARD 17)
0004 set(CXX_STANDARD_REQUIRED ON)
0005 set(QT_MIN_VERSION "5.12.0")
0006 set(KF_MIN_VERSION "5.84.0")
0007
0008 project(kirogi VERSION 0.1)
0009
0010 set(CMAKE_AUTOMOC ON)
0011 set(AUTOMOC_MOC_OPTIONS -Muri=org.kde.kirogi)
0012 set(CMAKE_AUTORCC ON)
0013
0014 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH})
0015 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
0016
0017 include(CMakePackageConfigHelpers)
0018 include(GenerateExportHeader)
0019 include(WriteBasicConfigVersionFile)
0020 include(FeatureSummary)
0021 include(ECMGenerateHeaders)
0022 include(ECMAddAppIcon)
0023 include(ECMInstallIcons)
0024 include(ECMSetupVersion)
0025 include(ECMQMLModules)
0026 include(ECMQtDeclareLoggingCategory)
0027 include(GNUInstallDirs)
0028 include(KDEInstallDirs)
0029 include(KDECompilerSettings NO_POLICY_SCOPE)
0030 include(KDECMakeSettings)
0031 include(KDEClangFormat)
0032 include(FindPkgConfig)
0033
0034 option(BUILD_APP "Build the Kirogi application." TRUE)
0035 add_feature_info(BUILD_APP BUILD_APP "Build the Kirogi application.")
0036
0037 option(BUILD_QT_QUICK_LIB "Build the Kirogi library with Qt Quick support." TRUE)
0038 add_feature_info(BUILD_QT_QUICK_LIB BUILD_QT_QUICK_LIB "Build the Kirogi library with Qt Quick support.")
0039
0040 option(BUILD_PLUGINS "Build the Kirogi plugins." TRUE)
0041 add_feature_info(BUILD_PLUGINS BUILD_PLUGINS "Build the Kirogi plugins.")
0042
0043 option(CLANG_TIDY "Enable clang-tidy during the build process." FALSE)
0044 add_feature_info(CLANG_TIDY CLANG_TIDY "Enable clang-tidy during the build process.")
0045
0046 option(COMPILE_QML "Pre-compile QML files using the Qt Quick compiler." FALSE)
0047 add_feature_info(COMPILE_QML COMPILE_QML "Pre-compile QML files using the Qt Quick compiler.")
0048
0049 option(DEBUG_QML "Build Kirogi with QML debugging/profiling support." FALSE)
0050 add_feature_info(DEBUG_QML DEBUG_QML "Build Kirogi with QML debugging/profiling support.")
0051
0052 if (CLANG_TIDY)
0053 set(CMAKE_CXX_CLANG_TIDY "clang-tidy;-checks=*;-fix")
0054 endif()
0055
0056 if (BUILD_APP)
0057 if(NOT ANDROID)
0058 set(qtDesktopComponents "Widgets")
0059 set(kfDesktopComponents
0060 "Crash"
0061 "DNSSD"
0062 )
0063 else()
0064 # The Material style requires QtSvg.
0065 set(qtAndroidComponents
0066 "AndroidExtras"
0067 "Svg"
0068 )
0069 endif()
0070
0071 ecm_find_qmlmodule(QtGamepad 1.12)
0072 ecm_find_qmlmodule(QtGraphicalEffects 1.12)
0073 ecm_find_qmlmodule(QtLocation 5.12)
0074 ecm_find_qmlmodule(org.kde.kirigami 2.6)
0075
0076 # FIXME TODO: QtGamepad currently causes performance problems on
0077 # Android (blocking multi-tasking) that need to be investigated.
0078 if(NOT ANDROID)
0079 ecm_find_qmlmodule(QtPositioning 5.12)
0080 endif()
0081 endif()
0082
0083 if(BUILD_APP OR BUILD_QT_QUICK_LIB)
0084 set(qtQuickComponents
0085 "Qml"
0086 "Quick"
0087 )
0088 endif()
0089
0090 find_package(Qt5 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS
0091 Core
0092 Gamepad
0093 Network
0094 Positioning
0095 ${qtQuickComponents}
0096 ${qtDesktopComponents}
0097 ${qtAndroidComponents}
0098 )
0099
0100 find_package(KF5 ${KF_MIN_VERSION} REQUIRED
0101 ConfigWidgets
0102 CoreAddons
0103 I18n
0104 Kirigami2
0105 ${kfDesktopComponents}
0106 )
0107
0108 find_package(KF${QT_MAJOR_VERSION}KirigamiAddons 0.11 REQUIRED)
0109
0110 find_package(PkgConfig REQUIRED)
0111
0112 pkg_check_modules(GSTREAMER REQUIRED
0113 gstreamer-1.0
0114 gstreamer-video-1.0
0115 )
0116
0117 link_directories(${GSTREAMER_LIBRARY_DIRS})
0118 include_directories (${GSTREAMER_INCLUDE_DIRS})
0119
0120 if(ANDROID)
0121 pkg_check_modules(GSTREAMER REQUIRED
0122 gstreamer-1.0
0123 gstreamer-audio-1.0
0124 gstreamer-codecparsers-1.0
0125 gstreamer-controller-1.0
0126 gstreamer-gl-1.0
0127 gstreamer-net-1.0
0128 gstreamer-pbutils-1.0
0129 gstreamer-rtp-1.0
0130 gstreamer-tag-1.0
0131 gstreamer-video-1.0
0132 gio-2.0
0133 graphene-1.0
0134 libjpeg
0135 libpng16
0136 libavformat
0137 libavcodec
0138 libavfilter
0139 libavutil
0140 libswresample
0141 x264
0142 )
0143
0144 link_directories(${GSTREAMER_LIBRARY_DIRS}/gstreamer-1.0/)
0145
0146 find_library(liblog log)
0147 find_library(libandroid android)
0148 find_library(libEGL EGL)
0149 find_library(libGLESv2 GLESv2)
0150 endif()
0151
0152 if(COMPILE_QML)
0153 find_package(Qt5QuickCompiler)
0154
0155 set_package_properties(Qt5QuickCompiler PROPERTIES
0156 DESCRIPTION "Pre-compile QML files using the Qt Quick compiler."
0157 TYPE OPTIONAL
0158 )
0159 endif()
0160
0161 if(DEBUG_QML)
0162 message(STATUS "To enable the QML debugger/profiler, run with: '-qmljsdebugger=port:1234'")
0163 add_definitions(-DQMLJSDEBUGGER)
0164 add_definitions(-DQT_DECLARATIVE_DEBUG)
0165 add_definitions(-DQT_QML_DEBUG)
0166 endif()
0167
0168 add_definitions(
0169 -DQT_USE_QSTRINGBUILDER
0170 -DQT_NO_CAST_TO_ASCII
0171 -DQT_STRICT_ITERATORS
0172 -DQT_NO_URL_CAST_FROM_STRING
0173 -DQT_NO_CAST_FROM_BYTEARRAY
0174 -DQT_NO_SIGNALS_SLOTS_KEYWORDS
0175 -DQT_USE_FAST_OPERATOR_PLUS
0176 )
0177
0178 # For KConfigXT out-of-source builds.
0179 include_directories(${CMAKE_CURRENT_BINARY_DIR})
0180
0181 add_subdirectory(data)
0182 add_subdirectory(src)
0183
0184 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
0185
0186 # Add clang-format target for all our real source files.
0187 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES src/*.cpp src/*.h)
0188 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})