blob: 087737f8238a3c27a111c48af7c470fa4bbae95c [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
Kateryna Kostiuk85a334e2018-12-03 15:54:19 -05007SET(PROJ_NAME Jami)
Kateryna Kostiukee7bbf52019-12-05 11:10:31 -05008ADD_DEFINITIONS(-DENABLE_LIBWRAP=true)
Kateryna Kostiuk5d10ee22018-05-16 10:09:05 -04009option(RELEASE_TYPE "RELEASE_TYPE" "website")
Alexandre Lision3d4143a2015-06-10 14:27:49 -040010
11# To build nighlies we need to update RING_VERSION with an optional command line arg
12IF("${RING_VERSION}" STREQUAL "")
Guillaume Roguez812d5502016-03-16 22:46:29 -040013 SET(RING_VERSION "1.0.0")
Alexandre Lision3d4143a2015-06-10 14:27:49 -040014ENDIF("${RING_VERSION}" STREQUAL "")
Kateryna Kostiuk5d10ee22018-05-16 10:09:05 -040015# if build for App Store version and build number should be incremented
16IF("${RELEASE_TYPE}" STREQUAL "AppStore")
kkostiuk3b874792021-05-24 10:27:52 -040017 SET(RING_VERSION_NAME "2.02")
Kateryna Kostiuk5d10ee22018-05-16 10:09:05 -040018ELSE()
kkostiuk3b874792021-05-24 10:27:52 -040019 SET(RING_VERSION_NAME "2.02")
Kateryna Kostiuk5d10ee22018-05-16 10:09:05 -040020ENDIF()
Alexandre Lisionbb306132015-03-27 11:30:02 -040021
Alexandre Lision71b41512016-05-02 13:53:44 -040022MESSAGE("Building Ring version - " ${RING_VERSION_NAME} " " ${RING_VERSION})
Sébastien Blin029ffa82019-01-02 17:43:48 -050023SET(PROJ_COPYRIGHT " © 2015-2019 Savoir-faire Linux \n GPLv3 https://www.gnu.org/copyleft/gpl.html")
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050024
Kateryna Kostiuka7b909c2020-10-19 11:46:26 -040025SET(CMAKE_CXX_STANDARD 17)
Anthony Léonard643a3902017-12-19 15:40:17 -050026
27ADD_DEFINITIONS("-stdlib=libc++ -fobjc-arc")
Alexandre Lision5855b6a2015-02-03 11:31:05 -050028
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050029PROJECT(${PROJ_NAME})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050030
Alexandre Lision10e86dd2015-01-19 16:11:14 -050031FIND_PACKAGE(Qt5Core REQUIRED)
Alexandre Lision3b0bd332015-03-15 18:43:07 -040032FIND_PACKAGE(Qt5MacExtras REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050033FIND_PACKAGE(Qt5Widgets REQUIRED)
Anthony Léonard786d4182017-11-08 14:26:31 -050034FIND_PACKAGE(Qt5Sql REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050035FIND_PACKAGE(LibRingClient REQUIRED)
Anthony Léonard14e7bf32017-06-08 08:13:16 -040036FIND_PACKAGE(OpenGL REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050037
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -040038EXECUTE_PROCESS(COMMAND git submodule update --init
39 WORKING_DIRECTORY ${CMAKE_SOURCE_DIR})
40
Kateryna Kostiuk00dcbff2019-07-11 15:42:13 -040041get_filename_component(PARENT_DIR ${CMAKE_SOURCE_DIR} PATH)
42
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -040043INCLUDE(ExternalProject)
44ExternalProject_Add(libqrencode
45 GIT_SUBMODULES libqrencode
46 SOURCE_DIR ${CMAKE_SOURCE_DIR}/libqrencode
47 BINARY_DIR ${CMAKE_SOURCE_DIR}/libqrencode
48 INSTALL_DIR ${CMAKE_SOURCE_DIR}/libqrencode
49 CONFIGURE_COMMAND
50 #hack to fix incomplete config.h on first run
51 COMMAND ./autogen.sh
52 COMMAND ./autogen.sh && ./configure --prefix=${CMAKE_SOURCE_DIR}/libqrencode
53 BUILD_COMMAND make
54 INSTALL_COMMAND make install)
55
56INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/libqrencode/include)
57LINK_DIRECTORIES(${CMAKE_SOURCE_DIR}/libqrencode/lib)
Kateryna Kostiuk00dcbff2019-07-11 15:42:13 -040058INCLUDE_DIRECTORIES(${PARENT_DIR}/daemon/contrib/native/ffmpeg)
59
60set(SHADERS_FILE "Shader.metallib")
61add_custom_command (OUTPUT ${CMAKE_SOURCE_DIR}/Shader.metallib
62 COMMAND ${CMAKE_SOURCE_DIR}/generateShaderLib.sh
63 COMMENT "Creating Shader.metallib")
kkostiukc48e73e2021-04-13 09:20:08 -040064add_custom_target(shader ALL
65 DEPENDS ${CMAKE_SOURCE_DIR}/Shader.metallib)
kkostiuk3a2c9f72021-01-27 10:30:49 -050066
Alexandre Lision3d4143a2015-06-10 14:27:49 -040067IF(NOT (${ENABLE_SPARKLE} MATCHES false))
68 MESSAGE("Sparkle auto-update enabled")
69
70 # find_library searches in /Library/Frameworks by default
71 # We add an hint to our custom location
72
73 FIND_LIBRARY(SPARKLE_FRAMEWORK
74 NAMES Sparkle
75 HINTS ${CMAKE_CURRENT_SOURCE_DIR}/sparkle)
76 IF(EXISTS ${SPARKLE_FRAMEWORK})
77 SET(ENABLE_SPARKLE 1 CACHE BOOLEAN "Enable Sparkle")
78 ADD_DEFINITIONS(-DENABLE_SPARKLE=1)
79 MESSAGE("Sparkle is here:" ${SPARKLE_FRAMEWORK})
80 FIND_PATH(SPARKLE_INCLUDE_DIR Sparkle.h HINTS ${SPARKLE_FRAMEWORK}/Headers)
Alexandre Lision3d4143a2015-06-10 14:27:49 -040081 # we need to copy the public key to check the updates
82 SET(PUBLIC_KEY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/sparkle/dsa_pub.pem")
83 IF(EXISTS ${PUBLIC_KEY_PATH})
84 MESSAGE(STATUS "Looking for Public Key - found")
85 SET_SOURCE_FILES_PROPERTIES(${PUBLIC_KEY_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
86 SET(PUBLIC_KEY ${PUBLIC_KEY_PATH})
87 ELSE(EXISTS ${PUBLIC_KEY_PATH})
88 MESSAGE(WARNING "Looking for Public Key - not found")
89 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")
90 ENDIF(EXISTS ${PUBLIC_KEY_PATH})
91 ELSE()
Alexandre Lisionfba8f792016-03-08 13:45:51 -050092 MESSAGE(WARNING "Sparkle framework not found, disabling it... to build it see README")
93 SET(ENABLE_SPARKLE 0 CACHE BOOLEAN "Enable Sparkle")
Alexandre Lision3d4143a2015-06-10 14:27:49 -040094 ENDIF(EXISTS ${SPARKLE_FRAMEWORK})
95ENDIF(NOT (${ENABLE_SPARKLE} MATCHES false))
96
Alexandre Lision10e86dd2015-01-19 16:11:14 -050097INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS})
Alexandre Lision3b0bd332015-03-15 18:43:07 -040098INCLUDE_DIRECTORIES(SYSTEM ${Qt5MacExtras_INCLUDE_DIRS})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050099INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
100INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR})
101INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
Anthony Léonard14e7bf32017-06-08 08:13:16 -0400102INCLUDE_DIRECTORIES(${OPENGL_INCLUDE_DIR})
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500103
Alexandre Lision04946de2016-03-08 09:31:38 -0500104SET(CMAKE_MACOSX_RPATH ON)
105SET(CMAKE_SKIP_BUILD_RPATH FALSE)
106SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
107SET(CMAKE_INSTALL_RPATH "${CMAKE_CURRENT_SOURCE_DIR}")
108SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
109
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400110MESSAGE("LRC is here:" ${LIB_RING_CLIENT_INCLUDE_DIR})
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500111SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
112
113#Files to compile
Alexandre Lision4ba18022015-04-23 12:17:40 -0400114SET(ringclient_CONTROLLERS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400115 src/CurrentCallVC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -0400116 src/CurrentCallVC.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -0400117 src/GeneralPrefsVC.mm
118 src/RingWizardWC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -0400119 src/RingWizardWC.h
120 src/RingWindowController.mm
121 src/RingWindowController.h
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400122 src/PreferencesWC.mm
123 src/PreferencesWC.h
Kateryna Kostiuk1f8c1252018-07-30 18:18:57 -0400124 src/AccSipGeneralVC.mm
125 src/AccSipGeneralVC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400126 src/AccAdvancedVC.mm
127 src/AccAdvancedVC.h
Kateryna Kostiuk1f8c1252018-07-30 18:18:57 -0400128 src/AccRingGeneralVC.mm
129 src/AccRingGeneralVC.h
130 src/AccAdvancedSipVC.mm
131 src/AccAdvancedSipVC.h
132 src/AccAdvancedRingVC.mm
133 src/AccAdvancedRingVC.h
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400134 src/CertificateWC.mm
135 src/CertificateWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400136 src/AudioPrefsVC.mm
137 src/AudioPrefsVC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400138 src/VideoPrefsVC.mm
139 src/VideoPrefsVC.h
agsantos32956532021-04-20 09:11:24 -0400140 src/PluginPrefsVC.mm
141 src/PluginPrefsVC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400142 src/GeneralPrefsVC.h
Alexandre Lision58cab672015-06-09 15:25:40 -0400143 src/ChatVC.mm
Alexandre Lision2db8f472015-07-22 15:05:46 -0400144 src/ChatVC.h
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400145 src/SmartViewVC.mm
Alexandre Lision883719f2015-10-22 17:37:45 -0400146 src/SmartViewVC.h
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500147 src/ConversationVC.mm
Loïc Siret31d5cc02016-09-08 14:38:24 -0400148 src/ConversationVC.h
149 src/LoadingWCDelegate.h
150 src/AbstractLoadingWC.h
151 src/AbstractLoadingWC.mm
Alexandre Lision45f1f542016-08-25 15:16:17 -0400152 src/ExportPasswordWC.mm
153 src/ExportPasswordWC.h
Alexandre Lision624b1a82016-09-11 19:29:01 -0400154 src/MigrateRingAccountsWC.mm
155 src/MigrateRingAccountsWC.h
Loïc Siretfcb4ca62016-09-21 17:12:09 -0400156 src/RingWizardChooseVC.h
157 src/RingWizardChooseVC.mm
158 src/RingWizardLinkAccountVC.h
159 src/RingWizardLinkAccountVC.mm
160 src/RingWizardNewAccountVC.mm
161 src/RingWizardNewAccountVC.h
Alexandre Lision62005312016-01-28 15:55:16 -0500162 src/DialpadWC.mm
163 src/DialpadWC.h
Alexandre Lision34079c22016-10-31 16:14:02 -0400164 src/RegisterNameWC.mm
165 src/RegisterNameWC.h
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400166 src/ChooseAccountVC.h
167 src/ChooseAccountVC.mm
Kateryna Kostiuk58276bc2017-06-07 08:50:48 -0400168 src/MessagesVC.h
169 src/MessagesVC.mm
Anthony Léonard1f70f722017-10-02 10:53:32 -0400170 src/PasswordChangeWC.h
171 src/PasswordChangeWC.mm
Kateryna Kostiukecaa3952018-07-13 16:00:34 -0400172 src/LrcModelsProtocol.h
173 src/AddSIPAccountVC.mm
174 src/AddSIPAccountVC.h
Kateryna Kostiuk1f8c1252018-07-30 18:18:57 -0400175 src/AccountSettingsVC.mm
176 src/AccountSettingsVC.h
Kateryna Kostiukf6317422018-09-27 17:08:20 -0400177 src/LeaveMessageVC.mm
178 src/LeaveMessageVC.h
Kateryna Kostiukfbe1b2f2019-10-07 17:32:26 -0400179 src/RecordFileVC.mm
180 src/RecordFileVC.h
Kateryna Kostiuk4db61092019-10-17 16:57:40 -0400181 src/ChooseContactVC.mm
182 src/ChooseContactVC.h
agsantoscfaf2902021-04-20 16:21:24 -0400183 src/ChoosePluginHandlerVC.mm
184 src/ChoosePluginHandlerVC.h
Kateryna Kostiuk4db61092019-10-17 16:57:40 -0400185 src/CallInConferenceVC.mm
186 src/CallInConferenceVC.h
Kateryna Kostiukc7e68f32019-10-09 16:15:45 -0400187 src/ConnectToAccManagerVC.mm
188 src/ConnectToAccManagerVC.h
Kateryna Kostiuk61d41162019-10-25 16:51:44 -0400189 src/AccountBackupVC.mm
190 src/AccountBackupVC.h
agsantos49c00702021-05-12 12:55:51 -0400191 src/PluginItemDelegateVC.h
192 src/PluginItemDelegateVC.mm
193 src/PreferenceTabDelegateVC.h
194 src/PreferenceTabDelegateVC.mm
Loïc Siret31d5cc02016-09-08 14:38:24 -0400195)
Alexandre Lision74dd47f2015-04-14 13:47:42 -0400196
Alexandre Lision4ba18022015-04-23 12:17:40 -0400197SET(ringclient_VIEWS
198 src/views/CallView.mm
199 src/views/CallView.h
Anthony Léonard14e7bf32017-06-08 08:13:16 -0400200 src/views/CallLayer.mm
201 src/views/CallLayer.h
Alexandre Lisionf47a2562015-06-15 15:48:29 -0400202 src/views/ITProgressIndicator.mm
203 src/views/ITProgressIndicator.h
Alexandre Lision2db8f472015-07-22 15:05:46 -0400204 src/views/RingOutlineView.mm
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400205 src/views/RingOutlineView.h
Olivier Soldanod4311552017-11-20 15:09:53 -0500206 src/views/RingTableView.mm
207 src/views/RingTableView.h
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400208 src/views/RingIDField.mm
Alexandre Lision4e280d62015-09-09 15:56:30 -0400209 src/views/RingIDField.h
210 src/views/HoverTableRowView.mm
211 src/views/HoverTableRowView.h
212 src/views/NSColor+RingTheme.mm
213 src/views/NSColor+RingTheme.h
Alexandre Lision261f1b92016-04-04 12:35:34 -0400214 src/views/NSImage+Extensions.mm
215 src/views/NSImage+Extensions.h
Alexandre Lision4e280d62015-09-09 15:56:30 -0400216 src/views/ContextualTableCellView.mm
Alexandre Lision6da08a82015-09-24 17:09:24 -0400217 src/views/ContextualTableCellView.h
218 src/views/IconButton.h
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500219 src/views/IconButton.mm
Alexandre Lisione77f6f92016-04-17 23:39:39 -0400220 src/views/BackgroundView.h
221 src/views/BackgroundView.mm
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500222 src/views/IMTableCellView.h
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400223 src/views/IMTableCellView.mm
224 src/views/AccountMenuItemView.h
Kateryna Kostiuka9e5c712017-05-15 16:46:16 -0400225 src/views/AccountMenuItemView.mm
Kateryna Kostiukd9039e92017-05-24 14:29:54 -0400226 src/views/RoundedTextField.h
Kateryna Kostiuk58276bc2017-06-07 08:50:48 -0400227 src/views/RoundedTextField.mm
228 src/views/MessageBubbleView.h
229 src/views/MessageBubbleView.mm
Kateryna Kostiuk64d025a2017-07-14 11:30:44 -0400230 src/views/SendMessagePanel.h
231 src/views/SendMessagePanel.mm
Kateryna Kostiuk958cd072017-07-14 15:56:35 -0400232 src/views/HoverButton.h
233 src/views/HoverButton.mm
Kateryna Kostiuk1f8c1252018-07-30 18:18:57 -0400234 src/views/CenteredClipView.h
235 src/views/CenteredClipView.mm
Kateryna Kostiuk00dcbff2019-07-11 15:42:13 -0400236 src/views/CallMTKView.h
237 src/views/CallMTKView.mm
Kateryna Kostiuk88a6ee82019-09-10 17:55:08 -0400238 src/views/GradientView.h
239 src/views/GradientView.mm
Kateryna Kostiuk6891d4f2019-09-19 17:44:33 -0400240 src/views/MovableView.h
241 src/views/MovableView.mm
Kateryna Kostiuk06681682020-05-07 20:50:56 -0400242 src/views/RenderingView.h
243 src/views/RenderingView.mm
244 src/views/VideoRendering.h
Kateryna Kostiuk1705a5a2020-08-26 09:48:00 -0400245 src/views/ConferenceOverlayView.h
246 src/views/ConferenceOverlayView.mm
kkostiuk3a2c9f72021-01-27 10:30:49 -0500247 src/views/CustomBackgroundView.h
248 src/views/CustomBackgroundView.mm
kkostiukcf0757f2021-03-26 12:29:47 -0400249 src/views/TextViewWithPlaceholder.h
250 src/views/TextViewWithPlaceholder.mm
kkostiukc48e73e2021-04-13 09:20:08 -0400251 src/views/FileToSendCollectionItem.h
252 src/views/FileToSendCollectionItem.mm
253 src/views/DraggingDestinationView.h
254 src/views/DraggingDestinationView.mm
agsantos49c00702021-05-12 12:55:51 -0400255 src/views/PluginCell.h
256 src/views/PluginCell.mm
257 src/views/PluginPreferenceTab.h
258 src/views/PluginPreferenceTab.mm
259 src/views/NoResponderTableView.h
260 src/views/NoResponderTableView.mm
Kateryna Kostiuk58276bc2017-06-07 08:50:48 -0400261)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400262
263SET(ringclient_OTHERS
264 src/main.mm
265 src/AppDelegate.mm
266 src/AppDelegate.h
Alexandre Lision9fe374b2016-01-06 10:17:31 -0500267 src/Constants.h
Kateryna Kostiukc5fd3b92019-07-24 10:12:44 -0400268 src/VideoCommon.h
269 src/VideoCommon.mm
Alexandre Lision83180df2016-01-18 11:32:20 -0500270 src/INDSequentialTextSelectionManager.mm
271 src/INDSequentialTextSelectionManager.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400272 src/delegates/ImageManipulationDelegate.mm
Kateryna Kostiuka16c9862017-05-03 13:30:14 -0400273 src/delegates/ImageManipulationDelegate.h
274 src/AccountSelectionManager.h
Olivier Soldanod4311552017-11-20 15:09:53 -0500275 src/AccountSelectionManager.mm
Andreas Traczyk252a94a2018-04-20 16:36:20 -0400276 src/utils.h
277 src/NSString+Extensions.h
Kateryna Kostiuk465cfbe2018-06-05 16:13:05 -0400278 src/NSString+Extensions.mm
279 src/RingMainWindow.h
Kateryna Kostiuk00dcbff2019-07-11 15:42:13 -0400280 src/RingMainWindow.mm
Kateryna Kostiuk38a77e32020-04-10 20:07:23 -0400281 src/MenuResponder.h
282 src/MenuResponder.mm
Kateryna Kostiuk00dcbff2019-07-11 15:42:13 -0400283 src/Shader.metal
284)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500285
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400286SET(ringclient_XIBS
287 MainMenu
288 RingWindow
289 CurrentCall
290 GeneralPrefs
Kateryna Kostiuk1f8c1252018-07-30 18:18:57 -0400291 AccSipGeneral
Kateryna Kostiuk1f8c1252018-07-30 18:18:57 -0400292 AccRingGeneral
293 AccAdvancedSip
294 AccAdvancedRing
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400295 AudioPrefs
296 VideoPrefs
agsantos32956532021-04-20 09:11:24 -0400297 PluginPrefs
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400298 PreferencesWindow
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400299 RingWizard
Alexandre Lision2db8f472015-07-22 15:05:46 -0400300 CertificateWindow
Alexandre Lision45f1f542016-08-25 15:16:17 -0400301 ExportPasswordWindow
Alexandre Lision624b1a82016-09-11 19:29:01 -0400302 MigrateRingAccountsWindow
Alexandre Lision45f1f542016-08-25 15:16:17 -0400303 Conversation
Loïc Siretfcb4ca62016-09-21 17:12:09 -0400304 RingWizardLinkAccount
305 RingWizardNewAccount
Alexandre Lision62005312016-01-28 15:55:16 -0500306 RingWizardChoose
307 Dialpad
Alexandre Lision34079c22016-10-31 16:14:02 -0400308 RegisterNameWindow
Kateryna Kostiuk13b76882017-03-30 09:18:44 -0400309 AccountMenuItemView
Anthony Léonard1f70f722017-10-02 10:53:32 -0400310 PasswordChange
Kateryna Kostiukae660fd2018-04-24 14:10:41 -0400311 MessageCells
Kateryna Kostiukecaa3952018-07-13 16:00:34 -0400312 AddSIPAccountVC
Kateryna Kostiuk1f8c1252018-07-30 18:18:57 -0400313 AccountSettings
Kateryna Kostiukf6317422018-09-27 17:08:20 -0400314 LeaveMessageVC
Kateryna Kostiukfbe1b2f2019-10-07 17:32:26 -0400315 RecordFileVC
Kateryna Kostiuk4db61092019-10-17 16:57:40 -0400316 ChooseContactVC
agsantoscfaf2902021-04-20 16:21:24 -0400317 ChoosePluginHandlerVC
Kateryna Kostiuk4db61092019-10-17 16:57:40 -0400318 CallInConferenceVC
Kateryna Kostiukc7e68f32019-10-09 16:15:45 -0400319 ConnectToAccManagerVC
Kateryna Kostiuk61d41162019-10-25 16:51:44 -0400320 AccountBackupVC
kkostiukc48e73e2021-04-13 09:20:08 -0400321 FileToSendCollectionItem
agsantos49c00702021-05-12 12:55:51 -0400322 PluginItemDelegate
323 PluginPreferenceTab
324 PreferenceTabDelegateVC
Alexandre Lision62005312016-01-28 15:55:16 -0500325)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500326
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500327# Icons
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400328# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500329SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
330SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500331 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400332SET(ring_ICONS
Kateryna Kostiukf6317422018-09-27 17:08:20 -0400333${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_audio_file.png
334${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_exit.png
335${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_stoprecord.png
336${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_audio.png
Kateryna Kostiuk54d76972018-06-07 15:45:07 -0400337${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_audio.png
Kateryna Kostiuk67735232018-05-10 15:05:32 -0400338${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_folder.png
Andreas Traczyk252a94a2018-04-20 16:36:20 -0400339${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_block.png
Kateryna Kostiukae660fd2018-04-24 14:10:41 -0400340${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_attachment.png
Andreas Traczyk87c999f2018-04-12 17:38:25 -0400341${CMAKE_CURRENT_SOURCE_DIR}/data/default_avatar_overlay.png
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400342${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_name.png
Alexandre Lisione77f6f92016-04-17 23:39:39 -0400343${CMAKE_CURRENT_SOURCE_DIR}/data/background-light.png
344${CMAKE_CURRENT_SOURCE_DIR}/data/background-dark.png
Alexandre Lision34607032016-02-08 16:16:49 -0500345${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_blue.png
Alexandre Lision6da08a82015-09-24 17:09:24 -0400346${CMAKE_CURRENT_SOURCE_DIR}/data/background_tile.png
kkostiuk4c020ed2021-04-13 10:58:25 -0400347${CMAKE_CURRENT_SOURCE_DIR}/data/logo_white.png
Alexandre Lision62005312016-01-28 15:55:16 -0500348${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_more.png
349${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_dialpad.png
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400350${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500351${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_arrow_back.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500352${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
353${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
Alexandre Lisiond18fa272015-06-15 11:18:03 -0400354${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hangup.png
355${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hold.png
356${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_holdoff.png
357${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_video.png
358${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_audio.png
359${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_chat.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500360${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lisionf23ec5a2015-07-16 11:24:06 -0400361${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_quality.png
Alexandre Lision266fca02015-09-28 14:47:05 -0400362${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_record.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400363${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_received.png
364${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_missed.png
365${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_made.png
Alexandre Lision883719f2015-10-22 17:37:45 -0400366${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_transfer.png
Alexandre Lision89edc6a2015-11-09 11:30:47 -0500367${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_add_participant.png
368${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_merge_calls.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500369${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_send.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500370${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
Alexandre Lision2db8f472015-07-22 15:05:46 -0400371${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_person_add.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400372${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_persons.png
373${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_history.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500374${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
375${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lisionf46768f2016-04-18 09:56:26 -0400376${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_delete.png
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400377${CMAKE_CURRENT_SOURCE_DIR}/data/dark/qrcode.png
Kateryna Kostiukdb1f3a12017-04-24 12:08:28 -0400378${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png
Anthony Léonarde7d62ed2018-01-25 10:51:47 -0500379${CMAKE_CURRENT_SOURCE_DIR}/data/dark/pending_contact_request.png
Kateryna Kostiuk87ae2bf2018-05-04 13:46:17 -0400380${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_file_upload.png
Kateryna Kostiuk88a6ee82019-09-10 17:55:08 -0400381${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_record_stop.png
Kateryna Kostiukfbe1b2f2019-10-07 17:32:26 -0400382${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_camera.png
Kateryna Kostiuka7404812019-10-28 12:24:46 -0400383${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_audio_msg.png
Kateryna Kostiukf362e2b2020-09-10 19:00:52 -0400384${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_group.png
agsantos32956532021-04-20 09:11:24 -0400385${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_plugin.png
agsantos49c00702021-05-12 12:55:51 -0400386${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_plugin_fill.png
387${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_reset.png
kkostiuk3a2c9f72021-01-27 10:30:49 -0500388${CMAKE_CURRENT_SOURCE_DIR}/data/light/ic_picture.png
389${CMAKE_CURRENT_SOURCE_DIR}/data/light/ic_moderator.png
390${CMAKE_CURRENT_SOURCE_DIR}/data/light/ic_moderator_audio_muted.png
391${CMAKE_CURRENT_SOURCE_DIR}/data/light/ic_moderator_audio_unmuted.png
392${CMAKE_CURRENT_SOURCE_DIR}/data/light/ic_moderator_maximize.png
393${CMAKE_CURRENT_SOURCE_DIR}/data/light/ic_moderator_minimize.png
394${CMAKE_CURRENT_SOURCE_DIR}/data/light/ic_moderator_hangup.png
kkostiuk305da2c2021-04-13 11:27:18 -0400395${CMAKE_CURRENT_SOURCE_DIR}/data/light/ic_star.png
396${CMAKE_CURRENT_SOURCE_DIR}/data/light/ic_file.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400397
Alexandre Lision392ee722015-01-23 16:27:10 -0500398SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500399 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400400SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
401 MACOSX_PACKAGE_LOCATION Resources)
Kateryna Kostiuk00dcbff2019-07-11 15:42:13 -0400402SET_SOURCE_FILES_PROPERTIES(Shader.metallib PROPERTIES
403 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500404
Alexandre Lision88ee6cc2016-05-05 14:32:43 -0400405# package ringtones
406IF(NOT IS_DIRECTORY ${RINGTONE_DIR})
407 MESSAGE("No ringtone folder provided, use RINGTONE_DIR to specify one")
408 SET(RINGTONE_DIR ${CMAKE_INSTALL_PREFIX}/share/ring/ringtones)
409 MESSAGE("Trying ${RINGTONE_DIR}")
410ENDIF()
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500411
Alexandre Lision88ee6cc2016-05-05 14:32:43 -0400412IF(IS_DIRECTORY ${RINGTONE_DIR})
413 FILE(GLOB RINGTONE_LIST ${RINGTONE_DIR}/*)
414 FOREACH(RINGTONE ${RINGTONE_LIST})
415 MESSAGE("Adding ringtone ${RINGTONE}")
416 GET_FILENAME_COMPONENT(FILE_PATH ${RINGTONE} ABSOLUTE)
417 SET(ring_RINGTONES ${ring_RINGTONES} ${FILE_PATH})
418 ENDFOREACH()
419ELSE()
420 MESSAGE("${RINGTONE_DIR} does not exist or is not readable")
421ENDIF()
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500422
423SET_SOURCE_FILES_PROPERTIES(${ring_RINGTONES}
424 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/ringtones)
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400425
426# Check which translations are found for LRC
427SET(LRC_TRANSLATIONS_PATH ${CMAKE_INSTALL_PREFIX}/share/libringclient/translations)
428FILE(GLOB QM_LIST ${LRC_TRANSLATIONS_PATH}/*.qm)
429
430FOREACH(QM_FILE ${QM_LIST})
431 # Extract country code from filename
432 GET_FILENAME_COMPONENT(FILENAME ${QM_FILE} NAME_WE)
433 STRING(REGEX REPLACE "^lrc_" "" LANG ${FILENAME})
434
435 SET_SOURCE_FILES_PROPERTIES(${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm
436 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/QtTranslations)
437 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
438 "${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm")
Alexandre Lision922380d2015-09-15 10:25:17 -0400439ENDFOREACH()
440
441# Check which translations are found for the client
442FILE(GLOB LPROJ_LIST ui/*.lproj)
443
444FOREACH(LPROJ ${LPROJ_LIST})
445 # Extract country code from <lang>.lproj folder name
446 GET_FILENAME_COMPONENT(LANG ${LPROJ} NAME_WE)
447 IF(EXISTS "${LPROJ}/Localizable.strings")
448 MESSAGE("Localizable:" ${LANG})
449 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/Localizable.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500450 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400451
452 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
453 ${LPROJ}/Localizable.strings)
454 ENDIF()
455 FOREACH(xib ${ringclient_XIBS})
456 IF(EXISTS "${LPROJ}/${xib}.strings")
457 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/${xib}.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500458 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400459
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500460 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
Alexandre Lision922380d2015-09-15 10:25:17 -0400461 ${LPROJ}/${xib}.strings)
462 ENDIF()
463 ENDFOREACH()
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400464
465 # Regroup those files under a .lproj folder
466 SOURCE_GROUP("Resources\\${LANG}.lproj" FILES
467 ${LOCALIZED_${LANG}})
468 # Add them to the list of files to package
469 SET(LOCALIZABLE_FILES ${LOCALIZABLE_FILES} ${LOCALIZED_${LANG}})
470ENDFOREACH()
471
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400472# append '.xib' extension before linking xib files in executable
473FOREACH(xib ${ringclient_XIBS})
Alexandre Lision922380d2015-09-15 10:25:17 -0400474 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/Base.lproj/${xib}.xib)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400475ENDFOREACH()
476
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400477SET(TO_ADD
Alexandre Lision4ba18022015-04-23 12:17:40 -0400478 ${ringclient_CONTROLLERS}
Alexandre Lision4ba18022015-04-23 12:17:40 -0400479 ${ringclient_VIEWS}
480 ${ringclient_OTHERS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400481 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400482 ${LOCALIZABLE_FILES}
Alexandre Lision392ee722015-01-23 16:27:10 -0500483 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400484 Credits.rtf
Kateryna Kostiuk00dcbff2019-07-11 15:42:13 -0400485 Shader.metallib
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500486 ${ring_ICONS}
487 ${ring_RINGTONES})
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500488
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400489IF(ENABLE_SPARKLE)
490 SET( TO_ADD ${TO_ADD} ${PUBLIC_KEY} ${SPARKLE_FRAMEWORK})
491ENDIF(ENABLE_SPARKLE)
492
493ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE ${TO_ADD})
494
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400495ADD_DEPENDENCIES(${PROJ_NAME} libqrencode)
496
Alexandre Lision4ba18022015-04-23 12:17:40 -0400497# Follow Xcode hierarchy principles
498SOURCE_GROUP("Controllers" FILES ${ringclient_CONTROLLERS})
499SOURCE_GROUP("Backends" FILES ${ringclient_BACKENDS})
500SOURCE_GROUP("CustomViews" FILES ${ringclient_VIEWS})
501SOURCE_GROUP("Classes" FILES ${ringclient_OTHERS})
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400502SOURCE_GROUP("Resources\\Interface Builder" FILES
503 ${ringclient_XIBS_FOR_EXECUTABLE})
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500504SOURCE_GROUP("Resources\\ringtones" FILES ${ring_RINGTONES})
Alexandre Lision4ba18022015-04-23 12:17:40 -0400505
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400506IF(ENABLE_SPARKLE)
507 SOURCE_GROUP("Frameworks" FILES ${SPARKLE_FRAMEWORK})
508ENDIF(ENABLE_SPARKLE)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400509
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500510TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500511 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500512 ${Qt5Core_LIBRARIES}
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400513 ${Qt5MacExtras_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500514 ${Qt5Widgets_LIBRARIES}
Anthony Léonard14e7bf32017-06-08 08:13:16 -0400515 ${OPENGL_LIBRARIES}
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400516 -lqrencode
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500517)
518
Kateryna Kostiuk00dcbff2019-07-11 15:42:13 -0400519target_link_libraries(${PROJ_NAME} ${PARENT_DIR}/daemon/contrib/x86_64-apple-darwin${CMAKE_SYSTEM_VERSION}/lib/libavutil.a)
520
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400521IF(ENABLE_SPARKLE)
522 TARGET_LINK_LIBRARIES(${PROJ_NAME} ${SPARKLE_FRAMEWORK})
523ENDIF(ENABLE_SPARKLE)
524
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400525SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
526SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
527SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
528SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
529SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
Alexandre Lisionb9f3f942016-07-23 14:29:33 -0400530SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework SystemConfiguration")
Kateryna Kostiuk00dcbff2019-07-11 15:42:13 -0400531SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework MetalKit")
532SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Metal")
Kateryna Kostiukd5aded72020-11-06 17:03:42 -0500533SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework IOKit")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400534
535# These variables are specific to our plist and are NOT standard CMake variables
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400536SET(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
537SET(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500538
Kateryna Kostiuk5d10ee22018-05-16 10:09:05 -0400539# App store version should be sandboxed and using different bundle identifier
540IF("${RELEASE_TYPE}" STREQUAL "AppStore")
541 SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
542 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
543 MACOSX_BUNDLE_GUI_IDENTIFIER "com.savoirfairelinux.ring.macos"
Kateryna Kostiuk85a334e2018-12-03 15:54:19 -0500544 XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_LIST_DIR}/data/Jami.entitlements"
Kateryna Kostiuk5d10ee22018-05-16 10:09:05 -0400545 MACOSX_BUNDLE_SHORT_VERSION_STRING "${RING_VERSION_NAME}"
546 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION_NAME}"
547 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
548 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
549 MACOSX_BUNDLE_INFO_STRING "Build of ${PROJ_NAME}, version ${RING_VERSION}"
550 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
551 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
552 )
553ELSE()
554 SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500555 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
556 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Kateryna Kostiuk03ce9b22019-07-15 08:58:09 -0400557 XCODE_ATTRIBUTE_CODE_SIGN_ENTITLEMENTS "${CMAKE_CURRENT_LIST_DIR}/data/HardenedRuntimeEntitlements/Jami.entitlements"
Alexandre Lision7208b762015-08-13 12:39:49 -0400558 MACOSX_BUNDLE_SHORT_VERSION_STRING "${RING_VERSION_NAME}"
Anthony Léonardf79fd7c2018-01-31 13:28:46 -0500559 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION_NAME}"
Alexandre Lision7208b762015-08-13 12:39:49 -0400560 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400561 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Anthony Léonardf79fd7c2018-01-31 13:28:46 -0500562 MACOSX_BUNDLE_INFO_STRING "Build of ${PROJ_NAME}, version ${RING_VERSION}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500563 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
564 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
Kateryna Kostiuk03ce9b22019-07-15 08:58:09 -0400565 XCODE_ATTRIBUTE_ENABLE_HARDENED_RUNTIME TRUE
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500566 )
Kateryna Kostiuk5d10ee22018-05-16 10:09:05 -0400567ENDIF()
Kateryna Kostiuk09365c02019-09-13 14:23:27 -0400568set(CMAKE_XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400569# Make sure we can find the 'ibtool' program. If we can NOT find it we
570# skip generation of this project
571FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
572IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
573 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
574 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
575endif()
576
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400577# Compile the .xib files using the 'ibtool' program with the destination being the app package
578FOREACH(xib ${ringclient_XIBS})
579 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
580 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
Alexandre Lision922380d2015-09-15 10:25:17 -0400581 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/Base.lproj/${xib}.nib
582 ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib
583 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400584
585ENDFOREACH()
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400586
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400587SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400588
589SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app")
590
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400591INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime)
592
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400593SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400594#--------------------------------------------------------------------------------
595# Install needed Qt plugins by copying directories from the qt installation
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400596
597
598#MESSAGE("GUI====")
599#foreach(plugin ${Qt5Gui_PLUGINS})
600# message("Plugin ${plugin} is at location ${_loc}")
601#endforeach()
602
603LIST(APPEND QT_PLUGINS_IMAGEFORMAT Qt5::QTgaPlugin
604 Qt5::QGifPlugin
605 Qt5::QICNSPlugin
606 Qt5::QICOPlugin
607 Qt5::QJpegPlugin
Alexandre Lision8ac5c842017-03-18 08:45:31 +0100608 Qt5::QTiffPlugin)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400609
610# we need two plugin directories platform and imageformats
611GET_TARGET_PROPERTY(_loc Qt5::QCocoaIntegrationPlugin LOCATION)
612INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/platforms COMPONENT Runtime)
613LIST(APPEND QT_PLUGINS Qt5::QCocoaIntegrationPlugin)
614
615FOREACH(plugin ${QT_PLUGINS_IMAGEFORMAT})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400616 GET_TARGET_PROPERTY(_loc ${plugin} LOCATION)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400617 INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/imageformats COMPONENT Runtime)
618 LIST(APPEND QT_PLUGINS ${plugin})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400619ENDFOREACH()
620
Anthony Léonard786d4182017-11-08 14:26:31 -0500621# Add SQLite driver for QtSql
622GET_TARGET_PROPERTY(_loc Qt5::QSQLiteDriverPlugin LOCATION)
623INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/sqldrivers COMPONENT Runtime)
624LIST(APPEND QT_PLUGINS Qt5::QSQLiteDriverPlugin)
625
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400626# directories to look for dependencies
Alexandre Lisionfd0d6c82016-03-29 17:06:54 -0400627SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib
628 ${QT_LIB_DIR}
629 ${CMAKE_CURRENT_SOURCE_DIR}/sparkle
630 ${CMAKE_CURRENT_SOURCE_DIR}/libqrencode/lib)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400631
632INSTALL(CODE "
633 file(GLOB_RECURSE QTPLUGINS
634 \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
635 include(BundleUtilities)
636 SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
637 fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
638 " COMPONENT Runtime)
639
640#================================
641# Packaging
642#================================
643SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME})
644SET( CPACK_PACKAGE_NAME ${PROJ_NAME} )
645SET( CPACK_PACKAGE_CONTACT "Alexandre Lision")
646SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux")
647SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION})
648SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION})
649SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION})
650SET(CPACK_BINARY_DRAGNDROP ON)
651SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
652INCLUDE(CPack)