blob: 428940a36bbdfc91ee8c4ce4ee448410de7e19bd [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 Rogueze3fe5392015-05-01 15:29:58 -04008SET(RING_VERSION "0.4.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 Lision81c97212015-06-17 15:51:53 -040014ADD_DEFINITIONS("-std=c++11 -fobjc-arc")
Alexandre Lision5855b6a2015-02-03 11:31:05 -050015
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
Alexandre Lision4ba18022015-04-23 12:17:40 -040033SET(ringclient_CONTROLLERS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040034 src/QNSTreeController.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040035 src/QNSTreeController.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040036 src/CurrentCallVC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040037 src/CurrentCallVC.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040038 src/GeneralPrefsVC.mm
39 src/RingWizardWC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040040 src/RingWizardWC.h
41 src/RingWindowController.mm
42 src/RingWindowController.h
43 src/ConversationsVC.mm
44 src/ConversationsVC.h
45 src/PreferencesVC.mm
46 src/PreferencesVC.h
47 src/AccGeneralVC.mm
48 src/AccGeneralVC.h
49 src/AccVideoVC.mm
50 src/AccVideoVC.h
51 src/AccAudioVC.mm
52 src/AccAudioVC.h
53 src/AccRingVC.mm
54 src/AccRingVC.h
55 src/AccAdvancedVC.mm
56 src/AccAdvancedVC.h
57 src/AccSecurityVC.mm
58 src/AccSecurityVC.h
Alexandre Lision4de68ce2015-04-24 18:22:49 -040059 src/CertificateWC.mm
60 src/CertificateWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -040061 src/AudioPrefsVC.mm
62 src/AudioPrefsVC.h
63 src/AccountsVC.mm
64 src/AccountsVC.h
65 src/VideoPrefsVC.mm
66 src/VideoPrefsVC.h
67 src/GeneralPrefsVC.h
68 src/HistoryVC.mm
69 src/HistoryVC.h
Alexandre Lision3b0bd332015-03-15 18:43:07 -040070 src/PersonsVC.mm
Alexandre Lision58cab672015-06-09 15:25:40 -040071 src/PersonsVC.h
72 src/ChatVC.mm
73 src/ChatVC.h)
Alexandre Lision74dd47f2015-04-14 13:47:42 -040074
Alexandre Lision4ba18022015-04-23 12:17:40 -040075SET(ringclient_BACKENDS
Alexandre Lision3b0bd332015-03-15 18:43:07 -040076 src/backends/AddressBookBackend.mm
Alexandre Lision66643432015-06-04 11:59:36 -040077 src/backends/AddressBookBackend.h)
Alexandre Lision4ba18022015-04-23 12:17:40 -040078
79SET(ringclient_VIEWS
80 src/views/CallView.mm
81 src/views/CallView.h
82 src/views/PersonCell.mm
83 src/views/PersonCell.h)
84
85SET(ringclient_OTHERS
86 src/main.mm
87 src/AppDelegate.mm
88 src/AppDelegate.h
89 src/delegates/ImageManipulationDelegate.mm
90 src/delegates/ImageManipulationDelegate.h)
91
Alexandre Lision10e86dd2015-01-19 16:11:14 -050092
Alexandre Lisionf241c6a2015-03-24 14:53:47 -040093SET(ringclient_XIBS
94 MainMenu
95 RingWindow
96 CurrentCall
97 GeneralPrefs
98 Accounts
99 AccGeneral
100 AccAudio
101 AccVideo
102 AccRing
103 AccAdvanced
104 AccSecurity
105 AudioPrefs
106 VideoPrefs
107 PreferencesScreen
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400108 RingWizard
109 CertificateWindow)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500110
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500111# Icons
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400112# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500113SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
114SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
115 MACOSX_PACKAGE_LOCATION "Resources")
116
Alexandre Lision392ee722015-01-23 16:27:10 -0500117SET(ring_ICONS ${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
118${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
119${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
Alexandre Lisiond18fa272015-06-15 11:18:03 -0400120${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hangup.png
121${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hold.png
122${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_holdoff.png
123${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_video.png
124${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_audio.png
125${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_chat.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500126${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500127${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ancrage.png
128${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
129${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
130${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500131${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400132
Alexandre Lision392ee722015-01-23 16:27:10 -0500133SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500134 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400135SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
136 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500137
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400138# append '.xib' extension before linking xib files in executable
139FOREACH(xib ${ringclient_XIBS})
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400140 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/${xib}.xib)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400141ENDFOREACH()
142
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500143ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE
Alexandre Lision4ba18022015-04-23 12:17:40 -0400144 ${ringclient_CONTROLLERS}
145 ${ringclient_BACKENDS}
146 ${ringclient_VIEWS}
147 ${ringclient_OTHERS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400148 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision392ee722015-01-23 16:27:10 -0500149 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400150 Credits.rtf
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500151 ${ring_ICONS})
152
Alexandre Lision4ba18022015-04-23 12:17:40 -0400153# Follow Xcode hierarchy principles
154SOURCE_GROUP("Controllers" FILES ${ringclient_CONTROLLERS})
155SOURCE_GROUP("Backends" FILES ${ringclient_BACKENDS})
156SOURCE_GROUP("CustomViews" FILES ${ringclient_VIEWS})
157SOURCE_GROUP("Classes" FILES ${ringclient_OTHERS})
158SOURCE_GROUP("Resources\\Interface Builder" FILES ${ringclient_XIBS_FOR_EXECUTABLE})
159
160
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500161TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500162 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500163 ${Qt5Core_LIBRARIES}
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400164 ${Qt5MacExtras_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500165 ${Qt5Widgets_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500166)
167
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400168SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
169SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
170SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
171SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
172SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
173
174# These variables are specific to our plist and are NOT standard CMake variables
175set(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
176set(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500177
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500178SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
179 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
180 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Alexandre Lisionbb306132015-03-27 11:30:02 -0400181 MACOSX_BUNDLE_SHORT_VERSION_STRING ${RING_VERSION_NAME}
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500182 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION} Nightly"
183 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400184 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500185 MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development"
186 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
187 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
188 )
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400189
190# Make sure we can find the 'ibtool' program. If we can NOT find it we
191# skip generation of this project
192FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
193IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
194 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
195 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
196endif()
197
198# Make sure the 'Resources' Directory is correctly created before we build
199ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} PRE_BUILD
200 COMMAND mkdir -p ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources)
201
202# Compile the .xib files using the 'ibtool' program with the destination being the app package
203FOREACH(xib ${ringclient_XIBS})
204 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
205 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
206 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/${xib}.nib
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400207 ${CMAKE_CURRENT_SOURCE_DIR}/ui/${xib}.xib
208 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/${xib}.xib")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400209
210ENDFOREACH()
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400211
212set(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX})
213
214SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app")
215
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400216INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime)
217
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400218SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400219#--------------------------------------------------------------------------------
220# Install needed Qt plugins by copying directories from the qt installation
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400221
222
223#MESSAGE("GUI====")
224#foreach(plugin ${Qt5Gui_PLUGINS})
225# message("Plugin ${plugin} is at location ${_loc}")
226#endforeach()
227
228LIST(APPEND QT_PLUGINS_IMAGEFORMAT Qt5::QTgaPlugin
229 Qt5::QGifPlugin
230 Qt5::QICNSPlugin
231 Qt5::QICOPlugin
232 Qt5::QJpegPlugin
233 Qt5::QJp2Plugin
234 Qt5::QMngPlugin
235 Qt5::QTiffPlugin
236 Qt5::QDDSPlugin)
237
238# we need two plugin directories platform and imageformats
239GET_TARGET_PROPERTY(_loc Qt5::QCocoaIntegrationPlugin LOCATION)
240INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/platforms COMPONENT Runtime)
241LIST(APPEND QT_PLUGINS Qt5::QCocoaIntegrationPlugin)
242
243FOREACH(plugin ${QT_PLUGINS_IMAGEFORMAT})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400244 GET_TARGET_PROPERTY(_loc ${plugin} LOCATION)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400245 INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/imageformats COMPONENT Runtime)
246 LIST(APPEND QT_PLUGINS ${plugin})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400247ENDFOREACH()
248
249# directories to look for dependencies
250SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib ${QT_LIB_DIR})
251
252INSTALL(CODE "
253 file(GLOB_RECURSE QTPLUGINS
254 \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
255 include(BundleUtilities)
256 SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
257 fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
258 " COMPONENT Runtime)
259
260#================================
261# Packaging
262#================================
263SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME})
264SET( CPACK_PACKAGE_NAME ${PROJ_NAME} )
265SET( CPACK_PACKAGE_CONTACT "Alexandre Lision")
266SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux")
267SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION})
268SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION})
269SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION})
270SET(CPACK_BINARY_DRAGNDROP ON)
271SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
272INCLUDE(CPack)