Warning, /maui/mauikit/CMakeLists.txt is written in an unsupported language. File is not indexed.

0001 # SPDX-FileCopyrightText: 2020 Camilo Higuita <milo.h@aol.com>
0002 #
0003 # SPDX-License-Identifier: GPL-3.0-or-later
0004 
0005 cmake_minimum_required(VERSION 3.16)
0006 
0007 option(BUILD_WITH_QT5 "Use Qt 5" OFF)
0008 option(BUILD_WITH_QT6 "Use Qt 6" OFF)
0009 
0010 if(BUILD_WITH_QT5)
0011     set(QT_MAJOR_VERSION 5)
0012 elseif(BUILD_WITH_QT6)
0013     set(QT_MAJOR_VERSION 6)
0014 else()
0015     set(QT_MAJOR_VERSION 5)
0016 endif()
0017 
0018 if (QT_MAJOR_VERSION STREQUAL "6")
0019 option(BUILD_SHARED_LIBS "Build a shared module" ON)
0020     set(REQUIRED_QT_VERSION 6.4)
0021     set(REQUIRED_KF_VERSION 5.240.0)
0022     set(KF_MAJOR_VERSION 6)
0023     set(MAUI_MAJOR_VERSION 4)
0024     set(MAUIKIT_VERSION 4.0.0)
0025 else()
0026     set(REQUIRED_QT_VERSION 5.15.2)
0027     set(REQUIRED_KF_VERSION 5.95.0)
0028     set(KF_MAJOR_VERSION 5)
0029     set(MAUI_MAJOR_VERSION 3)
0030     set(MAUIKIT_VERSION 3.1.0)
0031 endif()
0032 
0033  set(CMAKE_CXX_STANDARD 17)
0034  set(CMAKE_CXX_STANDARD_REQUIRED ON)
0035 
0036 set(CMAKE_INCLUDE_CURRENT_DIR ON)
0037 set(CMAKE_AUTOMOC ON)
0038 set(CMAKE_AUTORCC ON)
0039 
0040 set(MAUIKIT_URI org.mauikit.controls)
0041 
0042 set(AUTOMOC_MOC_OPTIONS -Muri=${MAUIKIT_URI})
0043 
0044 project(mauikit VERSION ${MAUIKIT_VERSION})
0045 
0046 ################# Disallow in-source build #################
0047 
0048 # if("${CMAKE_SOURCE_DIR}" STREQUAL "${CMAKE_BINARY_DIR}")
0049 #    message(FATAL_ERROR "MauiKit requires an out of source build. Please create a separate build directory and run 'cmake path_to_mauikit [options]' there.")
0050 # endif()
0051 
0052 if(ANDROID)
0053     set(ANDROID_PACKAGE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/src/platforms/android)
0054     set(ANDROID_ABIS "armeabi-v7a")
0055 endif()
0056 
0057 find_package(ECM ${REQUIRED_KF_VERSION} NO_MODULE)
0058 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH})
0059 
0060 #DEFAULT COMPONENTS DEFINITIONS
0061 include(GenerateExportHeader)
0062 include(CMakePackageConfigHelpers)
0063 
0064 include(ECMSetupVersion)
0065 include(ECMGenerateHeaders)
0066 include(ECMFindQmlModule)
0067 include(ECMQmlModule)
0068 include(ECMGenerateQmlTypes)
0069 include(ECMSourceVersionControl)
0070 
0071 include(KDEClangFormat)
0072 include(KDEInstallDirs)
0073 include(KDECMakeSettings)
0074 
0075 option(QUICK_COMPILER "Use QtQuick compiler to improve performance. QML sources won't be installed in the file system." ON)
0076 
0077 ##option to be removed in qt6 migration
0078 if (QT_MAJOR_VERSION STREQUAL "5")
0079     option(QUICK_COMPILER ON)
0080     if(ANDROID OR WIN32 OR APPLE)
0081         set(QUICK_COMPILER ON)
0082         set(BUNDLE_LUV_ICONS ON)
0083     endif()
0084 else()
0085     option(QUICK_COMPILER OFF)
0086 endif()
0087 
0088 option(BUILD_DEMO "Build the MauiKit Demo application." OFF)
0089 option(BUNDLE_LUV_ICONS "Ship Luv icon bundled." OFF)
0090 
0091 find_package(Qt${QT_MAJOR_VERSION} ${REQUIRED_QT_VERSION} REQUIRED COMPONENTS
0092     Core
0093     Concurrent
0094     Qml
0095     Quick
0096     QuickControls2
0097     Svg
0098     Widgets)
0099 
0100 find_package(KF${KF_MAJOR_VERSION} ${REQUIRED_KF_VERSION} REQUIRED COMPONENTS
0101     I18n
0102     CoreAddons
0103     Notifications)
0104 
0105 find_package(MauiMan${MAUI_MAJOR_VERSION} ${MAUIKIT_VERSION} REQUIRED)
0106 set_package_properties(MauiMan${MAUI_MAJOR_VERSION} PROPERTIES
0107     TYPE REQUIRED
0108     DESCRIPTION "MauiMan is a server and API for syncing global system setting preferences."
0109     URL "https://invent.kde.org/maui/mauiman"
0110     PURPOSE "Sync to system setting preferences.")
0111     
0112 #    find_package(OpenMP)
0113 #set_package_properties(OpenMP
0114 #    PROPERTIES DESCRIPTION "Multi-platform shared-memory parallel programming in C/C++ and Fortran"
0115 #    TYPE OPTIONAL
0116 #    PURPOSE "Accelerates palette generation in Kirigami.ImageColors"
0117 #)
0118 #if(OpenMP_CXX_FOUND)
0119 #    set(HAVE_OpenMP TRUE)
0120 #    set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}")
0121 #endif()
0122 
0123 #include_directories("${CMAKE_CURRENT_BINARY_DIR}")
0124 #configure_file(config-OpenMP.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/config-OpenMP.h)
0125 
0126 if (QT_MAJOR_VERSION STREQUAL "5")
0127 ecm_find_qmlmodule(QtQuick.Shapes 1.0)
0128 else()
0129 ecm_find_qmlmodule(QtQuick.Shapes 1.0)
0130 ecm_find_qmlmodule(Qt5Compat.GraphicalEffects 6.0)
0131 endif()
0132 
0133 #if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
0134 #    # link time optimization has been observed to break colors. Force-disable it.
0135 #    # Before undoing this make double sure the lockscreen
0136 #    # and logout screen are correctly colored in light/dark mode!
0137 #    add_compile_options("-fno-lto")
0138 #endif()
0139 
0140 if(ANDROID)
0141     find_package(Qt${QT_MAJOR_VERSION} REQUIRED COMPONENTS AndroidExtras)
0142     find_package(Gradle REQUIRED)
0143 elseif(UNIX AND NOT ANDROID)
0144     if(NOT APPLE)
0145         # Do not find X11 on macOS
0146         if (QT_MAJOR_VERSION STREQUAL "5")
0147             find_package(Qt5 REQUIRED COMPONENTS X11Extras)
0148         endif()
0149         find_package(KF${KF_MAJOR_VERSION} REQUIRED COMPONENTS WindowSystem)
0150 
0151         find_package(XCB 1.10 REQUIRED COMPONENTS
0152             ICCCM
0153             SHAPE
0154             XCB)
0155         set_package_properties(XCB PROPERTIES TYPE REQUIRED)
0156     endif()
0157 endif()
0158 
0159 if (QT_MAJOR_VERSION STREQUAL "5")
0160     if(QUICK_COMPILER)
0161         find_package(Qt5QuickCompiler)
0162         set_package_properties(Qt5QuickCompiler PROPERTIES
0163             DESCRIPTION "Compile QML at build time"
0164             TYPE OPTIONAL)
0165     endif()
0166 endif()
0167 
0168 if(${ECM_SOURCE_UNDER_VERSION_CONTROL})
0169     execute_process(
0170         COMMAND git rev-parse --abbrev-ref HEAD
0171         WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
0172         OUTPUT_VARIABLE GIT_BRANCH
0173         OUTPUT_STRIP_TRAILING_WHITESPACE)
0174 
0175     # Get the latest abbreviated commit hash of the working branch
0176     execute_process(
0177         COMMAND git log -1 --format=%h
0178         WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
0179         OUTPUT_VARIABLE GIT_COMMIT_HASH
0180         OUTPUT_STRIP_TRAILING_WHITESPACE)
0181 
0182     add_definitions(-DGIT_COMMIT_HASH="${GIT_COMMIT_HASH}")
0183     add_definitions(-DGIT_BRANCH="${GIT_BRANCH}")
0184 else()
0185     add_definitions(-DGIT_COMMIT_HASH="${PROJECT_VERSION}")
0186     add_definitions(-DGIT_BRANCH="Stable")
0187 endif()
0188 
0189 ##CMAKE PARTS
0190 set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/MauiKit${MAUI_MAJOR_VERSION}")
0191 
0192 ecm_setup_version(${MAUIKIT_VERSION}
0193     VARIABLE_PREFIX MAUIKIT
0194     VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/mauikit_version.h"
0195     PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/MauiKit${MAUI_MAJOR_VERSION}ConfigVersion.cmake"
0196     SOVERSION ${PROJECT_VERSION_MAJOR})
0197 
0198 configure_package_config_file(
0199     "${CMAKE_CURRENT_SOURCE_DIR}/MauiKitConfig.cmake.in.${QT_MAJOR_VERSION}"
0200     "${CMAKE_CURRENT_BINARY_DIR}/MauiKit${MAUI_MAJOR_VERSION}Config.cmake"
0201     INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
0202     PATH_VARS CMAKE_INSTALL_PREFIX)
0203 
0204 install(FILES
0205     "${CMAKE_CURRENT_BINARY_DIR}/MauiKit${MAUI_MAJOR_VERSION}Config.cmake"
0206     "${CMAKE_CURRENT_BINARY_DIR}/MauiKit${MAUI_MAJOR_VERSION}ConfigVersion.cmake"
0207     DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0208     COMPONENT Devel)
0209 
0210 install(EXPORT MauiKit${MAUI_MAJOR_VERSION}Targets
0211     DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
0212     FILE MauiKit${MAUI_MAJOR_VERSION}Targets.cmake)
0213 
0214 ##Translations stuff with KI18n
0215 add_definitions(-DTRANSLATION_DOMAIN="mauikit")
0216 if(${QT_MAJOR_VERSION} STREQUAL 5) ##for now skip installing translations for mauikit4 to avoid packaging conflicts with translation files
0217 ki18n_install(po)
0218 endif()
0219 
0220 add_compile_definitions(QT_DISABLE_DEPRECATED_UP_TO=0x050F00)
0221 
0222 add_subdirectory(src)
0223 
0224 if(${QT_MAJOR_VERSION} STREQUAL 6)
0225     if(BUILD_DEMO)
0226         add_subdirectory(demo.6) ##Fails to build while trying to link to MauiKit4 - maybe is it better to move it out to its own project?
0227     endif()
0228 endif()
0229 
0230 ##Clang formatting
0231 file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
0232 kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
0233 
0234 feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)