diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 9d219e93..6964da84 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -1,469 +1,475 @@
IF(POLICY CMP0017)
CMAKE_POLICY(SET CMP0017 NEW)
ENDIF(POLICY CMP0017)
IF(POLICY CMP0022)
CMAKE_POLICY(SET CMP0022 NEW)
ENDIF(POLICY CMP0022)
IF(POLICY CMP0063)
CMAKE_POLICY(SET CMP0063 NEW)
ENDIF(POLICY CMP0063)
# set(CMAKE_AUTOMOC ON)
SET(KF5_DEP_VERSION "5.6.0")
SET(QT_MIN_VERSION "5.2.0")
FIND_PACKAGE ( KF5 REQUIRED )
FIND_PACKAGE (ECM 1.1.0 REQUIRED NO_MODULE)
ADD_DEFINITIONS(
${KF5_DEFINITIONS}
${QT_DEFINITIONS}
-fexceptions
-Wno-error
-Wno-reorder
-Wno-error=deprecated-declarations
)
# It doesn't work in sandboxes
IF (NOT ENABLE_SINGLE_INSTANCE)
ADD_DEFINITIONS(-DDISABLE_KDBUS_SERVICE=1)
ENDIF()
# Enable some useful warnings
ADD_DEFINITIONS(
-Wall
-Wextra
-Wmissing-declarations
-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
-Wunused-value
-pedantic
-Wnonnull
-Wsequence-point
#-Wsystem-headers
-Wsizeof-pointer-memaccess
#-Wuseless-cast
-Wvarargs
)
#Add more warnings for compilers that support it. I used this command:
#curl https://gcc.gnu.org/onlinedocs/gcc-4.9.2/gcc/Warning-Options.html | \
#grep -E "^[\t ]+
-W[a-zA-Z=-]*" -o | grep -E "\-W[a-zA-Z=-]*" -o >
#cat /tmp/48 /tmp/49 | sort | uniq -u
# IF (CMAKE_COMPILER_IS_GNUCC)
IF (CMAKE_COMPILER_IS_GNUCC)
IF (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.9)
ADD_DEFINITIONS(
-Wunused-but-set-parameter
-Wconditionally-supported
-Wno-cpp
# -Wdouble-promotion
-Wdate-time
-Wdelete-incomplete
# -Wfloat-conversion
)
ENDIF()
IF (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 5.0 OR CMAKE_CXX_COMPILER_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()
IF (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 6.0 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 6.0)
ADD_DEFINITIONS(
-Wnull-dereference
-Wtautological-compare
-Wduplicated-cond
-Wmisleading-indentation
)
ENDIF()
IF (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 7.0 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 7.0)
ADD_DEFINITIONS(
-Wimplicit-fallthrough
-Wduplicated-branches
-Wswitch-unreachable
-Wformat-overflow
-Wformat-truncation
-Wnonnull
)
ENDIF()
IF (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 8.0 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 8.0)
ADD_DEFINITIONS(
-Wmultistatement-macros
-Wstringop-truncation
-Wif-not-aligned
-Wmissing-attributes
)
ENDIF()
ENDIF()
IF (CMAKE_COMPILER_IS_GNUCC)
EXECUTE_PROCESS(COMMAND ${CMAKE_C_COMPILER} -dumpversion OUTPUT_VARIABLE CMAKE_CXX_COMPILER_VERSION)
IF (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.6.9 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.6)
#GCC 4.6 version of those warnings does detect valid C++0x/C++11 as invalid.
ADD_DEFINITIONS(
-Wno-error=pragmas
-Wno-pragmas
-Wno-error
)
ENDIF()
IF (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.7 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.7)
ADD_DEFINITIONS(
-Wmaybe-uninitialized
-Wunused-local-typedefs
-pedantic
)
ENDIF()
IF (CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.8 OR CMAKE_CXX_COMPILER_VERSION VERSION_EQUAL 4.8)
# ADD_DEFINITIONS("-Wzero-as-null-pointer-constant")
# ADD_DEFINITIONS( -DENABLE_IGNORE_NULL=true )
ENDIF()
ELSE()
ADD_DEFINITIONS(-Wno-unknown-pragmas -Wno-unknown-warning-option)
ENDIF()
ADD_DEFINITIONS("-std=c++0x")
#Make sure it can access DBUS autogenerated files
INCLUDE_DIRECTORIES(SYSTEM
${KF5_INCLUDES}
${Qt5Widgets_INCLUDES}
${Qt5PrintSupport_INCLUDES}
${Qt5Core_INCLUDES}
${CMAKE_BINARY_DIR}
${ringqt_INCLUDE_DIR}
${LIB_TIP_INCLUDE}
${LIB_CONFIG_INCLUDE}
${LIB_CONFIG_WIDGETS}
)
# Shared C++ QML components
ADD_SUBDIRECTORY( qmlwidgets )
# Pack the icons shared by various components
ADD_SUBDIRECTORY( sharedassets )
#Build KDE specific files
ADD_SUBDIRECTORY( klib )
# Build the QML based first run Wizard
ADD_SUBDIRECTORY( wizard )
# Build the QML based interactive video canvas
ADD_SUBDIRECTORY( callview )
# Build the advanced phone dialer
ADD_SUBDIRECTORY( dialview )
# Build the views and widgets related to the social timeline feature
ADD_SUBDIRECTORY( timeline )
# Build the contact and profile photo editor dialog
ADD_SUBDIRECTORY( photoselector )
# Build the elements used to notify the users of events
ADD_SUBDIRECTORY( canvasindicators )
# Build the contact manager subsystem
ADD_SUBDIRECTORY( contactview )
# Build the account manager subsystem
ADD_SUBDIRECTORY( accountview )
# Build the main desktop component
ADD_SUBDIRECTORY( desktopview )
IF(${CMAKE_BUILD_TYPE} MATCHES Release)
MESSAGE("NO DEBUG OUTPUT")
ADD_DEFINITIONS( -DQT_NO_DEBUG_OUTPUT)
ELSE()
# ADD_DEFINITIONS(-Werror)
ENDIF(${CMAKE_BUILD_TYPE} MATCHES Release)
# SET ( KF5_KABC_LIBS -lkabc )
# Delegates
SET(
ring_kde_DELEGATES
# delegates/conferencedelegate.cpp
# delegates/contactdelegate.cpp
# delegates/historydelegate.cpp
# delegates/phonenumberdelegate.cpp
# delegates/delegatedropoverlay.cpp
# delegates/dialpaddelegate.cpp
delegates/autocompletiondelegate.cpp
delegates/autocompletiondelegate2.cpp
delegates/toolbardelegate.cpp
delegates/accountinfodelegate.cpp
delegates/kdepixmapmanipulation.cpp
delegates/categorizeddelegate.cpp
delegates/righticondelegate.cpp
proxies/simplerotateproxy.cpp
proxies/deduplicateproxy.cpp
proxies/filtertoplevelproxy.cpp
proxies/roletransformationproxy.cpp
proxies/flagsfilterproxy.cpp
proxies/pollingproxy.cpp
#proxies/valuefilterproxy.cpp
)
# Configuration pages
SET(
ring_kde_CONF
conf/accountserializationadapter.cpp
conf/configurationdialog.cpp
conf/dlggeneral.cpp
conf/dlgdisplay.cpp
conf/dlgaudio.cpp
conf/dlgaddressbook.cpp
conf/dlgaccessibility.cpp
conf/dlgpresence.cpp
conf/dlgaccount.cpp
configurator/localhistoryconfigurator.cpp
configurator/peerprofileconfigurator.cpp
configurator/bookmarkconfigurator.cpp
configurator/audiorecordingconfigurator.cpp
configurator/fallbackpersonconfigurator.cpp
)
# Account pages
SET(
ring_kde_ACCOUNT
conf/accountpages/advanced.cpp
conf/accountpages/credentials.cpp
conf/accountpages/basic.cpp
conf/accountpages/network.cpp
conf/accountpages/codecs.cpp
conf/accountpages/ringtone.cpp
conf/accountpages/security.cpp
conf/accountpages/pagebase.cpp
conf/accountpages/account.cpp
conf/accountpages/devices.cpp
conf/accountpages/dlgprofiles.cpp
)
# Widgets
SET(
ring_kde_WIDGETS
widgets/systray.cpp
widgets/categorizedtreeview.cpp
widgets/fileselector.cpp
widgets/filterlineedit.cpp
widgets/kphonenumberselector.cpp
widgets/directoryview.cpp
widgets/menumodelview.cpp
widgets/accountstatusviewer.cpp
widgets/autocombobox.cpp
widgets/categorizedtree.cpp
widgets/certificateviewer.cpp
widgets/contextlistview.cpp
widgets/groupedtoolbutton.cpp
widgets/securityprogress.cpp
)
# Video Widgets
IF(NOT (${ENABLE_VIDEO} MATCHES false))
SET(
ring_kde_VIDEO
conf/dlgvideo.cpp
)
ENDIF(NOT (${ENABLE_VIDEO} MATCHES false))
SET(
ring_kde_SRCS
main.cpp
cmd.cpp
notification.cpp
ringapplication.cpp
errormessage.cpp
# canvasobjectmanager.cpp
# eventmanager.cpp
actioncollection.cpp
implementation.cpp
model/extendedprotocolmodel.cpp
${ring_kde_DELEGATES}
${ring_kde_CONF}
${ring_kde_WIDGETS}
${ring_kde_ACCOUNT}
${ring_kde_VIDEO}
)
IF (Qt5TextToSpeech_FOUND)
SET(
ring_kde_SRCS
${ring_kde_SRCS}
accessibility.cpp
)
ENDIF()
# generate rules for building source files from the resources
SET(QtApp_RCCS
qrc/resources.qrc
conf/confresources.qrc
../data/appicon.qrc
)
QT5_ADD_RESOURCES(QtApp_RCC_SRCS ${QtApp_RCCS})
# kde4_automoc(${ring_kde_SRCS})
SET(
config_ui_files
conf/dlggeneralbase.ui
conf/dlgdisplaybase.ui
conf/dlgaudiobase.ui
conf/dlgaddressbookbase.ui
conf/dlgaccessibility.ui
conf/dlgaudiorecording.ui
conf/dlgpresence.ui
conf/dlgfallbackperson.ui
conf/accountdlg.ui
conf/accountpages/advanced.ui
conf/accountpages/credentials.ui
conf/accountpages/basic.ui
conf/accountpages/network.ui
conf/accountpages/codecs.ui
conf/accountpages/ringtone.ui
conf/accountpages/security.ui
conf/accountpages/tabs.ui
widgets/ui/directoryview.ui
widgets/ui/accountcreator.ui
widgets/ui/fileselect.ui
configurator/peerprofile.ui
configurator/bookmark.ui
configurator/recording.ui
)
# add_subdirectory( test ) #Enable again some day, it cause compile problems for some users
IF(NOT (${ENABLE_VIDEO} MATCHES false))
SET(ENABLE_VIDEO 1 CACHE BOOLEAN "Enable video")
ADD_DEFINITIONS( -DENABLE_VIDEO=true )
SET (
config_ui_files
${config_ui_files}
conf/dlgvideobase.ui
)
ENDIF(NOT (${ENABLE_VIDEO} MATCHES false))
IF(${DISABLE_UNIQUE_APPLICATION} MATCHES true)
MESSAGE("KUniqueApplication disabled")
SET(DISABLE_UNIQUE_APPLICATION 1 CACHE BOOLEAN "Disable KUniqueApplication")
ADD_DEFINITIONS( -DDISABLE_UNIQUE_APPLICATION=true )
ENDIF(${DISABLE_UNIQUE_APPLICATION} MATCHES true)
ki18n_wrap_ui(ring_kde_SRCS ${config_ui_files} )
IF(${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
ADD_EXECUTABLE(ring-kde MACOSX_BUNDLE ${ring_kde_SRCS} ${QtApp_RCC_SRCS})
set_source_files_properties( ../data/ring-kdeui.rc PROPERTIES MACOSX_PACKAGE_LOCATION Resources )
file( COPY ../data/ring-kdeui.rc DESTINATION "ring-kde.app/Contents/Resources/" )
ELSE()
ADD_EXECUTABLE(ring-kde ${ring_kde_SRCS} ${QtApp_RCC_SRCS})
ENDIF()
IF(NOT ${ENABLE_STATIC} MATCHES false)
FIND_PACKAGE(Qt5 ${QT_MIN_VERSION} CONFIG REQUIRED DBus)
INCLUDE_DIRECTORIES(SYSTEM ${Qt5DBus_INCLUDE_DIRS} )
LINK_DIRECTORIES(${Qt5DBus_LIBRARY_DIRS} )
ADD_DEFINITIONS(${Qt5DBus_CFLAGS})
+
+ IF(NOT DEFINED OS_ANDROID)
+ TARGET_LINK_LIBRARIES(ring-kde
+ -lpthread
+ )
+ ENDIF()
+
TARGET_LINK_LIBRARIES(ring-kde
${ringqt_LIBRARY_STATIC}
- -lpthread
)
IF(NOT ${ENABLE_LIBWRAP})
TARGET_LINK_LIBRARIES(ring-kde
${Qt5DBus_LIBRARIES}
)
ENDIF()
ELSE()
TARGET_LINK_LIBRARIES(ring-kde ${ringqt_LIBRARY_DYNAMIC})
ENDIF()
QT5_ADD_DBUS_ADAPTOR(ring_kde_SRCS ../data/org.kde.kuiserver.xml cmd.h Cmd )
TARGET_LINK_LIBRARIES(ring-kde
libkring
libwizard
libcallview
dialview
libtimeline
libphotoselector
libcanvasindicator
desktopview
contactview
accountview
libqmlwidgets
kquickitemviews
# RingQt
ringqtquick
# Qt5
Qt5::Widgets
Qt5::Core
Qt5::Gui
Qt5::Svg
Qt5::PrintSupport
# KF5
KF5::I18n
KF5::WidgetsAddons
KF5::ConfigCore
KF5::ConfigGui
KF5::DBusAddons
KF5::XmlGui
KF5::Notifications
KF5::IconThemes
KF5::Crash
KF5::NotifyConfig
KF5::GlobalAccel
KF5::Declarative
KF5::Kirigami2
)
IF (Qt5TextToSpeech_FOUND)
TARGET_LINK_LIBRARIES(ring-kde
Qt5::TextToSpeech
)
ENDIF()
########### install files ###############
INSTALL( TARGETS ring-kde DESTINATION ${BIN_INSTALL_DIR} )
INSTALL( FILES wizard/assets/beta_logo.svg DESTINATION ${DATA_INSTALL_DIR}/ring-kde )