CMakeLists.txt 3.65 KB
Newer Older
Linus Jahn's avatar
Linus Jahn committed
1
cmake_minimum_required(VERSION 2.8.11)
2 3
set(CMAKE_CXX_STANDARD 14)
set(QT_MIN_VERSION "5.7.0")
4
set(BOOST_MIN_VERSION "1.34.1")
Linus Jahn's avatar
Linus Jahn committed
5 6 7

project(kaidan)

8 9
# CMake options
option(I18N "Enable i18n support" FALSE)
10
option(SAILFISH_OS "Build with Sailfish OS GUI, needs libs/kaidansf submodule" FALSE)
11

12
# application name
Linus Jahn's avatar
Linus Jahn committed
13
set(APPLICATION_ID "io.github.kaidanim")
14 15
set(APPLICATION_NAME "kaidan")
set(APPLICATION_DISPLAY_NAME "Kaidan")
16
set(APPLICATION_DESCRIPTION "Cross platform XMPP client")
17

18

Linus Jahn's avatar
Linus Jahn committed
19 20
# Version
set(VERSION_MAJOR 0)
Linus Jahn's avatar
Linus Jahn committed
21 22 23
set(VERSION_MINOR 3)
set(VERSION_PATCH 0)
set(VERSION_EXTRA "dev")
Linus Jahn's avatar
Linus Jahn committed
24 25 26 27 28 29 30 31 32 33 34 35 36
set(VERSION_STRING "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}")
if(VERSION_EXTRA)
	set(VERSION_STRING ${VERSION_STRING}-${VERSION_EXTRA})
endif()

# Find includes in corresponding build directories
set(CMAKE_INCLUDE_CURRENT_DIR ON)

# Instruct CMake to run moc, uic and rcc automatically when needed.
set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTOUIC ON)
set(CMAKE_AUTORCC ON)

Linus Jahn's avatar
Linus Jahn committed
37 38 39
# CMake modules include
include(FeatureSummary)
include(GNUInstallDirs)
Linus Jahn's avatar
Linus Jahn committed
40

41 42 43 44
#
# Dependecies
#

Linus Jahn's avatar
Linus Jahn committed
45 46 47 48
# CMake module path
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")

# Find packages
49
find_package(Qt5 ${QT_MIN_VERSION} REQUIRED NO_MODULE COMPONENTS Core Qml Quick Sql QuickControls2)
Linus Jahn's avatar
Linus Jahn committed
50
find_package(KF5Kirigami2 REQUIRED)
Linus Jahn's avatar
Linus Jahn committed
51 52 53
find_package(Gloox REQUIRED)

# FIXME: Remove
Linus Jahn's avatar
Linus Jahn committed
54
find_package(Swiften REQUIRED)
55
find_package(Boost ${BOOST_MIN_VERSION} REQUIRED COMPONENTS signals date_time)
Linus Jahn's avatar
Linus Jahn committed
56

57

58
#
59
# Load submodules
60 61
#

62 63 64 65
# Main kaidan sources
include("${CMAKE_SOURCE_DIR}/src/CMakeLists.txt")

# I18n support
66 67 68
if(I18N)
	include("${CMAKE_SOURCE_DIR}/i18n/CMakeLists.txt")
endif()
69

70 71 72 73 74 75 76 77 78 79
# Sailfish OS GUI
if(SAILFISH_OS)
	if(EXISTS "${CMAKE_SOURCE_DIR}/libs/kaidansf/CMakeLists.txt")
		include("${CMAKE_SOURCE_DIR}/libs/kaidansf/CMakeLists.txt")
	else()
		message(FATAL_ERROR "Could NOT find KaidanSF adaptions for Sailfish OS.")
	endif()
endif()


80 81 82
#
# Sources / Resources
#
Linus Jahn's avatar
Linus Jahn committed
83

84 85 86 87 88
# normal kirigami GUI, if no Sailfish OS build
if(NOT SAILFISH_OS)
	set(KAIDAN_QML_QRC kaidan_qml.qrc)
endif()

Linus Jahn's avatar
Linus Jahn committed
89
add_executable(${PROJECT_NAME}
90 91 92 93
	${KAIDAN_SOURCES}
	${KAIDAN_QML_QRC}
	${I18N_QRC_CPP}     # only set if enabled
	${KAIDANSF_SOURCES} #
Linus Jahn's avatar
Linus Jahn committed
94 95
)

96

97 98 99 100
#
# Linker Flags
#

Linus Jahn's avatar
Linus Jahn committed
101 102
target_link_libraries(${PROJECT_NAME}
	Qt5::Core
103
	Qt5::Sql
Linus Jahn's avatar
Linus Jahn committed
104 105
	Qt5::Qml
	Qt5::Quick
Linus Jahn's avatar
Linus Jahn committed
106
	${GLOOX_LIBRARIES}
107
	Boost::signals
108
	Boost::date_time
Linus Jahn's avatar
Linus Jahn committed
109 110
	${SWIFTEN_LIBRARY}
)
111

112

113 114 115 116
#
# Global C++ variables
#

117 118 119 120 121
if(SAILFISH_OS)
	set(KAIDAN_COMPILE_DEFINITIONS
		SAILFISH_OS=True
		PLATFORM_DISPLAY_NAME="Sailfish OS"
	)
122 123 124 125
else()
	set(KAIDAN_COMPILE_DEFINITIONS
		NOTIFICATIONS_LIBNOTIFY=True
	)
126 127
endif()

128 129 130 131
target_compile_definitions(${PROJECT_NAME} PRIVATE
	APPLICATION_ID="${APPLICATION_ID}"
	APPLICATION_NAME="${APPLICATION_NAME}"
	APPLICATION_DISPLAY_NAME="${APPLICATION_DISPLAY_NAME}"
132
	APPLICATION_DESCRIPTION="${APPLICATION_DESCRIPTION}"
133 134

	VERSION_STRING="${VERSION_STRING}"
135

136 137
	DEBUG_SOURCE_PATH="${CMAKE_SOURCE_DIR}"

138
	BOOST_SIGNALS_NO_DEPRECATION_WARNING=True
139 140

	${KAIDAN_COMPILE_DEFINITIONS}
141
)
142 143 144


#
145
# Install Kaidan
146 147
#

148 149
if(UNIX AND NOT APPLE)
	# install kaidan binary
150
	install(PROGRAMS ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}
151 152 153
		DESTINATION ${CMAKE_INSTALL_FULL_BINDIR}
	)

154
	# install kaidan media
155 156 157
	install(DIRECTORY "data/images"
		DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/${PROJECT_NAME}"
	)
158

159 160 161 162 163 164 165 166
	# install icon (scalable + 128x)
	install(FILES "misc/kaidan.svg"
		DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/icons/hicolor/scalable/apps"
	)
	install(FILES "misc/kaidan-128x128.png"
		DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/icons/hicolor/128x128/apps"
		RENAME "kaidan.png"
	)
167 168 169 170 171

	# install desktop file
	install(FILES "misc/kaidan.desktop"
		DESTINATION "${CMAKE_INSTALL_FULL_DATADIR}/applications"
	)
172
endif()
Linus Jahn's avatar
Linus Jahn committed
173 174 175


feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)