blob: 37884296b3740937816d4169354c0a584867b0e8 [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 "")
11 SET(RING_VERSION "0.4.0")
12ENDIF("${RING_VERSION}" STREQUAL "")
13
14MESSAGE("Building Ring version - " ${RING_VERSION})
15
Alexandre Lision7208b762015-08-13 12:39:49 -040016SET(RING_VERSION_NAME "Samuel de Champlain (${RING_VERSION})")
Alexandre Lisionbb306132015-03-27 11:30:02 -040017
Alexandre Lision7208b762015-08-13 12:39:49 -040018MESSAGE(${RING_VERSION_NAME})
Alexandre Lision9fe374b2016-01-06 10:17:31 -050019SET(PROJ_COPYRIGHT " © 2015-2016 Savoir-faire Linux \n GPLv3 https://www.gnu.org/copyleft/gpl.html")
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050020
Alexandre Lision81c97212015-06-17 15:51:53 -040021ADD_DEFINITIONS("-std=c++11 -fobjc-arc")
Alexandre Lision5855b6a2015-02-03 11:31:05 -050022
Alexandre Lisionb47b4c82015-01-20 11:29:03 -050023PROJECT(${PROJ_NAME})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050024
Alexandre Lision10e86dd2015-01-19 16:11:14 -050025FIND_PACKAGE(Qt5Core REQUIRED)
Alexandre Lision3b0bd332015-03-15 18:43:07 -040026FIND_PACKAGE(Qt5MacExtras REQUIRED)
Alexandre Lision10e86dd2015-01-19 16:11:14 -050027FIND_PACKAGE(Qt5Widgets REQUIRED)
28FIND_PACKAGE(LibRingClient REQUIRED)
29
Alexandre Lision3d4143a2015-06-10 14:27:49 -040030IF(NOT (${ENABLE_SPARKLE} MATCHES false))
31 MESSAGE("Sparkle auto-update enabled")
32
33 # find_library searches in /Library/Frameworks by default
34 # We add an hint to our custom location
35
36 FIND_LIBRARY(SPARKLE_FRAMEWORK
37 NAMES Sparkle
38 HINTS ${CMAKE_CURRENT_SOURCE_DIR}/sparkle)
39 IF(EXISTS ${SPARKLE_FRAMEWORK})
40 SET(ENABLE_SPARKLE 1 CACHE BOOLEAN "Enable Sparkle")
41 ADD_DEFINITIONS(-DENABLE_SPARKLE=1)
42 MESSAGE("Sparkle is here:" ${SPARKLE_FRAMEWORK})
43 FIND_PATH(SPARKLE_INCLUDE_DIR Sparkle.h HINTS ${SPARKLE_FRAMEWORK}/Headers)
44 MESSAGE("INCLUDE " ${SPARKLE_INCLUDE_DIR})
45 # we need to copy the public key to check the updates
46 SET(PUBLIC_KEY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/sparkle/dsa_pub.pem")
47 IF(EXISTS ${PUBLIC_KEY_PATH})
48 MESSAGE(STATUS "Looking for Public Key - found")
49 SET_SOURCE_FILES_PROPERTIES(${PUBLIC_KEY_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
50 SET(PUBLIC_KEY ${PUBLIC_KEY_PATH})
51 ELSE(EXISTS ${PUBLIC_KEY_PATH})
52 MESSAGE(WARNING "Looking for Public Key - not found")
53 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")
54 ENDIF(EXISTS ${PUBLIC_KEY_PATH})
55 ELSE()
Alexandre Lisionfba8f792016-03-08 13:45:51 -050056 MESSAGE(WARNING "Sparkle framework not found, disabling it... to build it see README")
57 SET(ENABLE_SPARKLE 0 CACHE BOOLEAN "Enable Sparkle")
Alexandre Lision3d4143a2015-06-10 14:27:49 -040058 ENDIF(EXISTS ${SPARKLE_FRAMEWORK})
59ENDIF(NOT (${ENABLE_SPARKLE} MATCHES false))
60
Alexandre Lision10e86dd2015-01-19 16:11:14 -050061INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS})
Alexandre Lision3b0bd332015-03-15 18:43:07 -040062INCLUDE_DIRECTORIES(SYSTEM ${Qt5MacExtras_INCLUDE_DIRS})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050063INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
64INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR})
65INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
66
Alexandre Lision3d4143a2015-06-10 14:27:49 -040067MESSAGE("LRC is here:" ${LIB_RING_CLIENT_INCLUDE_DIR})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050068SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
69
70#Files to compile
Alexandre Lision4ba18022015-04-23 12:17:40 -040071SET(ringclient_CONTROLLERS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040072 src/QNSTreeController.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040073 src/QNSTreeController.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040074 src/CurrentCallVC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040075 src/CurrentCallVC.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040076 src/GeneralPrefsVC.mm
77 src/RingWizardWC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040078 src/RingWizardWC.h
79 src/RingWindowController.mm
80 src/RingWindowController.h
Alexandre Lisionbfa68f62015-09-10 08:38:42 -040081 src/PreferencesWC.mm
82 src/PreferencesWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -040083 src/AccGeneralVC.mm
84 src/AccGeneralVC.h
Alexandre Lisione4d61cb2016-02-10 09:26:24 -050085 src/AccMediaVC.mm
86 src/AccMediaVC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -040087 src/AccRingVC.mm
88 src/AccRingVC.h
89 src/AccAdvancedVC.mm
90 src/AccAdvancedVC.h
91 src/AccSecurityVC.mm
92 src/AccSecurityVC.h
Alexandre Lision4de68ce2015-04-24 18:22:49 -040093 src/CertificateWC.mm
94 src/CertificateWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -040095 src/AudioPrefsVC.mm
96 src/AudioPrefsVC.h
97 src/AccountsVC.mm
98 src/AccountsVC.h
99 src/VideoPrefsVC.mm
100 src/VideoPrefsVC.h
101 src/GeneralPrefsVC.h
102 src/HistoryVC.mm
103 src/HistoryVC.h
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400104 src/PersonsVC.mm
Alexandre Lision58cab672015-06-09 15:25:40 -0400105 src/PersonsVC.h
106 src/ChatVC.mm
Alexandre Lision2db8f472015-07-22 15:05:46 -0400107 src/ChatVC.h
108 src/PersonLinkerVC.mm
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400109 src/PersonLinkerVC.h
110 src/SmartViewVC.mm
Alexandre Lision883719f2015-10-22 17:37:45 -0400111 src/SmartViewVC.h
112 src/BrokerVC.mm
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500113 src/BrokerVC.h
114 src/ConversationVC.mm
115 src/ConversationVC.h)
Alexandre Lision74dd47f2015-04-14 13:47:42 -0400116
Alexandre Lision4ba18022015-04-23 12:17:40 -0400117SET(ringclient_BACKENDS
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400118 src/backends/AddressBookBackend.mm
Alexandre Lision66643432015-06-04 11:59:36 -0400119 src/backends/AddressBookBackend.h)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400120
121SET(ringclient_VIEWS
122 src/views/CallView.mm
123 src/views/CallView.h
Alexandre Lisionf47a2562015-06-15 15:48:29 -0400124 src/views/ITProgressIndicator.mm
125 src/views/ITProgressIndicator.h
Alexandre Lision2db8f472015-07-22 15:05:46 -0400126 src/views/RingOutlineView.mm
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400127 src/views/RingOutlineView.h
128 src/views/RingIDField.mm
Alexandre Lision4e280d62015-09-09 15:56:30 -0400129 src/views/RingIDField.h
130 src/views/HoverTableRowView.mm
131 src/views/HoverTableRowView.h
132 src/views/NSColor+RingTheme.mm
133 src/views/NSColor+RingTheme.h
134 src/views/ContextualTableCellView.mm
Alexandre Lision6da08a82015-09-24 17:09:24 -0400135 src/views/ContextualTableCellView.h
136 src/views/IconButton.h
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500137 src/views/IconButton.mm
138 src/views/IMTableCellView.h
139 src/views/IMTableCellView.mm)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400140
141SET(ringclient_OTHERS
142 src/main.mm
143 src/AppDelegate.mm
144 src/AppDelegate.h
Alexandre Lision9fe374b2016-01-06 10:17:31 -0500145 src/Constants.h
Alexandre Lision83180df2016-01-18 11:32:20 -0500146 src/INDSequentialTextSelectionManager.mm
147 src/INDSequentialTextSelectionManager.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400148 src/delegates/ImageManipulationDelegate.mm
149 src/delegates/ImageManipulationDelegate.h)
150
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500151
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400152SET(ringclient_XIBS
153 MainMenu
154 RingWindow
155 CurrentCall
156 GeneralPrefs
157 Accounts
158 AccGeneral
Alexandre Lisione4d61cb2016-02-10 09:26:24 -0500159 AccMedia
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400160 AccRing
161 AccAdvanced
162 AccSecurity
163 AudioPrefs
164 VideoPrefs
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400165 PreferencesWindow
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400166 RingWizard
Alexandre Lision2db8f472015-07-22 15:05:46 -0400167 CertificateWindow
Alexandre Lision883719f2015-10-22 17:37:45 -0400168 PersonLinker
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500169 Broker
170 Conversation)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500171
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500172# Icons
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400173# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500174SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
175SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500176 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500177
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400178SET(ring_ICONS
179${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_name.png
Alexandre Lision34607032016-02-08 16:16:49 -0500180${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_blue.png
Alexandre Lision6da08a82015-09-24 17:09:24 -0400181${CMAKE_CURRENT_SOURCE_DIR}/data/background_tile.png
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400182${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500183${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_arrow_back.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500184${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
185${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
Alexandre Lisiond18fa272015-06-15 11:18:03 -0400186${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hangup.png
187${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hold.png
188${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_holdoff.png
189${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_video.png
190${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_audio.png
191${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_chat.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500192${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lisionf23ec5a2015-07-16 11:24:06 -0400193${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_quality.png
Alexandre Lision266fca02015-09-28 14:47:05 -0400194${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_record.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400195${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_received.png
196${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_missed.png
197${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_made.png
Alexandre Lision883719f2015-10-22 17:37:45 -0400198${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_transfer.png
Alexandre Lision89edc6a2015-11-09 11:30:47 -0500199${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_add_participant.png
200${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_merge_calls.png
Alexandre Lisiond5229f32015-11-16 11:17:41 -0500201${CMAKE_CURRENT_SOURCE_DIR}/data/default_user_icon.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500202${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ancrage.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500203${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_send.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500204${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
Alexandre Lision2db8f472015-07-22 15:05:46 -0400205${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_person_add.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400206${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_persons.png
207${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_history.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500208${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
209${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500210${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400211
Alexandre Lision392ee722015-01-23 16:27:10 -0500212SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500213 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400214SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
215 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500216
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500217# package all ringtones in share/ring/ringtones/
218FILE(GLOB RINGTONE_LIST ${CMAKE_INSTALL_PREFIX}/share/ring/ringtones/*)
219
220FOREACH(RINGTONE ${RINGTONE_LIST})
221 GET_FILENAME_COMPONENT(FILE_PATH ${RINGTONE} ABSOLUTE)
222 SET(ring_RINGTONES ${ring_RINGTONES} ${FILE_PATH})
223ENDFOREACH()
224
225SET_SOURCE_FILES_PROPERTIES(${ring_RINGTONES}
226 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/ringtones)
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400227
228# Check which translations are found for LRC
229SET(LRC_TRANSLATIONS_PATH ${CMAKE_INSTALL_PREFIX}/share/libringclient/translations)
230FILE(GLOB QM_LIST ${LRC_TRANSLATIONS_PATH}/*.qm)
231
232FOREACH(QM_FILE ${QM_LIST})
233 # Extract country code from filename
234 GET_FILENAME_COMPONENT(FILENAME ${QM_FILE} NAME_WE)
235 STRING(REGEX REPLACE "^lrc_" "" LANG ${FILENAME})
236
237 SET_SOURCE_FILES_PROPERTIES(${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm
238 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/QtTranslations)
239 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
240 "${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm")
Alexandre Lision922380d2015-09-15 10:25:17 -0400241ENDFOREACH()
242
243# Check which translations are found for the client
244FILE(GLOB LPROJ_LIST ui/*.lproj)
245
246FOREACH(LPROJ ${LPROJ_LIST})
247 # Extract country code from <lang>.lproj folder name
248 GET_FILENAME_COMPONENT(LANG ${LPROJ} NAME_WE)
249 IF(EXISTS "${LPROJ}/Localizable.strings")
250 MESSAGE("Localizable:" ${LANG})
251 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/Localizable.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500252 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400253
254 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
255 ${LPROJ}/Localizable.strings)
256 ENDIF()
257 FOREACH(xib ${ringclient_XIBS})
258 IF(EXISTS "${LPROJ}/${xib}.strings")
259 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/${xib}.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500260 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400261
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500262 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
Alexandre Lision922380d2015-09-15 10:25:17 -0400263 ${LPROJ}/${xib}.strings)
264 ENDIF()
265 ENDFOREACH()
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400266
267 # Regroup those files under a .lproj folder
268 SOURCE_GROUP("Resources\\${LANG}.lproj" FILES
269 ${LOCALIZED_${LANG}})
270 # Add them to the list of files to package
271 SET(LOCALIZABLE_FILES ${LOCALIZABLE_FILES} ${LOCALIZED_${LANG}})
272ENDFOREACH()
273
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400274# append '.xib' extension before linking xib files in executable
275FOREACH(xib ${ringclient_XIBS})
Alexandre Lision922380d2015-09-15 10:25:17 -0400276 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/Base.lproj/${xib}.xib)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400277ENDFOREACH()
278
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400279SET(TO_ADD
Alexandre Lision4ba18022015-04-23 12:17:40 -0400280 ${ringclient_CONTROLLERS}
281 ${ringclient_BACKENDS}
282 ${ringclient_VIEWS}
283 ${ringclient_OTHERS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400284 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400285 ${LOCALIZABLE_FILES}
Alexandre Lision392ee722015-01-23 16:27:10 -0500286 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400287 Credits.rtf
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500288 ${ring_ICONS}
289 ${ring_RINGTONES})
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500290
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400291IF(ENABLE_SPARKLE)
292 SET( TO_ADD ${TO_ADD} ${PUBLIC_KEY} ${SPARKLE_FRAMEWORK})
293ENDIF(ENABLE_SPARKLE)
294
295ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE ${TO_ADD})
296
Alexandre Lision4ba18022015-04-23 12:17:40 -0400297# Follow Xcode hierarchy principles
298SOURCE_GROUP("Controllers" FILES ${ringclient_CONTROLLERS})
299SOURCE_GROUP("Backends" FILES ${ringclient_BACKENDS})
300SOURCE_GROUP("CustomViews" FILES ${ringclient_VIEWS})
301SOURCE_GROUP("Classes" FILES ${ringclient_OTHERS})
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400302SOURCE_GROUP("Resources\\Interface Builder" FILES
303 ${ringclient_XIBS_FOR_EXECUTABLE})
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500304SOURCE_GROUP("Resources\\ringtones" FILES ${ring_RINGTONES})
Alexandre Lision4ba18022015-04-23 12:17:40 -0400305
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400306IF(ENABLE_SPARKLE)
307 SOURCE_GROUP("Frameworks" FILES ${SPARKLE_FRAMEWORK})
308ENDIF(ENABLE_SPARKLE)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400309
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500310TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500311 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500312 ${Qt5Core_LIBRARIES}
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400313 ${Qt5MacExtras_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500314 ${Qt5Widgets_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500315)
316
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400317IF(ENABLE_SPARKLE)
318 TARGET_LINK_LIBRARIES(${PROJ_NAME} ${SPARKLE_FRAMEWORK})
319ENDIF(ENABLE_SPARKLE)
320
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400321SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
322SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
323SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
324SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
325SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
326
327# These variables are specific to our plist and are NOT standard CMake variables
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400328SET(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
329SET(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500330
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500331SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
332 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
333 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Alexandre Lision7208b762015-08-13 12:39:49 -0400334 MACOSX_BUNDLE_SHORT_VERSION_STRING "${RING_VERSION_NAME}"
335 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION_NAME} Nightly"
336 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400337 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500338 MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development"
339 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
340 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
341 )
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400342
343# Make sure we can find the 'ibtool' program. If we can NOT find it we
344# skip generation of this project
345FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
346IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
347 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
348 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
349endif()
350
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400351# Compile the .xib files using the 'ibtool' program with the destination being the app package
352FOREACH(xib ${ringclient_XIBS})
353 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
354 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
Alexandre Lision922380d2015-09-15 10:25:17 -0400355 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/Base.lproj/${xib}.nib
356 ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib
357 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400358
359ENDFOREACH()
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400360
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400361SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400362
363SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app")
364
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400365INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime)
366
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400367SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400368#--------------------------------------------------------------------------------
369# Install needed Qt plugins by copying directories from the qt installation
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400370
371
372#MESSAGE("GUI====")
373#foreach(plugin ${Qt5Gui_PLUGINS})
374# message("Plugin ${plugin} is at location ${_loc}")
375#endforeach()
376
377LIST(APPEND QT_PLUGINS_IMAGEFORMAT Qt5::QTgaPlugin
378 Qt5::QGifPlugin
379 Qt5::QICNSPlugin
380 Qt5::QICOPlugin
381 Qt5::QJpegPlugin
382 Qt5::QJp2Plugin
383 Qt5::QMngPlugin
384 Qt5::QTiffPlugin
385 Qt5::QDDSPlugin)
386
387# we need two plugin directories platform and imageformats
388GET_TARGET_PROPERTY(_loc Qt5::QCocoaIntegrationPlugin LOCATION)
389INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/platforms COMPONENT Runtime)
390LIST(APPEND QT_PLUGINS Qt5::QCocoaIntegrationPlugin)
391
392FOREACH(plugin ${QT_PLUGINS_IMAGEFORMAT})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400393 GET_TARGET_PROPERTY(_loc ${plugin} LOCATION)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400394 INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/imageformats COMPONENT Runtime)
395 LIST(APPEND QT_PLUGINS ${plugin})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400396ENDFOREACH()
397
398# directories to look for dependencies
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400399SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib ${QT_LIB_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/sparkle)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400400
401INSTALL(CODE "
402 file(GLOB_RECURSE QTPLUGINS
403 \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
404 include(BundleUtilities)
405 SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
406 fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
407 " COMPONENT Runtime)
408
409#================================
410# Packaging
411#================================
412SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME})
413SET( CPACK_PACKAGE_NAME ${PROJ_NAME} )
414SET( CPACK_PACKAGE_CONTACT "Alexandre Lision")
415SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux")
416SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION})
417SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION})
418SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION})
419SET(CPACK_BINARY_DRAGNDROP ON)
420SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
421INCLUDE(CPack)