Stepan Salenikovich | e3500cb | 2015-02-13 15:55:46 -0500 | [diff] [blame] | 1 | CMAKE_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 |
| 5 | IF (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() |
| 12 | ENDIF() |
| 13 | |
| 14 | ADD_DEFINITIONS("-std=c++1y") |
| 15 | |
| 16 | PROJECT(ring-client-gnome) |
| 17 | |
Stepan Salenikovich | a8df7ea | 2015-02-18 12:46:36 -0500 | [diff] [blame] | 18 | LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") |
| 19 | |
| 20 | # the GResources.cmake module isn't automatically detected |
| 21 | INCLUDE(${CMAKE_SOURCE_DIR}/cmake/GResources.cmake) |
Stepan Salenikovich | e3500cb | 2015-02-13 15:55:46 -0500 | [diff] [blame] | 22 | |
| 23 | # make sure we're using Qt5 |
| 24 | SET(ENABLE_QT5 true) |
| 25 | |
| 26 | # for now, set debug as default |
| 27 | SET(CMAKE_BUILD_TYPE Debug) |
| 28 | |
| 29 | # find packages |
| 30 | FIND_PACKAGE(PkgConfig REQUIRED) |
| 31 | PKG_CHECK_MODULES(GTK3 REQUIRED gtk+-3.0>=3.10) |
| 32 | FIND_PACKAGE(LibRingClient REQUIRED) |
| 33 | FIND_PACKAGE(Qt5Core REQUIRED) |
| 34 | |
| 35 | # include libs |
| 36 | INCLUDE_DIRECTORIES(${GTK3_INCLUDE_DIRS}) |
| 37 | INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR}) |
Stepan Salenikovich | d2dbcee | 2015-02-27 16:52:28 -0500 | [diff] [blame^] | 38 | INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS} ) |
Stepan Salenikovich | e3500cb | 2015-02-13 15:55:46 -0500 | [diff] [blame] | 39 | |
| 40 | # link libs |
| 41 | LINK_DIRECTORIES(${GTK3_LIBRARY_DIRS}) |
| 42 | |
| 43 | # compiler flags |
| 44 | ADD_DEFINITIONS(${GTK3_CFLAGS_OTHER}) |
| 45 | |
| 46 | # warnings |
| 47 | ADD_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 |
| 77 | IF (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 | |
| 103 | ENDIF() |
| 104 | |
| 105 | # source files to compile |
| 106 | SET( SRC_FILES |
| 107 | src/main.cpp |
Stepan Salenikovich | d81ef29 | 2015-02-17 18:47:37 -0500 | [diff] [blame] | 108 | src/ring_client.h |
| 109 | src/ring_client.cpp |
| 110 | src/ring_client_options.h |
| 111 | src/ring_client_options.c |
Stepan Salenikovich | 434b88f | 2015-02-19 17:49:08 -0500 | [diff] [blame] | 112 | src/ringmainwindow.h |
| 113 | src/ringmainwindow.cpp |
Stepan Salenikovich | 6977184 | 2015-02-24 18:11:45 -0500 | [diff] [blame] | 114 | src/incomingcallview.h |
| 115 | src/incomingcallview.cpp |
Stepan Salenikovich | a355745 | 2015-02-20 14:14:12 -0500 | [diff] [blame] | 116 | src/models/gtkaccessproxymodel.h |
| 117 | src/models/gtkaccessproxymodel.cpp |
| 118 | src/models/gtkqtreemodel.h |
| 119 | src/models/gtkqtreemodel.cpp |
Stepan Salenikovich | 297b5d1 | 2015-02-26 17:51:13 -0500 | [diff] [blame] | 120 | src/utils/drawing.h |
| 121 | src/utils/drawing.c |
Stepan Salenikovich | e3500cb | 2015-02-13 15:55:46 -0500 | [diff] [blame] | 122 | ) |
| 123 | |
Stepan Salenikovich | a8df7ea | 2015-02-18 12:46:36 -0500 | [diff] [blame] | 124 | # compile glib resource files to c code |
| 125 | GLIB_COMPILE_RESOURCES( GLIB_RESOURCES_RING |
| 126 | SOURCE |
| 127 | pixmaps/pixmaps.gresource.xml |
Stepan Salenikovich | 434b88f | 2015-02-19 17:49:08 -0500 | [diff] [blame] | 128 | ui/ui.gresource.xml |
Stepan Salenikovich | a8df7ea | 2015-02-18 12:46:36 -0500 | [diff] [blame] | 129 | ) |
| 130 | |
Stepan Salenikovich | e3500cb | 2015-02-13 15:55:46 -0500 | [diff] [blame] | 131 | # 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 Salenikovich | a8df7ea | 2015-02-18 12:46:36 -0500 | [diff] [blame] | 139 | ADD_EXECUTABLE(ring-gnome ${GLIB_RESOURCES_RING} ${SRC_FILES}) |
Stepan Salenikovich | e3500cb | 2015-02-13 15:55:46 -0500 | [diff] [blame] | 140 | |
Stepan Salenikovich | d81ef29 | 2015-02-17 18:47:37 -0500 | [diff] [blame] | 141 | TARGET_LINK_LIBRARIES(ring-gnome ${LIB_RING_CLIENT_LIBRARY} ${GTK3_LIBRARIES} Qt5::Core) |