blob: 726638f1a4530be15329b3b5c7c03a1fb44bd7a9 [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)
34
35# include libs
36INCLUDE_DIRECTORIES(${GTK3_INCLUDE_DIRS})
37INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
Stepan Salenikovichd2dbcee2015-02-27 16:52:28 -050038INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS} )
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -050039
40# link libs
41LINK_DIRECTORIES(${GTK3_LIBRARY_DIRS})
42
43# compiler flags
44ADD_DEFINITIONS(${GTK3_CFLAGS_OTHER})
45
46# warnings
47ADD_DEFINITIONS(
48 -Wall
49 -Wextra
50 -Wno-cpp
51 -Wmissing-noreturn
52 -Wpointer-arith
53 -Wcast-align
54 -Wwrite-strings
55 -Wformat-nonliteral
56 -Wformat-security
57 -Wswitch-enum
58 -Winit-self
59 -Wmissing-include-dirs
60 -Wundef
61 -Wmissing-format-attribute
62 -Wno-reorder
63 -Wunused
64 -Wuninitialized
65 -Woverloaded-virtual
66 -Wsuggest-attribute=const
67 -Wunused-value
68 -Wdouble-promotion
69 -Wnonnull
70 -Wsequence-point
71 -Wunused-but-set-parameter
72 -Wsizeof-pointer-memaccess
73 -Wvarargs
74)
75
76# more warnings
77IF (CMAKE_COMPILER_IS_GNUCC)
78 IF (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
79 ADD_DEFINITIONS(
80 -Wconditionally-supported
81 -Wdate-time
82 -Wdelete-incomplete
83 -Wfloat-conversion
84 )
85 ENDIF()
86
87 IF (GCC_VERSION VERSION_GREATER 5.0 OR GCC_VERSION VERSION_EQUAL 5.0)
88 ADD_DEFINITIONS(
89 -Wsuggest-override
90 -Wsuggest-final-types
91 -Wsuggest-final-methods
92 -Wbool-compare
93 -Wformat-signedness
94 -Wlogical-not-parentheses
95 -Wnormalized
96 -Wshift-count-negative
97 -Wshift-count-overflow
98 -Wsized-deallocation
99 -Wsizeof-array-argument
100 )
101 ENDIF()
102
103ENDIF()
104
105# source files to compile
106SET( SRC_FILES
107 src/main.cpp
Stepan Salenikovichd81ef292015-02-17 18:47:37 -0500108 src/ring_client.h
109 src/ring_client.cpp
110 src/ring_client_options.h
111 src/ring_client_options.c
Stepan Salenikovich434b88f2015-02-19 17:49:08 -0500112 src/ringmainwindow.h
113 src/ringmainwindow.cpp
Stepan Salenikovich69771842015-02-24 18:11:45 -0500114 src/incomingcallview.h
115 src/incomingcallview.cpp
Stepan Salenikovicha3557452015-02-20 14:14:12 -0500116 src/models/gtkaccessproxymodel.h
117 src/models/gtkaccessproxymodel.cpp
118 src/models/gtkqtreemodel.h
119 src/models/gtkqtreemodel.cpp
Stepan Salenikovich297b5d12015-02-26 17:51:13 -0500120 src/utils/drawing.h
121 src/utils/drawing.c
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500122)
123
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -0500124# compile glib resource files to c code
125GLIB_COMPILE_RESOURCES( GLIB_RESOURCES_RING
126 SOURCE
127 pixmaps/pixmaps.gresource.xml
Stepan Salenikovich434b88f2015-02-19 17:49:08 -0500128 ui/ui.gresource.xml
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -0500129)
130
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500131# IF(${ENABLE_TEST} MATCHES true)
132# ADD_SUBDIRECTORY( src/test)
133# ENDIF()
134
135# for translations
136# FIND_PACKAGE ( Gettext REQUIRED )
137# ADD_SUBDIRECTORY( po )
138
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -0500139ADD_EXECUTABLE(ring-gnome ${GLIB_RESOURCES_RING} ${SRC_FILES})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500140
Stepan Salenikovichd81ef292015-02-17 18:47:37 -0500141TARGET_LINK_LIBRARIES(ring-gnome ${LIB_RING_CLIENT_LIBRARY} ${GTK3_LIBRARIES} Qt5::Core)