blob: 9d2698cfa96de76036178e51ce96ea9d146c6f2e [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)
Stepan Salenikovichc1dac252015-03-25 17:19:35 -040018SET(PROJECT_VERSION_MAJOR 0)
19SET(PROJECT_VERSION_MINOR 1)
20SET(PROJECT_VERSION_PATCH 0)
21
22# create config header file to pass cmake settings to source code
23CONFIGURE_FILE (
24 "${PROJECT_SOURCE_DIR}/src/config.h.in"
25 "${PROJECT_BINARY_DIR}/config.h"
26)
27
28# add the binary tree to the search path for include files
29# so that we will find config.h
30INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050031
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -050032LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
33
34# the GResources.cmake module isn't automatically detected
35INCLUDE(${CMAKE_SOURCE_DIR}/cmake/GResources.cmake)
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050036
37# make sure we're using Qt5
38SET(ENABLE_QT5 true)
39
40# for now, set debug as default
41SET(CMAKE_BUILD_TYPE Debug)
42
43# find packages
44FIND_PACKAGE(PkgConfig REQUIRED)
45PKG_CHECK_MODULES(GTK3 REQUIRED gtk+-3.0>=3.10)
46FIND_PACKAGE(LibRingClient REQUIRED)
47FIND_PACKAGE(Qt5Core REQUIRED)
Stepan Salenikovich36c025c2015-03-03 19:06:44 -050048PKG_CHECK_MODULES(CLUTTER REQUIRED clutter-1.0)
49PKG_CHECK_MODULES(CLUTTERGTK REQUIRED clutter-gtk-1.0)
Stepan Salenikovich2d63d5e2015-03-22 23:23:54 -040050PKG_CHECK_MODULES(ICONSYMBLIC REQUIRED gnome-icon-theme-symbolic)
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050051
52# include libs
53INCLUDE_DIRECTORIES(${GTK3_INCLUDE_DIRS})
54INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
Stepan Salenikovichd2dbcee2015-02-27 16:52:28 -050055INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS} )
Stepan Salenikovich36c025c2015-03-03 19:06:44 -050056INCLUDE_DIRECTORIES(${CLUTTER_INCLUDE_DIRS})
57INCLUDE_DIRECTORIES(${CLUTTERGTK_INCLUDE_DIRS})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050058
59# link libs
60LINK_DIRECTORIES(${GTK3_LIBRARY_DIRS})
Stepan Salenikovich36c025c2015-03-03 19:06:44 -050061LINK_DIRECTORIES(${LIB_RING_LIBRARY_INCLUDE_DIR})
62LINK_DIRECTORIES(${Qt5Core_LIBRARY_DIRS} )
63LINK_DIRECTORIES(${CLUTTER_LIBRARY_DIRS})
64LINK_DIRECTORIES(${CLUTTERGTK_LIBRARY_DIRS})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050065
Stepan Salenikovich36c025c2015-03-03 19:06:44 -050066# lib compiler flags
67ADD_DEFINITIONS(${GTK3_CFLAGS})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050068ADD_DEFINITIONS(${GTK3_CFLAGS_OTHER})
Stepan Salenikovich36c025c2015-03-03 19:06:44 -050069ADD_DEFINITIONS(${LIB_RING_LIBRARY_CFLAGS})
70ADD_DEFINITIONS(${Qt5Core_CFLAGS})
71ADD_DEFINITIONS(${CLUTTER_CFLAGS})
72ADD_DEFINITIONS(${CLUTTERGTK_CFLAGS})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050073
Guillaume Roguez644caf42015-03-20 16:28:36 -040074IF(NOT ${ENABLE_STATIC} MATCHES false)
75 SET(QT5_MODULE_PATH ${QT5_PATH}/lib/cmake)
76 FIND_PACKAGE(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED Core DBus)
77 FIND_PACKAGE(Qt5DBus REQUIRED)
78 INCLUDE_DIRECTORIES(SYSTEM ${Qt5DBus_INCLUDE_DIRS} )
79 LINK_DIRECTORIES(${Qt5DBus_LIBRARY_DIRS} )
80 ADD_DEFINITIONS(${Qt5DBus_CFLAGS})
81ENDIF()
82
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050083# warnings
84ADD_DEFINITIONS(
85 -Wall
86 -Wextra
87 -Wno-cpp
88 -Wmissing-noreturn
89 -Wpointer-arith
90 -Wcast-align
91 -Wwrite-strings
92 -Wformat-nonliteral
93 -Wformat-security
94 -Wswitch-enum
95 -Winit-self
96 -Wmissing-include-dirs
97 -Wundef
98 -Wmissing-format-attribute
99 -Wno-reorder
100 -Wunused
101 -Wuninitialized
102 -Woverloaded-virtual
103 -Wsuggest-attribute=const
104 -Wunused-value
105 -Wdouble-promotion
106 -Wnonnull
107 -Wsequence-point
108 -Wunused-but-set-parameter
109 -Wsizeof-pointer-memaccess
110 -Wvarargs
111)
112
113# more warnings
114IF (CMAKE_COMPILER_IS_GNUCC)
115 IF (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
116 ADD_DEFINITIONS(
117 -Wconditionally-supported
118 -Wdate-time
119 -Wdelete-incomplete
120 -Wfloat-conversion
121 )
122 ENDIF()
123
124 IF (GCC_VERSION VERSION_GREATER 5.0 OR GCC_VERSION VERSION_EQUAL 5.0)
125 ADD_DEFINITIONS(
126 -Wsuggest-override
127 -Wsuggest-final-types
128 -Wsuggest-final-methods
129 -Wbool-compare
130 -Wformat-signedness
131 -Wlogical-not-parentheses
132 -Wnormalized
133 -Wshift-count-negative
134 -Wshift-count-overflow
135 -Wsized-deallocation
136 -Wsizeof-array-argument
137 )
138 ENDIF()
139
140ENDIF()
141
142# source files to compile
143SET( SRC_FILES
144 src/main.cpp
Stepan Salenikovichd81ef292015-02-17 18:47:37 -0500145 src/ring_client.h
146 src/ring_client.cpp
147 src/ring_client_options.h
148 src/ring_client_options.c
Stepan Salenikovich434b88f2015-02-19 17:49:08 -0500149 src/ringmainwindow.h
150 src/ringmainwindow.cpp
Stepan Salenikovich69771842015-02-24 18:11:45 -0500151 src/incomingcallview.h
152 src/incomingcallview.cpp
Stepan Salenikovichc64523b2015-02-27 16:31:00 -0500153 src/currentcallview.h
154 src/currentcallview.cpp
Stepan Salenikovicha3557452015-02-20 14:14:12 -0500155 src/models/gtkaccessproxymodel.h
156 src/models/gtkaccessproxymodel.cpp
157 src/models/gtkqtreemodel.h
158 src/models/gtkqtreemodel.cpp
Stepan Salenikovich297b5d12015-02-26 17:51:13 -0500159 src/utils/drawing.h
160 src/utils/drawing.c
Stepan Salenikovich36c025c2015-03-03 19:06:44 -0500161 src/video/video_widget.h
162 src/video/video_widget.cpp
Stepan Salenikovich15142182015-03-11 17:15:26 -0400163 src/backends/minimalhistorybackend.h
164 src/backends/minimalhistorybackend.cpp
Stepan Salenikovich7ff47962015-03-16 15:10:14 -0400165 src/models/gtkqsortfiltertreemodel.h
166 src/models/gtkqsortfiltertreemodel.cpp
Stepan Salenikovich61cbab02015-03-16 18:35:10 -0400167 src/accountview.h
168 src/accountview.cpp
169 src/accountgeneraltab.h
170 src/accountgeneraltab.cpp
171 src/accountaudiotab.h
172 src/accountaudiotab.cpp
173 src/accountvideotab.h
174 src/accountvideotab.cpp
Stepan Salenikovichc3fede22015-03-20 17:01:47 -0400175 src/models/activeitemproxymodel.h
176 src/models/activeitemproxymodel.cpp
Stepan Salenikovich50c989b2015-03-21 18:32:46 -0400177 src/defines.h
Stepan Salenikovich8bc51e52015-03-21 20:17:29 -0400178 src/video/xrectsel.h
179 src/video/xrectsel.c
Stepan Salenikovichbd029582015-03-24 11:00:56 -0400180 src/dialogs.h
181 src/dialogs.c
Stepan Salenikovichf903d1b2015-03-25 14:51:45 -0400182 src/videosettingsview.h
183 src/videosettingsview.cpp
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500184)
185
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -0500186# compile glib resource files to c code
187GLIB_COMPILE_RESOURCES( GLIB_RESOURCES_RING
188 SOURCE
189 pixmaps/pixmaps.gresource.xml
Stepan Salenikovich434b88f2015-02-19 17:49:08 -0500190 ui/ui.gresource.xml
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -0500191)
192
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500193# IF(${ENABLE_TEST} MATCHES true)
194# ADD_SUBDIRECTORY( src/test)
195# ENDIF()
196
197# for translations
198# FIND_PACKAGE ( Gettext REQUIRED )
199# ADD_SUBDIRECTORY( po )
200
Stepan Salenikovich9aef3122015-03-20 17:04:09 -0400201ADD_EXECUTABLE(gnome-ring ${GLIB_RESOURCES_RING} ${SRC_FILES})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500202
Guillaume Roguez644caf42015-03-20 16:28:36 -0400203IF(NOT ${ENABLE_STATIC} MATCHES false)
Stepan Salenikovich9aef3122015-03-20 17:04:09 -0400204TARGET_LINK_LIBRARIES(gnome-ring
Stepan Salenikovich36c025c2015-03-03 19:06:44 -0500205 ${LIB_RING_CLIENT_LIBRARY}
206 ${GTK3_LIBRARIES}
Guillaume Roguez644caf42015-03-20 16:28:36 -0400207 ${Qt5Core_LIBRARIES}
208 ${Qt5DBus_LIBRARIES}
Stepan Salenikovich36c025c2015-03-03 19:06:44 -0500209 ${CLUTTER_LIBRARIES}
Guillaume Roguez644caf42015-03-20 16:28:36 -0400210 ${CLUTTERGTK_LIBRARIES}
211 -lpthread
212 -lrt
213 )
214ELSE()
Stepan Salenikovich9aef3122015-03-20 17:04:09 -0400215TARGET_LINK_LIBRARIES(gnome-ring
Guillaume Roguez644caf42015-03-20 16:28:36 -0400216 ${LIB_RING_CLIENT_LIBRARY}
217 ${GTK3_LIBRARIES}
218 ${Qt5Core_LIBRARIES}
219 ${CLUTTER_LIBRARIES}
220 ${CLUTTERGTK_LIBRARIES}
221 )
222ENDIF()
Stepan Salenikovich1c34fc52015-03-13 12:43:54 -0400223
Stepan Salenikovich9aef3122015-03-20 17:04:09 -0400224INSTALL(TARGETS gnome-ring
Stepan Salenikovich1c34fc52015-03-13 12:43:54 -0400225 RUNTIME DESTINATION bin
226)