blob: d3d77c2b99ccad19401de7c8149803085d3587a3 [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
Alexandre Lision53302c92016-11-03 14:04:03 -040014SET(RING_VERSION_NAME "Gaston Miron Beta 2")
Alexandre Lisionbb306132015-03-27 11:30:02 -040015
Alexandre Lision71b41512016-05-02 13:53:44 -040016MESSAGE("Building Ring version - " ${RING_VERSION_NAME} " " ${RING_VERSION})
Alexandre Lision9fe374b2016-01-06 10:17:31 -050017SET(PROJ_COPYRIGHT " © 2015-2016 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)
27
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -040028EXECUTE_PROCESS(COMMAND git submodule update --init
29 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
30
31INCLUDE(ExternalProject)
32ExternalProject_Add(libqrencode
33 GIT_SUBMODULES libqrencode
34 SOURCE_DIR ${CMAKE_SOURCE_DIR}/libqrencode
35 BINARY_DIR ${CMAKE_SOURCE_DIR}/libqrencode
36 INSTALL_DIR ${CMAKE_SOURCE_DIR}/libqrencode
37 CONFIGURE_COMMAND
38 #hack to fix incomplete config.h on first run
39 COMMAND ./autogen.sh
40 COMMAND ./autogen.sh && ./configure --prefix=${CMAKE_SOURCE_DIR}/libqrencode
41 BUILD_COMMAND make
42 INSTALL_COMMAND make install)
43
44INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/libqrencode/include)
45LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/libqrencode/lib)
46
Alexandre Lision3d4143a2015-06-10 14:27:49 -040047IF(NOT (${ENABLE_SPARKLE} MATCHES false))
48 MESSAGE("Sparkle auto-update enabled")
49
50 # find_library searches in /Library/Frameworks by default
51 # We add an hint to our custom location
52
53 FIND_LIBRARY(SPARKLE_FRAMEWORK
54 NAMES Sparkle
55 HINTS ${CMAKE_CURRENT_SOURCE_DIR}/sparkle)
56 IF(EXISTS ${SPARKLE_FRAMEWORK})
57 SET(ENABLE_SPARKLE 1 CACHE BOOLEAN "Enable Sparkle")
58 ADD_DEFINITIONS(-DENABLE_SPARKLE=1)
59 MESSAGE("Sparkle is here:" ${SPARKLE_FRAMEWORK})
60 FIND_PATH(SPARKLE_INCLUDE_DIR Sparkle.h HINTS ${SPARKLE_FRAMEWORK}/Headers)
Alexandre Lision3d4143a2015-06-10 14:27:49 -040061 # we need to copy the public key to check the updates
62 SET(PUBLIC_KEY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/sparkle/dsa_pub.pem")
63 IF(EXISTS ${PUBLIC_KEY_PATH})
64 MESSAGE(STATUS "Looking for Public Key - found")
65 SET_SOURCE_FILES_PROPERTIES(${PUBLIC_KEY_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
66 SET(PUBLIC_KEY ${PUBLIC_KEY_PATH})
67 ELSE(EXISTS ${PUBLIC_KEY_PATH})
68 MESSAGE(WARNING "Looking for Public Key - not found")
69 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")
70 ENDIF(EXISTS ${PUBLIC_KEY_PATH})
71 ELSE()
Alexandre Lisionfba8f792016-03-08 13:45:51 -050072 MESSAGE(WARNING "Sparkle framework not found, disabling it... to build it see README")
73 SET(ENABLE_SPARKLE 0 CACHE BOOLEAN "Enable Sparkle")
Alexandre Lision3d4143a2015-06-10 14:27:49 -040074 ENDIF(EXISTS ${SPARKLE_FRAMEWORK})
75ENDIF(NOT (${ENABLE_SPARKLE} MATCHES false))
76
Alexandre Lision10e86dd2015-01-19 16:11:14 -050077INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS})
Alexandre Lision3b0bd332015-03-15 18:43:07 -040078INCLUDE_DIRECTORIES(SYSTEM ${Qt5MacExtras_INCLUDE_DIRS})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050079INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
80INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR})
81INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
82
Alexandre Lision04946de2016-03-08 09:31:38 -050083SET(CMAKE_MACOSX_RPATH ON)
84SET(CMAKE_SKIP_BUILD_RPATH FALSE)
85SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
86SET(CMAKE_INSTALL_RPATH "${CMAKE_CURRENT_SOURCE_DIR}")
87SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
88
Alexandre Lision3d4143a2015-06-10 14:27:49 -040089MESSAGE("LRC is here:" ${LIB_RING_CLIENT_INCLUDE_DIR})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050090SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
91
92#Files to compile
Alexandre Lision4ba18022015-04-23 12:17:40 -040093SET(ringclient_CONTROLLERS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040094 src/QNSTreeController.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040095 src/QNSTreeController.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040096 src/CurrentCallVC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040097 src/CurrentCallVC.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040098 src/GeneralPrefsVC.mm
99 src/RingWizardWC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -0400100 src/RingWizardWC.h
101 src/RingWindowController.mm
102 src/RingWindowController.h
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400103 src/PreferencesWC.mm
104 src/PreferencesWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400105 src/AccGeneralVC.mm
106 src/AccGeneralVC.h
Alexandre Lisione4d61cb2016-02-10 09:26:24 -0500107 src/AccMediaVC.mm
108 src/AccMediaVC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400109 src/AccRingVC.mm
110 src/AccRingVC.h
111 src/AccAdvancedVC.mm
112 src/AccAdvancedVC.h
113 src/AccSecurityVC.mm
114 src/AccSecurityVC.h
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400115 src/CertificateWC.mm
116 src/CertificateWC.h
Alexandre Lision886cde12016-10-25 17:39:49 -0400117 src/BackupAccountWC.mm
118 src/BackupAccountWC.h
119 src/RestoreAccountWC.mm
120 src/RestoreAccountWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400121 src/AudioPrefsVC.mm
122 src/AudioPrefsVC.h
123 src/AccountsVC.mm
124 src/AccountsVC.h
125 src/VideoPrefsVC.mm
126 src/VideoPrefsVC.h
127 src/GeneralPrefsVC.h
128 src/HistoryVC.mm
129 src/HistoryVC.h
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400130 src/PersonsVC.mm
Alexandre Lision58cab672015-06-09 15:25:40 -0400131 src/PersonsVC.h
132 src/ChatVC.mm
Alexandre Lision2db8f472015-07-22 15:05:46 -0400133 src/ChatVC.h
134 src/PersonLinkerVC.mm
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400135 src/PersonLinkerVC.h
136 src/SmartViewVC.mm
Alexandre Lision883719f2015-10-22 17:37:45 -0400137 src/SmartViewVC.h
138 src/BrokerVC.mm
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500139 src/BrokerVC.h
140 src/ConversationVC.mm
Loïc Siret31d5cc02016-09-08 14:38:24 -0400141 src/ConversationVC.h
142 src/LoadingWCDelegate.h
143 src/AbstractLoadingWC.h
144 src/AbstractLoadingWC.mm
Alexandre Lision45f1f542016-08-25 15:16:17 -0400145 src/AccDevicesVC.mm
146 src/AccDevicesVC.h
147 src/ExportPasswordWC.mm
148 src/ExportPasswordWC.h
Alexandre Lision624b1a82016-09-11 19:29:01 -0400149 src/MigrateRingAccountsWC.mm
150 src/MigrateRingAccountsWC.h
Loïc Siretfcb4ca62016-09-21 17:12:09 -0400151 src/RingWizardChooseVC.h
152 src/RingWizardChooseVC.mm
153 src/RingWizardLinkAccountVC.h
154 src/RingWizardLinkAccountVC.mm
155 src/RingWizardNewAccountVC.mm
156 src/RingWizardNewAccountVC.h
Alexandre Lision62005312016-01-28 15:55:16 -0500157 src/DialpadWC.mm
158 src/DialpadWC.h
Alexandre Lision34079c22016-10-31 16:14:02 -0400159 src/RegisterNameWC.mm
160 src/RegisterNameWC.h
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400161 src/ChooseAccountVC.h
162 src/ChooseAccountVC.mm
Kateryna Kostiukdb1f3a12017-04-24 12:08:28 -0400163 src/ContactRequestsListVC.h
164 src/ContactRequestsListVC.mm
165 src/ContactRequestVC.h
166 src/ContactRequestVC.mm
Kateryna Kostiuk0ba1baf2017-05-12 16:51:27 -0400167 src/SendContactRequestWC.h
168 src/SendContactRequestWC.mm
Kateryna Kostiuk77e93902017-05-30 16:38:11 -0400169 src/AccBannedContactsVC.h
170 src/AccBannedContactsVC.mm
Loïc Siret31d5cc02016-09-08 14:38:24 -0400171)
Alexandre Lision74dd47f2015-04-14 13:47:42 -0400172
Alexandre Lision4ba18022015-04-23 12:17:40 -0400173SET(ringclient_BACKENDS
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400174 src/backends/AddressBookBackend.mm
Alexandre Lision66643432015-06-04 11:59:36 -0400175 src/backends/AddressBookBackend.h)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400176
177SET(ringclient_VIEWS
178 src/views/CallView.mm
179 src/views/CallView.h
Alexandre Lisionf47a2562015-06-15 15:48:29 -0400180 src/views/ITProgressIndicator.mm
181 src/views/ITProgressIndicator.h
Alexandre Lision2db8f472015-07-22 15:05:46 -0400182 src/views/RingOutlineView.mm
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400183 src/views/RingOutlineView.h
184 src/views/RingIDField.mm
Alexandre Lision4e280d62015-09-09 15:56:30 -0400185 src/views/RingIDField.h
186 src/views/HoverTableRowView.mm
187 src/views/HoverTableRowView.h
188 src/views/NSColor+RingTheme.mm
189 src/views/NSColor+RingTheme.h
Alexandre Lision261f1b92016-04-04 12:35:34 -0400190 src/views/NSImage+Extensions.mm
191 src/views/NSImage+Extensions.h
Alexandre Lision4e280d62015-09-09 15:56:30 -0400192 src/views/ContextualTableCellView.mm
Alexandre Lision6da08a82015-09-24 17:09:24 -0400193 src/views/ContextualTableCellView.h
194 src/views/IconButton.h
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500195 src/views/IconButton.mm
Alexandre Lisione77f6f92016-04-17 23:39:39 -0400196 src/views/BackgroundView.h
197 src/views/BackgroundView.mm
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500198 src/views/IMTableCellView.h
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400199 src/views/IMTableCellView.mm
200 src/views/AccountMenuItemView.h
Kateryna Kostiuka9e5c712017-05-15 16:46:16 -0400201 src/views/AccountMenuItemView.mm
202 src/views/ContactRequestCellView.h
Kateryna Kostiukd9039e92017-05-24 14:29:54 -0400203 src/views/ContactRequestCellView.mm
204 src/views/RoundedTextField.h
205 src/views/RoundedTextField.mm)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400206
207SET(ringclient_OTHERS
208 src/main.mm
209 src/AppDelegate.mm
210 src/AppDelegate.h
Alexandre Lision9fe374b2016-01-06 10:17:31 -0500211 src/Constants.h
Alexandre Lision83180df2016-01-18 11:32:20 -0500212 src/INDSequentialTextSelectionManager.mm
213 src/INDSequentialTextSelectionManager.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400214 src/delegates/ImageManipulationDelegate.mm
Kateryna Kostiuka16c9862017-05-03 13:30:14 -0400215 src/delegates/ImageManipulationDelegate.h
216 src/AccountSelectionManager.h
217 src/AccountSelectionManager.mm)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400218
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500219
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400220SET(ringclient_XIBS
221 MainMenu
222 RingWindow
223 CurrentCall
224 GeneralPrefs
225 Accounts
226 AccGeneral
Alexandre Lisione4d61cb2016-02-10 09:26:24 -0500227 AccMedia
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400228 AccRing
229 AccAdvanced
230 AccSecurity
231 AudioPrefs
232 VideoPrefs
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400233 PreferencesWindow
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400234 RingWizard
Alexandre Lision2db8f472015-07-22 15:05:46 -0400235 CertificateWindow
Alexandre Lision886cde12016-10-25 17:39:49 -0400236 BackupAccountWindow
237 RestoreAccountWindow
Alexandre Lision45f1f542016-08-25 15:16:17 -0400238 ExportPasswordWindow
Alexandre Lision624b1a82016-09-11 19:29:01 -0400239 MigrateRingAccountsWindow
Alexandre Lision883719f2015-10-22 17:37:45 -0400240 PersonLinker
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500241 Broker
Alexandre Lision45f1f542016-08-25 15:16:17 -0400242 Conversation
Loïc Siretfcb4ca62016-09-21 17:12:09 -0400243 AccDevices
244 RingWizardLinkAccount
245 RingWizardNewAccount
Alexandre Lision62005312016-01-28 15:55:16 -0500246 RingWizardChoose
247 Dialpad
Alexandre Lision34079c22016-10-31 16:14:02 -0400248 RegisterNameWindow
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400249 ChooseAccount
250 AccountMenuItemView
Kateryna Kostiukdb1f3a12017-04-24 12:08:28 -0400251 ContactRequestList
252 ContactRequest
Kateryna Kostiuk0ba1baf2017-05-12 16:51:27 -0400253 SendContactRequest
Kateryna Kostiuk77e93902017-05-30 16:38:11 -0400254 AccBannedContacts
Alexandre Lision62005312016-01-28 15:55:16 -0500255)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500256
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500257# Icons
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400258# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500259SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
260SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500261 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500262
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400263SET(ring_ICONS
264${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_name.png
Alexandre Lisione77f6f92016-04-17 23:39:39 -0400265${CMAKE_CURRENT_SOURCE_DIR}/data/background-light.png
266${CMAKE_CURRENT_SOURCE_DIR}/data/background-dark.png
Alexandre Lision34607032016-02-08 16:16:49 -0500267${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_blue.png
Alexandre Lision6da08a82015-09-24 17:09:24 -0400268${CMAKE_CURRENT_SOURCE_DIR}/data/background_tile.png
Alexandre Lision62005312016-01-28 15:55:16 -0500269${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_more.png
270${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_dialpad.png
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400271${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500272${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_arrow_back.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500273${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
274${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
Alexandre Lisiond18fa272015-06-15 11:18:03 -0400275${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hangup.png
276${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hold.png
277${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_holdoff.png
278${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_video.png
279${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_audio.png
280${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_chat.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500281${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lisionf23ec5a2015-07-16 11:24:06 -0400282${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_quality.png
Alexandre Lision266fca02015-09-28 14:47:05 -0400283${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_record.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400284${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_received.png
285${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_missed.png
286${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_made.png
Alexandre Lision883719f2015-10-22 17:37:45 -0400287${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_transfer.png
Alexandre Lision89edc6a2015-11-09 11:30:47 -0500288${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_add_participant.png
289${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_merge_calls.png
Alexandre Lisiond5229f32015-11-16 11:17:41 -0500290${CMAKE_CURRENT_SOURCE_DIR}/data/default_user_icon.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500291${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_send.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500292${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
Alexandre Lision2db8f472015-07-22 15:05:46 -0400293${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_person_add.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400294${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_persons.png
295${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_history.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500296${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
297${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lisionf46768f2016-04-18 09:56:26 -0400298${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_delete.png
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400299${CMAKE_CURRENT_SOURCE_DIR}/data/dark/qrcode.png
Kateryna Kostiukdb1f3a12017-04-24 12:08:28 -0400300${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png
301${CMAKE_CURRENT_SOURCE_DIR}/data/dark/pending_contact_request.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400302
Alexandre Lision392ee722015-01-23 16:27:10 -0500303SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500304 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400305SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
306 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500307
Alexandre Lision88ee6cc2016-05-05 14:32:43 -0400308# package ringtones
309IF(NOT IS_DIRECTORY ${RINGTONE_DIR})
310 MESSAGE("No ringtone folder provided, use RINGTONE_DIR to specify one")
311 SET(RINGTONE_DIR ${CMAKE_INSTALL_PREFIX}/share/ring/ringtones)
312 MESSAGE("Trying ${RINGTONE_DIR}")
313ENDIF()
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500314
Alexandre Lision88ee6cc2016-05-05 14:32:43 -0400315IF(IS_DIRECTORY ${RINGTONE_DIR})
316 FILE(GLOB RINGTONE_LIST ${RINGTONE_DIR}/*)
317 FOREACH(RINGTONE ${RINGTONE_LIST})
318 MESSAGE("Adding ringtone ${RINGTONE}")
319 GET_FILENAME_COMPONENT(FILE_PATH ${RINGTONE} ABSOLUTE)
320 SET(ring_RINGTONES ${ring_RINGTONES} ${FILE_PATH})
321 ENDFOREACH()
322ELSE()
323 MESSAGE("${RINGTONE_DIR} does not exist or is not readable")
324ENDIF()
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500325
326SET_SOURCE_FILES_PROPERTIES(${ring_RINGTONES}
327 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/ringtones)
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400328
329# Check which translations are found for LRC
330SET(LRC_TRANSLATIONS_PATH ${CMAKE_INSTALL_PREFIX}/share/libringclient/translations)
331FILE(GLOB QM_LIST ${LRC_TRANSLATIONS_PATH}/*.qm)
332
333FOREACH(QM_FILE ${QM_LIST})
334 # Extract country code from filename
335 GET_FILENAME_COMPONENT(FILENAME ${QM_FILE} NAME_WE)
336 STRING(REGEX REPLACE "^lrc_" "" LANG ${FILENAME})
337
338 SET_SOURCE_FILES_PROPERTIES(${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm
339 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/QtTranslations)
340 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
341 "${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm")
Alexandre Lision922380d2015-09-15 10:25:17 -0400342ENDFOREACH()
343
344# Check which translations are found for the client
345FILE(GLOB LPROJ_LIST ui/*.lproj)
346
347FOREACH(LPROJ ${LPROJ_LIST})
348 # Extract country code from <lang>.lproj folder name
349 GET_FILENAME_COMPONENT(LANG ${LPROJ} NAME_WE)
350 IF(EXISTS "${LPROJ}/Localizable.strings")
351 MESSAGE("Localizable:" ${LANG})
352 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/Localizable.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500353 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400354
355 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
356 ${LPROJ}/Localizable.strings)
357 ENDIF()
358 FOREACH(xib ${ringclient_XIBS})
359 IF(EXISTS "${LPROJ}/${xib}.strings")
360 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/${xib}.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500361 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400362
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500363 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
Alexandre Lision922380d2015-09-15 10:25:17 -0400364 ${LPROJ}/${xib}.strings)
365 ENDIF()
366 ENDFOREACH()
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400367
368 # Regroup those files under a .lproj folder
369 SOURCE_GROUP("Resources\\${LANG}.lproj" FILES
370 ${LOCALIZED_${LANG}})
371 # Add them to the list of files to package
372 SET(LOCALIZABLE_FILES ${LOCALIZABLE_FILES} ${LOCALIZED_${LANG}})
373ENDFOREACH()
374
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400375# append '.xib' extension before linking xib files in executable
376FOREACH(xib ${ringclient_XIBS})
Alexandre Lision922380d2015-09-15 10:25:17 -0400377 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/Base.lproj/${xib}.xib)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400378ENDFOREACH()
379
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400380SET(TO_ADD
Alexandre Lision4ba18022015-04-23 12:17:40 -0400381 ${ringclient_CONTROLLERS}
382 ${ringclient_BACKENDS}
383 ${ringclient_VIEWS}
384 ${ringclient_OTHERS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400385 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400386 ${LOCALIZABLE_FILES}
Alexandre Lision392ee722015-01-23 16:27:10 -0500387 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400388 Credits.rtf
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500389 ${ring_ICONS}
390 ${ring_RINGTONES})
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500391
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400392IF(ENABLE_SPARKLE)
393 SET( TO_ADD ${TO_ADD} ${PUBLIC_KEY} ${SPARKLE_FRAMEWORK})
394ENDIF(ENABLE_SPARKLE)
395
396ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE ${TO_ADD})
397
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400398ADD_DEPENDENCIES(${PROJ_NAME} libqrencode)
399
Alexandre Lision4ba18022015-04-23 12:17:40 -0400400# Follow Xcode hierarchy principles
401SOURCE_GROUP("Controllers" FILES ${ringclient_CONTROLLERS})
402SOURCE_GROUP("Backends" FILES ${ringclient_BACKENDS})
403SOURCE_GROUP("CustomViews" FILES ${ringclient_VIEWS})
404SOURCE_GROUP("Classes" FILES ${ringclient_OTHERS})
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400405SOURCE_GROUP("Resources\\Interface Builder" FILES
406 ${ringclient_XIBS_FOR_EXECUTABLE})
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500407SOURCE_GROUP("Resources\\ringtones" FILES ${ring_RINGTONES})
Alexandre Lision4ba18022015-04-23 12:17:40 -0400408
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400409IF(ENABLE_SPARKLE)
410 SOURCE_GROUP("Frameworks" FILES ${SPARKLE_FRAMEWORK})
411ENDIF(ENABLE_SPARKLE)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400412
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500413TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500414 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500415 ${Qt5Core_LIBRARIES}
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400416 ${Qt5MacExtras_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500417 ${Qt5Widgets_LIBRARIES}
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400418 -lqrencode
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500419)
420
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400421IF(ENABLE_SPARKLE)
422 TARGET_LINK_LIBRARIES(${PROJ_NAME} ${SPARKLE_FRAMEWORK})
423ENDIF(ENABLE_SPARKLE)
424
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400425SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
426SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
427SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
428SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
429SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
Alexandre Lisionb9f3f942016-07-23 14:29:33 -0400430SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework SystemConfiguration")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400431
432# These variables are specific to our plist and are NOT standard CMake variables
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400433SET(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
434SET(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500435
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500436SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
437 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
438 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Alexandre Lision7208b762015-08-13 12:39:49 -0400439 MACOSX_BUNDLE_SHORT_VERSION_STRING "${RING_VERSION_NAME}"
440 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION_NAME} Nightly"
441 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400442 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500443 MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development"
444 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
445 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
446 )
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400447
448# Make sure we can find the 'ibtool' program. If we can NOT find it we
449# skip generation of this project
450FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
451IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
452 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
453 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
454endif()
455
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400456# Compile the .xib files using the 'ibtool' program with the destination being the app package
457FOREACH(xib ${ringclient_XIBS})
458 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
459 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
Alexandre Lision922380d2015-09-15 10:25:17 -0400460 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/Base.lproj/${xib}.nib
461 ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib
462 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400463
464ENDFOREACH()
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400465
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400466SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400467
468SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app")
469
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400470INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime)
471
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400472SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400473#--------------------------------------------------------------------------------
474# Install needed Qt plugins by copying directories from the qt installation
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400475
476
477#MESSAGE("GUI====")
478#foreach(plugin ${Qt5Gui_PLUGINS})
479# message("Plugin ${plugin} is at location ${_loc}")
480#endforeach()
481
482LIST(APPEND QT_PLUGINS_IMAGEFORMAT Qt5::QTgaPlugin
483 Qt5::QGifPlugin
484 Qt5::QICNSPlugin
485 Qt5::QICOPlugin
486 Qt5::QJpegPlugin
Alexandre Lision8ac5c842017-03-18 08:45:31 +0100487 Qt5::QTiffPlugin)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400488
489# we need two plugin directories platform and imageformats
490GET_TARGET_PROPERTY(_loc Qt5::QCocoaIntegrationPlugin LOCATION)
491INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/platforms COMPONENT Runtime)
492LIST(APPEND QT_PLUGINS Qt5::QCocoaIntegrationPlugin)
493
494FOREACH(plugin ${QT_PLUGINS_IMAGEFORMAT})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400495 GET_TARGET_PROPERTY(_loc ${plugin} LOCATION)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400496 INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/imageformats COMPONENT Runtime)
497 LIST(APPEND QT_PLUGINS ${plugin})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400498ENDFOREACH()
499
500# directories to look for dependencies
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400501SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib
502 ${QT_LIB_DIR}
503 ${CMAKE_CURRENT_SOURCE_DIR}/sparkle
504 ${CMAKE_CURRENT_SOURCE_DIR}/libqrencode/lib)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400505
506INSTALL(CODE "
507 file(GLOB_RECURSE QTPLUGINS
508 \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
509 include(BundleUtilities)
510 SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
511 fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
512 " COMPONENT Runtime)
513
514#================================
515# Packaging
516#================================
517SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME})
518SET( CPACK_PACKAGE_NAME ${PROJ_NAME} )
519SET( CPACK_PACKAGE_CONTACT "Alexandre Lision")
520SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux")
521SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION})
522SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION})
523SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION})
524SET(CPACK_BINARY_DRAGNDROP ON)
525SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
526INCLUDE(CPack)