| CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11) |
| |
| # First, check is the compiler is new enough, most version of Clang are fine |
| # until problems arise, checking for GCC is enough |
| IF (CMAKE_COMPILER_IS_GNUCC) |
| EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE GCC_VERSION) |
| IF (GCC_VERSION VERSION_GREATER 4.8 OR GCC_VERSION VERSION_EQUAL 4.8) |
| MESSAGE(STATUS "Found GCC version >= 4.8: " ${GCC_VERSION}) |
| ELSE() |
| MESSAGE(FATAL_ERROR "Your version of GCC is too old, please install GCC 4.8 or later") |
| ENDIF() |
| ENDIF() |
| |
| ADD_DEFINITIONS("-std=c++1y") |
| |
| PROJECT(ring-client-gnome) |
| |
| LIST(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake") |
| |
| # the GResources.cmake module isn't automatically detected |
| INCLUDE(${CMAKE_SOURCE_DIR}/cmake/GResources.cmake) |
| |
| # make sure we're using Qt5 |
| SET(ENABLE_QT5 true) |
| |
| # for now, set debug as default |
| SET(CMAKE_BUILD_TYPE Debug) |
| |
| # find packages |
| FIND_PACKAGE(PkgConfig REQUIRED) |
| PKG_CHECK_MODULES(GTK3 REQUIRED gtk+-3.0>=3.10) |
| FIND_PACKAGE(LibRingClient REQUIRED) |
| FIND_PACKAGE(Qt5Core REQUIRED) |
| PKG_CHECK_MODULES(CLUTTER REQUIRED clutter-1.0) |
| PKG_CHECK_MODULES(CLUTTERGTK REQUIRED clutter-gtk-1.0) |
| |
| # include libs |
| INCLUDE_DIRECTORIES(${GTK3_INCLUDE_DIRS}) |
| INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR}) |
| INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS} ) |
| INCLUDE_DIRECTORIES(${CLUTTER_INCLUDE_DIRS}) |
| INCLUDE_DIRECTORIES(${CLUTTERGTK_INCLUDE_DIRS}) |
| |
| # link libs |
| LINK_DIRECTORIES(${GTK3_LIBRARY_DIRS}) |
| LINK_DIRECTORIES(${LIB_RING_LIBRARY_INCLUDE_DIR}) |
| LINK_DIRECTORIES(${Qt5Core_LIBRARY_DIRS} ) |
| LINK_DIRECTORIES(${CLUTTER_LIBRARY_DIRS}) |
| LINK_DIRECTORIES(${CLUTTERGTK_LIBRARY_DIRS}) |
| |
| # lib compiler flags |
| ADD_DEFINITIONS(${GTK3_CFLAGS}) |
| ADD_DEFINITIONS(${GTK3_CFLAGS_OTHER}) |
| ADD_DEFINITIONS(${LIB_RING_LIBRARY_CFLAGS}) |
| ADD_DEFINITIONS(${Qt5Core_CFLAGS}) |
| ADD_DEFINITIONS(${CLUTTER_CFLAGS}) |
| ADD_DEFINITIONS(${CLUTTERGTK_CFLAGS}) |
| |
| # warnings |
| ADD_DEFINITIONS( |
| -Wall |
| -Wextra |
| -Wno-cpp |
| -Wmissing-noreturn |
| -Wpointer-arith |
| -Wcast-align |
| -Wwrite-strings |
| -Wformat-nonliteral |
| -Wformat-security |
| -Wswitch-enum |
| -Winit-self |
| -Wmissing-include-dirs |
| -Wundef |
| -Wmissing-format-attribute |
| -Wno-reorder |
| -Wunused |
| -Wuninitialized |
| -Woverloaded-virtual |
| -Wsuggest-attribute=const |
| -Wunused-value |
| -Wdouble-promotion |
| -Wnonnull |
| -Wsequence-point |
| -Wunused-but-set-parameter |
| -Wsizeof-pointer-memaccess |
| -Wvarargs |
| ) |
| |
| # more warnings |
| IF (CMAKE_COMPILER_IS_GNUCC) |
| IF (GCC_VERSION VERSION_GREATER 4.9 OR GCC_VERSION VERSION_EQUAL 4.9) |
| ADD_DEFINITIONS( |
| -Wconditionally-supported |
| -Wdate-time |
| -Wdelete-incomplete |
| -Wfloat-conversion |
| ) |
| ENDIF() |
| |
| IF (GCC_VERSION VERSION_GREATER 5.0 OR GCC_VERSION VERSION_EQUAL 5.0) |
| ADD_DEFINITIONS( |
| -Wsuggest-override |
| -Wsuggest-final-types |
| -Wsuggest-final-methods |
| -Wbool-compare |
| -Wformat-signedness |
| -Wlogical-not-parentheses |
| -Wnormalized |
| -Wshift-count-negative |
| -Wshift-count-overflow |
| -Wsized-deallocation |
| -Wsizeof-array-argument |
| ) |
| ENDIF() |
| |
| ENDIF() |
| |
| # source files to compile |
| SET( SRC_FILES |
| src/main.cpp |
| src/ring_client.h |
| src/ring_client.cpp |
| src/ring_client_options.h |
| src/ring_client_options.c |
| src/ringmainwindow.h |
| src/ringmainwindow.cpp |
| src/incomingcallview.h |
| src/incomingcallview.cpp |
| src/currentcallview.h |
| src/currentcallview.cpp |
| src/models/gtkaccessproxymodel.h |
| src/models/gtkaccessproxymodel.cpp |
| src/models/gtkqtreemodel.h |
| src/models/gtkqtreemodel.cpp |
| src/utils/drawing.h |
| src/utils/drawing.c |
| src/video/video_widget.h |
| src/video/video_widget.cpp |
| src/backends/minimalhistorybackend.h |
| src/backends/minimalhistorybackend.cpp |
| src/models/gtkqsortfiltertreemodel.h |
| src/models/gtkqsortfiltertreemodel.cpp |
| ) |
| |
| # compile glib resource files to c code |
| GLIB_COMPILE_RESOURCES( GLIB_RESOURCES_RING |
| SOURCE |
| pixmaps/pixmaps.gresource.xml |
| ui/ui.gresource.xml |
| ) |
| |
| # IF(${ENABLE_TEST} MATCHES true) |
| # ADD_SUBDIRECTORY( src/test) |
| # ENDIF() |
| |
| # for translations |
| # FIND_PACKAGE ( Gettext REQUIRED ) |
| # ADD_SUBDIRECTORY( po ) |
| |
| ADD_EXECUTABLE(ring-gnome ${GLIB_RESOURCES_RING} ${SRC_FILES}) |
| |
| TARGET_LINK_LIBRARIES(ring-gnome |
| ${LIB_RING_CLIENT_LIBRARY} |
| ${GTK3_LIBRARIES} |
| Qt5::Core |
| ${CLUTTER_LIBRARIES} |
| ${CLUTTERGTK_LIBRARIES}) |
| |
| INSTALL(TARGETS ring-gnome |
| RUNTIME DESTINATION bin |
| ) |