blob: 125edaf6d1d77a8614d55016df0c6fd1391ca7b2 [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)
Alexandre Lision3d4143a2015-06-10 14:27:49 -04008
9# To build nighlies we need to update RING_VERSION with an optional command line arg
10IF("${RING_VERSION}" STREQUAL "")
Guillaume Roguez812d5502016-03-16 22:46:29 -040011 SET(RING_VERSION "1.0.0")
Alexandre Lision3d4143a2015-06-10 14:27:49 -040012ENDIF("${RING_VERSION}" STREQUAL "")
13
Guillaume Roguez86ba1dd2017-07-19 17:18:17 -040014SET(RING_VERSION_NAME "Liberté, Égalité, Fraternité - Version 1.0")
Alexandre Lisionbb306132015-03-27 11:30:02 -040015
Alexandre Lision71b41512016-05-02 13:53:44 -040016MESSAGE("Building Ring version - " ${RING_VERSION_NAME} " " ${RING_VERSION})
Anthony Léonarde8957f82017-07-18 10:08:31 -040017SET(PROJ_COPYRIGHT " © 2015-2017 Savoir-faire Linux \n GPLv3 https://www.gnu.org/copyleft/gpl.html")
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050018
Anthony Léonarda6e552a2017-12-19 13:52:18 -050019ADD_DEFINITIONS("-std=c++14 -stdlib=libc++ -fobjc-arc")
Alexandre Lision5855b6a2015-02-03 11:31:05 -050020
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050021PROJECT(${PROJ_NAME})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050022
Alexandre Lision10e86dd2015-01-19 16:11:14 -050023FIND_PACKAGE(Qt5Core REQUIRED)
Alexandre Lision3b0bd332015-03-15 18:43:07 -040024FIND_PACKAGE(Qt5MacExtras REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050025FIND_PACKAGE(Qt5Widgets REQUIRED)
Anthony Léonard786d4182017-11-08 14:26:31 -050026FIND_PACKAGE(Qt5Sql REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050027FIND_PACKAGE(LibRingClient REQUIRED)
Anthony Léonard14e7bf32017-06-08 08:13:16 -040028FIND_PACKAGE(OpenGL REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050029
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -040030EXECUTE_PROCESS(COMMAND git submodule update --init
31 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
32
33INCLUDE(ExternalProject)
34ExternalProject_Add(libqrencode
35 GIT_SUBMODULES libqrencode
36 SOURCE_DIR ${CMAKE_SOURCE_DIR}/libqrencode
37 BINARY_DIR ${CMAKE_SOURCE_DIR}/libqrencode
38 INSTALL_DIR ${CMAKE_SOURCE_DIR}/libqrencode
39 CONFIGURE_COMMAND
40 #hack to fix incomplete config.h on first run
41 COMMAND ./autogen.sh
42 COMMAND ./autogen.sh && ./configure --prefix=${CMAKE_SOURCE_DIR}/libqrencode
43 BUILD_COMMAND make
44 INSTALL_COMMAND make install)
45
46INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/libqrencode/include)
47LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/libqrencode/lib)
48
Alexandre Lision3d4143a2015-06-10 14:27:49 -040049IF(NOT (${ENABLE_SPARKLE} MATCHES false))
50 MESSAGE("Sparkle auto-update enabled")
51
52 # find_library searches in /Library/Frameworks by default
53 # We add an hint to our custom location
54
55 FIND_LIBRARY(SPARKLE_FRAMEWORK
56 NAMES Sparkle
57 HINTS ${CMAKE_CURRENT_SOURCE_DIR}/sparkle)
58 IF(EXISTS ${SPARKLE_FRAMEWORK})
59 SET(ENABLE_SPARKLE 1 CACHE BOOLEAN "Enable Sparkle")
60 ADD_DEFINITIONS(-DENABLE_SPARKLE=1)
61 MESSAGE("Sparkle is here:" ${SPARKLE_FRAMEWORK})
62 FIND_PATH(SPARKLE_INCLUDE_DIR Sparkle.h HINTS ${SPARKLE_FRAMEWORK}/Headers)
Alexandre Lision3d4143a2015-06-10 14:27:49 -040063 # we need to copy the public key to check the updates
64 SET(PUBLIC_KEY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/sparkle/dsa_pub.pem")
65 IF(EXISTS ${PUBLIC_KEY_PATH})
66 MESSAGE(STATUS "Looking for Public Key - found")
67 SET_SOURCE_FILES_PROPERTIES(${PUBLIC_KEY_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
68 SET(PUBLIC_KEY ${PUBLIC_KEY_PATH})
69 ELSE(EXISTS ${PUBLIC_KEY_PATH})
70 MESSAGE(WARNING "Looking for Public Key - not found")
71 MESSAGE(WARNING "${PUBLIC_KEY_PATH} not found Sparkle Framework will NOT work and may even prevent application from launching. Please consider disabling Sparkle Framework, creating a keypair for testing purposes")
72 ENDIF(EXISTS ${PUBLIC_KEY_PATH})
73 ELSE()
Alexandre Lisionfba8f792016-03-08 13:45:51 -050074 MESSAGE(WARNING "Sparkle framework not found, disabling it... to build it see README")
75 SET(ENABLE_SPARKLE 0 CACHE BOOLEAN "Enable Sparkle")
Alexandre Lision3d4143a2015-06-10 14:27:49 -040076 ENDIF(EXISTS ${SPARKLE_FRAMEWORK})
77ENDIF(NOT (${ENABLE_SPARKLE} MATCHES false))
78
Alexandre Lision10e86dd2015-01-19 16:11:14 -050079INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS})
Alexandre Lision3b0bd332015-03-15 18:43:07 -040080INCLUDE_DIRECTORIES(SYSTEM ${Qt5MacExtras_INCLUDE_DIRS})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050081INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
82INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR})
83INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
Anthony Léonard14e7bf32017-06-08 08:13:16 -040084INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050085
Alexandre Lision04946de2016-03-08 09:31:38 -050086SET(CMAKE_MACOSX_RPATH ON)
87SET(CMAKE_SKIP_BUILD_RPATH FALSE)
88SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
89SET(CMAKE_INSTALL_RPATH "${CMAKE_CURRENT_SOURCE_DIR}")
90SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
91
Alexandre Lision3d4143a2015-06-10 14:27:49 -040092MESSAGE("LRC is here:" ${LIB_RING_CLIENT_INCLUDE_DIR})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050093SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
94
95#Files to compile
Alexandre Lision4ba18022015-04-23 12:17:40 -040096SET(ringclient_CONTROLLERS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040097 src/QNSTreeController.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040098 src/QNSTreeController.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040099 src/CurrentCallVC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -0400100 src/CurrentCallVC.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400101 src/GeneralPrefsVC.mm
102 src/RingWizardWC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -0400103 src/RingWizardWC.h
104 src/RingWindowController.mm
105 src/RingWindowController.h
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400106 src/PreferencesWC.mm
107 src/PreferencesWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400108 src/AccGeneralVC.mm
109 src/AccGeneralVC.h
Alexandre Lisione4d61cb2016-02-10 09:26:24 -0500110 src/AccMediaVC.mm
111 src/AccMediaVC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400112 src/AccRingVC.mm
113 src/AccRingVC.h
114 src/AccAdvancedVC.mm
115 src/AccAdvancedVC.h
116 src/AccSecurityVC.mm
117 src/AccSecurityVC.h
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400118 src/CertificateWC.mm
119 src/CertificateWC.h
Alexandre Lision886cde12016-10-25 17:39:49 -0400120 src/BackupAccountWC.mm
121 src/BackupAccountWC.h
122 src/RestoreAccountWC.mm
123 src/RestoreAccountWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400124 src/AudioPrefsVC.mm
125 src/AudioPrefsVC.h
126 src/AccountsVC.mm
127 src/AccountsVC.h
128 src/VideoPrefsVC.mm
129 src/VideoPrefsVC.h
130 src/GeneralPrefsVC.h
131 src/HistoryVC.mm
132 src/HistoryVC.h
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400133 src/PersonsVC.mm
Alexandre Lision58cab672015-06-09 15:25:40 -0400134 src/PersonsVC.h
135 src/ChatVC.mm
Alexandre Lision2db8f472015-07-22 15:05:46 -0400136 src/ChatVC.h
137 src/PersonLinkerVC.mm
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400138 src/PersonLinkerVC.h
139 src/SmartViewVC.mm
Alexandre Lision883719f2015-10-22 17:37:45 -0400140 src/SmartViewVC.h
141 src/BrokerVC.mm
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500142 src/BrokerVC.h
143 src/ConversationVC.mm
Loïc Siret31d5cc02016-09-08 14:38:24 -0400144 src/ConversationVC.h
145 src/LoadingWCDelegate.h
146 src/AbstractLoadingWC.h
147 src/AbstractLoadingWC.mm
Alexandre Lision45f1f542016-08-25 15:16:17 -0400148 src/AccDevicesVC.mm
149 src/AccDevicesVC.h
150 src/ExportPasswordWC.mm
151 src/ExportPasswordWC.h
Alexandre Lision624b1a82016-09-11 19:29:01 -0400152 src/MigrateRingAccountsWC.mm
153 src/MigrateRingAccountsWC.h
Loïc Siretfcb4ca62016-09-21 17:12:09 -0400154 src/RingWizardChooseVC.h
155 src/RingWizardChooseVC.mm
156 src/RingWizardLinkAccountVC.h
157 src/RingWizardLinkAccountVC.mm
158 src/RingWizardNewAccountVC.mm
159 src/RingWizardNewAccountVC.h
Alexandre Lision62005312016-01-28 15:55:16 -0500160 src/DialpadWC.mm
161 src/DialpadWC.h
Alexandre Lision34079c22016-10-31 16:14:02 -0400162 src/RegisterNameWC.mm
163 src/RegisterNameWC.h
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400164 src/ChooseAccountVC.h
165 src/ChooseAccountVC.mm
Kateryna Kostiukdb1f3a12017-04-24 12:08:28 -0400166 src/ContactRequestsListVC.h
167 src/ContactRequestsListVC.mm
168 src/ContactRequestVC.h
169 src/ContactRequestVC.mm
Kateryna Kostiuk77e93902017-05-30 16:38:11 -0400170 src/AccBannedContactsVC.h
171 src/AccBannedContactsVC.mm
Kateryna Kostiuk58276bc2017-06-07 08:50:48 -0400172 src/MessagesVC.h
173 src/MessagesVC.mm
Anthony Léonard1f70f722017-10-02 10:53:32 -0400174 src/PasswordChangeWC.h
175 src/PasswordChangeWC.mm
Loïc Siret31d5cc02016-09-08 14:38:24 -0400176)
Alexandre Lision74dd47f2015-04-14 13:47:42 -0400177
Alexandre Lision4ba18022015-04-23 12:17:40 -0400178SET(ringclient_BACKENDS
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400179 src/backends/AddressBookBackend.mm
Alexandre Lision66643432015-06-04 11:59:36 -0400180 src/backends/AddressBookBackend.h)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400181
182SET(ringclient_VIEWS
183 src/views/CallView.mm
184 src/views/CallView.h
Anthony Léonard14e7bf32017-06-08 08:13:16 -0400185 src/views/CallLayer.mm
186 src/views/CallLayer.h
Alexandre Lisionf47a2562015-06-15 15:48:29 -0400187 src/views/ITProgressIndicator.mm
188 src/views/ITProgressIndicator.h
Alexandre Lision2db8f472015-07-22 15:05:46 -0400189 src/views/RingOutlineView.mm
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400190 src/views/RingOutlineView.h
191 src/views/RingIDField.mm
Alexandre Lision4e280d62015-09-09 15:56:30 -0400192 src/views/RingIDField.h
193 src/views/HoverTableRowView.mm
194 src/views/HoverTableRowView.h
195 src/views/NSColor+RingTheme.mm
196 src/views/NSColor+RingTheme.h
Alexandre Lision261f1b92016-04-04 12:35:34 -0400197 src/views/NSImage+Extensions.mm
198 src/views/NSImage+Extensions.h
Alexandre Lision4e280d62015-09-09 15:56:30 -0400199 src/views/ContextualTableCellView.mm
Alexandre Lision6da08a82015-09-24 17:09:24 -0400200 src/views/ContextualTableCellView.h
201 src/views/IconButton.h
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500202 src/views/IconButton.mm
Alexandre Lisione77f6f92016-04-17 23:39:39 -0400203 src/views/BackgroundView.h
204 src/views/BackgroundView.mm
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500205 src/views/IMTableCellView.h
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400206 src/views/IMTableCellView.mm
207 src/views/AccountMenuItemView.h
Kateryna Kostiuka9e5c712017-05-15 16:46:16 -0400208 src/views/AccountMenuItemView.mm
Kateryna Kostiukd9039e92017-05-24 14:29:54 -0400209 src/views/RoundedTextField.h
Kateryna Kostiuk58276bc2017-06-07 08:50:48 -0400210 src/views/RoundedTextField.mm
211 src/views/MessageBubbleView.h
212 src/views/MessageBubbleView.mm
Kateryna Kostiuk64d025a2017-07-14 11:30:44 -0400213 src/views/SendMessageCell.h
214 src/views/SendMessageCell.mm
215 src/views/SendMessagePanel.h
216 src/views/SendMessagePanel.mm
Kateryna Kostiuk958cd072017-07-14 15:56:35 -0400217 src/views/HoverButton.h
218 src/views/HoverButton.mm
Kateryna Kostiuk58276bc2017-06-07 08:50:48 -0400219)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400220
221SET(ringclient_OTHERS
222 src/main.mm
223 src/AppDelegate.mm
224 src/AppDelegate.h
Alexandre Lision9fe374b2016-01-06 10:17:31 -0500225 src/Constants.h
Alexandre Lision83180df2016-01-18 11:32:20 -0500226 src/INDSequentialTextSelectionManager.mm
227 src/INDSequentialTextSelectionManager.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400228 src/delegates/ImageManipulationDelegate.mm
Kateryna Kostiuka16c9862017-05-03 13:30:14 -0400229 src/delegates/ImageManipulationDelegate.h
230 src/AccountSelectionManager.h
231 src/AccountSelectionManager.mm)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400232
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500233
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400234SET(ringclient_XIBS
235 MainMenu
236 RingWindow
237 CurrentCall
238 GeneralPrefs
239 Accounts
240 AccGeneral
Alexandre Lisione4d61cb2016-02-10 09:26:24 -0500241 AccMedia
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400242 AccRing
243 AccAdvanced
244 AccSecurity
245 AudioPrefs
246 VideoPrefs
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400247 PreferencesWindow
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400248 RingWizard
Alexandre Lision2db8f472015-07-22 15:05:46 -0400249 CertificateWindow
Alexandre Lision886cde12016-10-25 17:39:49 -0400250 BackupAccountWindow
251 RestoreAccountWindow
Alexandre Lision45f1f542016-08-25 15:16:17 -0400252 ExportPasswordWindow
Alexandre Lision624b1a82016-09-11 19:29:01 -0400253 MigrateRingAccountsWindow
Alexandre Lision883719f2015-10-22 17:37:45 -0400254 PersonLinker
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500255 Broker
Alexandre Lision45f1f542016-08-25 15:16:17 -0400256 Conversation
Loïc Siretfcb4ca62016-09-21 17:12:09 -0400257 AccDevices
258 RingWizardLinkAccount
259 RingWizardNewAccount
Alexandre Lision62005312016-01-28 15:55:16 -0500260 RingWizardChoose
261 Dialpad
Alexandre Lision34079c22016-10-31 16:14:02 -0400262 RegisterNameWindow
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400263 ChooseAccount
264 AccountMenuItemView
Kateryna Kostiukdb1f3a12017-04-24 12:08:28 -0400265 ContactRequestList
266 ContactRequest
Kateryna Kostiuk77e93902017-05-30 16:38:11 -0400267 AccBannedContacts
Anthony Léonard1f70f722017-10-02 10:53:32 -0400268 PasswordChange
Alexandre Lision62005312016-01-28 15:55:16 -0500269)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500270
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500271# Icons
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400272# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500273SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
274SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500275 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500276
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400277SET(ring_ICONS
278${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_name.png
Alexandre Lisione77f6f92016-04-17 23:39:39 -0400279${CMAKE_CURRENT_SOURCE_DIR}/data/background-light.png
280${CMAKE_CURRENT_SOURCE_DIR}/data/background-dark.png
Alexandre Lision34607032016-02-08 16:16:49 -0500281${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_blue.png
Alexandre Lision6da08a82015-09-24 17:09:24 -0400282${CMAKE_CURRENT_SOURCE_DIR}/data/background_tile.png
Alexandre Lision62005312016-01-28 15:55:16 -0500283${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_more.png
284${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_dialpad.png
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400285${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500286${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_arrow_back.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500287${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
288${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
Alexandre Lisiond18fa272015-06-15 11:18:03 -0400289${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hangup.png
290${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hold.png
291${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_holdoff.png
292${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_video.png
293${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_audio.png
294${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_chat.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500295${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lisionf23ec5a2015-07-16 11:24:06 -0400296${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_quality.png
Alexandre Lision266fca02015-09-28 14:47:05 -0400297${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_record.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400298${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_received.png
299${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_missed.png
300${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_made.png
Alexandre Lision883719f2015-10-22 17:37:45 -0400301${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_transfer.png
Alexandre Lision89edc6a2015-11-09 11:30:47 -0500302${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_add_participant.png
303${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_merge_calls.png
Alexandre Lisiond5229f32015-11-16 11:17:41 -0500304${CMAKE_CURRENT_SOURCE_DIR}/data/default_user_icon.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500305${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_send.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500306${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
Alexandre Lision2db8f472015-07-22 15:05:46 -0400307${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_person_add.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400308${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_persons.png
309${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_history.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500310${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
311${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lisionf46768f2016-04-18 09:56:26 -0400312${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_delete.png
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400313${CMAKE_CURRENT_SOURCE_DIR}/data/dark/qrcode.png
Kateryna Kostiukdb1f3a12017-04-24 12:08:28 -0400314${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png
315${CMAKE_CURRENT_SOURCE_DIR}/data/dark/pending_contact_request.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400316
Alexandre Lision392ee722015-01-23 16:27:10 -0500317SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500318 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400319SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
320 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500321
Alexandre Lision88ee6cc2016-05-05 14:32:43 -0400322# package ringtones
323IF(NOT IS_DIRECTORY ${RINGTONE_DIR})
324 MESSAGE("No ringtone folder provided, use RINGTONE_DIR to specify one")
325 SET(RINGTONE_DIR ${CMAKE_INSTALL_PREFIX}/share/ring/ringtones)
326 MESSAGE("Trying ${RINGTONE_DIR}")
327ENDIF()
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500328
Alexandre Lision88ee6cc2016-05-05 14:32:43 -0400329IF(IS_DIRECTORY ${RINGTONE_DIR})
330 FILE(GLOB RINGTONE_LIST ${RINGTONE_DIR}/*)
331 FOREACH(RINGTONE ${RINGTONE_LIST})
332 MESSAGE("Adding ringtone ${RINGTONE}")
333 GET_FILENAME_COMPONENT(FILE_PATH ${RINGTONE} ABSOLUTE)
334 SET(ring_RINGTONES ${ring_RINGTONES} ${FILE_PATH})
335 ENDFOREACH()
336ELSE()
337 MESSAGE("${RINGTONE_DIR} does not exist or is not readable")
338ENDIF()
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500339
340SET_SOURCE_FILES_PROPERTIES(${ring_RINGTONES}
341 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/ringtones)
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400342
343# Check which translations are found for LRC
344SET(LRC_TRANSLATIONS_PATH ${CMAKE_INSTALL_PREFIX}/share/libringclient/translations)
345FILE(GLOB QM_LIST ${LRC_TRANSLATIONS_PATH}/*.qm)
346
347FOREACH(QM_FILE ${QM_LIST})
348 # Extract country code from filename
349 GET_FILENAME_COMPONENT(FILENAME ${QM_FILE} NAME_WE)
350 STRING(REGEX REPLACE "^lrc_" "" LANG ${FILENAME})
351
352 SET_SOURCE_FILES_PROPERTIES(${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm
353 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/QtTranslations)
354 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
355 "${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm")
Alexandre Lision922380d2015-09-15 10:25:17 -0400356ENDFOREACH()
357
358# Check which translations are found for the client
359FILE(GLOB LPROJ_LIST ui/*.lproj)
360
361FOREACH(LPROJ ${LPROJ_LIST})
362 # Extract country code from <lang>.lproj folder name
363 GET_FILENAME_COMPONENT(LANG ${LPROJ} NAME_WE)
364 IF(EXISTS "${LPROJ}/Localizable.strings")
365 MESSAGE("Localizable:" ${LANG})
366 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/Localizable.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500367 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400368
369 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
370 ${LPROJ}/Localizable.strings)
371 ENDIF()
372 FOREACH(xib ${ringclient_XIBS})
373 IF(EXISTS "${LPROJ}/${xib}.strings")
374 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/${xib}.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500375 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400376
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500377 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
Alexandre Lision922380d2015-09-15 10:25:17 -0400378 ${LPROJ}/${xib}.strings)
379 ENDIF()
380 ENDFOREACH()
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400381
382 # Regroup those files under a .lproj folder
383 SOURCE_GROUP("Resources\\${LANG}.lproj" FILES
384 ${LOCALIZED_${LANG}})
385 # Add them to the list of files to package
386 SET(LOCALIZABLE_FILES ${LOCALIZABLE_FILES} ${LOCALIZED_${LANG}})
387ENDFOREACH()
388
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400389# append '.xib' extension before linking xib files in executable
390FOREACH(xib ${ringclient_XIBS})
Alexandre Lision922380d2015-09-15 10:25:17 -0400391 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/Base.lproj/${xib}.xib)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400392ENDFOREACH()
393
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400394SET(TO_ADD
Alexandre Lision4ba18022015-04-23 12:17:40 -0400395 ${ringclient_CONTROLLERS}
396 ${ringclient_BACKENDS}
397 ${ringclient_VIEWS}
398 ${ringclient_OTHERS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400399 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400400 ${LOCALIZABLE_FILES}
Alexandre Lision392ee722015-01-23 16:27:10 -0500401 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400402 Credits.rtf
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500403 ${ring_ICONS}
404 ${ring_RINGTONES})
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500405
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400406IF(ENABLE_SPARKLE)
407 SET( TO_ADD ${TO_ADD} ${PUBLIC_KEY} ${SPARKLE_FRAMEWORK})
408ENDIF(ENABLE_SPARKLE)
409
410ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE ${TO_ADD})
411
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400412ADD_DEPENDENCIES(${PROJ_NAME} libqrencode)
413
Alexandre Lision4ba18022015-04-23 12:17:40 -0400414# Follow Xcode hierarchy principles
415SOURCE_GROUP("Controllers" FILES ${ringclient_CONTROLLERS})
416SOURCE_GROUP("Backends" FILES ${ringclient_BACKENDS})
417SOURCE_GROUP("CustomViews" FILES ${ringclient_VIEWS})
418SOURCE_GROUP("Classes" FILES ${ringclient_OTHERS})
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400419SOURCE_GROUP("Resources\\Interface Builder" FILES
420 ${ringclient_XIBS_FOR_EXECUTABLE})
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500421SOURCE_GROUP("Resources\\ringtones" FILES ${ring_RINGTONES})
Alexandre Lision4ba18022015-04-23 12:17:40 -0400422
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400423IF(ENABLE_SPARKLE)
424 SOURCE_GROUP("Frameworks" FILES ${SPARKLE_FRAMEWORK})
425ENDIF(ENABLE_SPARKLE)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400426
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500427TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500428 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500429 ${Qt5Core_LIBRARIES}
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400430 ${Qt5MacExtras_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500431 ${Qt5Widgets_LIBRARIES}
Anthony Léonard14e7bf32017-06-08 08:13:16 -0400432 ${OPENGL_LIBRARIES}
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400433 -lqrencode
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500434)
435
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400436IF(ENABLE_SPARKLE)
437 TARGET_LINK_LIBRARIES(${PROJ_NAME} ${SPARKLE_FRAMEWORK})
438ENDIF(ENABLE_SPARKLE)
439
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400440SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
441SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
442SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
443SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
444SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
Alexandre Lisionb9f3f942016-07-23 14:29:33 -0400445SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework SystemConfiguration")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400446
447# These variables are specific to our plist and are NOT standard CMake variables
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400448SET(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
449SET(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500450
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500451SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
452 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
453 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Alexandre Lision7208b762015-08-13 12:39:49 -0400454 MACOSX_BUNDLE_SHORT_VERSION_STRING "${RING_VERSION_NAME}"
455 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION_NAME} Nightly"
456 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400457 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500458 MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development"
459 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
460 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
461 )
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400462
463# Make sure we can find the 'ibtool' program. If we can NOT find it we
464# skip generation of this project
465FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
466IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
467 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
468 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
469endif()
470
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400471# Compile the .xib files using the 'ibtool' program with the destination being the app package
472FOREACH(xib ${ringclient_XIBS})
473 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
474 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
Alexandre Lision922380d2015-09-15 10:25:17 -0400475 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/Base.lproj/${xib}.nib
476 ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib
477 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400478
479ENDFOREACH()
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400480
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400481SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400482
483SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app")
484
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400485INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime)
486
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400487SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400488#--------------------------------------------------------------------------------
489# Install needed Qt plugins by copying directories from the qt installation
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400490
491
492#MESSAGE("GUI====")
493#foreach(plugin ${Qt5Gui_PLUGINS})
494# message("Plugin ${plugin} is at location ${_loc}")
495#endforeach()
496
497LIST(APPEND QT_PLUGINS_IMAGEFORMAT Qt5::QTgaPlugin
498 Qt5::QGifPlugin
499 Qt5::QICNSPlugin
500 Qt5::QICOPlugin
501 Qt5::QJpegPlugin
Alexandre Lision8ac5c842017-03-18 08:45:31 +0100502 Qt5::QTiffPlugin)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400503
504# we need two plugin directories platform and imageformats
505GET_TARGET_PROPERTY(_loc Qt5::QCocoaIntegrationPlugin LOCATION)
506INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/platforms COMPONENT Runtime)
507LIST(APPEND QT_PLUGINS Qt5::QCocoaIntegrationPlugin)
508
509FOREACH(plugin ${QT_PLUGINS_IMAGEFORMAT})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400510 GET_TARGET_PROPERTY(_loc ${plugin} LOCATION)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400511 INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/imageformats COMPONENT Runtime)
512 LIST(APPEND QT_PLUGINS ${plugin})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400513ENDFOREACH()
514
Anthony Léonard786d4182017-11-08 14:26:31 -0500515# Add SQLite driver for QtSql
516GET_TARGET_PROPERTY(_loc Qt5::QSQLiteDriverPlugin LOCATION)
517INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/sqldrivers COMPONENT Runtime)
518LIST(APPEND QT_PLUGINS Qt5::QSQLiteDriverPlugin)
519
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400520# directories to look for dependencies
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400521SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib
522 ${QT_LIB_DIR}
523 ${CMAKE_CURRENT_SOURCE_DIR}/sparkle
524 ${CMAKE_CURRENT_SOURCE_DIR}/libqrencode/lib)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400525
526INSTALL(CODE "
527 file(GLOB_RECURSE QTPLUGINS
528 \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
529 include(BundleUtilities)
530 SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
531 fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
532 " COMPONENT Runtime)
533
534#================================
535# Packaging
536#================================
537SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME})
538SET( CPACK_PACKAGE_NAME ${PROJ_NAME} )
539SET( CPACK_PACKAGE_CONTACT "Alexandre Lision")
540SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux")
541SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION})
542SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION})
543SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION})
544SET(CPACK_BINARY_DRAGNDROP ON)
545SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
546INCLUDE(CPack)