File: CMakeLists.txt

package info (click to toggle)
oxygen 4%3A6.3.4-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 26,896 kB
  • sloc: cpp: 23,036; python: 39; sh: 14; makefile: 5
file content (136 lines) | stat: -rw-r--r-- 3,605 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
cmake_minimum_required(VERSION 3.25)
project(oxygen)
set(PROJECT_VERSION "6.3.4")
set(PROJECT_VERSION_MAJOR 6)

include(GenerateExportHeader)
include(WriteBasicConfigVersionFile)
include(FeatureSummary)

################# Qt/KDE #################
set(PROJECT_DEP_VERSION "6.3.4")
set(QT5_MIN_VERSION "5.15.2")
set(KF5_MIN_VERSION "5.102.0")
set(QT_MIN_VERSION "6.7.0")
set(KF6_MIN_VERSION "6.10.0")

set(KDE_COMPILERSETTINGS_LEVEL "5.82")

set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)

find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH} )

set(QT_NO_CREATE_VERSIONLESS_TARGETS ON)
set(QT_NO_CREATE_VERSIONLESS_FUNCTIONS ON)

option(BUILD_QT5 "Build Qt5 style" ON)
option(BUILD_QT6 "Build with Qt6" ON)

# For KDE CI only. As the current infrastructure doesn't allow us to set CMAKE options per build variant
if($ENV{CI_JOB_NAME_SLUG} MATCHES "qt5")
    set(BUILD_QT5 ON)
    set(BUILD_QT6 OFF)
elseif($ENV{CI_JOB_NAME_SLUG} MATCHES "qt6")
    set(BUILD_QT5 OFF)
    set(BUILD_QT6 ON)
endif()

include(ECMInstallIcons)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(KDEClangFormat)
include(KDEGitCommitHooks)

find_package(XCB COMPONENTS XCB)
set_package_properties(XCB PROPERTIES
    DESCRIPTION "X protocol C-language Binding"
    URL "http://xcb.freedesktop.org"
    TYPE OPTIONAL
    PURPOSE "Required to pass style properties to native Windows on X11 Platform"
)

if(NOT APPLE)
    set(OXYGEN_HAVE_X11 ${XCB_XCB_FOUND})
endif()

if(BUILD_QT5)
block(SCOPE_FOR VARIABLES)
    set(QT_MAJOR_VERSION 5)
    unset(QUERY_EXECUTABLE CACHE)

    include(KDEInstallDirs5)
    include (KDECMakeSettings)

    find_package(Qt5 ${QT5_MIN_VERSION} REQUIRED CONFIG COMPONENTS Widgets DBus Quick)
    find_package(KF5 ${KF_MIN_VERSION} REQUIRED COMPONENTS
    I18n
    Config
    CoreAddons
    GuiAddons
    WidgetsAddons
    Service
    Completion
    FrameworkIntegration
    WindowSystem)

    if(OXYGEN_HAVE_X11)
        find_package(Qt5X11Extras ${QT5_MIN_VERSION} REQUIRED CONFIG)
    endif()


    add_subdirectory(liboxygen liboxygen5)
    add_subdirectory(kstyle kstyle5)
endblock()
endif()

if(BUILD_QT6)
block(SCOPE_FOR VARIABLES)
    set(QT_MAJOR_VERSION 6)
    unset(QUERY_EXECUTABLE CACHE)

    include(KDEInstallDirs6)
    include (KDECMakeSettings)
    find_package(Qt6 ${QT_MIN_VERSION} REQUIRED CONFIG COMPONENTS Widgets DBus Quick)
    find_package(KF6 ${KF6_MIN_VERSION} REQUIRED COMPONENTS
    I18n
    Config
    CoreAddons
    GuiAddons
    KCMUtils
    WidgetsAddons
    Service
    Completion
    FrameworkIntegration
    WindowSystem)
    find_package(Plasma ${PROJECT_DEP_VERSION} REQUIRED)

    # https://bugreports.qt.io/browse/QTBUG-114706
    add_library(Qt::Core ALIAS Qt6::Core)
    add_library(Qt::Gui ALIAS Qt6::Gui)
    add_library(Qt::OpenGL ALIAS Qt6::OpenGL)
    add_library(Qt::Network ALIAS Qt6::Network)
    if(Qt6_VERSION_MINOR GREATER 6)
        add_library(Qt::PlatformModuleInternal ALIAS Qt6::PlatformModuleInternal)
    endif()

    add_subdirectory(liboxygen liboxygen6)
    add_subdirectory(kstyle kstyle6)

    add_subdirectory(color-schemes)
    add_subdirectory(cursors)
    add_subdirectory(desktoptheme)
    add_subdirectory(kdecoration)

    plasma_install_package(lookandfeel org.kde.oxygen look-and-feel lookandfeel)

    ki18n_install(po)
endblock()
endif()

file(GLOB_RECURSE ALL_CLANG_FORMAT_SOURCE_FILES *.cpp *.h)
kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})

kde_configure_git_pre_commit_hook(CHECKS CLANG_FORMAT)

feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)