blob: 220e3c884d48c5708da410cd24fb846cf47feffe [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 Lision38622152016-03-15 10:55:59 +070014SET(RING_VERSION_NAME "Louis-Joseph Papineau")
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 Lision04946de2016-03-08 09:31:38 -050065SET(CMAKE_MACOSX_RPATH ON)
66SET(CMAKE_SKIP_BUILD_RPATH FALSE)
67SET(CMAKE_BUILD_WITH_INSTALL_RPATH FALSE)
68SET(CMAKE_INSTALL_RPATH "${CMAKE_CURRENT_SOURCE_DIR}")
69SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
70
Alexandre Lision3d4143a2015-06-10 14:27:49 -040071MESSAGE("LRC is here:" ${LIB_RING_CLIENT_INCLUDE_DIR})
Alexandre Lision10e86dd2015-01-19 16:11:14 -050072SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -w")
73
74#Files to compile
Alexandre Lision4ba18022015-04-23 12:17:40 -040075SET(ringclient_CONTROLLERS
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040076 src/QNSTreeController.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040077 src/QNSTreeController.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040078 src/CurrentCallVC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040079 src/CurrentCallVC.h
Alexandre Lision7d2a48b2015-03-30 14:59:58 -040080 src/GeneralPrefsVC.mm
81 src/RingWizardWC.mm
Alexandre Lision4ba18022015-04-23 12:17:40 -040082 src/RingWizardWC.h
83 src/RingWindowController.mm
84 src/RingWindowController.h
Alexandre Lisionbfa68f62015-09-10 08:38:42 -040085 src/PreferencesWC.mm
86 src/PreferencesWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -040087 src/AccGeneralVC.mm
88 src/AccGeneralVC.h
Alexandre Lisione4d61cb2016-02-10 09:26:24 -050089 src/AccMediaVC.mm
90 src/AccMediaVC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -040091 src/AccRingVC.mm
92 src/AccRingVC.h
93 src/AccAdvancedVC.mm
94 src/AccAdvancedVC.h
95 src/AccSecurityVC.mm
96 src/AccSecurityVC.h
Alexandre Lision4de68ce2015-04-24 18:22:49 -040097 src/CertificateWC.mm
98 src/CertificateWC.h
Alexandre Lisionc1f96662016-03-23 17:24:19 -040099 src/PathPasswordWC.mm
100 src/PathPasswordWC.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400101 src/AudioPrefsVC.mm
102 src/AudioPrefsVC.h
103 src/AccountsVC.mm
104 src/AccountsVC.h
105 src/VideoPrefsVC.mm
106 src/VideoPrefsVC.h
107 src/GeneralPrefsVC.h
108 src/HistoryVC.mm
109 src/HistoryVC.h
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400110 src/PersonsVC.mm
Alexandre Lision58cab672015-06-09 15:25:40 -0400111 src/PersonsVC.h
112 src/ChatVC.mm
Alexandre Lision2db8f472015-07-22 15:05:46 -0400113 src/ChatVC.h
114 src/PersonLinkerVC.mm
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400115 src/PersonLinkerVC.h
116 src/SmartViewVC.mm
Alexandre Lision883719f2015-10-22 17:37:45 -0400117 src/SmartViewVC.h
118 src/BrokerVC.mm
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500119 src/BrokerVC.h
120 src/ConversationVC.mm
121 src/ConversationVC.h)
Alexandre Lision74dd47f2015-04-14 13:47:42 -0400122
Alexandre Lision4ba18022015-04-23 12:17:40 -0400123SET(ringclient_BACKENDS
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400124 src/backends/AddressBookBackend.mm
Alexandre Lision66643432015-06-04 11:59:36 -0400125 src/backends/AddressBookBackend.h)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400126
127SET(ringclient_VIEWS
128 src/views/CallView.mm
129 src/views/CallView.h
Alexandre Lisionf47a2562015-06-15 15:48:29 -0400130 src/views/ITProgressIndicator.mm
131 src/views/ITProgressIndicator.h
Alexandre Lision2db8f472015-07-22 15:05:46 -0400132 src/views/RingOutlineView.mm
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400133 src/views/RingOutlineView.h
134 src/views/RingIDField.mm
Alexandre Lision4e280d62015-09-09 15:56:30 -0400135 src/views/RingIDField.h
136 src/views/HoverTableRowView.mm
137 src/views/HoverTableRowView.h
138 src/views/NSColor+RingTheme.mm
139 src/views/NSColor+RingTheme.h
Alexandre Lision261f1b92016-04-04 12:35:34 -0400140 src/views/NSImage+Extensions.mm
141 src/views/NSImage+Extensions.h
Alexandre Lision4e280d62015-09-09 15:56:30 -0400142 src/views/ContextualTableCellView.mm
Alexandre Lision6da08a82015-09-24 17:09:24 -0400143 src/views/ContextualTableCellView.h
144 src/views/IconButton.h
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500145 src/views/IconButton.mm
146 src/views/IMTableCellView.h
147 src/views/IMTableCellView.mm)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400148
149SET(ringclient_OTHERS
150 src/main.mm
151 src/AppDelegate.mm
152 src/AppDelegate.h
Alexandre Lision9fe374b2016-01-06 10:17:31 -0500153 src/Constants.h
Alexandre Lision83180df2016-01-18 11:32:20 -0500154 src/INDSequentialTextSelectionManager.mm
155 src/INDSequentialTextSelectionManager.h
Alexandre Lision4ba18022015-04-23 12:17:40 -0400156 src/delegates/ImageManipulationDelegate.mm
157 src/delegates/ImageManipulationDelegate.h)
158
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500159
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400160SET(ringclient_XIBS
161 MainMenu
162 RingWindow
163 CurrentCall
164 GeneralPrefs
165 Accounts
166 AccGeneral
Alexandre Lisione4d61cb2016-02-10 09:26:24 -0500167 AccMedia
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400168 AccRing
169 AccAdvanced
170 AccSecurity
171 AudioPrefs
172 VideoPrefs
Alexandre Lisionbfa68f62015-09-10 08:38:42 -0400173 PreferencesWindow
Alexandre Lision4de68ce2015-04-24 18:22:49 -0400174 RingWizard
Alexandre Lision2db8f472015-07-22 15:05:46 -0400175 CertificateWindow
Alexandre Lisionc1f96662016-03-23 17:24:19 -0400176 PathPasswordWindow
Alexandre Lision883719f2015-10-22 17:37:45 -0400177 PersonLinker
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500178 Broker
179 Conversation)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500180
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500181# Icons
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400182# This part tells CMake where to find and install the file itself
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500183SET(myApp_ICON ${CMAKE_CURRENT_SOURCE_DIR}/data/appicon.icns)
184SET_SOURCE_FILES_PROPERTIES(${myApp_ICON} PROPERTIES
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500185 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500186
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400187SET(ring_ICONS
188${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_name.png
Alexandre Lision34607032016-02-08 16:16:49 -0500189${CMAKE_CURRENT_SOURCE_DIR}/data/symbol_blue.png
Alexandre Lision6da08a82015-09-24 17:09:24 -0400190${CMAKE_CURRENT_SOURCE_DIR}/data/background_tile.png
Alexandre Lision7f8351b2015-08-20 11:43:37 -0400191${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_accept.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500192${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_arrow_back.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500193${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_call.png
194${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_cancel.png
Alexandre Lisiond18fa272015-06-15 11:18:03 -0400195${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hangup.png
196${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_hold.png
197${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_holdoff.png
198${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_video.png
199${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_mute_audio.png
200${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_chat.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500201${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_search.png
Alexandre Lisionf23ec5a2015-07-16 11:24:06 -0400202${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_quality.png
Alexandre Lision266fca02015-09-28 14:47:05 -0400203${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_record.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400204${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_received.png
205${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_missed.png
206${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_call_made.png
Alexandre Lision883719f2015-10-22 17:37:45 -0400207${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_transfer.png
Alexandre Lision89edc6a2015-11-09 11:30:47 -0500208${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_add_participant.png
209${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_merge_calls.png
Alexandre Lisiond5229f32015-11-16 11:17:41 -0500210${CMAKE_CURRENT_SOURCE_DIR}/data/default_user_icon.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500211${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ancrage.png
Alexandre Lision0f66bd32016-01-18 11:30:45 -0500212${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_send.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500213${CMAKE_CURRENT_SOURCE_DIR}/data/dark/audio.png
Alexandre Lision2db8f472015-07-22 15:05:46 -0400214${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_person_add.png
Alexandre Lision4dfcafc2015-08-20 12:43:23 -0400215${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_persons.png
216${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_history.png
Alexandre Lision4a7b95e2015-02-20 10:06:43 -0500217${CMAKE_CURRENT_SOURCE_DIR}/data/dark/general.png
218${CMAKE_CURRENT_SOURCE_DIR}/data/dark/video.png
Alexandre Lisionf46768f2016-04-18 09:56:26 -0400219${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_delete.png
Alexandre Lision392ee722015-01-23 16:27:10 -0500220${CMAKE_CURRENT_SOURCE_DIR}/data/dark/ic_action_video.png)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400221
Alexandre Lision392ee722015-01-23 16:27:10 -0500222SET_SOURCE_FILES_PROPERTIES(${ring_ICONS} PROPERTIES
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500223 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lisionbb306132015-03-27 11:30:02 -0400224SET_SOURCE_FILES_PROPERTIES(Credits.rtf PROPERTIES
225 MACOSX_PACKAGE_LOCATION Resources)
Alexandre Lision392ee722015-01-23 16:27:10 -0500226
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500227# package all ringtones in share/ring/ringtones/
228FILE(GLOB RINGTONE_LIST ${CMAKE_INSTALL_PREFIX}/share/ring/ringtones/*)
229
230FOREACH(RINGTONE ${RINGTONE_LIST})
231 GET_FILENAME_COMPONENT(FILE_PATH ${RINGTONE} ABSOLUTE)
232 SET(ring_RINGTONES ${ring_RINGTONES} ${FILE_PATH})
233ENDFOREACH()
234
235SET_SOURCE_FILES_PROPERTIES(${ring_RINGTONES}
236 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/ringtones)
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400237
238# Check which translations are found for LRC
239SET(LRC_TRANSLATIONS_PATH ${CMAKE_INSTALL_PREFIX}/share/libringclient/translations)
240FILE(GLOB QM_LIST ${LRC_TRANSLATIONS_PATH}/*.qm)
241
242FOREACH(QM_FILE ${QM_LIST})
243 # Extract country code from filename
244 GET_FILENAME_COMPONENT(FILENAME ${QM_FILE} NAME_WE)
245 STRING(REGEX REPLACE "^lrc_" "" LANG ${FILENAME})
246
247 SET_SOURCE_FILES_PROPERTIES(${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm
248 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/QtTranslations)
249 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
250 "${LRC_TRANSLATIONS_PATH}/lrc_${LANG}.qm")
Alexandre Lision922380d2015-09-15 10:25:17 -0400251ENDFOREACH()
252
253# Check which translations are found for the client
254FILE(GLOB LPROJ_LIST ui/*.lproj)
255
256FOREACH(LPROJ ${LPROJ_LIST})
257 # Extract country code from <lang>.lproj folder name
258 GET_FILENAME_COMPONENT(LANG ${LPROJ} NAME_WE)
259 IF(EXISTS "${LPROJ}/Localizable.strings")
260 MESSAGE("Localizable:" ${LANG})
261 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/Localizable.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500262 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400263
264 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
265 ${LPROJ}/Localizable.strings)
266 ENDIF()
267 FOREACH(xib ${ringclient_XIBS})
268 IF(EXISTS "${LPROJ}/${xib}.strings")
269 SET_SOURCE_FILES_PROPERTIES(${LPROJ}/${xib}.strings
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500270 PROPERTIES MACOSX_PACKAGE_LOCATION Resources/${LANG}.lproj)
Alexandre Lision922380d2015-09-15 10:25:17 -0400271
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500272 SET(LOCALIZED_${LANG} ${LOCALIZED_${LANG}}
Alexandre Lision922380d2015-09-15 10:25:17 -0400273 ${LPROJ}/${xib}.strings)
274 ENDIF()
275 ENDFOREACH()
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400276
277 # Regroup those files under a .lproj folder
278 SOURCE_GROUP("Resources\\${LANG}.lproj" FILES
279 ${LOCALIZED_${LANG}})
280 # Add them to the list of files to package
281 SET(LOCALIZABLE_FILES ${LOCALIZABLE_FILES} ${LOCALIZED_${LANG}})
282ENDFOREACH()
283
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400284# append '.xib' extension before linking xib files in executable
285FOREACH(xib ${ringclient_XIBS})
Alexandre Lision922380d2015-09-15 10:25:17 -0400286 SET(ringclient_XIBS_FOR_EXECUTABLE ${ringclient_XIBS_FOR_EXECUTABLE} ui/Base.lproj/${xib}.xib)
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400287ENDFOREACH()
288
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400289SET(TO_ADD
Alexandre Lision4ba18022015-04-23 12:17:40 -0400290 ${ringclient_CONTROLLERS}
291 ${ringclient_BACKENDS}
292 ${ringclient_VIEWS}
293 ${ringclient_OTHERS}
Alexandre Lision5db3e4e2015-03-24 17:25:55 -0400294 ${ringclient_XIBS_FOR_EXECUTABLE}
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400295 ${LOCALIZABLE_FILES}
Alexandre Lision392ee722015-01-23 16:27:10 -0500296 ${myApp_ICON}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400297 Credits.rtf
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500298 ${ring_ICONS}
299 ${ring_RINGTONES})
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500300
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400301IF(ENABLE_SPARKLE)
302 SET( TO_ADD ${TO_ADD} ${PUBLIC_KEY} ${SPARKLE_FRAMEWORK})
303ENDIF(ENABLE_SPARKLE)
304
305ADD_EXECUTABLE(${PROJ_NAME} MACOSX_BUNDLE ${TO_ADD})
306
Alexandre Lision4ba18022015-04-23 12:17:40 -0400307# Follow Xcode hierarchy principles
308SOURCE_GROUP("Controllers" FILES ${ringclient_CONTROLLERS})
309SOURCE_GROUP("Backends" FILES ${ringclient_BACKENDS})
310SOURCE_GROUP("CustomViews" FILES ${ringclient_VIEWS})
311SOURCE_GROUP("Classes" FILES ${ringclient_OTHERS})
Alexandre Lision46dc0c32015-09-15 10:22:59 -0400312SOURCE_GROUP("Resources\\Interface Builder" FILES
313 ${ringclient_XIBS_FOR_EXECUTABLE})
Alexandre Lision3278ffe2016-02-03 14:45:22 -0500314SOURCE_GROUP("Resources\\ringtones" FILES ${ring_RINGTONES})
Alexandre Lision4ba18022015-04-23 12:17:40 -0400315
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400316IF(ENABLE_SPARKLE)
317 SOURCE_GROUP("Frameworks" FILES ${SPARKLE_FRAMEWORK})
318ENDIF(ENABLE_SPARKLE)
Alexandre Lision4ba18022015-04-23 12:17:40 -0400319
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500320TARGET_LINK_LIBRARIES( ${PROJ_NAME}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500321 ${LIB_RING_CLIENT_LIBRARY}
Alexandre Lision5855b6a2015-02-03 11:31:05 -0500322 ${Qt5Core_LIBRARIES}
Alexandre Lision3b0bd332015-03-15 18:43:07 -0400323 ${Qt5MacExtras_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500324 ${Qt5Widgets_LIBRARIES}
Alexandre Lision10e86dd2015-01-19 16:11:14 -0500325)
326
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400327IF(ENABLE_SPARKLE)
328 TARGET_LINK_LIBRARIES(${PROJ_NAME} ${SPARKLE_FRAMEWORK})
329ENDIF(ENABLE_SPARKLE)
330
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400331SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AppKit")
332SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Cocoa")
333SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework Quartz")
334SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AVFoundation")
335SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -framework AddressBook")
336
337# These variables are specific to our plist and are NOT standard CMake variables
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400338SET(MACOSX_BUNDLE_NSMAIN_NIB_FILE "MainMenu")
339SET(MACOSX_BUNDLE_NSPRINCIPAL_CLASS "NSApplication")
Alexandre Lision392ee722015-01-23 16:27:10 -0500340
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500341SET_TARGET_PROPERTIES(${PROJ_NAME} PROPERTIES
342 MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MacOSXBundleInfo.plist.in
343 MACOSX_BUNDLE_GUI_IDENTIFIER "cx.ring"
Alexandre Lision7208b762015-08-13 12:39:49 -0400344 MACOSX_BUNDLE_SHORT_VERSION_STRING "${RING_VERSION_NAME}"
345 MACOSX_BUNDLE_LONG_VERSION_STRING "${PROJ_NAME} ${RING_VERSION_NAME} Nightly"
346 MACOSX_BUNDLE_BUNDLE_VERSION ${RING_VERSION}
Alexandre Lisionbb306132015-03-27 11:30:02 -0400347 MACOSX_BUNDLE_COPYRIGHT "${PROJ_COPYRIGHT}"
Alexandre Lisionb47b4c82015-01-20 11:29:03 -0500348 MACOSX_BUNDLE_INFO_STRING "Nightly build of ${PROJ_NAME} ${RING_VERSION} for testing and development"
349 MACOSX_BUNDLE_BUNDLE_NAME ${PROJ_NAME}
350 MACOSX_BUNDLE_ICON_FILE "appicon.icns"
351 )
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400352
353# Make sure we can find the 'ibtool' program. If we can NOT find it we
354# skip generation of this project
355FIND_PROGRAM(IBTOOL ibtool HINTS "/usr/bin" "${OSX_DEVELOPER_ROOT}/usr/bin")
356IF(${IBTOOL} STREQUAL "IBTOOL-NOTFOUND")
357 MESSAGE(SEND_ERROR "ibtool can not be found and is needed to compile the .xib files. It should have been installed with
358 the Apple developer tools. The default system paths were searched in addition to ${OSX_DEVELOPER_ROOT}/usr/bin")
359endif()
360
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400361# Compile the .xib files using the 'ibtool' program with the destination being the app package
362FOREACH(xib ${ringclient_XIBS})
363 ADD_CUSTOM_COMMAND(TARGET ${PROJ_NAME} POST_BUILD
364 COMMAND ${IBTOOL} --errors --warnings --notices --output-format human-readable-text
Alexandre Lision922380d2015-09-15 10:25:17 -0400365 --compile ${CMAKE_CURRENT_BINARY_DIR}/\${CONFIGURATION}/${PROJ_NAME}.app/Contents/Resources/Base.lproj/${xib}.nib
366 ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib
367 COMMENT "Compiling ${CMAKE_CURRENT_SOURCE_DIR}/ui/Base.lproj/${xib}.xib")
Alexandre Lisionf241c6a2015-03-24 14:53:47 -0400368
369ENDFOREACH()
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400370
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400371SET(CMAKE_LIBRARY_PATH ${CMAKE_LIBRARY_PATH} ${CMAKE_INSTALL_PREFIX})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400372
373SET(APPS "\${CMAKE_INSTALL_PREFIX}/${PROJ_NAME}.app")
374
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400375INSTALL(TARGETS ${PROJ_NAME} BUNDLE DESTINATION . COMPONENT Runtime)
376
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400377SET(QT_PLUGINS_DESTDIR ${PROJ_NAME}.app/Contents/Plugins)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400378#--------------------------------------------------------------------------------
379# Install needed Qt plugins by copying directories from the qt installation
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400380
381
382#MESSAGE("GUI====")
383#foreach(plugin ${Qt5Gui_PLUGINS})
384# message("Plugin ${plugin} is at location ${_loc}")
385#endforeach()
386
387LIST(APPEND QT_PLUGINS_IMAGEFORMAT Qt5::QTgaPlugin
388 Qt5::QGifPlugin
389 Qt5::QICNSPlugin
390 Qt5::QICOPlugin
391 Qt5::QJpegPlugin
392 Qt5::QJp2Plugin
393 Qt5::QMngPlugin
394 Qt5::QTiffPlugin
395 Qt5::QDDSPlugin)
396
397# we need two plugin directories platform and imageformats
398GET_TARGET_PROPERTY(_loc Qt5::QCocoaIntegrationPlugin LOCATION)
399INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/platforms COMPONENT Runtime)
400LIST(APPEND QT_PLUGINS Qt5::QCocoaIntegrationPlugin)
401
402FOREACH(plugin ${QT_PLUGINS_IMAGEFORMAT})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400403 GET_TARGET_PROPERTY(_loc ${plugin} LOCATION)
Alexandre Lision3a70f4f2015-04-15 14:18:26 -0400404 INSTALL(FILES ${_loc} DESTINATION ${QT_PLUGINS_DESTDIR}/imageformats COMPONENT Runtime)
405 LIST(APPEND QT_PLUGINS ${plugin})
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400406ENDFOREACH()
407
408# directories to look for dependencies
Alexandre Lision3d4143a2015-06-10 14:27:49 -0400409SET(DIRS ${CMAKE_INSTALL_PREFIX}/lib ${QT_LIB_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/sparkle)
Alexandre Lisione7e01ba2015-03-30 13:30:51 -0400410
411INSTALL(CODE "
412 file(GLOB_RECURSE QTPLUGINS
413 \"\${CMAKE_INSTALL_PREFIX}/${QT_PLUGINS_DESTDIR}/*${CMAKE_SHARED_LIBRARY_SUFFIX}\")
414 include(BundleUtilities)
415 SET(BU_CHMOD_BUNDLE_ITEMS TRUE)
416 fixup_bundle(\"${APPS}\" \"\${QTPLUGINS}\" \"${DIRS}\")
417 " COMPONENT Runtime)
418
419#================================
420# Packaging
421#================================
422SET( CPACK_PACKAGE_DESCRIPTION_SUMMARY ${PROJ_NAME})
423SET( CPACK_PACKAGE_NAME ${PROJ_NAME} )
424SET( CPACK_PACKAGE_CONTACT "Alexandre Lision")
425SET( CPACK_PACKAGE_VENDOR "Savoir-faire Linux")
426SET( CPACK_PACKAGE_VERSION_MAJOR ${PROG_MAJOR_VERSION})
427SET( CPACK_PACKAGE_VERSION_MINOR ${PROG_MINOR_VERSION})
428SET( CPACK_PACKAGE_VERSION_PATCH ${PROG_PATCH_VERSION})
429SET(CPACK_BINARY_DRAGNDROP ON)
430SET( CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}")
431INCLUDE(CPack)