blob: fb7bde7c02a8d72d3dca4ffb06938b1d57a99528 [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
Alexandre Lision6517be82016-02-11 10:32:20 -050019ADD_DEFINITIONS("-std=c++11 -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)
26FIND_PACKAGE(LibRingClient REQUIRED)
Anthony Léonard14e7bf32017-06-08 08:13:16 -040027FIND_PACKAGE(OpenGL REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050028
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -040029EXECUTE_PROCESS(COMMAND git submodule update --init
30 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
31
32INCLUDE(ExternalProject)
33ExternalProject_Add(libqrencode
34 GIT_SUBMODULES libqrencode
35 SOURCE_DIR ${CMAKE_SOURCE_DIR}/libqrencode
36 BINARY_DIR ${CMAKE_SOURCE_DIR}/libqrencode
37 INSTALL_DIR ${CMAKE_SOURCE_DIR}/libqrencode
38 CONFIGURE_COMMAND
39 #hack to fix incomplete config.h on first run
40 COMMAND ./autogen.sh
41 COMMAND ./autogen.sh && ./configure --prefix=${CMAKE_SOURCE_DIR}/libqrencode
42 BUILD_COMMAND make
43 INSTALL_COMMAND make install)
44
45INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/libqrencode/include)
46LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/libqrencode/lib)
47
Alexandre Lision3d4143a2015-06-10 14:27:49 -040048IF(NOT (${ENABLE_SPARKLE} MATCHES false))
49 MESSAGE("Sparkle auto-update enabled")
50
51 # find_library searches in /Library/Frameworks by default
52 # We add an hint to our custom location
53
54 FIND_LIBRARY(SPARKLE_FRAMEWORK
55 NAMES Sparkle
56 HINTS ${CMAKE_CURRENT_SOURCE_DIR}/sparkle)
57 IF(EXISTS ${SPARKLE_FRAMEWORK})
58 SET(ENABLE_SPARKLE 1 CACHE BOOLEAN "Enable Sparkle")
59 ADD_DEFINITIONS(-DENABLE_SPARKLE=1)
60 MESSAGE("Sparkle is here:" ${SPARKLE_FRAMEWORK})
61 FIND_PATH(SPARKLE_INCLUDE_DIR Sparkle.h HINTS ${SPARKLE_FRAMEWORK}/Headers)
Alexandre Lision3d4143a2015-06-10 14:27:49 -040062 # we need to copy the public key to check the updates
63 SET(PUBLIC_KEY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/sparkle/dsa_pub.pem")
64 IF(EXISTS ${PUBLIC_KEY_PATH})
65 MESSAGE(STATUS "Looking for Public Key - found")
66 SET_SOURCE_FILES_PROPERTIES(${PUBLIC_KEY_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
67 SET(PUBLIC_KEY ${PUBLIC_KEY_PATH})
68 ELSE(EXISTS ${PUBLIC_KEY_PATH})
69 MESSAGE(WARNING "Looking for Public Key - not found")
70 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")
71 ENDIF(EXISTS ${PUBLIC_KEY_PATH})
72 ELSE()
Alexandre Lisionfba8f792016-03-08 13:45:51 -050073 MESSAGE(WARNING "Sparkle framework not found, disabling it... to build it see README")
74 SET(ENABLE_SPARKLE 0 CACHE BOOLEAN "Enable Sparkle")
Alexandre Lision3d4143a2015-06-10 14:27:49 -040075 ENDIF(EXISTS ${SPARKLE_FRAMEWORK})
76ENDIF(NOT (${ENABLE_SPARKLE} MATCHES false))
77
Alexandre Lision10e86dd2015-01-19 16:11:14 -050078INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS})
Alexandre Lision3b0bd332015-03-15 18:43:07 -040079INCLUDE_DIRECTORIES(SYSTEM ${Qt5MacExtras_INCLUDE_DIRS})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050080INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
81INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR})
82INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
Anthony Léonard14e7bf32017-06-08 08:13:16 -040083INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050084
Alexandre Lision04946de2016-03-08 09:31:38 -050085SET(CMAKE_MACOSX_RPATH ON)
86SET(CMAKE_SKIP_BUILD_RPATH FALSE)
87SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
88SET(CMAKE_INSTALL_RPATH "${CMAKE_CURRENT_SOURCE_DIR}")
89SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
90
Alexandre Lision3d4143a2015-06-10 14:27:49 -040091MESSAGE("LRC is here:" ${LIB_RING_CLIENT_INCLUDE_DIR})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050092SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
93
94#Files to compile
Alexandre Lision4ba18022015-04-23 12:17:40 -040095SET(ringclient_CONTROLLERS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040096 src/QNSTreeController.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040097 src/QNSTreeController.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040098 src/CurrentCallVC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040099 src/CurrentCallVC.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400100 src/GeneralPrefsVC.mm
101 src/RingWizardWC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -0400102 src/RingWizardWC.h
103 src/RingWindowController.mm
104 src/RingWindowController.h
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400105 src/PreferencesWC.mm
106 src/PreferencesWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400107 src/AccGeneralVC.mm
108 src/AccGeneralVC.h
Alexandre Lisione4d61cb2016-02-10 09:26:24 -0500109 src/AccMediaVC.mm
110 src/AccMediaVC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400111 src/AccRingVC.mm
112 src/AccRingVC.h
113 src/AccAdvancedVC.mm
114 src/AccAdvancedVC.h
115 src/AccSecurityVC.mm
116 src/AccSecurityVC.h
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400117 src/CertificateWC.mm
118 src/CertificateWC.h
Alexandre Lision886cde12016-10-25 17:39:49 -0400119 src/BackupAccountWC.mm
120 src/BackupAccountWC.h
121 src/RestoreAccountWC.mm
122 src/RestoreAccountWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400123 src/AudioPrefsVC.mm
124 src/AudioPrefsVC.h
125 src/AccountsVC.mm
126 src/AccountsVC.h
127 src/VideoPrefsVC.mm
128 src/VideoPrefsVC.h
129 src/GeneralPrefsVC.h
130 src/HistoryVC.mm
131 src/HistoryVC.h
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400132 src/PersonsVC.mm
Alexandre Lision58cab672015-06-09 15:25:40 -0400133 src/PersonsVC.h
134 src/ChatVC.mm
Alexandre Lision2db8f472015-07-22 15:05:46 -0400135 src/ChatVC.h
136 src/PersonLinkerVC.mm
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400137 src/PersonLinkerVC.h
138 src/SmartViewVC.mm
Alexandre Lision883719f2015-10-22 17:37:45 -0400139 src/SmartViewVC.h
140 src/BrokerVC.mm
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500141 src/BrokerVC.h
142 src/ConversationVC.mm
Loïc Siret31d5cc02016-09-08 14:38:24 -0400143 src/ConversationVC.h
144 src/LoadingWCDelegate.h
145 src/AbstractLoadingWC.h
146 src/AbstractLoadingWC.mm
Alexandre Lision45f1f542016-08-25 15:16:17 -0400147 src/AccDevicesVC.mm
148 src/AccDevicesVC.h
149 src/ExportPasswordWC.mm
150 src/ExportPasswordWC.h
Alexandre Lision624b1a82016-09-11 19:29:01 -0400151 src/MigrateRingAccountsWC.mm
152 src/MigrateRingAccountsWC.h
Loïc Siretfcb4ca62016-09-21 17:12:09 -0400153 src/RingWizardChooseVC.h
154 src/RingWizardChooseVC.mm
155 src/RingWizardLinkAccountVC.h
156 src/RingWizardLinkAccountVC.mm
157 src/RingWizardNewAccountVC.mm
158 src/RingWizardNewAccountVC.h
Alexandre Lision62005312016-01-28 15:55:16 -0500159 src/DialpadWC.mm
160 src/DialpadWC.h
Alexandre Lision34079c22016-10-31 16:14:02 -0400161 src/RegisterNameWC.mm
162 src/RegisterNameWC.h
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400163 src/ChooseAccountVC.h
164 src/ChooseAccountVC.mm
Kateryna Kostiukdb1f3a12017-04-24 12:08:28 -0400165 src/ContactRequestsListVC.h
166 src/ContactRequestsListVC.mm
167 src/ContactRequestVC.h
168 src/ContactRequestVC.mm
Kateryna Kostiuk77e93902017-05-30 16:38:11 -0400169 src/AccBannedContactsVC.h
170 src/AccBannedContactsVC.mm
Kateryna Kostiuk58276bc2017-06-07 08:50:48 -0400171 src/MessagesVC.h
172 src/MessagesVC.mm
Anthony Léonard1f70f722017-10-02 10:53:32 -0400173 src/PasswordChangeWC.h
174 src/PasswordChangeWC.mm
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
190 src/views/RingIDField.mm
Alexandre Lision4e280d62015-09-09 15:56:30 -0400191 src/views/RingIDField.h
192 src/views/HoverTableRowView.mm
193 src/views/HoverTableRowView.h
194 src/views/NSColor+RingTheme.mm
195 src/views/NSColor+RingTheme.h
Alexandre Lision261f1b92016-04-04 12:35:34 -0400196 src/views/NSImage+Extensions.mm
197 src/views/NSImage+Extensions.h
Alexandre Lision4e280d62015-09-09 15:56:30 -0400198 src/views/ContextualTableCellView.mm
Alexandre Lision6da08a82015-09-24 17:09:24 -0400199 src/views/ContextualTableCellView.h
200 src/views/IconButton.h
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500201 src/views/IconButton.mm
Alexandre Lisione77f6f92016-04-17 23:39:39 -0400202 src/views/BackgroundView.h
203 src/views/BackgroundView.mm
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500204 src/views/IMTableCellView.h
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400205 src/views/IMTableCellView.mm
206 src/views/AccountMenuItemView.h
Kateryna Kostiuka9e5c712017-05-15 16:46:16 -0400207 src/views/AccountMenuItemView.mm
Kateryna Kostiukd9039e92017-05-24 14:29:54 -0400208 src/views/RoundedTextField.h
Kateryna Kostiuk58276bc2017-06-07 08:50:48 -0400209 src/views/RoundedTextField.mm
210 src/views/MessageBubbleView.h
211 src/views/MessageBubbleView.mm
Kateryna Kostiuk64d025a2017-07-14 11:30:44 -0400212 src/views/SendMessageCell.h
213 src/views/SendMessageCell.mm
214 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
230 src/AccountSelectionManager.mm)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400231
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500232
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400233SET(ringclient_XIBS
234 MainMenu
235 RingWindow
236 CurrentCall
237 GeneralPrefs
238 Accounts
239 AccGeneral
Alexandre Lisione4d61cb2016-02-10 09:26:24 -0500240 AccMedia
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400241 AccRing
242 AccAdvanced
243 AccSecurity
244 AudioPrefs
245 VideoPrefs
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400246 PreferencesWindow
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400247 RingWizard
Alexandre Lision2db8f472015-07-22 15:05:46 -0400248 CertificateWindow
Alexandre Lision886cde12016-10-25 17:39:49 -0400249 BackupAccountWindow
250 RestoreAccountWindow
Alexandre Lision45f1f542016-08-25 15:16:17 -0400251 ExportPasswordWindow
Alexandre Lision624b1a82016-09-11 19:29:01 -0400252 MigrateRingAccountsWindow
Alexandre Lision883719f2015-10-22 17:37:45 -0400253 PersonLinker
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500254 Broker
Alexandre Lision45f1f542016-08-25 15:16:17 -0400255 Conversation
Loïc Siretfcb4ca62016-09-21 17:12:09 -0400256 AccDevices
257 RingWizardLinkAccount
258 RingWizardNewAccount
Alexandre Lision62005312016-01-28 15:55:16 -0500259 RingWizardChoose
260 Dialpad
Alexandre Lision34079c22016-10-31 16:14:02 -0400261 RegisterNameWindow
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400262 ChooseAccount
263 AccountMenuItemView
Kateryna Kostiukdb1f3a12017-04-24 12:08:28 -0400264 ContactRequestList
265 ContactRequest
Kateryna Kostiuk77e93902017-05-30 16:38:11 -0400266 AccBannedContacts
Anthony Léonard1f70f722017-10-02 10:53:32 -0400267 PasswordChange
Alexandre Lision62005312016-01-28 15:55:16 -0500268)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500269
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500270# Icons
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400271# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500272SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
273SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500274 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500275
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400276SET(ring_ICONS
277${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_name.png
Alexandre Lisione77f6f92016-04-17 23:39:39 -0400278${CMAKE_CURRENT_SOURCE_DIR}/data/background-light.png
279${CMAKE_CURRENT_SOURCE_DIR}/data/background-dark.png
Alexandre Lision34607032016-02-08 16:16:49 -0500280${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_blue.png
Alexandre Lision6da08a82015-09-24 17:09:24 -0400281${CMAKE_CURRENT_SOURCE_DIR}/data/background_tile.png
Alexandre Lision62005312016-01-28 15:55:16 -0500282${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_more.png
283${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_dialpad.png
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400284${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500285${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_arrow_back.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500286${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
287${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
Alexandre Lisiond18fa272015-06-15 11:18:03 -0400288${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hangup.png
289${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hold.png
290${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_holdoff.png
291${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_video.png
292${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_audio.png
293${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_chat.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500294${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lisionf23ec5a2015-07-16 11:24:06 -0400295${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_quality.png
Alexandre Lision266fca02015-09-28 14:47:05 -0400296${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_record.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400297${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_received.png
298${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_missed.png
299${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_made.png
Alexandre Lision883719f2015-10-22 17:37:45 -0400300${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_transfer.png
Alexandre Lision89edc6a2015-11-09 11:30:47 -0500301${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_add_participant.png
302${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_merge_calls.png
Alexandre Lisiond5229f32015-11-16 11:17:41 -0500303${CMAKE_CURRENT_SOURCE_DIR}/data/default_user_icon.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500304${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_send.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500305${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
Alexandre Lision2db8f472015-07-22 15:05:46 -0400306${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_person_add.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400307${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_persons.png
308${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_history.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500309${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
310${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lisionf46768f2016-04-18 09:56:26 -0400311${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_delete.png
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400312${CMAKE_CURRENT_SOURCE_DIR}/data/dark/qrcode.png
Kateryna Kostiukdb1f3a12017-04-24 12:08:28 -0400313${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png
314${CMAKE_CURRENT_SOURCE_DIR}/data/dark/pending_contact_request.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400315
Alexandre Lision392ee722015-01-23 16:27:10 -0500316SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500317 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400318SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
319 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500320
Alexandre Lision88ee6cc2016-05-05 14:32:43 -0400321# package ringtones
322IF(NOT IS_DIRECTORY ${RINGTONE_DIR})
323 MESSAGE("No ringtone folder provided, use RINGTONE_DIR to specify one")
324 SET(RINGTONE_DIR ${CMAKE_INSTALL_PREFIX}/share/ring/ringtones)
325 MESSAGE("Trying ${RINGTONE_DIR}")
326ENDIF()
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500327
Alexandre Lision88ee6cc2016-05-05 14:32:43 -0400328IF(IS_DIRECTORY ${RINGTONE_DIR})
329 FILE(GLOB RINGTONE_LIST ${RINGTONE_DIR}/*)
330 FOREACH(RINGTONE ${RINGTONE_LIST})
331 MESSAGE("Adding ringtone ${RINGTONE}")
332 GET_FILENAME_COMPONENT(FILE_PATH ${RINGTONE} ABSOLUTE)
333 SET(ring_RINGTONES ${ring_RINGTONES} ${FILE_PATH})
334 ENDFOREACH()
335ELSE()
336 MESSAGE("${RINGTONE_DIR} does not exist or is not readable")
337ENDIF()
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500338
339SET_SOURCE_FILES_PROPERTIES(${ring_RINGTONES}
340 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/ringtones)
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400341
342# Check which translations are found for LRC
343SET(LRC_TRANSLATIONS_PATH ${CMAKE_INSTALL_PREFIX}/share/libringclient/translations)
344FILE(GLOB QM_LIST ${LRC_TRANSLATIONS_PATH}/*.qm)
345
346FOREACH(QM_FILE ${QM_LIST})
347 # Extract country code from filename
348 GET_FILENAME_COMPONENT(FILENAME ${QM_FILE} NAME_WE)
349 STRING(REGEX REPLACE "^lrc_" "" LANG ${FILENAME})
350
351 SET_SOURCE_FILES_PROPERTIES(${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm
352 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/QtTranslations)
353 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
354 "${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm")
Alexandre Lision922380d2015-09-15 10:25:17 -0400355ENDFOREACH()
356
357# Check which translations are found for the client
358FILE(GLOB LPROJ_LIST ui/*.lproj)
359
360FOREACH(LPROJ ${LPROJ_LIST})
361 # Extract country code from <lang>.lproj folder name
362 GET_FILENAME_COMPONENT(LANG ${LPROJ} NAME_WE)
363 IF(EXISTS "${LPROJ}/Localizable.strings")
364 MESSAGE("Localizable:" ${LANG})
365 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/Localizable.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500366 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400367
368 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
369 ${LPROJ}/Localizable.strings)
370 ENDIF()
371 FOREACH(xib ${ringclient_XIBS})
372 IF(EXISTS "${LPROJ}/${xib}.strings")
373 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/${xib}.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500374 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400375
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500376 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
Alexandre Lision922380d2015-09-15 10:25:17 -0400377 ${LPROJ}/${xib}.strings)
378 ENDIF()
379 ENDFOREACH()
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400380
381 # Regroup those files under a .lproj folder
382 SOURCE_GROUP("Resources\\${LANG}.lproj" FILES
383 ${LOCALIZED_${LANG}})
384 # Add them to the list of files to package
385 SET(LOCALIZABLE_FILES ${LOCALIZABLE_FILES} ${LOCALIZED_${LANG}})
386ENDFOREACH()
387
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400388# append '.xib' extension before linking xib files in executable
389FOREACH(xib ${ringclient_XIBS})
Alexandre Lision922380d2015-09-15 10:25:17 -0400390 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/Base.lproj/${xib}.xib)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400391ENDFOREACH()
392
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400393SET(TO_ADD
Alexandre Lision4ba18022015-04-23 12:17:40 -0400394 ${ringclient_CONTROLLERS}
395 ${ringclient_BACKENDS}
396 ${ringclient_VIEWS}
397 ${ringclient_OTHERS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400398 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400399 ${LOCALIZABLE_FILES}
Alexandre Lision392ee722015-01-23 16:27:10 -0500400 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400401 Credits.rtf
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500402 ${ring_ICONS}
403 ${ring_RINGTONES})
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500404
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400405IF(ENABLE_SPARKLE)
406 SET( TO_ADD ${TO_ADD} ${PUBLIC_KEY} ${SPARKLE_FRAMEWORK})
407ENDIF(ENABLE_SPARKLE)
408
409ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE ${TO_ADD})
410
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400411ADD_DEPENDENCIES(${PROJ_NAME} libqrencode)
412
Alexandre Lision4ba18022015-04-23 12:17:40 -0400413# Follow Xcode hierarchy principles
414SOURCE_GROUP("Controllers" FILES ${ringclient_CONTROLLERS})
415SOURCE_GROUP("Backends" FILES ${ringclient_BACKENDS})
416SOURCE_GROUP("CustomViews" FILES ${ringclient_VIEWS})
417SOURCE_GROUP("Classes" FILES ${ringclient_OTHERS})
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400418SOURCE_GROUP("Resources\\Interface Builder" FILES
419 ${ringclient_XIBS_FOR_EXECUTABLE})
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500420SOURCE_GROUP("Resources\\ringtones" FILES ${ring_RINGTONES})
Alexandre Lision4ba18022015-04-23 12:17:40 -0400421
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400422IF(ENABLE_SPARKLE)
423 SOURCE_GROUP("Frameworks" FILES ${SPARKLE_FRAMEWORK})
424ENDIF(ENABLE_SPARKLE)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400425
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500426TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500427 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500428 ${Qt5Core_LIBRARIES}
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400429 ${Qt5MacExtras_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500430 ${Qt5Widgets_LIBRARIES}
Anthony Léonard14e7bf32017-06-08 08:13:16 -0400431 ${OPENGL_LIBRARIES}
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400432 -lqrencode
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500433)
434
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400435IF(ENABLE_SPARKLE)
436 TARGET_LINK_LIBRARIES(${PROJ_NAME} ${SPARKLE_FRAMEWORK})
437ENDIF(ENABLE_SPARKLE)
438
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400439SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
440SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
441SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
442SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
443SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
Alexandre Lisionb9f3f942016-07-23 14:29:33 -0400444SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework SystemConfiguration")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400445
446# These variables are specific to our plist and are NOT standard CMake variables
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400447SET(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
448SET(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500449
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500450SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
451 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
452 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Alexandre Lision7208b762015-08-13 12:39:49 -0400453 MACOSX_BUNDLE_SHORT_VERSION_STRING "${RING_VERSION_NAME}"
454 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION_NAME} Nightly"
455 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400456 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500457 MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development"
458 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
459 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
460 )
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400461
462# Make sure we can find the 'ibtool' program. If we can NOT find it we
463# skip generation of this project
464FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
465IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
466 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
467 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
468endif()
469
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400470# Compile the .xib files using the 'ibtool' program with the destination being the app package
471FOREACH(xib ${ringclient_XIBS})
472 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
473 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
Alexandre Lision922380d2015-09-15 10:25:17 -0400474 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/Base.lproj/${xib}.nib
475 ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib
476 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400477
478ENDFOREACH()
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400479
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400480SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400481
482SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app")
483
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400484INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime)
485
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400486SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400487#--------------------------------------------------------------------------------
488# Install needed Qt plugins by copying directories from the qt installation
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400489
490
491#MESSAGE("GUI====")
492#foreach(plugin ${Qt5Gui_PLUGINS})
493# message("Plugin ${plugin} is at location ${_loc}")
494#endforeach()
495
496LIST(APPEND QT_PLUGINS_IMAGEFORMAT Qt5::QTgaPlugin
497 Qt5::QGifPlugin
498 Qt5::QICNSPlugin
499 Qt5::QICOPlugin
500 Qt5::QJpegPlugin
Alexandre Lision8ac5c842017-03-18 08:45:31 +0100501 Qt5::QTiffPlugin)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400502
503# we need two plugin directories platform and imageformats
504GET_TARGET_PROPERTY(_loc Qt5::QCocoaIntegrationPlugin LOCATION)
505INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/platforms COMPONENT Runtime)
506LIST(APPEND QT_PLUGINS Qt5::QCocoaIntegrationPlugin)
507
508FOREACH(plugin ${QT_PLUGINS_IMAGEFORMAT})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400509 GET_TARGET_PROPERTY(_loc ${plugin} LOCATION)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400510 INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/imageformats COMPONENT Runtime)
511 LIST(APPEND QT_PLUGINS ${plugin})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400512ENDFOREACH()
513
514# directories to look for dependencies
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400515SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib
516 ${QT_LIB_DIR}
517 ${CMAKE_CURRENT_SOURCE_DIR}/sparkle
518 ${CMAKE_CURRENT_SOURCE_DIR}/libqrencode/lib)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400519
520INSTALL(CODE "
521 file(GLOB_RECURSE QTPLUGINS
522 \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
523 include(BundleUtilities)
524 SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
525 fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
526 " COMPONENT Runtime)
527
528#================================
529# Packaging
530#================================
531SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME})
532SET( CPACK_PACKAGE_NAME ${PROJ_NAME} )
533SET( CPACK_PACKAGE_CONTACT "Alexandre Lision")
534SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux")
535SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION})
536SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION})
537SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION})
538SET(CPACK_BINARY_DRAGNDROP ON)
539SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
540INCLUDE(CPack)