blob: 7090cd9eb0bce0d1fe17d8f60f48217eda770fd3 [file] [log] [blame]
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -05001CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11)
2
3# First, check is the compiler is new enough, most version of Clang are fine
4# until problems arise, checking for GCC is enough
5IF (CMAKE_COMPILER_IS_GNUCC)
6 EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION)
7 IF (GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8)
8 MESSAGE(STATUS "Found GCC version >= 4.8: " ${GCC_VERSION})
9 ELSE()
10 MESSAGE(FATAL_ERROR "Your version of GCC is too old, please install GCC 4.8 or later")
11 ENDIF()
12ENDIF()
13
14ADD_DEFINITIONS("-std=c++1y")
15
Stepan Salenikovichc1dac252015-03-25 17:19:35 -040016# set project name and version
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050017PROJECT(ring-client-gnome)
Guillaume Roguez45bee9c2016-03-16 22:43:11 -040018SET(PROJECT_VERSION_MAJOR 1)
19SET(PROJECT_VERSION_MINOR 0)
Guillaume Roguez90ee8642015-04-15 15:21:19 -040020SET(PROJECT_VERSION_PATCH 0)
Stepan Salenikovichc1dac252015-03-25 17:19:35 -040021
Stepan Salenikovichc1dac252015-03-25 17:19:35 -040022# add the binary tree to the search path for include files
23# so that we will find config.h
24INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050025
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -050026LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
27
Stepan Salenikovichfb7f2952015-05-25 16:44:19 -040028# include custom cmake modules
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -050029INCLUDE(${CMAKE_SOURCE_DIR}/cmake/GResources.cmake)
Stepan Salenikovichfb7f2952015-05-25 16:44:19 -040030INCLUDE(${CMAKE_SOURCE_DIR}/cmake/GSettings.cmake)
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050031
32# make sure we're using Qt5
33SET(ENABLE_QT5 true)
34
35# for now, set debug as default
36SET(CMAKE_BUILD_TYPE Debug)
37
Stepan Salenikovichdd82f9b2015-09-16 14:04:05 -040038# during packaging the CMAKE_INSTALL_PREFIX is used to specify where to install the files, but it
39# may not be the same as where the package will put them, use RING_INSTALL_PREFIX to let the client
40# know at runtime where to expect installed files to be located
41SET(RING_INSTALL_PREFIX ${CMAKE_INSTALL_PREFIX}
42 CACHE PATH "prefix where the package will be installed on the user's system (eg: /usr/local); defaults to the CMAKE_INSTALL_PREFIX"
43)
44
aviaua06a97e2016-03-18 15:19:02 -040045# Check if LRC's location is manually specified with -DLibRingClient_PROJECT_DIR
46IF(LibRingClient_PROJECT_DIR)
47 SET(LIB_RING_CLIENT_INCLUDE_DIR ${LibRingClient_PROJECT_DIR}/src)
48 # TODO: maybe allow a way to specify a different build dir
49 SET(LIB_RING_LIBRARY_INCLUDE_DIR ${LibRingClient_PROJECT_DIR}/build)
50
51 # check for the existence of the directories;
52 # if the dirs have missing or outdated files then we will just get build/link errors
53 IF(EXISTS "${LIB_RING_CLIENT_INCLUDE_DIR}/")
54 MESSAGE("will expect lrc headers in ${LIB_RING_CLIENT_INCLUDE_DIR}")
55 IF(EXISTS "${LIB_RING_LIBRARY_INCLUDE_DIR}/")
56 MESSAGE("will expect lrc libraries in " ${LIB_RING_LIBRARY_INCLUDE_DIR})
57 SET(LibRingClient_FOUND true)
58 SET(LIB_RING_CLIENT_LIBRARY ringclient)
59 ELSE()
60 MESSAGE( FATAL_ERROR "${LIB_RING_LIBRARY_INCLUDE_DIR} does not exist")
61 ENDIF(EXISTS "${LIB_RING_LIBRARY_INCLUDE_DIR}/")
62 ELSE()
63 MESSAGE( FATAL_ERROR "${LIB_RING_CLIENT_INCLUDE_DIR} does not exist")
64 ENDIF(EXISTS "${LIB_RING_CLIENT_INCLUDE_DIR}/")
65ELSE(LibRingClient_PROJECT_DIR)
66 FIND_PACKAGE(LibRingClient REQUIRED)
67ENDIF(LibRingClient_PROJECT_DIR)
68
69
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050070# find packages
71FIND_PACKAGE(PkgConfig REQUIRED)
72PKG_CHECK_MODULES(GTK3 REQUIRED gtk+-3.0>=3.10)
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050073FIND_PACKAGE(Qt5Core REQUIRED)
Stepan Salenikovich36c025c2015-03-03 19:06:44 -050074PKG_CHECK_MODULES(CLUTTER REQUIRED clutter-1.0)
75PKG_CHECK_MODULES(CLUTTERGTK REQUIRED clutter-gtk-1.0)
Stepan Salenikovich6f687072015-03-26 10:43:37 -040076PKG_CHECK_MODULES(EBOOK REQUIRED libebook-1.2>=3.10)
Stepan Salenikovich76c33e62015-05-22 12:24:07 -040077PKG_CHECK_MODULES(LIBNOTIFY libnotify>=0.7.6) #optional
Stepan Salenikoviche88f6692015-09-10 18:09:38 -040078FIND_PACKAGE(Gettext) #optional for translations
aviaudd355ba2016-04-08 14:23:09 -040079PKG_CHECK_MODULES(LIBQRENCODE libqrencode>=3.4)
80
81IF( LIBQRENCODE_FOUND )
82 MESSAGE(STATUS "Found libqrencode version >= 3.4: " ${LIBQRENCODE_VERSION})
83ELSE()
84 MESSAGE(STATUS "libqrencode supported version NOT found. Will use the repo" )
85
Edric Milaret96e51d52016-04-21 13:04:30 -040086 EXECUTE_PROCESS (COMMAND git submodule update --init)
aviaudd355ba2016-04-08 14:23:09 -040087 INCLUDE(ExternalProject)
88 ExternalProject_Add(libqrencode
89 GIT_SUBMODULES libqrencode
90 SOURCE_DIR ${CMAKE_SOURCE_DIR}/libqrencode
91 BINARY_DIR ${CMAKE_SOURCE_DIR}/libqrencode
92 INSTALL_DIR ${CMAKE_SOURCE_DIR}/libqrencode
93 CONFIGURE_COMMAND ./autogen.sh
94 COMMAND ./configure --prefix=${CMAKE_CURRENT_SOURCE_DIR}/libqrencode --disable-shared --enable-static
95 BUILD_COMMAND ${MAKE})
96
97 INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/libqrencode/include)
98 LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/libqrencode/lib)
99ENDIF()
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500100
101# include libs
102INCLUDE_DIRECTORIES(${GTK3_INCLUDE_DIRS})
103INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
Stepan Salenikovichd2dbcee2015-02-27 16:52:28 -0500104INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS} )
Stepan Salenikovich36c025c2015-03-03 19:06:44 -0500105INCLUDE_DIRECTORIES(${CLUTTER_INCLUDE_DIRS})
106INCLUDE_DIRECTORIES(${CLUTTERGTK_INCLUDE_DIRS})
Stepan Salenikovich6f687072015-03-26 10:43:37 -0400107INCLUDE_DIRECTORIES(${EBOOK_INCLUDE_DIRS})
Stepan Salenikovich76c33e62015-05-22 12:24:07 -0400108INCLUDE_DIRECTORIES(${LIBNOTIFY_INCLUDE_DIRS})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500109
110# link libs
111LINK_DIRECTORIES(${GTK3_LIBRARY_DIRS})
Stepan Salenikovich36c025c2015-03-03 19:06:44 -0500112LINK_DIRECTORIES(${LIB_RING_LIBRARY_INCLUDE_DIR})
113LINK_DIRECTORIES(${Qt5Core_LIBRARY_DIRS} )
114LINK_DIRECTORIES(${CLUTTER_LIBRARY_DIRS})
115LINK_DIRECTORIES(${CLUTTERGTK_LIBRARY_DIRS})
Stepan Salenikovich6f687072015-03-26 10:43:37 -0400116LINK_DIRECTORIES(${EBOOK_LIBRARY_DIRS})
Stepan Salenikovich76c33e62015-05-22 12:24:07 -0400117LINK_DIRECTORIES(${LIBNOTIFY_LIBRARY_DIRS})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500118
Stepan Salenikovich36c025c2015-03-03 19:06:44 -0500119# lib compiler flags
120ADD_DEFINITIONS(${GTK3_CFLAGS})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500121ADD_DEFINITIONS(${GTK3_CFLAGS_OTHER})
Stepan Salenikovich36c025c2015-03-03 19:06:44 -0500122ADD_DEFINITIONS(${LIB_RING_LIBRARY_CFLAGS})
123ADD_DEFINITIONS(${Qt5Core_CFLAGS})
124ADD_DEFINITIONS(${CLUTTER_CFLAGS})
125ADD_DEFINITIONS(${CLUTTERGTK_CFLAGS})
Stepan Salenikovich6f687072015-03-26 10:43:37 -0400126ADD_DEFINITIONS(${EBOOK_CFLAGS})
Stepan Salenikovich76c33e62015-05-22 12:24:07 -0400127ADD_DEFINITIONS(${LIBNOTIFY_CFLAGS})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500128
Guillaume Roguez644caf42015-03-20 16:28:36 -0400129IF(NOT ${ENABLE_STATIC} MATCHES false)
130 SET(QT5_MODULE_PATH ${QT5_PATH}/lib/cmake)
131 FIND_PACKAGE(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED Core DBus)
132 FIND_PACKAGE(Qt5DBus REQUIRED)
133 INCLUDE_DIRECTORIES(SYSTEM ${Qt5DBus_INCLUDE_DIRS} )
134 LINK_DIRECTORIES(${Qt5DBus_LIBRARY_DIRS} )
135 ADD_DEFINITIONS(${Qt5DBus_CFLAGS})
136ENDIF()
137
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500138# warnings
139ADD_DEFINITIONS(
140 -Wall
141 -Wextra
142 -Wno-cpp
143 -Wmissing-noreturn
144 -Wpointer-arith
145 -Wcast-align
146 -Wwrite-strings
147 -Wformat-nonliteral
148 -Wformat-security
149 -Wswitch-enum
150 -Winit-self
151 -Wmissing-include-dirs
152 -Wundef
153 -Wmissing-format-attribute
154 -Wno-reorder
155 -Wunused
156 -Wuninitialized
157 -Woverloaded-virtual
158 -Wsuggest-attribute=const
159 -Wunused-value
160 -Wdouble-promotion
161 -Wnonnull
162 -Wsequence-point
163 -Wunused-but-set-parameter
164 -Wsizeof-pointer-memaccess
165 -Wvarargs
166)
167
168# more warnings
169IF (CMAKE_COMPILER_IS_GNUCC)
170 IF (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
171 ADD_DEFINITIONS(
172 -Wconditionally-supported
173 -Wdate-time
174 -Wdelete-incomplete
175 -Wfloat-conversion
176 )
177 ENDIF()
178
179 IF (GCC_VERSION VERSION_GREATER 5.0 OR GCC_VERSION VERSION_EQUAL 5.0)
180 ADD_DEFINITIONS(
181 -Wsuggest-override
182 -Wsuggest-final-types
183 -Wsuggest-final-methods
184 -Wbool-compare
185 -Wformat-signedness
186 -Wlogical-not-parentheses
187 -Wnormalized
188 -Wshift-count-negative
189 -Wshift-count-overflow
190 -Wsized-deallocation
191 -Wsizeof-array-argument
192 )
193 ENDIF()
194
195ENDIF()
196
Stepan Salenikovich4f9bb982015-06-23 14:26:30 -0400197# get git version on every build
198SET(GIT_REVISION_INPUT_FILE ${PROJECT_SOURCE_DIR}/src/revision.h.in)
199SET(GIT_REVISION_OUTPUT_FILE ${PROJECT_BINARY_DIR}/revision.h)
200
201ADD_CUSTOM_TARGET(
202 git_revision ALL
203 COMMAND ${CMAKE_COMMAND}
204 -DGIT_REVISION_INPUT_FILE=${GIT_REVISION_INPUT_FILE}
205 -DGIT_REVISION_OUTPUT_FILE=${GIT_REVISION_OUTPUT_FILE}
206 -P ${CMAKE_SOURCE_DIR}/cmake/GitRevision.cmake
207 COMMENT "generating ${GIT_REVISION_OUTPUT_FILE}"
208)
209
210ADD_CUSTOM_COMMAND(
211 OUTPUT ${GIT_REVISION_OUTPUT_FILE}
212 DEPENDS git_revision
213)
214
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500215# source files to compile
216SET( SRC_FILES
217 src/main.cpp
Stepan Salenikovichd81ef292015-02-17 18:47:37 -0500218 src/ring_client.h
219 src/ring_client.cpp
220 src/ring_client_options.h
221 src/ring_client_options.c
Stepan Salenikovich434b88f2015-02-19 17:49:08 -0500222 src/ringmainwindow.h
223 src/ringmainwindow.cpp
Stepan Salenikovich69771842015-02-24 18:11:45 -0500224 src/incomingcallview.h
225 src/incomingcallview.cpp
Stepan Salenikovichc64523b2015-02-27 16:31:00 -0500226 src/currentcallview.h
227 src/currentcallview.cpp
Stepan Salenikovicha3557452015-02-20 14:14:12 -0500228 src/models/gtkaccessproxymodel.h
229 src/models/gtkaccessproxymodel.cpp
230 src/models/gtkqtreemodel.h
231 src/models/gtkqtreemodel.cpp
Stepan Salenikovich297b5d12015-02-26 17:51:13 -0500232 src/utils/drawing.h
Stepan Salenikovichd8765072016-01-14 10:58:51 -0500233 src/utils/drawing.cpp
Stepan Salenikovich36c025c2015-03-03 19:06:44 -0500234 src/video/video_widget.h
235 src/video/video_widget.cpp
Stepan Salenikovich7ff47962015-03-16 15:10:14 -0400236 src/models/gtkqsortfiltertreemodel.h
237 src/models/gtkqsortfiltertreemodel.cpp
Stepan Salenikovich61cbab02015-03-16 18:35:10 -0400238 src/accountview.h
239 src/accountview.cpp
240 src/accountgeneraltab.h
241 src/accountgeneraltab.cpp
242 src/accountaudiotab.h
243 src/accountaudiotab.cpp
244 src/accountvideotab.h
245 src/accountvideotab.cpp
Stepan Salenikovichb7e6a732015-05-04 17:13:22 -0400246 src/accountadvancedtab.h
247 src/accountadvancedtab.cpp
Stepan Salenikovich7a1e71c2015-05-07 11:14:48 -0400248 src/accountsecuritytab.h
249 src/accountsecuritytab.cpp
Stepan Salenikovichc3fede22015-03-20 17:01:47 -0400250 src/models/activeitemproxymodel.h
251 src/models/activeitemproxymodel.cpp
Stepan Salenikovich50c989b2015-03-21 18:32:46 -0400252 src/defines.h
Stepan Salenikovich8bc51e52015-03-21 20:17:29 -0400253 src/video/xrectsel.h
254 src/video/xrectsel.c
Stepan Salenikovichbd029582015-03-24 11:00:56 -0400255 src/dialogs.h
256 src/dialogs.c
Stepan Salenikovich0bd53492015-05-11 14:28:52 -0400257 src/mediasettingsview.h
258 src/mediasettingsview.cpp
Stepan Salenikovichde896112015-05-11 16:46:33 -0400259 src/generalsettingsview.h
260 src/generalsettingsview.cpp
Stepan Salenikovich6f687072015-03-26 10:43:37 -0400261 src/backends/edscontactbackend.h
262 src/backends/edscontactbackend.cpp
Stepan Salenikovichbbd6c132015-08-20 15:21:48 -0400263 src/native/pixbufmanipulator.h
264 src/native/pixbufmanipulator.cpp
Stepan Salenikovich9816a942015-04-22 17:49:16 -0400265 src/contactsview.h
266 src/contactsview.cpp
267 src/historyview.h
268 src/historyview.cpp
269 src/utils/models.h
270 src/utils/models.cpp
271 src/utils/calling.h
272 src/utils/calling.cpp
Stepan Salenikovich76c33e62015-05-22 12:24:07 -0400273 src/ringnotify.h
274 src/ringnotify.cpp
Stepan Salenikovichfb7f2952015-05-25 16:44:19 -0400275 src/utils/files.h
276 src/utils/files.cpp
Stepan Salenikovich4f9bb982015-06-23 14:26:30 -0400277 ${GIT_REVISION_OUTPUT_FILE}
Stepan Salenikovichf2d76c52015-07-17 17:54:56 -0400278 src/utils/menus.h
279 src/utils/menus.cpp
Stepan Salenikovich75a39172015-07-10 13:21:08 -0400280 src/utils/accounts.h
281 src/utils/accounts.cpp
Stepan Salenikovich0cf247d2015-07-24 17:36:32 -0400282 src/contactpopover.h
283 src/contactpopover.cpp
284 src/choosecontactview.h
285 src/choosecontactview.cpp
286 src/editcontactview.h
287 src/editcontactview.cpp
Stepan Salenikovichbe6550c2015-08-21 16:16:03 -0400288 src/native/dbuserrorhandler.h
289 src/native/dbuserrorhandler.cpp
Stepan Salenikovich2cde7612015-09-25 10:44:01 -0400290 src/ringwelcomeview.h
291 src/ringwelcomeview.cpp
Stepan Salenikovich2f8b4492015-09-21 17:10:36 -0400292 src/recentcontactsview.h
293 src/recentcontactsview.cpp
Stepan Salenikovichd2cad062016-01-08 13:43:49 -0500294 src/chatview.h
295 src/chatview.cpp
Nicolas Jagerb413b302016-05-06 11:41:32 -0400296 src/avatarmanipulation.h
297 src/avatarmanipulation.cpp
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500298)
299
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -0500300# compile glib resource files to c code
301GLIB_COMPILE_RESOURCES( GLIB_RESOURCES_RING
302 SOURCE
303 pixmaps/pixmaps.gresource.xml
Stepan Salenikovich434b88f2015-02-19 17:49:08 -0500304 ui/ui.gresource.xml
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -0500305)
306
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500307# IF(${ENABLE_TEST} MATCHES true)
308# ADD_SUBDIRECTORY( src/test)
309# ENDIF()
310
311# for translations
Stepan Salenikoviche88f6692015-09-10 18:09:38 -0400312IF (GETTEXT_FOUND)
313
314 # get all translation files; they're expected to be named using the following convention:
315 # '<lang code>[_<country code].po'
316 # eg: fr_CA.po (the country code is optional)
317 FILE(GLOB PO_FILES ${CMAKE_SOURCE_DIR}/po/*.po)
318
319 # Install each of the translation files
320 FOREACH(PO_FILE IN LISTS PO_FILES)
321 # extract the language (and optional country code) from the filename
322 GET_FILENAME_COMPONENT(LANG ${PO_FILE} NAME_WE)
323 GETTEXT_PROCESS_PO_FILES(${LANG} ALL PO_FILES ${PO_FILE})
324
325 SET(TRANSLATIONS_INSTALL_DIR ${CMAKE_INSTALL_PREFIX}/share/locale/${LANG}/LC_MESSAGES)
326
327 # install to share/locale and rename each to ring-client-gnome.mo
328 INSTALL(
329 FILES ${PROJECT_BINARY_DIR}/${LANG}.gmo
330 DESTINATION ${TRANSLATIONS_INSTALL_DIR}
331 RENAME ${PROJECT_NAME}.mo
332 )
333 ENDFOREACH(PO_FILE)
334
335ENDIF(GETTEXT_FOUND)
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500336
Stepan Salenikovichfb7f2952015-05-25 16:44:19 -0400337# install and compile glib gsettings schema
338add_schema("cx.ring.RingGnome.gschema.xml" GSCHEMA_RING)
339
Stepan Salenikovich526c41e2016-06-08 16:48:20 -0400340ADD_EXECUTABLE(gnome-ring ${GLIB_RESOURCES_RING} ${GSCHEMA_RING} ${SRC_FILES})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500341
Stepan Salenikovich526c41e2016-06-08 16:48:20 -0400342ADD_DEPENDENCIES(gnome-ring libqrencode)
aviaudd355ba2016-04-08 14:23:09 -0400343
Guillaume Roguez644caf42015-03-20 16:28:36 -0400344IF(NOT ${ENABLE_STATIC} MATCHES false)
Stepan Salenikovich526c41e2016-06-08 16:48:20 -0400345TARGET_LINK_LIBRARIES(gnome-ring
Stepan Salenikovich36c025c2015-03-03 19:06:44 -0500346 ${LIB_RING_CLIENT_LIBRARY}
347 ${GTK3_LIBRARIES}
Guillaume Roguez644caf42015-03-20 16:28:36 -0400348 ${Qt5Core_LIBRARIES}
349 ${Qt5DBus_LIBRARIES}
Stepan Salenikovich36c025c2015-03-03 19:06:44 -0500350 ${CLUTTER_LIBRARIES}
Guillaume Roguez644caf42015-03-20 16:28:36 -0400351 ${CLUTTERGTK_LIBRARIES}
Stepan Salenikovich6f687072015-03-26 10:43:37 -0400352 ${EBOOK_LIBRARIES}
Stepan Salenikovich76c33e62015-05-22 12:24:07 -0400353 ${LIBNOTIFY_LIBRARIES}
Guillaume Roguez644caf42015-03-20 16:28:36 -0400354 -lpthread
355 -lrt
aviaudd355ba2016-04-08 14:23:09 -0400356 -lqrencode
Guillaume Roguez644caf42015-03-20 16:28:36 -0400357 )
358ELSE()
Stepan Salenikovich526c41e2016-06-08 16:48:20 -0400359TARGET_LINK_LIBRARIES(gnome-ring
Guillaume Roguez644caf42015-03-20 16:28:36 -0400360 ${LIB_RING_CLIENT_LIBRARY}
361 ${GTK3_LIBRARIES}
362 ${Qt5Core_LIBRARIES}
363 ${CLUTTER_LIBRARIES}
364 ${CLUTTERGTK_LIBRARIES}
Stepan Salenikovich6f687072015-03-26 10:43:37 -0400365 ${EBOOK_LIBRARIES}
Stepan Salenikovich76c33e62015-05-22 12:24:07 -0400366 ${LIBNOTIFY_LIBRARIES}
aviaudd355ba2016-04-08 14:23:09 -0400367 -lqrencode
Guillaume Roguez644caf42015-03-20 16:28:36 -0400368 )
369ENDIF()
Stepan Salenikovich1c34fc52015-03-13 12:43:54 -0400370
Stepan Salenikovich76c33e62015-05-22 12:24:07 -0400371# configure libnotify variable for config.h file
372IF( LIBNOTIFY_FOUND )
373 SET(USE_LIBNOTIFY 1)
374ELSE()
375 SET(USE_LIBNOTIFY 0)
376ENDIF()
377
378# create config header file to pass cmake settings to source code
379CONFIGURE_FILE (
380 "${PROJECT_SOURCE_DIR}/src/config.h.in"
381 "${PROJECT_BINARY_DIR}/config.h"
382)
383
Stepan Salenikovich526c41e2016-06-08 16:48:20 -0400384INSTALL(TARGETS gnome-ring
Stepan Salenikovich1c34fc52015-03-13 12:43:54 -0400385 RUNTIME DESTINATION bin
386)
Stepan Salenikovichb42fde72015-03-30 12:29:09 -0400387
Stepan Salenikovichfb7f2952015-05-25 16:44:19 -0400388# install .desktop in XDG desktop dir so that it is recognized by the system
Stepan Salenikovich526c41e2016-06-08 16:48:20 -0400389INSTALL(FILES ${PROJECT_SOURCE_DIR}/gnome-ring.desktop
Stepan Salenikovichb42fde72015-03-30 12:29:09 -0400390 DESTINATION ${CMAKE_INSTALL_PREFIX}/share/applications
391)
392
Stepan Salenikovich526c41e2016-06-08 16:48:20 -0400393# install .desktop in the gnome-ring data dir, so that it can be copied to the
Stepan Salenikovichfb7f2952015-05-25 16:44:19 -0400394# autostart dir by the client
Stepan Salenikovich526c41e2016-06-08 16:48:20 -0400395INSTALL(FILES ${PROJECT_SOURCE_DIR}/gnome-ring.desktop.autostart
Stepan Salenikovichfb7f2952015-05-25 16:44:19 -0400396 DESTINATION
Stepan Salenikovich526c41e2016-06-08 16:48:20 -0400397 ${CMAKE_INSTALL_PREFIX}/share/gnome-ring/
Stepan Salenikovichfb7f2952015-05-25 16:44:19 -0400398 PERMISSIONS
399 WORLD_READ
400 OWNER_WRITE
401 OWNER_READ
402 GROUP_READ
Stepan Salenikovich2bc23272015-09-17 18:05:01 -0400403 RENAME
Stepan Salenikovich526c41e2016-06-08 16:48:20 -0400404 gnome-ring.desktop
Stepan Salenikovichfb7f2952015-05-25 16:44:19 -0400405)
406
Stepan Salenikovichb42fde72015-03-30 12:29:09 -0400407INSTALL(FILES pixmaps/ring.svg
408 DESTINATION ${CMAKE_INSTALL_PREFIX}/share/icons/hicolor/scalable/apps
409)
410
Stepan Salenikovich526c41e2016-06-08 16:48:20 -0400411INSTALL(FILES gnome-ring.appdata.xml
Stepan Salenikovichb42fde72015-03-30 12:29:09 -0400412 DESTINATION ${CMAKE_INSTALL_PREFIX}/share/appdata/
413)
Stepan Salenikovich841deaf2015-04-15 16:08:39 -0400414
Stepan Salenikovich0d707a62015-05-29 10:48:04 -0400415# install shell script which will launch "ring"
Stepan Salenikovichab120ea2015-06-01 18:14:12 -0400416INSTALL(
417 FILES
aviau4afc17d2016-04-25 10:45:08 -0400418 "${PROJECT_SOURCE_DIR}/src/ring.cx"
Stepan Salenikovichab120ea2015-06-01 18:14:12 -0400419 DESTINATION
420 ${CMAKE_INSTALL_PREFIX}/bin
421 PERMISSIONS
422 WORLD_READ
423 OWNER_WRITE
424 OWNER_READ
425 GROUP_READ
426 OWNER_EXECUTE
427 GROUP_EXECUTE
428 WORLD_EXECUTE
Stepan Salenikovich0d707a62015-05-29 10:48:04 -0400429)
430
Stepan Salenikovich841deaf2015-04-15 16:08:39 -0400431# add a target to generate API documentation with Doxygen
432FIND_PACKAGE(Doxygen)
433IF(DOXYGEN_FOUND)
434 CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile.in ${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile @ONLY)
435 ADD_CUSTOM_TARGET(doc
436 COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR}/doc/Doxyfile
437 WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/doc
438 COMMENT "Generating API documentation with Doxygen" VERBATIM
439 )
440
441 # create doc/README.md symlink to README since Doxygen doesn't understand file with no extension
442 ADD_CUSTOM_COMMAND(
443 TARGET doc
444 PRE_BUILD
445 COMMAND ln -sf ${CMAKE_CURRENT_SOURCE_DIR}/README ${CMAKE_CURRENT_SOURCE_DIR}/doc/README.md
446 )
447ENDIF(DOXYGEN_FOUND)
Stepan Salenikovich1f47b552016-05-03 17:24:33 -0400448
449# uninstall target
450CONFIGURE_FILE(
451 "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in"
452 "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake"
453 IMMEDIATE @ONLY)
454
455ADD_CUSTOM_TARGET(uninstall
456 COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake)