blob: 4df6ec6bdeac526751eb9d5b706709be3f157a8e [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
16PROJECT(ring-client-gnome)
17
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -050018LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
19
20# the GResources.cmake module isn't automatically detected
21INCLUDE(${CMAKE_SOURCE_DIR}/cmake/GResources.cmake)
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050022
23# make sure we're using Qt5
24SET(ENABLE_QT5 true)
25
26# for now, set debug as default
27SET(CMAKE_BUILD_TYPE Debug)
28
29# find packages
30FIND_PACKAGE(PkgConfig REQUIRED)
31PKG_CHECK_MODULES(GTK3 REQUIRED gtk+-3.0>=3.10)
32FIND_PACKAGE(LibRingClient REQUIRED)
33FIND_PACKAGE(Qt5Core REQUIRED)
Stepan Salenikovich36c025c2015-03-03 19:06:44 -050034PKG_CHECK_MODULES(CLUTTER REQUIRED clutter-1.0)
35PKG_CHECK_MODULES(CLUTTERGTK REQUIRED clutter-gtk-1.0)
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050036
37# include libs
38INCLUDE_DIRECTORIES(${GTK3_INCLUDE_DIRS})
39INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
Stepan Salenikovichd2dbcee2015-02-27 16:52:28 -050040INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS} )
Stepan Salenikovich36c025c2015-03-03 19:06:44 -050041INCLUDE_DIRECTORIES(${CLUTTER_INCLUDE_DIRS})
42INCLUDE_DIRECTORIES(${CLUTTERGTK_INCLUDE_DIRS})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050043
44# link libs
45LINK_DIRECTORIES(${GTK3_LIBRARY_DIRS})
Stepan Salenikovich36c025c2015-03-03 19:06:44 -050046LINK_DIRECTORIES(${LIB_RING_LIBRARY_INCLUDE_DIR})
47LINK_DIRECTORIES(${Qt5Core_LIBRARY_DIRS} )
48LINK_DIRECTORIES(${CLUTTER_LIBRARY_DIRS})
49LINK_DIRECTORIES(${CLUTTERGTK_LIBRARY_DIRS})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050050
Stepan Salenikovich36c025c2015-03-03 19:06:44 -050051# lib compiler flags
52ADD_DEFINITIONS(${GTK3_CFLAGS})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050053ADD_DEFINITIONS(${GTK3_CFLAGS_OTHER})
Stepan Salenikovich36c025c2015-03-03 19:06:44 -050054ADD_DEFINITIONS(${LIB_RING_LIBRARY_CFLAGS})
55ADD_DEFINITIONS(${Qt5Core_CFLAGS})
56ADD_DEFINITIONS(${CLUTTER_CFLAGS})
57ADD_DEFINITIONS(${CLUTTERGTK_CFLAGS})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050058
59# warnings
60ADD_DEFINITIONS(
61 -Wall
62 -Wextra
63 -Wno-cpp
64 -Wmissing-noreturn
65 -Wpointer-arith
66 -Wcast-align
67 -Wwrite-strings
68 -Wformat-nonliteral
69 -Wformat-security
70 -Wswitch-enum
71 -Winit-self
72 -Wmissing-include-dirs
73 -Wundef
74 -Wmissing-format-attribute
75 -Wno-reorder
76 -Wunused
77 -Wuninitialized
78 -Woverloaded-virtual
79 -Wsuggest-attribute=const
80 -Wunused-value
81 -Wdouble-promotion
82 -Wnonnull
83 -Wsequence-point
84 -Wunused-but-set-parameter
85 -Wsizeof-pointer-memaccess
86 -Wvarargs
87)
88
89# more warnings
90IF (CMAKE_COMPILER_IS_GNUCC)
91 IF (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
92 ADD_DEFINITIONS(
93 -Wconditionally-supported
94 -Wdate-time
95 -Wdelete-incomplete
96 -Wfloat-conversion
97 )
98 ENDIF()
99
100 IF (GCC_VERSION VERSION_GREATER 5.0 OR GCC_VERSION VERSION_EQUAL 5.0)
101 ADD_DEFINITIONS(
102 -Wsuggest-override
103 -Wsuggest-final-types
104 -Wsuggest-final-methods
105 -Wbool-compare
106 -Wformat-signedness
107 -Wlogical-not-parentheses
108 -Wnormalized
109 -Wshift-count-negative
110 -Wshift-count-overflow
111 -Wsized-deallocation
112 -Wsizeof-array-argument
113 )
114 ENDIF()
115
116ENDIF()
117
118# source files to compile
119SET( SRC_FILES
120 src/main.cpp
Stepan Salenikovichd81ef292015-02-17 18:47:37 -0500121 src/ring_client.h
122 src/ring_client.cpp
123 src/ring_client_options.h
124 src/ring_client_options.c
Stepan Salenikovich434b88f2015-02-19 17:49:08 -0500125 src/ringmainwindow.h
126 src/ringmainwindow.cpp
Stepan Salenikovich69771842015-02-24 18:11:45 -0500127 src/incomingcallview.h
128 src/incomingcallview.cpp
Stepan Salenikovichc64523b2015-02-27 16:31:00 -0500129 src/currentcallview.h
130 src/currentcallview.cpp
Stepan Salenikovicha3557452015-02-20 14:14:12 -0500131 src/models/gtkaccessproxymodel.h
132 src/models/gtkaccessproxymodel.cpp
133 src/models/gtkqtreemodel.h
134 src/models/gtkqtreemodel.cpp
Stepan Salenikovich297b5d12015-02-26 17:51:13 -0500135 src/utils/drawing.h
136 src/utils/drawing.c
Stepan Salenikovich36c025c2015-03-03 19:06:44 -0500137 src/video/video_widget.h
138 src/video/video_widget.cpp
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500139)
140
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -0500141# compile glib resource files to c code
142GLIB_COMPILE_RESOURCES( GLIB_RESOURCES_RING
143 SOURCE
144 pixmaps/pixmaps.gresource.xml
Stepan Salenikovich434b88f2015-02-19 17:49:08 -0500145 ui/ui.gresource.xml
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -0500146)
147
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500148# IF(${ENABLE_TEST} MATCHES true)
149# ADD_SUBDIRECTORY( src/test)
150# ENDIF()
151
152# for translations
153# FIND_PACKAGE ( Gettext REQUIRED )
154# ADD_SUBDIRECTORY( po )
155
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -0500156ADD_EXECUTABLE(ring-gnome ${GLIB_RESOURCES_RING} ${SRC_FILES})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500157
Stepan Salenikovich36c025c2015-03-03 19:06:44 -0500158TARGET_LINK_LIBRARIES(ring-gnome
159 ${LIB_RING_CLIENT_LIBRARY}
160 ${GTK3_LIBRARIES}
161 Qt5::Core
162 ${CLUTTER_LIBRARIES}
163 ${CLUTTERGTK_LIBRARIES})