blob: 2b99a40c50d0d9afa44926232f475d3f4ef3d858 [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
Anthony Léonardf79fd7c2018-01-31 13:28:46 -050014SET(RING_VERSION_NAME "In varietate concordia")
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éonardf79fd7c2018-01-31 13:28:46 -050017SET(PROJ_COPYRIGHT " © 2015-2018 Savoir-faire Linux \n GPLv3 https://www.gnu.org/copyleft/gpl.html")
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050018
Anthony Léonard643a3902017-12-19 15:40:17 -050019SET(CMAKE_CXX_STANDARD 14)
20
21ADD_DEFINITIONS("-stdlib=libc++ -fobjc-arc")
Alexandre Lision5855b6a2015-02-03 11:31:05 -050022
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050023PROJECT(${PROJ_NAME})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050024
Alexandre Lision10e86dd2015-01-19 16:11:14 -050025FIND_PACKAGE(Qt5Core REQUIRED)
Alexandre Lision3b0bd332015-03-15 18:43:07 -040026FIND_PACKAGE(Qt5MacExtras REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050027FIND_PACKAGE(Qt5Widgets REQUIRED)
Anthony Léonard786d4182017-11-08 14:26:31 -050028FIND_PACKAGE(Qt5Sql REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050029FIND_PACKAGE(LibRingClient REQUIRED)
Anthony Léonard14e7bf32017-06-08 08:13:16 -040030FIND_PACKAGE(OpenGL REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050031
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -040032EXECUTE_PROCESS(COMMAND git submodule update --init
33 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
34
35INCLUDE(ExternalProject)
36ExternalProject_Add(libqrencode
37 GIT_SUBMODULES libqrencode
38 SOURCE_DIR ${CMAKE_SOURCE_DIR}/libqrencode
39 BINARY_DIR ${CMAKE_SOURCE_DIR}/libqrencode
40 INSTALL_DIR ${CMAKE_SOURCE_DIR}/libqrencode
41 CONFIGURE_COMMAND
42 #hack to fix incomplete config.h on first run
43 COMMAND ./autogen.sh
44 COMMAND ./autogen.sh && ./configure --prefix=${CMAKE_SOURCE_DIR}/libqrencode
45 BUILD_COMMAND make
46 INSTALL_COMMAND make install)
47
48INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/libqrencode/include)
49LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/libqrencode/lib)
50
Alexandre Lision3d4143a2015-06-10 14:27:49 -040051IF(NOT (${ENABLE_SPARKLE} MATCHES false))
52 MESSAGE("Sparkle auto-update enabled")
53
54 # find_library searches in /Library/Frameworks by default
55 # We add an hint to our custom location
56
57 FIND_LIBRARY(SPARKLE_FRAMEWORK
58 NAMES Sparkle
59 HINTS ${CMAKE_CURRENT_SOURCE_DIR}/sparkle)
60 IF(EXISTS ${SPARKLE_FRAMEWORK})
61 SET(ENABLE_SPARKLE 1 CACHE BOOLEAN "Enable Sparkle")
62 ADD_DEFINITIONS(-DENABLE_SPARKLE=1)
63 MESSAGE("Sparkle is here:" ${SPARKLE_FRAMEWORK})
64 FIND_PATH(SPARKLE_INCLUDE_DIR Sparkle.h HINTS ${SPARKLE_FRAMEWORK}/Headers)
Alexandre Lision3d4143a2015-06-10 14:27:49 -040065 # we need to copy the public key to check the updates
66 SET(PUBLIC_KEY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/sparkle/dsa_pub.pem")
67 IF(EXISTS ${PUBLIC_KEY_PATH})
68 MESSAGE(STATUS "Looking for Public Key - found")
69 SET_SOURCE_FILES_PROPERTIES(${PUBLIC_KEY_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
70 SET(PUBLIC_KEY ${PUBLIC_KEY_PATH})
71 ELSE(EXISTS ${PUBLIC_KEY_PATH})
72 MESSAGE(WARNING "Looking for Public Key - not found")
73 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")
74 ENDIF(EXISTS ${PUBLIC_KEY_PATH})
75 ELSE()
Alexandre Lisionfba8f792016-03-08 13:45:51 -050076 MESSAGE(WARNING "Sparkle framework not found, disabling it... to build it see README")
77 SET(ENABLE_SPARKLE 0 CACHE BOOLEAN "Enable Sparkle")
Alexandre Lision3d4143a2015-06-10 14:27:49 -040078 ENDIF(EXISTS ${SPARKLE_FRAMEWORK})
79ENDIF(NOT (${ENABLE_SPARKLE} MATCHES false))
80
Alexandre Lision10e86dd2015-01-19 16:11:14 -050081INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS})
Alexandre Lision3b0bd332015-03-15 18:43:07 -040082INCLUDE_DIRECTORIES(SYSTEM ${Qt5MacExtras_INCLUDE_DIRS})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050083INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
84INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR})
85INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
Anthony Léonard14e7bf32017-06-08 08:13:16 -040086INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050087
Alexandre Lision04946de2016-03-08 09:31:38 -050088SET(CMAKE_MACOSX_RPATH ON)
89SET(CMAKE_SKIP_BUILD_RPATH FALSE)
90SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
91SET(CMAKE_INSTALL_RPATH "${CMAKE_CURRENT_SOURCE_DIR}")
92SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
93
Alexandre Lision3d4143a2015-06-10 14:27:49 -040094MESSAGE("LRC is here:" ${LIB_RING_CLIENT_INCLUDE_DIR})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050095SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
96
97#Files to compile
Alexandre Lision4ba18022015-04-23 12:17:40 -040098SET(ringclient_CONTROLLERS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040099 src/QNSTreeController.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -0400100 src/QNSTreeController.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400101 src/CurrentCallVC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -0400102 src/CurrentCallVC.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400103 src/GeneralPrefsVC.mm
104 src/RingWizardWC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -0400105 src/RingWizardWC.h
106 src/RingWindowController.mm
107 src/RingWindowController.h
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400108 src/PreferencesWC.mm
109 src/PreferencesWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400110 src/AccGeneralVC.mm
111 src/AccGeneralVC.h
Alexandre Lisione4d61cb2016-02-10 09:26:24 -0500112 src/AccMediaVC.mm
113 src/AccMediaVC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400114 src/AccRingVC.mm
115 src/AccRingVC.h
116 src/AccAdvancedVC.mm
117 src/AccAdvancedVC.h
118 src/AccSecurityVC.mm
119 src/AccSecurityVC.h
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400120 src/CertificateWC.mm
121 src/CertificateWC.h
Alexandre Lision886cde12016-10-25 17:39:49 -0400122 src/BackupAccountWC.mm
123 src/BackupAccountWC.h
124 src/RestoreAccountWC.mm
125 src/RestoreAccountWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400126 src/AudioPrefsVC.mm
127 src/AudioPrefsVC.h
128 src/AccountsVC.mm
129 src/AccountsVC.h
130 src/VideoPrefsVC.mm
131 src/VideoPrefsVC.h
132 src/GeneralPrefsVC.h
Alexandre Lision58cab672015-06-09 15:25:40 -0400133 src/ChatVC.mm
Alexandre Lision2db8f472015-07-22 15:05:46 -0400134 src/ChatVC.h
135 src/PersonLinkerVC.mm
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400136 src/PersonLinkerVC.h
137 src/SmartViewVC.mm
Alexandre Lision883719f2015-10-22 17:37:45 -0400138 src/SmartViewVC.h
139 src/BrokerVC.mm
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500140 src/BrokerVC.h
141 src/ConversationVC.mm
Loïc Siret31d5cc02016-09-08 14:38:24 -0400142 src/ConversationVC.h
143 src/LoadingWCDelegate.h
144 src/AbstractLoadingWC.h
145 src/AbstractLoadingWC.mm
Alexandre Lision45f1f542016-08-25 15:16:17 -0400146 src/AccDevicesVC.mm
147 src/AccDevicesVC.h
148 src/ExportPasswordWC.mm
149 src/ExportPasswordWC.h
Alexandre Lision624b1a82016-09-11 19:29:01 -0400150 src/MigrateRingAccountsWC.mm
151 src/MigrateRingAccountsWC.h
Loïc Siretfcb4ca62016-09-21 17:12:09 -0400152 src/RingWizardChooseVC.h
153 src/RingWizardChooseVC.mm
154 src/RingWizardLinkAccountVC.h
155 src/RingWizardLinkAccountVC.mm
156 src/RingWizardNewAccountVC.mm
157 src/RingWizardNewAccountVC.h
Alexandre Lision62005312016-01-28 15:55:16 -0500158 src/DialpadWC.mm
159 src/DialpadWC.h
Alexandre Lision34079c22016-10-31 16:14:02 -0400160 src/RegisterNameWC.mm
161 src/RegisterNameWC.h
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400162 src/ChooseAccountVC.h
163 src/ChooseAccountVC.mm
Kateryna Kostiukdb1f3a12017-04-24 12:08:28 -0400164 src/ContactRequestsListVC.h
165 src/ContactRequestsListVC.mm
166 src/ContactRequestVC.h
167 src/ContactRequestVC.mm
Kateryna Kostiuk77e93902017-05-30 16:38:11 -0400168 src/AccBannedContactsVC.h
169 src/AccBannedContactsVC.mm
Kateryna Kostiuk58276bc2017-06-07 08:50:48 -0400170 src/MessagesVC.h
171 src/MessagesVC.mm
Anthony Léonard1f70f722017-10-02 10:53:32 -0400172 src/PasswordChangeWC.h
173 src/PasswordChangeWC.mm
Kateryna Kostiuk67735232018-05-10 15:05:32 -0400174 src/LrcModelsSProtocol.h
Loïc Siret31d5cc02016-09-08 14:38:24 -0400175)
Alexandre Lision74dd47f2015-04-14 13:47:42 -0400176
Alexandre Lision4ba18022015-04-23 12:17:40 -0400177SET(ringclient_BACKENDS
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400178 src/backends/AddressBookBackend.mm
Alexandre Lision66643432015-06-04 11:59:36 -0400179 src/backends/AddressBookBackend.h)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400180
181SET(ringclient_VIEWS
182 src/views/CallView.mm
183 src/views/CallView.h
Anthony Léonard14e7bf32017-06-08 08:13:16 -0400184 src/views/CallLayer.mm
185 src/views/CallLayer.h
Alexandre Lisionf47a2562015-06-15 15:48:29 -0400186 src/views/ITProgressIndicator.mm
187 src/views/ITProgressIndicator.h
Alexandre Lision2db8f472015-07-22 15:05:46 -0400188 src/views/RingOutlineView.mm
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400189 src/views/RingOutlineView.h
Olivier Soldanod4311552017-11-20 15:09:53 -0500190 src/views/RingTableView.mm
191 src/views/RingTableView.h
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400192 src/views/RingIDField.mm
Alexandre Lision4e280d62015-09-09 15:56:30 -0400193 src/views/RingIDField.h
194 src/views/HoverTableRowView.mm
195 src/views/HoverTableRowView.h
196 src/views/NSColor+RingTheme.mm
197 src/views/NSColor+RingTheme.h
Alexandre Lision261f1b92016-04-04 12:35:34 -0400198 src/views/NSImage+Extensions.mm
199 src/views/NSImage+Extensions.h
Alexandre Lision4e280d62015-09-09 15:56:30 -0400200 src/views/ContextualTableCellView.mm
Alexandre Lision6da08a82015-09-24 17:09:24 -0400201 src/views/ContextualTableCellView.h
202 src/views/IconButton.h
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500203 src/views/IconButton.mm
Alexandre Lisione77f6f92016-04-17 23:39:39 -0400204 src/views/BackgroundView.h
205 src/views/BackgroundView.mm
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500206 src/views/IMTableCellView.h
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400207 src/views/IMTableCellView.mm
208 src/views/AccountMenuItemView.h
Kateryna Kostiuka9e5c712017-05-15 16:46:16 -0400209 src/views/AccountMenuItemView.mm
Kateryna Kostiukd9039e92017-05-24 14:29:54 -0400210 src/views/RoundedTextField.h
Kateryna Kostiuk58276bc2017-06-07 08:50:48 -0400211 src/views/RoundedTextField.mm
212 src/views/MessageBubbleView.h
213 src/views/MessageBubbleView.mm
Kateryna Kostiuk64d025a2017-07-14 11:30:44 -0400214 src/views/SendMessagePanel.h
215 src/views/SendMessagePanel.mm
Kateryna Kostiuk958cd072017-07-14 15:56:35 -0400216 src/views/HoverButton.h
217 src/views/HoverButton.mm
Kateryna Kostiuk58276bc2017-06-07 08:50:48 -0400218)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400219
220SET(ringclient_OTHERS
221 src/main.mm
222 src/AppDelegate.mm
223 src/AppDelegate.h
Alexandre Lision9fe374b2016-01-06 10:17:31 -0500224 src/Constants.h
Alexandre Lision83180df2016-01-18 11:32:20 -0500225 src/INDSequentialTextSelectionManager.mm
226 src/INDSequentialTextSelectionManager.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400227 src/delegates/ImageManipulationDelegate.mm
Kateryna Kostiuka16c9862017-05-03 13:30:14 -0400228 src/delegates/ImageManipulationDelegate.h
229 src/AccountSelectionManager.h
Olivier Soldanod4311552017-11-20 15:09:53 -0500230 src/AccountSelectionManager.mm
Andreas Traczyk252a94a2018-04-20 16:36:20 -0400231 src/utils.h
232 src/NSString+Extensions.h
233 src/NSString+Extensions.mm)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400234
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500235
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400236SET(ringclient_XIBS
237 MainMenu
238 RingWindow
239 CurrentCall
240 GeneralPrefs
241 Accounts
242 AccGeneral
Alexandre Lisione4d61cb2016-02-10 09:26:24 -0500243 AccMedia
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400244 AccRing
245 AccAdvanced
246 AccSecurity
247 AudioPrefs
248 VideoPrefs
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400249 PreferencesWindow
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400250 RingWizard
Alexandre Lision2db8f472015-07-22 15:05:46 -0400251 CertificateWindow
Alexandre Lision886cde12016-10-25 17:39:49 -0400252 BackupAccountWindow
253 RestoreAccountWindow
Alexandre Lision45f1f542016-08-25 15:16:17 -0400254 ExportPasswordWindow
Alexandre Lision624b1a82016-09-11 19:29:01 -0400255 MigrateRingAccountsWindow
Alexandre Lision883719f2015-10-22 17:37:45 -0400256 PersonLinker
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500257 Broker
Alexandre Lision45f1f542016-08-25 15:16:17 -0400258 Conversation
Loïc Siretfcb4ca62016-09-21 17:12:09 -0400259 AccDevices
260 RingWizardLinkAccount
261 RingWizardNewAccount
Alexandre Lision62005312016-01-28 15:55:16 -0500262 RingWizardChoose
263 Dialpad
Alexandre Lision34079c22016-10-31 16:14:02 -0400264 RegisterNameWindow
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400265 ChooseAccount
266 AccountMenuItemView
Kateryna Kostiukdb1f3a12017-04-24 12:08:28 -0400267 ContactRequestList
268 ContactRequest
Kateryna Kostiuk77e93902017-05-30 16:38:11 -0400269 AccBannedContacts
Anthony Léonard1f70f722017-10-02 10:53:32 -0400270 PasswordChange
Kateryna Kostiukae660fd2018-04-24 14:10:41 -0400271 MessageCells
Alexandre Lision62005312016-01-28 15:55:16 -0500272)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500273
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500274# Icons
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400275# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500276SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
277SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500278 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500279
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400280SET(ring_ICONS
Kateryna Kostiuk67735232018-05-10 15:05:32 -0400281${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_folder.png
Andreas Traczyk252a94a2018-04-20 16:36:20 -0400282${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_block.png
Kateryna Kostiukae660fd2018-04-24 14:10:41 -0400283${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_attachment.png
Andreas Traczyk87c999f2018-04-12 17:38:25 -0400284${CMAKE_CURRENT_SOURCE_DIR}/data/default_avatar_overlay.png
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400285${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_name.png
Alexandre Lisione77f6f92016-04-17 23:39:39 -0400286${CMAKE_CURRENT_SOURCE_DIR}/data/background-light.png
287${CMAKE_CURRENT_SOURCE_DIR}/data/background-dark.png
Alexandre Lision34607032016-02-08 16:16:49 -0500288${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_blue.png
Alexandre Lision6da08a82015-09-24 17:09:24 -0400289${CMAKE_CURRENT_SOURCE_DIR}/data/background_tile.png
Alexandre Lision62005312016-01-28 15:55:16 -0500290${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_more.png
291${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_dialpad.png
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400292${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500293${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_arrow_back.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500294${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
295${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
Alexandre Lisiond18fa272015-06-15 11:18:03 -0400296${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hangup.png
297${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hold.png
298${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_holdoff.png
299${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_video.png
300${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_audio.png
301${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_chat.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500302${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lisionf23ec5a2015-07-16 11:24:06 -0400303${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_quality.png
Alexandre Lision266fca02015-09-28 14:47:05 -0400304${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_record.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400305${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_received.png
306${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_missed.png
307${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_made.png
Alexandre Lision883719f2015-10-22 17:37:45 -0400308${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_transfer.png
Alexandre Lision89edc6a2015-11-09 11:30:47 -0500309${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_add_participant.png
310${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_merge_calls.png
Alexandre Lisiond5229f32015-11-16 11:17:41 -0500311${CMAKE_CURRENT_SOURCE_DIR}/data/default_user_icon.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500312${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_send.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500313${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
Alexandre Lision2db8f472015-07-22 15:05:46 -0400314${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_person_add.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400315${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_persons.png
316${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_history.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500317${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
318${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lisionf46768f2016-04-18 09:56:26 -0400319${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_delete.png
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400320${CMAKE_CURRENT_SOURCE_DIR}/data/dark/qrcode.png
Kateryna Kostiukdb1f3a12017-04-24 12:08:28 -0400321${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png
Anthony Léonarde7d62ed2018-01-25 10:51:47 -0500322${CMAKE_CURRENT_SOURCE_DIR}/data/dark/pending_contact_request.png
Kateryna Kostiuk87ae2bf2018-05-04 13:46:17 -0400323${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_file_upload.png
324${CMAKE_CURRENT_SOURCE_DIR}/data/light/ic_picture.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400325
Alexandre Lision392ee722015-01-23 16:27:10 -0500326SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500327 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400328SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
329 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500330
Alexandre Lision88ee6cc2016-05-05 14:32:43 -0400331# package ringtones
332IF(NOT IS_DIRECTORY ${RINGTONE_DIR})
333 MESSAGE("No ringtone folder provided, use RINGTONE_DIR to specify one")
334 SET(RINGTONE_DIR ${CMAKE_INSTALL_PREFIX}/share/ring/ringtones)
335 MESSAGE("Trying ${RINGTONE_DIR}")
336ENDIF()
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500337
Alexandre Lision88ee6cc2016-05-05 14:32:43 -0400338IF(IS_DIRECTORY ${RINGTONE_DIR})
339 FILE(GLOB RINGTONE_LIST ${RINGTONE_DIR}/*)
340 FOREACH(RINGTONE ${RINGTONE_LIST})
341 MESSAGE("Adding ringtone ${RINGTONE}")
342 GET_FILENAME_COMPONENT(FILE_PATH ${RINGTONE} ABSOLUTE)
343 SET(ring_RINGTONES ${ring_RINGTONES} ${FILE_PATH})
344 ENDFOREACH()
345ELSE()
346 MESSAGE("${RINGTONE_DIR} does not exist or is not readable")
347ENDIF()
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500348
349SET_SOURCE_FILES_PROPERTIES(${ring_RINGTONES}
350 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/ringtones)
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400351
352# Check which translations are found for LRC
353SET(LRC_TRANSLATIONS_PATH ${CMAKE_INSTALL_PREFIX}/share/libringclient/translations)
354FILE(GLOB QM_LIST ${LRC_TRANSLATIONS_PATH}/*.qm)
355
356FOREACH(QM_FILE ${QM_LIST})
357 # Extract country code from filename
358 GET_FILENAME_COMPONENT(FILENAME ${QM_FILE} NAME_WE)
359 STRING(REGEX REPLACE "^lrc_" "" LANG ${FILENAME})
360
361 SET_SOURCE_FILES_PROPERTIES(${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm
362 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/QtTranslations)
363 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
364 "${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm")
Alexandre Lision922380d2015-09-15 10:25:17 -0400365ENDFOREACH()
366
367# Check which translations are found for the client
368FILE(GLOB LPROJ_LIST ui/*.lproj)
369
370FOREACH(LPROJ ${LPROJ_LIST})
371 # Extract country code from <lang>.lproj folder name
372 GET_FILENAME_COMPONENT(LANG ${LPROJ} NAME_WE)
373 IF(EXISTS "${LPROJ}/Localizable.strings")
374 MESSAGE("Localizable:" ${LANG})
375 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/Localizable.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500376 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400377
378 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
379 ${LPROJ}/Localizable.strings)
380 ENDIF()
381 FOREACH(xib ${ringclient_XIBS})
382 IF(EXISTS "${LPROJ}/${xib}.strings")
383 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/${xib}.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500384 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400385
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500386 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
Alexandre Lision922380d2015-09-15 10:25:17 -0400387 ${LPROJ}/${xib}.strings)
388 ENDIF()
389 ENDFOREACH()
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400390
391 # Regroup those files under a .lproj folder
392 SOURCE_GROUP("Resources\\${LANG}.lproj" FILES
393 ${LOCALIZED_${LANG}})
394 # Add them to the list of files to package
395 SET(LOCALIZABLE_FILES ${LOCALIZABLE_FILES} ${LOCALIZED_${LANG}})
396ENDFOREACH()
397
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400398# append '.xib' extension before linking xib files in executable
399FOREACH(xib ${ringclient_XIBS})
Alexandre Lision922380d2015-09-15 10:25:17 -0400400 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/Base.lproj/${xib}.xib)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400401ENDFOREACH()
402
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400403SET(TO_ADD
Alexandre Lision4ba18022015-04-23 12:17:40 -0400404 ${ringclient_CONTROLLERS}
405 ${ringclient_BACKENDS}
406 ${ringclient_VIEWS}
407 ${ringclient_OTHERS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400408 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400409 ${LOCALIZABLE_FILES}
Alexandre Lision392ee722015-01-23 16:27:10 -0500410 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400411 Credits.rtf
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500412 ${ring_ICONS}
413 ${ring_RINGTONES})
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500414
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400415IF(ENABLE_SPARKLE)
416 SET( TO_ADD ${TO_ADD} ${PUBLIC_KEY} ${SPARKLE_FRAMEWORK})
417ENDIF(ENABLE_SPARKLE)
418
419ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE ${TO_ADD})
420
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400421ADD_DEPENDENCIES(${PROJ_NAME} libqrencode)
422
Alexandre Lision4ba18022015-04-23 12:17:40 -0400423# Follow Xcode hierarchy principles
424SOURCE_GROUP("Controllers" FILES ${ringclient_CONTROLLERS})
425SOURCE_GROUP("Backends" FILES ${ringclient_BACKENDS})
426SOURCE_GROUP("CustomViews" FILES ${ringclient_VIEWS})
427SOURCE_GROUP("Classes" FILES ${ringclient_OTHERS})
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400428SOURCE_GROUP("Resources\\Interface Builder" FILES
429 ${ringclient_XIBS_FOR_EXECUTABLE})
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500430SOURCE_GROUP("Resources\\ringtones" FILES ${ring_RINGTONES})
Alexandre Lision4ba18022015-04-23 12:17:40 -0400431
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400432IF(ENABLE_SPARKLE)
433 SOURCE_GROUP("Frameworks" FILES ${SPARKLE_FRAMEWORK})
434ENDIF(ENABLE_SPARKLE)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400435
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500436TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500437 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500438 ${Qt5Core_LIBRARIES}
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400439 ${Qt5MacExtras_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500440 ${Qt5Widgets_LIBRARIES}
Anthony Léonard14e7bf32017-06-08 08:13:16 -0400441 ${OPENGL_LIBRARIES}
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400442 -lqrencode
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500443)
444
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400445IF(ENABLE_SPARKLE)
446 TARGET_LINK_LIBRARIES(${PROJ_NAME} ${SPARKLE_FRAMEWORK})
447ENDIF(ENABLE_SPARKLE)
448
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400449SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
450SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
451SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
452SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
453SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
Alexandre Lisionb9f3f942016-07-23 14:29:33 -0400454SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework SystemConfiguration")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400455
456# These variables are specific to our plist and are NOT standard CMake variables
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400457SET(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
458SET(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500459
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500460SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
461 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
462 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Alexandre Lision7208b762015-08-13 12:39:49 -0400463 MACOSX_BUNDLE_SHORT_VERSION_STRING "${RING_VERSION_NAME}"
Anthony Léonardf79fd7c2018-01-31 13:28:46 -0500464 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION_NAME}"
Alexandre Lision7208b762015-08-13 12:39:49 -0400465 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400466 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Anthony Léonardf79fd7c2018-01-31 13:28:46 -0500467 MACOSX_BUNDLE_INFO_STRING "Build of ${PROJ_NAME}, version ${RING_VERSION}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500468 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
469 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
470 )
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400471
472# Make sure we can find the 'ibtool' program. If we can NOT find it we
473# skip generation of this project
474FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
475IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
476 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
477 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
478endif()
479
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400480# Compile the .xib files using the 'ibtool' program with the destination being the app package
481FOREACH(xib ${ringclient_XIBS})
482 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
483 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
Alexandre Lision922380d2015-09-15 10:25:17 -0400484 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/Base.lproj/${xib}.nib
485 ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib
486 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400487
488ENDFOREACH()
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400489
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400490SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400491
492SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app")
493
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400494INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime)
495
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400496SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400497#--------------------------------------------------------------------------------
498# Install needed Qt plugins by copying directories from the qt installation
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400499
500
501#MESSAGE("GUI====")
502#foreach(plugin ${Qt5Gui_PLUGINS})
503# message("Plugin ${plugin} is at location ${_loc}")
504#endforeach()
505
506LIST(APPEND QT_PLUGINS_IMAGEFORMAT Qt5::QTgaPlugin
507 Qt5::QGifPlugin
508 Qt5::QICNSPlugin
509 Qt5::QICOPlugin
510 Qt5::QJpegPlugin
Alexandre Lision8ac5c842017-03-18 08:45:31 +0100511 Qt5::QTiffPlugin)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400512
513# we need two plugin directories platform and imageformats
514GET_TARGET_PROPERTY(_loc Qt5::QCocoaIntegrationPlugin LOCATION)
515INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/platforms COMPONENT Runtime)
516LIST(APPEND QT_PLUGINS Qt5::QCocoaIntegrationPlugin)
517
518FOREACH(plugin ${QT_PLUGINS_IMAGEFORMAT})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400519 GET_TARGET_PROPERTY(_loc ${plugin} LOCATION)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400520 INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/imageformats COMPONENT Runtime)
521 LIST(APPEND QT_PLUGINS ${plugin})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400522ENDFOREACH()
523
Anthony Léonard786d4182017-11-08 14:26:31 -0500524# Add SQLite driver for QtSql
525GET_TARGET_PROPERTY(_loc Qt5::QSQLiteDriverPlugin LOCATION)
526INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/sqldrivers COMPONENT Runtime)
527LIST(APPEND QT_PLUGINS Qt5::QSQLiteDriverPlugin)
528
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400529# directories to look for dependencies
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400530SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib
531 ${QT_LIB_DIR}
532 ${CMAKE_CURRENT_SOURCE_DIR}/sparkle
533 ${CMAKE_CURRENT_SOURCE_DIR}/libqrencode/lib)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400534
535INSTALL(CODE "
536 file(GLOB_RECURSE QTPLUGINS
537 \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
538 include(BundleUtilities)
539 SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
540 fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
541 " COMPONENT Runtime)
542
543#================================
544# Packaging
545#================================
546SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME})
547SET( CPACK_PACKAGE_NAME ${PROJ_NAME} )
548SET( CPACK_PACKAGE_CONTACT "Alexandre Lision")
549SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux")
550SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION})
551SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION})
552SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION})
553SET(CPACK_BINARY_DRAGNDROP ON)
554SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
555INCLUDE(CPack)