blob: 5e2fd13a7f85a32099fafd03adf7001ee3a44234 [file] [log] [blame]
Alexandre Lision10e86dd2015-01-19 16:11:14 -05001CMAKE_MINIMUM_REQUIRED(VERSION 2.8)
2
3IF(POLICY CMP0022)
4 CMAKE_POLICY(SET CMP0022 NEW)
5ENDIF(POLICY CMP0022)
6
Alexandre Lisionb47b4c82015-01-20 11:29:03 -05007SET(PROJ_NAME Ring)
Guillaume Roguez9f319b72015-04-15 15:18:57 -04008SET(RING_VERSION "0.3.0")
Alexandre Lisionbb306132015-03-27 11:30:02 -04009SET(RING_VERSION_NAME "Samuel de Champlain")
Guillaume Rogueza10f7652015-04-14 15:23:23 -040010SET(BUNDLE_VERSION "Samuel de Champlain - beta")
Alexandre Lisionbb306132015-03-27 11:30:02 -040011
12SET(PROJ_COPYRIGHT " © 2015 Savoir-faire Linux \n GPLv3 https://www.gnu.org/copyleft/gpl.html")
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050013
Alexandre Lision5855b6a2015-02-03 11:31:05 -050014ADD_DEFINITIONS("-std=c++11")
15
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050016PROJECT(${PROJ_NAME})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050017
Alexandre Lision10e86dd2015-01-19 16:11:14 -050018FIND_PACKAGE(Qt5Core REQUIRED)
Alexandre Lision3b0bd332015-03-15 18:43:07 -040019FIND_PACKAGE(Qt5MacExtras REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050020FIND_PACKAGE(Qt5Widgets REQUIRED)
21FIND_PACKAGE(LibRingClient REQUIRED)
22
Alexandre Lision10e86dd2015-01-19 16:11:14 -050023INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS})
Alexandre Lision3b0bd332015-03-15 18:43:07 -040024INCLUDE_DIRECTORIES(SYSTEM ${Qt5MacExtras_INCLUDE_DIRS})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050025INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
26INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR})
27INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
28
29MESSAGE("LibRingClient is here:" ${LIB_RING_CLIENT_INCLUDE_DIR})
30SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
31
32#Files to compile
33SET(ringclient_SRCS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040034 src/main.mm
35 src/AppDelegate.mm
36 src/RingWindowController.mm
37 src/ConversationsViewController.mm
38 src/PreferencesViewController.mm
39 src/QNSTreeController.mm
40 src/AccGeneralVC.mm
41 src/AccAudioVC.mm
42 src/AccVideoVC.mm
43 src/AccRingVC.mm
44 src/AccAdvancedVC.mm
45 src/AccSecurityVC.mm
46 src/AccountsVC.mm
47 src/CurrentCallVC.mm
48 src/AudioPrefsVC.mm
49 src/VideoPrefsVC.mm
50 src/GeneralPrefsVC.mm
51 src/RingWizardWC.mm
52 src/HistoryViewController.mm
Alexandre Lision3b0bd332015-03-15 18:43:07 -040053 src/PersonsVC.mm
Alexandre Lision74dd47f2015-04-14 13:47:42 -040054
Alexandre Lision3b0bd332015-03-15 18:43:07 -040055 src/delegates/ImageManipulationDelegate.mm
56
57 src/views/PersonCell.mm
Alexandre Lision74dd47f2015-04-14 13:47:42 -040058 src/views/CallView.mm
59
Alexandre Lision3b0bd332015-03-15 18:43:07 -040060 src/backends/AddressBookBackend.mm
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040061 src/backends/MinimalHistoryBackend.mm)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050062
Alexandre Lisionf241c6a2015-03-24 14:53:47 -040063SET(ringclient_XIBS
64 MainMenu
65 RingWindow
66 CurrentCall
67 GeneralPrefs
68 Accounts
69 AccGeneral
70 AccAudio
71 AccVideo
72 AccRing
73 AccAdvanced
74 AccSecurity
75 AudioPrefs
76 VideoPrefs
77 PreferencesScreen
78 RingWizard)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050079
80SET(ringclient_HDRS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040081 src/AppDelegate.h
82 src/RingWindowController.h
83 src/CurrentCallVC.h
84 src/ConversationsViewController.h
85 src/PreferencesViewController.h
86 src/AccGeneralVC.h
87 src/AccVideoVC.h
88 src/AccAudioVC.h
89 src/AccRingVC.h
90 src/AccAdvancedVC.h
91 src/AccSecurityVC.h
92 src/AudioPrefsVC.h
93 src/AccountsVC.h
94 src/VideoPrefsVC.h
95 src/GeneralPrefsVC.h
96 src/HistoryViewController.h
97 src/RingWizardWC.h
98 src/QNSTreeController.h
Alexandre Lision3b0bd332015-03-15 18:43:07 -040099 src/PersonsVC.h
Alexandre Lision74dd47f2015-04-14 13:47:42 -0400100
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400101 src/delegates/ImageManipulationDelegate.h
102
103 src/views/PersonCell.h
Alexandre Lision74dd47f2015-04-14 13:47:42 -0400104 src/views/CallView.h
105
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400106 src/backends/AddressBookBackend.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400107 src/backends/MinimalHistoryBackend.h)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500108
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500109# Icons
110
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400111# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500112SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
113SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
114 MACOSX_PACKAGE_LOCATION "Resources")
115
Alexandre Lision392ee722015-01-23 16:27:10 -0500116SET(ring_ICONS ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
117${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
118${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
119${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_email.png
120${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_new_email.png
121${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500122${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ancrage.png
123${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
124${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
125${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500126${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400127
Alexandre Lision392ee722015-01-23 16:27:10 -0500128SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500129 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400130SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
131 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500132
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400133# append '.xib' extension before linking xib files in executable
134FOREACH(xib ${ringclient_XIBS})
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400135 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/${xib}.xib)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400136ENDFOREACH()
137
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500138ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500139 ${ringclient_SRCS}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500140 ${ringclient_HDRS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400141 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision392ee722015-01-23 16:27:10 -0500142 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400143 Credits.rtf
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500144 ${ring_ICONS})
145
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500146TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500147 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500148 ${Qt5Core_LIBRARIES}
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400149 ${Qt5MacExtras_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500150 ${Qt5Widgets_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500151)
152
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400153SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
154SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
155SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
156SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
157SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
158
159# These variables are specific to our plist and are NOT standard CMake variables
160set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
161set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500162
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500163SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
164 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
165 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Alexandre Lisionbb306132015-03-27 11:30:02 -0400166 MACOSX_BUNDLE_SHORT_VERSION_STRING ${RING_VERSION_NAME}
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500167 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION} Nightly"
168 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400169 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500170 MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development"
171 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
172 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
173 )
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400174
175# Make sure we can find the 'ibtool' program. If we can NOT find it we
176# skip generation of this project
177FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
178IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
179 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
180 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
181endif()
182
183# Make sure the 'Resources' Directory is correctly created before we build
184ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} PRE_BUILD
185 COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources)
186
187# Compile the .xib files using the 'ibtool' program with the destination being the app package
188FOREACH(xib ${ringclient_XIBS})
189 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
190 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
191 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/${xib}.nib
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400192 ${CMAKE_CURRENT_SOURCE_DIR}/ui/${xib}.xib
193 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/${xib}.xib")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400194
195ENDFOREACH()
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400196
197set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX})
198
199SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app")
200
201#--------------------------------------------------------------------------------
202# Install the QtTest application, on Apple, the bundle is at the root of the
203# install tree
204INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime)
205
206SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins/platforms)
207#--------------------------------------------------------------------------------
208# Install needed Qt plugins by copying directories from the qt installation
209LIST(APPEND QT_PLUGINS Qt5::QTgaPlugin Qt5::QTiffPlugin Qt5::QCocoaIntegrationPlugin)
210FOREACH(plugin ${QT_PLUGINS})
211 GET_TARGET_PROPERTY(_loc ${plugin} LOCATION)
212 INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR} COMPONENT Runtime)
213ENDFOREACH()
214
215# directories to look for dependencies
216SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib ${QT_LIB_DIR})
217
218INSTALL(CODE "
219 file(GLOB_RECURSE QTPLUGINS
220 \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
221 include(BundleUtilities)
222 SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
223 fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
224 " COMPONENT Runtime)
225
226#================================
227# Packaging
228#================================
229SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME})
230SET( CPACK_PACKAGE_NAME ${PROJ_NAME} )
231SET( CPACK_PACKAGE_CONTACT "Alexandre Lision")
232SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux")
233SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION})
234SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION})
235SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION})
236SET(CPACK_BINARY_DRAGNDROP ON)
237SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
238INCLUDE(CPack)