blob: 38bed64cc16de60cbd76ef96613db91d340012e6 [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
Alexandre Lision7208b762015-08-13 12:39:49 -040014SET(RING_VERSION_NAME "Samuel de Champlain (${RING_VERSION})")
Alexandre Lisionbb306132015-03-27 11:30:02 -040015
Alexandre Lision6517be82016-02-11 10:32:20 -050016MESSAGE("Building Ring version - " ${RING_VERSION_NAME})
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 Lision3d4143a2015-06-10 14:27:49 -040028IF(NOT (${ENABLE_SPARKLE} MATCHES false))
29 MESSAGE("Sparkle auto-update enabled")
30
31 # find_library searches in /Library/Frameworks by default
32 # We add an hint to our custom location
33
34 FIND_LIBRARY(SPARKLE_FRAMEWORK
35 NAMES Sparkle
36 HINTS ${CMAKE_CURRENT_SOURCE_DIR}/sparkle)
37 IF(EXISTS ${SPARKLE_FRAMEWORK})
38 SET(ENABLE_SPARKLE 1 CACHE BOOLEAN "Enable Sparkle")
39 ADD_DEFINITIONS(-DENABLE_SPARKLE=1)
40 MESSAGE("Sparkle is here:" ${SPARKLE_FRAMEWORK})
41 FIND_PATH(SPARKLE_INCLUDE_DIR Sparkle.h HINTS ${SPARKLE_FRAMEWORK}/Headers)
42 MESSAGE("INCLUDE " ${SPARKLE_INCLUDE_DIR})
43 # we need to copy the public key to check the updates
44 SET(PUBLIC_KEY_PATH "${CMAKE_CURRENT_SOURCE_DIR}/sparkle/dsa_pub.pem")
45 IF(EXISTS ${PUBLIC_KEY_PATH})
46 MESSAGE(STATUS "Looking for Public Key - found")
47 SET_SOURCE_FILES_PROPERTIES(${PUBLIC_KEY_PATH} PROPERTIES MACOSX_PACKAGE_LOCATION Resources)
48 SET(PUBLIC_KEY ${PUBLIC_KEY_PATH})
49 ELSE(EXISTS ${PUBLIC_KEY_PATH})
50 MESSAGE(WARNING "Looking for Public Key - not found")
51 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")
52 ENDIF(EXISTS ${PUBLIC_KEY_PATH})
53 ELSE()
Alexandre Lisionfba8f792016-03-08 13:45:51 -050054 MESSAGE(WARNING "Sparkle framework not found, disabling it... to build it see README")
55 SET(ENABLE_SPARKLE 0 CACHE BOOLEAN "Enable Sparkle")
Alexandre Lision3d4143a2015-06-10 14:27:49 -040056 ENDIF(EXISTS ${SPARKLE_FRAMEWORK})
57ENDIF(NOT (${ENABLE_SPARKLE} MATCHES false))
58
Alexandre Lision10e86dd2015-01-19 16:11:14 -050059INCLUDE_DIRECTORIES(SYSTEM ${Qt5Core_INCLUDE_DIRS})
Alexandre Lision3b0bd332015-03-15 18:43:07 -040060INCLUDE_DIRECTORIES(SYSTEM ${Qt5MacExtras_INCLUDE_DIRS})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050061INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
62INCLUDE_DIRECTORIES( ${CMAKE_CURRENT_SOURCE_DIR})
63INCLUDE_DIRECTORIES(${LIB_RING_CLIENT_INCLUDE_DIR})
64
Alexandre Lision3d4143a2015-06-10 14:27:49 -040065MESSAGE("LRC is here:" ${LIB_RING_CLIENT_INCLUDE_DIR})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050066SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
67
68#Files to compile
Alexandre Lision4ba18022015-04-23 12:17:40 -040069SET(ringclient_CONTROLLERS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040070 src/QNSTreeController.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040071 src/QNSTreeController.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040072 src/CurrentCallVC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040073 src/CurrentCallVC.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040074 src/GeneralPrefsVC.mm
75 src/RingWizardWC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040076 src/RingWizardWC.h
77 src/RingWindowController.mm
78 src/RingWindowController.h
Alexandre Lisionbfa68f62015-09-10 08:38:42 -040079 src/PreferencesWC.mm
80 src/PreferencesWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -040081 src/AccGeneralVC.mm
82 src/AccGeneralVC.h
Alexandre Lisione4d61cb2016-02-10 09:26:24 -050083 src/AccMediaVC.mm
84 src/AccMediaVC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -040085 src/AccRingVC.mm
86 src/AccRingVC.h
87 src/AccAdvancedVC.mm
88 src/AccAdvancedVC.h
89 src/AccSecurityVC.mm
90 src/AccSecurityVC.h
Alexandre Lision4de68ce2015-04-24 18:22:49 -040091 src/CertificateWC.mm
92 src/CertificateWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -040093 src/AudioPrefsVC.mm
94 src/AudioPrefsVC.h
95 src/AccountsVC.mm
96 src/AccountsVC.h
97 src/VideoPrefsVC.mm
98 src/VideoPrefsVC.h
99 src/GeneralPrefsVC.h
100 src/HistoryVC.mm
101 src/HistoryVC.h
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400102 src/PersonsVC.mm
Alexandre Lision58cab672015-06-09 15:25:40 -0400103 src/PersonsVC.h
104 src/ChatVC.mm
Alexandre Lision2db8f472015-07-22 15:05:46 -0400105 src/ChatVC.h
106 src/PersonLinkerVC.mm
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400107 src/PersonLinkerVC.h
108 src/SmartViewVC.mm
Alexandre Lision883719f2015-10-22 17:37:45 -0400109 src/SmartViewVC.h
110 src/BrokerVC.mm
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500111 src/BrokerVC.h
112 src/ConversationVC.mm
113 src/ConversationVC.h)
Alexandre Lision74dd47f2015-04-14 13:47:42 -0400114
Alexandre Lision4ba18022015-04-23 12:17:40 -0400115SET(ringclient_BACKENDS
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400116 src/backends/AddressBookBackend.mm
Alexandre Lision66643432015-06-04 11:59:36 -0400117 src/backends/AddressBookBackend.h)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400118
119SET(ringclient_VIEWS
120 src/views/CallView.mm
121 src/views/CallView.h
Alexandre Lisionf47a2562015-06-15 15:48:29 -0400122 src/views/ITProgressIndicator.mm
123 src/views/ITProgressIndicator.h
Alexandre Lision2db8f472015-07-22 15:05:46 -0400124 src/views/RingOutlineView.mm
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400125 src/views/RingOutlineView.h
126 src/views/RingIDField.mm
Alexandre Lision4e280d62015-09-09 15:56:30 -0400127 src/views/RingIDField.h
128 src/views/HoverTableRowView.mm
129 src/views/HoverTableRowView.h
130 src/views/NSColor+RingTheme.mm
131 src/views/NSColor+RingTheme.h
132 src/views/ContextualTableCellView.mm
Alexandre Lision6da08a82015-09-24 17:09:24 -0400133 src/views/ContextualTableCellView.h
134 src/views/IconButton.h
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500135 src/views/IconButton.mm
136 src/views/IMTableCellView.h
137 src/views/IMTableCellView.mm)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400138
139SET(ringclient_OTHERS
140 src/main.mm
141 src/AppDelegate.mm
142 src/AppDelegate.h
Alexandre Lision9fe374b2016-01-06 10:17:31 -0500143 src/Constants.h
Alexandre Lision83180df2016-01-18 11:32:20 -0500144 src/INDSequentialTextSelectionManager.mm
145 src/INDSequentialTextSelectionManager.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400146 src/delegates/ImageManipulationDelegate.mm
147 src/delegates/ImageManipulationDelegate.h)
148
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500149
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400150SET(ringclient_XIBS
151 MainMenu
152 RingWindow
153 CurrentCall
154 GeneralPrefs
155 Accounts
156 AccGeneral
Alexandre Lisione4d61cb2016-02-10 09:26:24 -0500157 AccMedia
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400158 AccRing
159 AccAdvanced
160 AccSecurity
161 AudioPrefs
162 VideoPrefs
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400163 PreferencesWindow
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400164 RingWizard
Alexandre Lision2db8f472015-07-22 15:05:46 -0400165 CertificateWindow
Alexandre Lision883719f2015-10-22 17:37:45 -0400166 PersonLinker
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500167 Broker
168 Conversation)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500169
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500170# Icons
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400171# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500172SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
173SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500174 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500175
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400176SET(ring_ICONS
177${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_name.png
Alexandre Lision34607032016-02-08 16:16:49 -0500178${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_blue.png
Alexandre Lision6da08a82015-09-24 17:09:24 -0400179${CMAKE_CURRENT_SOURCE_DIR}/data/background_tile.png
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400180${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500181${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_arrow_back.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500182${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
183${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
Alexandre Lisiond18fa272015-06-15 11:18:03 -0400184${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hangup.png
185${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hold.png
186${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_holdoff.png
187${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_video.png
188${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_audio.png
189${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_chat.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500190${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lisionf23ec5a2015-07-16 11:24:06 -0400191${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_quality.png
Alexandre Lision266fca02015-09-28 14:47:05 -0400192${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_record.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400193${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_received.png
194${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_missed.png
195${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_made.png
Alexandre Lision883719f2015-10-22 17:37:45 -0400196${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_transfer.png
Alexandre Lision89edc6a2015-11-09 11:30:47 -0500197${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_add_participant.png
198${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_merge_calls.png
Alexandre Lisiond5229f32015-11-16 11:17:41 -0500199${CMAKE_CURRENT_SOURCE_DIR}/data/default_user_icon.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500200${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ancrage.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500201${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_send.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500202${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
Alexandre Lision2db8f472015-07-22 15:05:46 -0400203${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_person_add.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400204${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_persons.png
205${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_history.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500206${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
207${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500208${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400209
Alexandre Lision392ee722015-01-23 16:27:10 -0500210SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500211 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400212SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
213 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500214
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500215# package all ringtones in share/ring/ringtones/
216FILE(GLOB RINGTONE_LIST ${CMAKE_INSTALL_PREFIX}/share/ring/ringtones/*)
217
218FOREACH(RINGTONE ${RINGTONE_LIST})
219 GET_FILENAME_COMPONENT(FILE_PATH ${RINGTONE} ABSOLUTE)
220 SET(ring_RINGTONES ${ring_RINGTONES} ${FILE_PATH})
221ENDFOREACH()
222
223SET_SOURCE_FILES_PROPERTIES(${ring_RINGTONES}
224 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/ringtones)
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400225
226# Check which translations are found for LRC
227SET(LRC_TRANSLATIONS_PATH ${CMAKE_INSTALL_PREFIX}/share/libringclient/translations)
228FILE(GLOB QM_LIST ${LRC_TRANSLATIONS_PATH}/*.qm)
229
230FOREACH(QM_FILE ${QM_LIST})
231 # Extract country code from filename
232 GET_FILENAME_COMPONENT(FILENAME ${QM_FILE} NAME_WE)
233 STRING(REGEX REPLACE "^lrc_" "" LANG ${FILENAME})
234
235 SET_SOURCE_FILES_PROPERTIES(${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm
236 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/QtTranslations)
237 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
238 "${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm")
Alexandre Lision922380d2015-09-15 10:25:17 -0400239ENDFOREACH()
240
241# Check which translations are found for the client
242FILE(GLOB LPROJ_LIST ui/*.lproj)
243
244FOREACH(LPROJ ${LPROJ_LIST})
245 # Extract country code from <lang>.lproj folder name
246 GET_FILENAME_COMPONENT(LANG ${LPROJ} NAME_WE)
247 IF(EXISTS "${LPROJ}/Localizable.strings")
248 MESSAGE("Localizable:" ${LANG})
249 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/Localizable.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500250 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400251
252 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
253 ${LPROJ}/Localizable.strings)
254 ENDIF()
255 FOREACH(xib ${ringclient_XIBS})
256 IF(EXISTS "${LPROJ}/${xib}.strings")
257 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/${xib}.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500258 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400259
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500260 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
Alexandre Lision922380d2015-09-15 10:25:17 -0400261 ${LPROJ}/${xib}.strings)
262 ENDIF()
263 ENDFOREACH()
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400264
265 # Regroup those files under a .lproj folder
266 SOURCE_GROUP("Resources\\${LANG}.lproj" FILES
267 ${LOCALIZED_${LANG}})
268 # Add them to the list of files to package
269 SET(LOCALIZABLE_FILES ${LOCALIZABLE_FILES} ${LOCALIZED_${LANG}})
270ENDFOREACH()
271
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400272# append '.xib' extension before linking xib files in executable
273FOREACH(xib ${ringclient_XIBS})
Alexandre Lision922380d2015-09-15 10:25:17 -0400274 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/Base.lproj/${xib}.xib)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400275ENDFOREACH()
276
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400277SET(TO_ADD
Alexandre Lision4ba18022015-04-23 12:17:40 -0400278 ${ringclient_CONTROLLERS}
279 ${ringclient_BACKENDS}
280 ${ringclient_VIEWS}
281 ${ringclient_OTHERS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400282 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400283 ${LOCALIZABLE_FILES}
Alexandre Lision392ee722015-01-23 16:27:10 -0500284 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400285 Credits.rtf
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500286 ${ring_ICONS}
287 ${ring_RINGTONES})
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500288
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400289IF(ENABLE_SPARKLE)
290 SET( TO_ADD ${TO_ADD} ${PUBLIC_KEY} ${SPARKLE_FRAMEWORK})
291ENDIF(ENABLE_SPARKLE)
292
293ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE ${TO_ADD})
294
Alexandre Lision4ba18022015-04-23 12:17:40 -0400295# Follow Xcode hierarchy principles
296SOURCE_GROUP("Controllers" FILES ${ringclient_CONTROLLERS})
297SOURCE_GROUP("Backends" FILES ${ringclient_BACKENDS})
298SOURCE_GROUP("CustomViews" FILES ${ringclient_VIEWS})
299SOURCE_GROUP("Classes" FILES ${ringclient_OTHERS})
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400300SOURCE_GROUP("Resources\\Interface Builder" FILES
301 ${ringclient_XIBS_FOR_EXECUTABLE})
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500302SOURCE_GROUP("Resources\\ringtones" FILES ${ring_RINGTONES})
Alexandre Lision4ba18022015-04-23 12:17:40 -0400303
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400304IF(ENABLE_SPARKLE)
305 SOURCE_GROUP("Frameworks" FILES ${SPARKLE_FRAMEWORK})
306ENDIF(ENABLE_SPARKLE)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400307
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500308TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500309 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500310 ${Qt5Core_LIBRARIES}
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400311 ${Qt5MacExtras_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500312 ${Qt5Widgets_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500313)
314
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400315IF(ENABLE_SPARKLE)
316 TARGET_LINK_LIBRARIES(${PROJ_NAME} ${SPARKLE_FRAMEWORK})
317ENDIF(ENABLE_SPARKLE)
318
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400319SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
320SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
321SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
322SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
323SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
324
325# These variables are specific to our plist and are NOT standard CMake variables
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400326SET(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
327SET(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500328
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500329SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
330 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
331 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Alexandre Lision7208b762015-08-13 12:39:49 -0400332 MACOSX_BUNDLE_SHORT_VERSION_STRING "${RING_VERSION_NAME}"
333 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION_NAME} Nightly"
334 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400335 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500336 MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development"
337 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
338 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
339 )
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400340
341# Make sure we can find the 'ibtool' program. If we can NOT find it we
342# skip generation of this project
343FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
344IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
345 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
346 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
347endif()
348
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400349# Compile the .xib files using the 'ibtool' program with the destination being the app package
350FOREACH(xib ${ringclient_XIBS})
351 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
352 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
Alexandre Lision922380d2015-09-15 10:25:17 -0400353 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/Base.lproj/${xib}.nib
354 ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib
355 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400356
357ENDFOREACH()
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400358
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400359SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400360
361SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app")
362
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400363INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime)
364
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400365SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400366#--------------------------------------------------------------------------------
367# Install needed Qt plugins by copying directories from the qt installation
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400368
369
370#MESSAGE("GUI====")
371#foreach(plugin ${Qt5Gui_PLUGINS})
372# message("Plugin ${plugin} is at location ${_loc}")
373#endforeach()
374
375LIST(APPEND QT_PLUGINS_IMAGEFORMAT Qt5::QTgaPlugin
376 Qt5::QGifPlugin
377 Qt5::QICNSPlugin
378 Qt5::QICOPlugin
379 Qt5::QJpegPlugin
380 Qt5::QJp2Plugin
381 Qt5::QMngPlugin
382 Qt5::QTiffPlugin
383 Qt5::QDDSPlugin)
384
385# we need two plugin directories platform and imageformats
386GET_TARGET_PROPERTY(_loc Qt5::QCocoaIntegrationPlugin LOCATION)
387INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/platforms COMPONENT Runtime)
388LIST(APPEND QT_PLUGINS Qt5::QCocoaIntegrationPlugin)
389
390FOREACH(plugin ${QT_PLUGINS_IMAGEFORMAT})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400391 GET_TARGET_PROPERTY(_loc ${plugin} LOCATION)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400392 INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/imageformats COMPONENT Runtime)
393 LIST(APPEND QT_PLUGINS ${plugin})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400394ENDFOREACH()
395
396# directories to look for dependencies
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400397SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib ${QT_LIB_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/sparkle)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400398
399INSTALL(CODE "
400 file(GLOB_RECURSE QTPLUGINS
401 \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
402 include(BundleUtilities)
403 SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
404 fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
405 " COMPONENT Runtime)
406
407#================================
408# Packaging
409#================================
410SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME})
411SET( CPACK_PACKAGE_NAME ${PROJ_NAME} )
412SET( CPACK_PACKAGE_CONTACT "Alexandre Lision")
413SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux")
414SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION})
415SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION})
416SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION})
417SET(CPACK_BINARY_DRAGNDROP ON)
418SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
419INCLUDE(CPack)