-
-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathCMakeLists.txt
More file actions
185 lines (165 loc) · 5.31 KB
/
Copy pathCMakeLists.txt
File metadata and controls
185 lines (165 loc) · 5.31 KB
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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
cmake_minimum_required(VERSION 3.29)
set(KF_VERSION "6.29.0")
project(KHolidays VERSION ${KF_VERSION})
find_package(ECM 6.28.0 REQUIRED NO_MODULE)
set(CMAKE_MODULE_PATH ${ECM_MODULE_PATH})
set(CMAKE_AUTORCC ON)
include(KDEInstallDirs)
include(KDECMakeSettings)
include(KDEFrameworkCompilerSettings NO_POLICY_SCOPE)
include(GenerateExportHeader)
include(ECMGenerateHeaders)
include(CMakePackageConfigHelpers)
include(ECMSetupVersion)
include(ECMPoQmTools)
include(FeatureSummary)
include(ECMCoverageOption)
include(ECMQtDeclareLoggingCategory)
include(KDEGitCommitHooks)
include(ECMGenerateExportHeader)
include(ECMDeprecationSettings)
include(ECMQmlModule)
include(ECMGenerateQDoc)
if(EXISTS "${PROJECT_SOURCE_DIR}/.git/")
set(GIT_SOURCE_TARBALL TRUE)
endif()
if(GIT_SOURCE_TARBALL)
set(PRE_COMMIT_INSTALLED FALSE)
if(${CMAKE_SOURCE_DIR} STREQUAL ${PROJECT_SOURCE_DIR})
if(EXISTS "${PROJECT_SOURCE_DIR}/.git/hooks/pre-commit")
file(READ "${PROJECT_SOURCE_DIR}/.git/hooks/pre-commit" FILE_CONTENTS)
string(
FIND "${FILE_CONTENTS}"
"File generated by pre-commit"
INDEX
)
if(${INDEX} GREATER_EQUAL 0)
set(PRE_COMMIT_INSTALLED TRUE)
endif()
endif()
endif()
if(NOT ${PRE_COMMIT_INSTALLED})
function(install_hook executable hook_name)
message(
STATUS
"This module has ${hook_name} support. ${hook_name} binary was found. Installing ${hook_name} hook"
)
execute_process(
COMMAND
"${executable}" install -f
ERROR_QUIET
RESULT_VARIABLE _precommitresult
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
)
if(_precommitresult EQUAL 0)
message(STATUS "${hook_name} installed.")
else()
message(
WARNING
"Error during installing ${hook_name} hook: ${executable} project source dir ${PROJECT_SOURCE_DIR}"
)
include(KDEGitCommitHooks)
include(KDEClangFormat)
kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
endif()
endfunction()
find_program(PREK_EXECUTABLE prek)
if(PREK_EXECUTABLE)
install_hook(${PREK_EXECUTABLE} "Prek")
else()
find_program(PRE_COMMIT_EXECUTABLE pre-commit)
if(PRE_COMMIT_EXECUTABLE)
install_hook(${PRE_COMMIT_EXECUTABLE} "pre-commit")
else()
message(WARNING "This module has pre-commit support. pre-commit binary was not found.")
include(KDEGitCommitHooks)
include(KDEClangFormat)
kde_clang_format(${ALL_CLANG_FORMAT_SOURCE_FILES})
endif()
endif()
endif()
endif()
find_package(FLEX REQUIRED)
set_package_properties(
FLEX
PROPERTIES
URL
"https://github.com/westes/flex"
DESCRIPTION
"Fast Lexical Analyzer"
TYPE
REQUIRED
PURPOSE
"Required to generate the plan2 parser"
)
find_package(BISON 3.3.2 REQUIRED)
set_package_properties(
BISON
PROPERTIES
URL
"https://www.gnu.org/software/bison"
DESCRIPTION
"general-purpose parser generator"
TYPE
REQUIRED
PURPOSE
"Required to generate the plan2 parser"
)
set(KHOLIDAYS_LIB_VERSION ${KF_VERSION})
set(EXCLUDE_DEPRECATED_BEFORE_AND_AT
0
CACHE STRING
"Control the range of deprecated API excluded from the build [default=0]."
)
set(kholidays_version_header "${CMAKE_CURRENT_BINARY_DIR}/src/kholidays_version.h")
ecm_setup_version(PROJECT VARIABLE_PREFIX KHOLIDAYS
VERSION_HEADER "${kholidays_version_header}"
PACKAGE_VERSION_FILE "${CMAKE_CURRENT_BINARY_DIR}/KF6HolidaysConfigVersion.cmake"
SOVERSION 6
)
########### Find packages ###########
set(REQUIRED_QT_VERSION 6.9.0)
find_package(
Qt6
${REQUIRED_QT_VERSION}
CONFIG
REQUIRED
Core
Qml
)
remove_definitions(
-DQT_NO_CAST_FROM_ASCII
-DQT_NO_CAST_TO_ASCII
)
ecm_set_disabled_deprecation_versions(
QT 6.11
)
########### Targets ###########
add_subdirectory(src)
if(BUILD_TESTING)
add_subdirectory(autotests)
endif()
ecm_install_po_files_as_qm(poqm)
########### CMake Config Files ###########
set(CMAKECONFIG_INSTALL_DIR "${KDE_INSTALL_CMAKEPACKAGEDIR}/KF6Holidays")
configure_package_config_file(
"${CMAKE_CURRENT_SOURCE_DIR}/KF6HolidaysConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/KF6HolidaysConfig.cmake"
INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
)
install(
FILES
"${CMAKE_CURRENT_BINARY_DIR}/KF6HolidaysConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/KF6HolidaysConfigVersion.cmake"
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
COMPONENT Devel
)
install(
EXPORT KF6HolidaysTargets
DESTINATION "${CMAKECONFIG_INSTALL_DIR}"
FILE KF6HolidaysTargets.cmake
NAMESPACE KF6::
)
install(FILES ${kholidays_version_header} DESTINATION ${KDE_INSTALL_INCLUDEDIR_KF}/KHolidays COMPONENT Devel)
include(ECMFeatureSummary)
ecm_feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)