blob: 141692985b157d9fac25e44f807f263d0a8faeb2 [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})
38
39# link libs
40LINK_DIRECTORIES(${GTK3_LIBRARY_DIRS})
41
42# compiler flags
43ADD_DEFINITIONS(${GTK3_CFLAGS_OTHER})
44
45# warnings
46ADD_DEFINITIONS(
47 -Wall
48 -Wextra
49 -Wno-cpp
50 -Wmissing-noreturn
51 -Wpointer-arith
52 -Wcast-align
53 -Wwrite-strings
54 -Wformat-nonliteral
55 -Wformat-security
56 -Wswitch-enum
57 -Winit-self
58 -Wmissing-include-dirs
59 -Wundef
60 -Wmissing-format-attribute
61 -Wno-reorder
62 -Wunused
63 -Wuninitialized
64 -Woverloaded-virtual
65 -Wsuggest-attribute=const
66 -Wunused-value
67 -Wdouble-promotion
68 -Wnonnull
69 -Wsequence-point
70 -Wunused-but-set-parameter
71 -Wsizeof-pointer-memaccess
72 -Wvarargs
73)
74
75# more warnings
76IF (CMAKE_COMPILER_IS_GNUCC)
77 IF (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9)
78 ADD_DEFINITIONS(
79 -Wconditionally-supported
80 -Wdate-time
81 -Wdelete-incomplete
82 -Wfloat-conversion
83 )
84 ENDIF()
85
86 IF (GCC_VERSION VERSION_GREATER 5.0 OR GCC_VERSION VERSION_EQUAL 5.0)
87 ADD_DEFINITIONS(
88 -Wsuggest-override
89 -Wsuggest-final-types
90 -Wsuggest-final-methods
91 -Wbool-compare
92 -Wformat-signedness
93 -Wlogical-not-parentheses
94 -Wnormalized
95 -Wshift-count-negative
96 -Wshift-count-overflow
97 -Wsized-deallocation
98 -Wsizeof-array-argument
99 )
100 ENDIF()
101
102ENDIF()
103
104# source files to compile
105SET( SRC_FILES
106 src/main.cpp
Stepan Salenikovichd81ef292015-02-17 18:47:37 -0500107 src/ring_client.h
108 src/ring_client.cpp
109 src/ring_client_options.h
110 src/ring_client_options.c
Stepan Salenikovich434b88f2015-02-19 17:49:08 -0500111 src/ringmainwindow.h
112 src/ringmainwindow.cpp
Stepan Salenikovich69771842015-02-24 18:11:45 -0500113 src/incomingcallview.h
114 src/incomingcallview.cpp
Stepan Salenikovicha3557452015-02-20 14:14:12 -0500115 src/models/gtkaccessproxymodel.h
116 src/models/gtkaccessproxymodel.cpp
117 src/models/gtkqtreemodel.h
118 src/models/gtkqtreemodel.cpp
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500119)
120
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -0500121# compile glib resource files to c code
122GLIB_COMPILE_RESOURCES( GLIB_RESOURCES_RING
123 SOURCE
124 pixmaps/pixmaps.gresource.xml
Stepan Salenikovich434b88f2015-02-19 17:49:08 -0500125 ui/ui.gresource.xml
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -0500126)
127
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500128# IF(${ENABLE_TEST} MATCHES true)
129# ADD_SUBDIRECTORY( src/test)
130# ENDIF()
131
132# for translations
133# FIND_PACKAGE ( Gettext REQUIRED )
134# ADD_SUBDIRECTORY( po )
135
Stepan Salenikovicha8df7ea2015-02-18 12:46:36 -0500136ADD_EXECUTABLE(ring-gnome ${GLIB_RESOURCES_RING} ${SRC_FILES})
Stepan Salenikoviche3500cb2015-02-13 15:55:46 -0500137
Stepan Salenikovichd81ef292015-02-17 18:47:37 -0500138TARGET_LINK_LIBRARIES(ring-gnome ${LIB_RING_CLIENT_LIBRARY} ${GTK3_LIBRARIES} Qt5::Core)