4
function(translate_add_sources)
8
cmake_minimum_required(VERSION 2.8.12 FATAL_ERROR)
9
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH}"
10
"${CMAKE_CURRENT_SOURCE_DIR}/cmake")
15
set(QTCURVE_VERSION_MAJOR "1")
16
set(QTCURVE_VERSION_MINOR "8")
17
set(QTCURVE_VERSION_PATCH "18")
18
set(QTCURVE_VERSION "${QTCURVE_VERSION_MAJOR}.${QTCURVE_VERSION_MINOR}")
19
set(QTCURVE_VERSION_FULL "${QTCURVE_VERSION}.${QTCURVE_VERSION_PATCH}")
21
find_package(Git QUIET)
22
add_custom_command(OUTPUT "${CMAKE_CURRENT_BINARY_DIR}/version.cpp"
23
DEPENDS "${CMAKE_CURRENT_SOURCE_DIR}/tools/gen-version.sh"
24
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
25
add_custom_target(gen-git-ver ALL
26
COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/tools/gen-version.sh"
27
"${CMAKE_CURRENT_BINARY_DIR}/version.cpp" "${QTCURVE_VERSION_FULL}"
29
DEPENDS "${CMAKE_CURRENT_BINARY_DIR}/version.cpp")
32
function(qtc_option name doc def_val)
34
set("${name}_DEFINED" On PARENT_SCOPE)
36
set("${name}_DEFINED" Off PARENT_SCOPE)
37
set("${name}" "${def_val}" PARENT_SCOPE)
40
qtc_option(ENABLE_QT4 "Building Qt4 theme." On)
41
qtc_option(ENABLE_QT5 "Building Qt5 theme." On)
42
qtc_option(ENABLE_GTK2 "Building Gtk2 theme." On)
43
# option(ENABLE_GTK3 "Building Gtk3 theme." On)
44
option(ENABLE_TEST "Enable testing." On)
45
option(QTC_ENABLE_X11 "Enable X11" On)
46
option(QTC_INSTALL_PO "Install translation files." On)
48
qtc_option(QTC_QT4_ENABLE_KDE "Building Qt4 style with KDE4 support." On)
49
qtc_option(QTC_QT5_ENABLE_KDE
50
"Building Qt5 style with KDE Frameworks 5 support." On)
52
option(QTC_QT4_STYLE_SUPPORT
53
"Qt4 support for creating a style for each QtCurve theme." Off)
56
# support an infix argument to have different qtcurve-utils libraries, e.g. for
58
qtc_option(QTC_UTILSLIB_INFIX "Infix for having multiple qtcurve-utils's" "")
59
qtc_option(QTC_KDE4_DEFAULT_HOME
60
"Path of kde4 home (relative to user home), for reading old theme files only"
63
if((QTC_KDE4_DEFAULT_HOME STREQUAL ".kde4") OR
64
(QTC_KDE4_DEFAULT_HOME STREQUAL ".kde") OR
65
(QTC_KDE4_DEFAULT_HOME STREQUAL ".kde4/") OR
66
(QTC_KDE4_DEFAULT_HOME STREQUAL ".kde/") OR
67
(QTC_KDE4_DEFAULT_HOME STREQUAL ""))
68
set(QTC_KDE4_DEFAULT_HOME_DEFAULT True)
70
set(QTC_KDE4_DEFAULT_HOME_DEFAULT False)
73
find_package(KDE4 QUIET)
74
set(KDE4_KDECONFIG_EXECUTABLE)
75
find_program(KDE4_KDECONFIG_EXECUTABLE NAMES kde4-config
76
PATHS "${CMAKE_INSTALL_PREFIX}/bin" ${_KDEDIRS} /opt/kde4/bin
78
if(NOT KDE4_KDECONFIG_EXECUTABLE)
79
find_program(KDE4_KDECONFIG_EXECUTABLE NAMES kde4-config)
82
function(get_cmd_var varname def cmd)
83
if(DEFINED ${varname})
87
execute_process(COMMAND "${cmd}" ${ARGN} OUTPUT_VARIABLE _cmd_out
88
RESULT_VARIABLE _cmd_res)
89
if("${_cmd_res}" EQUAL 0)
90
string(STRIP "${_cmd_out}" _cmd_out)
92
set(_cmd_out "${def}")
95
set(_cmd_out "${def}")
97
set("${varname}" "${_cmd_out}" PARENT_SCOPE)
100
function(get_kde_var var def)
101
get_cmd_var(_output "${def}" "${KDE4_KDECONFIG_EXECUTABLE}" ${ARGN})
102
set(${var} "${_output}" PARENT_SCOPE)
105
get_kde_var(QTC_KDE4_PREFIX "${CMAKE_INSTALL_PREFIX}" --prefix)
106
get_kde_var(QTC_KDE4_ICONS_PREFIX "${QTC_KDE4_PREFIX}/share/icons"
110
find_package(Libexecinfo)
111
if(LIBEXECINFO_LIB_FOUND)
112
set(QTC_ENABLE_BACKTRACE On)
114
set(QTC_ENABLE_BACKTRACE Off)
119
find_package(PkgConfig)
120
if(NOT PKG_CONFIG_FOUND)
121
message(WARNING "Cannot find pkg-config, disable x11 support.")
122
set(QTC_ENABLE_X11 Off)
123
set(QTC_X11_FOUND Off)
126
unset(__pkg_config_checked_QTC_X11 CACHE)
127
# pkg_check_modules(QTC_X11 xcb x11-xcb xrender)
129
pkg_check_modules(QTC_X11 xcb x11-xcb)
131
pkg_check_modules(QTC_X11 xcb)
133
if(NOT QTC_X11_FOUND AND QTC_ENABLE_X11)
135
"Cannot find required modules for x11, disable x11 support.")
136
set(QTC_ENABLE_X11 Off)
142
set(QTC_X11_FOUND Off)
146
include_directories(${QTC_X11_INCLUDE_DIRS})
147
add_definitions(${QTC_X11_CFLAGS})
149
include_directories(SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/lib/xcb-defs")
152
if(ENABLE_GTK2 AND NOT ENABLE_GTK2_DEFINED)
153
find_package(PkgConfig)
154
if(NOT PKG_CONFIG_FOUND)
155
message(WARNING "pkg-config not found, disable Gtk2 build.")
158
unset(__pkg_config_checked_GTK2 CACHE)
159
pkg_check_modules(GTK2 gtk+-2.0)
161
message(WARNING "gtk+-2.0 not found, disable Gtk2 build.")
168
find_package(PkgConfig REQUIRED)
169
unset(__pkg_config_checked_GTK2 CACHE)
170
pkg_check_modules(GTK2 REQUIRED gtk+-2.0)
171
if(GTK2_THEME_PREFIX)
172
set(GTK2_PREFIX "${GTK2_THEME_PREFIX}")
173
elseif(NOT GTK2_PREFIX)
174
set(GTK2_PREFIX "${CMAKE_INSTALL_PREFIX}")
177
set(GTK2_LIBDIR "${GTK2_PREFIX}/lib")
179
_pkgconfig_invoke(gtk+-2.0 GTK2 BIN_VERSION "" --variable=gtk_binary_version)
180
set(GTK2_THEME_DIR ${GTK2_PREFIX}/share/themes/QtCurve)
183
configure_file(config.h.in config.h @ONLY)
185
include_directories("${CMAKE_CURRENT_BINARY_DIR}")
186
cmake_c_fix_include_path(lib/utils qtcurve-utils)
187
cmake_c_fix_include_path(lib/cairo qtcurve-cairo)
188
# glibc 2.20 warns about _BSD_SOURCE if _DEFAULT_SOURCE is not defined.
189
cmake_c_add_flags(CMAKE_C_FLAGS -Wall -Wextra -Wno-cast-align
190
-std=gnu99 -D_DEFAULT_SOURCE)
191
# Register storage class is deprecated in C++11 but is still used in Qt.
192
# Use compiler option (-Wno-deprecated-register) to suppress
193
# the warning in clang++.
194
# We use `override` in certain Qt Classes but the QObject macro does not use it
195
# Use compiler option (-Wno-inconsistent-missing-override) to suppress
196
# the warning in clang++ 3.6+.
197
cmake_c_add_flags(CMAKE_CXX_FLAGS -Wall -Wextra
198
-Wno-deprecated-register -Wno-cast-align
199
-Wno-inconsistent-missing-override)
201
# -std=c++0x is deprecated but gcc < 4.7 do not recognise c++11 ....
202
cmake_c_add_flags(CMAKE_CXX_FLAGS -std=c++0x -D_DEFAULT_SOURCE)
203
cmake_c_add_flags(CMAKE_SHARED_LINKER_FLAGS -Wl,--as-needed -Wl,--no-undefined)
204
cmake_c_add_flags(CMAKE_MODULE_LINKER_FLAGS -Wl,--as-needed -Wl,--no-undefined)
206
cmake_c_add_flags(CMAKE_CXX_FLAGS -std=c++11)
208
add_definitions("-D_GNU_SOURCE -pthread")
210
if(NOT DEFINED LIB_INSTALL_DIR)
211
set(LIB_INSTALL_DIR lib)
214
cmake_c_include_fix_path()
215
add_subdirectory(lib)
216
add_subdirectory(qt4)
217
add_subdirectory(qt5)
218
add_subdirectory(gtk2)
219
add_subdirectory(tools)
222
add_subdirectory(test)